1 /*** Autogenerated by WIDL 6.4 from include/mediaobj.idl - Do not edit ***/ 2 3 #ifdef _WIN32 4 #ifndef __REQUIRED_RPCNDR_H_VERSION__ 5 #define __REQUIRED_RPCNDR_H_VERSION__ 475 6 #endif 7 #include <rpc.h> 8 #include <rpcndr.h> 9 #endif 10 11 #ifndef COM_NO_WINDOWS_H 12 #include <windows.h> 13 #include <ole2.h> 14 #endif 15 16 #ifndef __mediaobj_h__ 17 #define __mediaobj_h__ 18 19 /* Forward declarations */ 20 21 #ifndef __IEnumDMO_FWD_DEFINED__ 22 #define __IEnumDMO_FWD_DEFINED__ 23 typedef interface IEnumDMO IEnumDMO; 24 #ifdef __cplusplus 25 interface IEnumDMO; 26 #endif /* __cplusplus */ 27 #endif 28 29 #ifndef __IMediaBuffer_FWD_DEFINED__ 30 #define __IMediaBuffer_FWD_DEFINED__ 31 typedef interface IMediaBuffer IMediaBuffer; 32 #ifdef __cplusplus 33 interface IMediaBuffer; 34 #endif /* __cplusplus */ 35 #endif 36 37 #ifndef __IMediaObject_FWD_DEFINED__ 38 #define __IMediaObject_FWD_DEFINED__ 39 typedef interface IMediaObject IMediaObject; 40 #ifdef __cplusplus 41 interface IMediaObject; 42 #endif /* __cplusplus */ 43 #endif 44 45 #ifndef __IMediaObjectInPlace_FWD_DEFINED__ 46 #define __IMediaObjectInPlace_FWD_DEFINED__ 47 typedef interface IMediaObjectInPlace IMediaObjectInPlace; 48 #ifdef __cplusplus 49 interface IMediaObjectInPlace; 50 #endif /* __cplusplus */ 51 #endif 52 53 #ifndef __IDMOQualityControl_FWD_DEFINED__ 54 #define __IDMOQualityControl_FWD_DEFINED__ 55 typedef interface IDMOQualityControl IDMOQualityControl; 56 #ifdef __cplusplus 57 interface IDMOQualityControl; 58 #endif /* __cplusplus */ 59 #endif 60 61 #ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__ 62 #define __IDMOVideoOutputOptimizations_FWD_DEFINED__ 63 typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations; 64 #ifdef __cplusplus 65 interface IDMOVideoOutputOptimizations; 66 #endif /* __cplusplus */ 67 #endif 68 69 /* Headers for imported files */ 70 71 #include <unknwn.h> 72 #include <objidl.h> 73 #include <strmif.h> 74 75 #ifdef __cplusplus 76 extern "C" { 77 #endif 78 79 typedef struct _DMOMediaType { 80 GUID majortype; 81 GUID subtype; 82 WINBOOL bFixedSizeSamples; 83 WINBOOL bTemporalCompression; 84 ULONG lSampleSize; 85 GUID formattype; 86 IUnknown *pUnk; 87 ULONG cbFormat; 88 BYTE *pbFormat; 89 } DMO_MEDIA_TYPE; 90 /***************************************************************************** 91 * IEnumDMO interface 92 */ 93 #ifndef __IEnumDMO_INTERFACE_DEFINED__ 94 #define __IEnumDMO_INTERFACE_DEFINED__ 95 96 DEFINE_GUID(IID_IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f); 97 #if defined(__cplusplus) && !defined(CINTERFACE) 98 MIDL_INTERFACE("2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f") 99 IEnumDMO : public IUnknown 100 { 101 virtual HRESULT STDMETHODCALLTYPE Next( 102 DWORD cItemsToFetch, 103 CLSID *pCLSID, 104 WCHAR **Names, 105 DWORD *pcItemsFetched) = 0; 106 107 virtual HRESULT STDMETHODCALLTYPE Skip( 108 DWORD cItemsToSkip) = 0; 109 110 virtual HRESULT STDMETHODCALLTYPE Reset( 111 ) = 0; 112 113 virtual HRESULT STDMETHODCALLTYPE Clone( 114 IEnumDMO **ppEnum) = 0; 115 116 }; 117 #ifdef __CRT_UUID_DECL 118 __CRT_UUID_DECL(IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f) 119 #endif 120 #else 121 typedef struct IEnumDMOVtbl { 122 BEGIN_INTERFACE 123 124 /*** IUnknown methods ***/ 125 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 126 IEnumDMO *This, 127 REFIID riid, 128 void **ppvObject); 129 130 ULONG (STDMETHODCALLTYPE *AddRef)( 131 IEnumDMO *This); 132 133 ULONG (STDMETHODCALLTYPE *Release)( 134 IEnumDMO *This); 135 136 /*** IEnumDMO methods ***/ 137 HRESULT (STDMETHODCALLTYPE *Next)( 138 IEnumDMO *This, 139 DWORD cItemsToFetch, 140 CLSID *pCLSID, 141 WCHAR **Names, 142 DWORD *pcItemsFetched); 143 144 HRESULT (STDMETHODCALLTYPE *Skip)( 145 IEnumDMO *This, 146 DWORD cItemsToSkip); 147 148 HRESULT (STDMETHODCALLTYPE *Reset)( 149 IEnumDMO *This); 150 151 HRESULT (STDMETHODCALLTYPE *Clone)( 152 IEnumDMO *This, 153 IEnumDMO **ppEnum); 154 155 END_INTERFACE 156 } IEnumDMOVtbl; 157 158 interface IEnumDMO { 159 CONST_VTBL IEnumDMOVtbl* lpVtbl; 160 }; 161 162 #ifdef COBJMACROS 163 #ifndef WIDL_C_INLINE_WRAPPERS 164 /*** IUnknown methods ***/ 165 #define IEnumDMO_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 166 #define IEnumDMO_AddRef(This) (This)->lpVtbl->AddRef(This) 167 #define IEnumDMO_Release(This) (This)->lpVtbl->Release(This) 168 /*** IEnumDMO methods ***/ 169 #define IEnumDMO_Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched) (This)->lpVtbl->Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched) 170 #define IEnumDMO_Skip(This,cItemsToSkip) (This)->lpVtbl->Skip(This,cItemsToSkip) 171 #define IEnumDMO_Reset(This) (This)->lpVtbl->Reset(This) 172 #define IEnumDMO_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum) 173 #else 174 /*** IUnknown methods ***/ 175 static FORCEINLINE HRESULT IEnumDMO_QueryInterface(IEnumDMO* This,REFIID riid,void **ppvObject) { 176 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 177 } 178 static FORCEINLINE ULONG IEnumDMO_AddRef(IEnumDMO* This) { 179 return This->lpVtbl->AddRef(This); 180 } 181 static FORCEINLINE ULONG IEnumDMO_Release(IEnumDMO* This) { 182 return This->lpVtbl->Release(This); 183 } 184 /*** IEnumDMO methods ***/ 185 static FORCEINLINE HRESULT IEnumDMO_Next(IEnumDMO* This,DWORD cItemsToFetch,CLSID *pCLSID,WCHAR **Names,DWORD *pcItemsFetched) { 186 return This->lpVtbl->Next(This,cItemsToFetch,pCLSID,Names,pcItemsFetched); 187 } 188 static FORCEINLINE HRESULT IEnumDMO_Skip(IEnumDMO* This,DWORD cItemsToSkip) { 189 return This->lpVtbl->Skip(This,cItemsToSkip); 190 } 191 static FORCEINLINE HRESULT IEnumDMO_Reset(IEnumDMO* This) { 192 return This->lpVtbl->Reset(This); 193 } 194 static FORCEINLINE HRESULT IEnumDMO_Clone(IEnumDMO* This,IEnumDMO **ppEnum) { 195 return This->lpVtbl->Clone(This,ppEnum); 196 } 197 #endif 198 #endif 199 200 #endif 201 202 203 #endif /* __IEnumDMO_INTERFACE_DEFINED__ */ 204 205 /***************************************************************************** 206 * IMediaBuffer interface 207 */ 208 #ifndef __IMediaBuffer_INTERFACE_DEFINED__ 209 #define __IMediaBuffer_INTERFACE_DEFINED__ 210 211 DEFINE_GUID(IID_IMediaBuffer, 0x59eff8b9, 0x938c, 0x4a26, 0x82,0xf2, 0x95,0xcb,0x84,0xcd,0xc8,0x37); 212 #if defined(__cplusplus) && !defined(CINTERFACE) 213 MIDL_INTERFACE("59eff8b9-938c-4a26-82f2-95cb84cdc837") 214 IMediaBuffer : public IUnknown 215 { 216 virtual HRESULT STDMETHODCALLTYPE SetLength( 217 DWORD cbLength) = 0; 218 219 virtual HRESULT STDMETHODCALLTYPE GetMaxLength( 220 DWORD *pcbMaxLength) = 0; 221 222 virtual HRESULT STDMETHODCALLTYPE GetBufferAndLength( 223 BYTE **ppBuffer, 224 DWORD *pcbLength) = 0; 225 226 }; 227 #ifdef __CRT_UUID_DECL 228 __CRT_UUID_DECL(IMediaBuffer, 0x59eff8b9, 0x938c, 0x4a26, 0x82,0xf2, 0x95,0xcb,0x84,0xcd,0xc8,0x37) 229 #endif 230 #else 231 typedef struct IMediaBufferVtbl { 232 BEGIN_INTERFACE 233 234 /*** IUnknown methods ***/ 235 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 236 IMediaBuffer *This, 237 REFIID riid, 238 void **ppvObject); 239 240 ULONG (STDMETHODCALLTYPE *AddRef)( 241 IMediaBuffer *This); 242 243 ULONG (STDMETHODCALLTYPE *Release)( 244 IMediaBuffer *This); 245 246 /*** IMediaBuffer methods ***/ 247 HRESULT (STDMETHODCALLTYPE *SetLength)( 248 IMediaBuffer *This, 249 DWORD cbLength); 250 251 HRESULT (STDMETHODCALLTYPE *GetMaxLength)( 252 IMediaBuffer *This, 253 DWORD *pcbMaxLength); 254 255 HRESULT (STDMETHODCALLTYPE *GetBufferAndLength)( 256 IMediaBuffer *This, 257 BYTE **ppBuffer, 258 DWORD *pcbLength); 259 260 END_INTERFACE 261 } IMediaBufferVtbl; 262 263 interface IMediaBuffer { 264 CONST_VTBL IMediaBufferVtbl* lpVtbl; 265 }; 266 267 #ifdef COBJMACROS 268 #ifndef WIDL_C_INLINE_WRAPPERS 269 /*** IUnknown methods ***/ 270 #define IMediaBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 271 #define IMediaBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) 272 #define IMediaBuffer_Release(This) (This)->lpVtbl->Release(This) 273 /*** IMediaBuffer methods ***/ 274 #define IMediaBuffer_SetLength(This,cbLength) (This)->lpVtbl->SetLength(This,cbLength) 275 #define IMediaBuffer_GetMaxLength(This,pcbMaxLength) (This)->lpVtbl->GetMaxLength(This,pcbMaxLength) 276 #define IMediaBuffer_GetBufferAndLength(This,ppBuffer,pcbLength) (This)->lpVtbl->GetBufferAndLength(This,ppBuffer,pcbLength) 277 #else 278 /*** IUnknown methods ***/ 279 static FORCEINLINE HRESULT IMediaBuffer_QueryInterface(IMediaBuffer* This,REFIID riid,void **ppvObject) { 280 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 281 } 282 static FORCEINLINE ULONG IMediaBuffer_AddRef(IMediaBuffer* This) { 283 return This->lpVtbl->AddRef(This); 284 } 285 static FORCEINLINE ULONG IMediaBuffer_Release(IMediaBuffer* This) { 286 return This->lpVtbl->Release(This); 287 } 288 /*** IMediaBuffer methods ***/ 289 static FORCEINLINE HRESULT IMediaBuffer_SetLength(IMediaBuffer* This,DWORD cbLength) { 290 return This->lpVtbl->SetLength(This,cbLength); 291 } 292 static FORCEINLINE HRESULT IMediaBuffer_GetMaxLength(IMediaBuffer* This,DWORD *pcbMaxLength) { 293 return This->lpVtbl->GetMaxLength(This,pcbMaxLength); 294 } 295 static FORCEINLINE HRESULT IMediaBuffer_GetBufferAndLength(IMediaBuffer* This,BYTE **ppBuffer,DWORD *pcbLength) { 296 return This->lpVtbl->GetBufferAndLength(This,ppBuffer,pcbLength); 297 } 298 #endif 299 #endif 300 301 #endif 302 303 304 #endif /* __IMediaBuffer_INTERFACE_DEFINED__ */ 305 306 enum _DMO_INPUT_STATUS_FLAGS { 307 DMO_INPUT_STATUSF_ACCEPT_DATA = 0x1 308 }; 309 enum _DMO_INPUT_DATA_BUFFER_FLAGS { 310 DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x1, 311 DMO_INPUT_DATA_BUFFERF_TIME = 0x2, 312 DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x4 313 }; 314 enum _DMO_PROCESS_OUTPUT_FLAGS { 315 DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x1 316 }; 317 typedef struct _DMO_OUTPUT_DATA_BUFFER { 318 IMediaBuffer *pBuffer; 319 DWORD dwStatus; 320 REFERENCE_TIME rtTimestamp; 321 REFERENCE_TIME rtTimelength; 322 } DMO_OUTPUT_DATA_BUFFER; 323 typedef struct _DMO_OUTPUT_DATA_BUFFER *PDMO_OUTPUT_DATA_BUFFER; 324 enum _DMO_INPLACE_PROCESS_FLAGS { 325 DMO_INPLACE_NORMAL = 0x0, 326 DMO_INPLACE_ZERO = 0x1 327 }; 328 enum _DMO_SET_TYPE_FLAGS { 329 DMO_SET_TYPEF_TEST_ONLY = 0x1, 330 DMO_SET_TYPEF_CLEAR = 0x2 331 }; 332 enum _DMO_OUTPUT_DATA_BUFFERF_FLAGS { 333 DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x1, 334 DMO_OUTPUT_DATA_BUFFERF_TIME = 0x2, 335 DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x4, 336 DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x1000000 337 }; 338 /***************************************************************************** 339 * IMediaObject interface 340 */ 341 #ifndef __IMediaObject_INTERFACE_DEFINED__ 342 #define __IMediaObject_INTERFACE_DEFINED__ 343 344 DEFINE_GUID(IID_IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4); 345 #if defined(__cplusplus) && !defined(CINTERFACE) 346 MIDL_INTERFACE("d8ad0f58-5494-4102-97c5-ec798e59bcf4") 347 IMediaObject : public IUnknown 348 { 349 virtual HRESULT STDMETHODCALLTYPE GetStreamCount( 350 DWORD *pcInputStreams, 351 DWORD *pcOutputStreams) = 0; 352 353 virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo( 354 DWORD dwInputStreamIndex, 355 DWORD *pdwFlags) = 0; 356 357 virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo( 358 DWORD dwOutputStreamIndex, 359 DWORD *pdwFlags) = 0; 360 361 virtual HRESULT STDMETHODCALLTYPE GetInputType( 362 DWORD dwInputStreamIndex, 363 DWORD dwTypeIndex, 364 DMO_MEDIA_TYPE *pmt) = 0; 365 366 virtual HRESULT STDMETHODCALLTYPE GetOutputType( 367 DWORD dwOutputStreamIndex, 368 DWORD dwTypeIndex, 369 DMO_MEDIA_TYPE *pmt) = 0; 370 371 virtual HRESULT STDMETHODCALLTYPE SetInputType( 372 DWORD dwInputStreamIndex, 373 const DMO_MEDIA_TYPE *pmt, 374 DWORD dwFlags) = 0; 375 376 virtual HRESULT STDMETHODCALLTYPE SetOutputType( 377 DWORD dwOutputStreamIndex, 378 const DMO_MEDIA_TYPE *pmt, 379 DWORD dwFlags) = 0; 380 381 virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType( 382 DWORD dwInputStreamIndex, 383 DMO_MEDIA_TYPE *pmt) = 0; 384 385 virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType( 386 DWORD dwOutputStreamIndex, 387 DMO_MEDIA_TYPE *pmt) = 0; 388 389 virtual HRESULT STDMETHODCALLTYPE GetInputSizeInfo( 390 DWORD dwInputStreamIndex, 391 DWORD *pcbSize, 392 DWORD *pcbMaxLookahead, 393 DWORD *pcbAlignment) = 0; 394 395 virtual HRESULT STDMETHODCALLTYPE GetOutputSizeInfo( 396 DWORD dwOutputStreamIndex, 397 DWORD *pcbSize, 398 DWORD *pcbAlignment) = 0; 399 400 virtual HRESULT STDMETHODCALLTYPE GetInputMaxLatency( 401 DWORD dwInputStreamIndex, 402 REFERENCE_TIME *prtMaxLatency) = 0; 403 404 virtual HRESULT STDMETHODCALLTYPE SetInputMaxLatency( 405 DWORD dwInputStreamIndex, 406 REFERENCE_TIME rtMaxLatency) = 0; 407 408 virtual HRESULT STDMETHODCALLTYPE Flush( 409 ) = 0; 410 411 virtual HRESULT STDMETHODCALLTYPE Discontinuity( 412 DWORD dwInputStreamIndex) = 0; 413 414 virtual HRESULT STDMETHODCALLTYPE AllocateStreamingResources( 415 ) = 0; 416 417 virtual HRESULT STDMETHODCALLTYPE FreeStreamingResources( 418 ) = 0; 419 420 virtual HRESULT STDMETHODCALLTYPE GetInputStatus( 421 DWORD dwInputStreamIndex, 422 DWORD *dwFlags) = 0; 423 424 virtual HRESULT STDMETHODCALLTYPE ProcessInput( 425 DWORD dwInputStreamIndex, 426 IMediaBuffer *pBuffer, 427 DWORD dwFlags, 428 REFERENCE_TIME rtTimestamp, 429 REFERENCE_TIME rtTimelength) = 0; 430 431 virtual HRESULT STDMETHODCALLTYPE ProcessOutput( 432 DWORD dwFlags, 433 DWORD cOutputBufferCount, 434 DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, 435 DWORD *pdwStatus) = 0; 436 437 virtual HRESULT STDMETHODCALLTYPE Lock( 438 LONG bLock) = 0; 439 440 }; 441 #ifdef __CRT_UUID_DECL 442 __CRT_UUID_DECL(IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4) 443 #endif 444 #else 445 typedef struct IMediaObjectVtbl { 446 BEGIN_INTERFACE 447 448 /*** IUnknown methods ***/ 449 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 450 IMediaObject *This, 451 REFIID riid, 452 void **ppvObject); 453 454 ULONG (STDMETHODCALLTYPE *AddRef)( 455 IMediaObject *This); 456 457 ULONG (STDMETHODCALLTYPE *Release)( 458 IMediaObject *This); 459 460 /*** IMediaObject methods ***/ 461 HRESULT (STDMETHODCALLTYPE *GetStreamCount)( 462 IMediaObject *This, 463 DWORD *pcInputStreams, 464 DWORD *pcOutputStreams); 465 466 HRESULT (STDMETHODCALLTYPE *GetInputStreamInfo)( 467 IMediaObject *This, 468 DWORD dwInputStreamIndex, 469 DWORD *pdwFlags); 470 471 HRESULT (STDMETHODCALLTYPE *GetOutputStreamInfo)( 472 IMediaObject *This, 473 DWORD dwOutputStreamIndex, 474 DWORD *pdwFlags); 475 476 HRESULT (STDMETHODCALLTYPE *GetInputType)( 477 IMediaObject *This, 478 DWORD dwInputStreamIndex, 479 DWORD dwTypeIndex, 480 DMO_MEDIA_TYPE *pmt); 481 482 HRESULT (STDMETHODCALLTYPE *GetOutputType)( 483 IMediaObject *This, 484 DWORD dwOutputStreamIndex, 485 DWORD dwTypeIndex, 486 DMO_MEDIA_TYPE *pmt); 487 488 HRESULT (STDMETHODCALLTYPE *SetInputType)( 489 IMediaObject *This, 490 DWORD dwInputStreamIndex, 491 const DMO_MEDIA_TYPE *pmt, 492 DWORD dwFlags); 493 494 HRESULT (STDMETHODCALLTYPE *SetOutputType)( 495 IMediaObject *This, 496 DWORD dwOutputStreamIndex, 497 const DMO_MEDIA_TYPE *pmt, 498 DWORD dwFlags); 499 500 HRESULT (STDMETHODCALLTYPE *GetInputCurrentType)( 501 IMediaObject *This, 502 DWORD dwInputStreamIndex, 503 DMO_MEDIA_TYPE *pmt); 504 505 HRESULT (STDMETHODCALLTYPE *GetOutputCurrentType)( 506 IMediaObject *This, 507 DWORD dwOutputStreamIndex, 508 DMO_MEDIA_TYPE *pmt); 509 510 HRESULT (STDMETHODCALLTYPE *GetInputSizeInfo)( 511 IMediaObject *This, 512 DWORD dwInputStreamIndex, 513 DWORD *pcbSize, 514 DWORD *pcbMaxLookahead, 515 DWORD *pcbAlignment); 516 517 HRESULT (STDMETHODCALLTYPE *GetOutputSizeInfo)( 518 IMediaObject *This, 519 DWORD dwOutputStreamIndex, 520 DWORD *pcbSize, 521 DWORD *pcbAlignment); 522 523 HRESULT (STDMETHODCALLTYPE *GetInputMaxLatency)( 524 IMediaObject *This, 525 DWORD dwInputStreamIndex, 526 REFERENCE_TIME *prtMaxLatency); 527 528 HRESULT (STDMETHODCALLTYPE *SetInputMaxLatency)( 529 IMediaObject *This, 530 DWORD dwInputStreamIndex, 531 REFERENCE_TIME rtMaxLatency); 532 533 HRESULT (STDMETHODCALLTYPE *Flush)( 534 IMediaObject *This); 535 536 HRESULT (STDMETHODCALLTYPE *Discontinuity)( 537 IMediaObject *This, 538 DWORD dwInputStreamIndex); 539 540 HRESULT (STDMETHODCALLTYPE *AllocateStreamingResources)( 541 IMediaObject *This); 542 543 HRESULT (STDMETHODCALLTYPE *FreeStreamingResources)( 544 IMediaObject *This); 545 546 HRESULT (STDMETHODCALLTYPE *GetInputStatus)( 547 IMediaObject *This, 548 DWORD dwInputStreamIndex, 549 DWORD *dwFlags); 550 551 HRESULT (STDMETHODCALLTYPE *ProcessInput)( 552 IMediaObject *This, 553 DWORD dwInputStreamIndex, 554 IMediaBuffer *pBuffer, 555 DWORD dwFlags, 556 REFERENCE_TIME rtTimestamp, 557 REFERENCE_TIME rtTimelength); 558 559 HRESULT (STDMETHODCALLTYPE *ProcessOutput)( 560 IMediaObject *This, 561 DWORD dwFlags, 562 DWORD cOutputBufferCount, 563 DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, 564 DWORD *pdwStatus); 565 566 HRESULT (STDMETHODCALLTYPE *Lock)( 567 IMediaObject *This, 568 LONG bLock); 569 570 END_INTERFACE 571 } IMediaObjectVtbl; 572 573 interface IMediaObject { 574 CONST_VTBL IMediaObjectVtbl* lpVtbl; 575 }; 576 577 #ifdef COBJMACROS 578 #ifndef WIDL_C_INLINE_WRAPPERS 579 /*** IUnknown methods ***/ 580 #define IMediaObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 581 #define IMediaObject_AddRef(This) (This)->lpVtbl->AddRef(This) 582 #define IMediaObject_Release(This) (This)->lpVtbl->Release(This) 583 /*** IMediaObject methods ***/ 584 #define IMediaObject_GetStreamCount(This,pcInputStreams,pcOutputStreams) (This)->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams) 585 #define IMediaObject_GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) (This)->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) 586 #define IMediaObject_GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) (This)->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) 587 #define IMediaObject_GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) 588 #define IMediaObject_GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) 589 #define IMediaObject_SetInputType(This,dwInputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags) 590 #define IMediaObject_SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) 591 #define IMediaObject_GetInputCurrentType(This,dwInputStreamIndex,pmt) (This)->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt) 592 #define IMediaObject_GetOutputCurrentType(This,dwOutputStreamIndex,pmt) (This)->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt) 593 #define IMediaObject_GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) (This)->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) 594 #define IMediaObject_GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) (This)->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) 595 #define IMediaObject_GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) (This)->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) 596 #define IMediaObject_SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) (This)->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) 597 #define IMediaObject_Flush(This) (This)->lpVtbl->Flush(This) 598 #define IMediaObject_Discontinuity(This,dwInputStreamIndex) (This)->lpVtbl->Discontinuity(This,dwInputStreamIndex) 599 #define IMediaObject_AllocateStreamingResources(This) (This)->lpVtbl->AllocateStreamingResources(This) 600 #define IMediaObject_FreeStreamingResources(This) (This)->lpVtbl->FreeStreamingResources(This) 601 #define IMediaObject_GetInputStatus(This,dwInputStreamIndex,dwFlags) (This)->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags) 602 #define IMediaObject_ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) (This)->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) 603 #define IMediaObject_ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) (This)->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) 604 #define IMediaObject_Lock(This,bLock) (This)->lpVtbl->Lock(This,bLock) 605 #else 606 /*** IUnknown methods ***/ 607 static FORCEINLINE HRESULT IMediaObject_QueryInterface(IMediaObject* This,REFIID riid,void **ppvObject) { 608 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 609 } 610 static FORCEINLINE ULONG IMediaObject_AddRef(IMediaObject* This) { 611 return This->lpVtbl->AddRef(This); 612 } 613 static FORCEINLINE ULONG IMediaObject_Release(IMediaObject* This) { 614 return This->lpVtbl->Release(This); 615 } 616 /*** IMediaObject methods ***/ 617 static FORCEINLINE HRESULT IMediaObject_GetStreamCount(IMediaObject* This,DWORD *pcInputStreams,DWORD *pcOutputStreams) { 618 return This->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams); 619 } 620 static FORCEINLINE HRESULT IMediaObject_GetInputStreamInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pdwFlags) { 621 return This->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags); 622 } 623 static FORCEINLINE HRESULT IMediaObject_GetOutputStreamInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pdwFlags) { 624 return This->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags); 625 } 626 static FORCEINLINE HRESULT IMediaObject_GetInputType(IMediaObject* This,DWORD dwInputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) { 627 return This->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt); 628 } 629 static FORCEINLINE HRESULT IMediaObject_GetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) { 630 return This->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt); 631 } 632 static FORCEINLINE HRESULT IMediaObject_SetInputType(IMediaObject* This,DWORD dwInputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) { 633 return This->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags); 634 } 635 static FORCEINLINE HRESULT IMediaObject_SetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) { 636 return This->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags); 637 } 638 static FORCEINLINE HRESULT IMediaObject_GetInputCurrentType(IMediaObject* This,DWORD dwInputStreamIndex,DMO_MEDIA_TYPE *pmt) { 639 return This->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt); 640 } 641 static FORCEINLINE HRESULT IMediaObject_GetOutputCurrentType(IMediaObject* This,DWORD dwOutputStreamIndex,DMO_MEDIA_TYPE *pmt) { 642 return This->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt); 643 } 644 static FORCEINLINE HRESULT IMediaObject_GetInputSizeInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pcbSize,DWORD *pcbMaxLookahead,DWORD *pcbAlignment) { 645 return This->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment); 646 } 647 static FORCEINLINE HRESULT IMediaObject_GetOutputSizeInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pcbSize,DWORD *pcbAlignment) { 648 return This->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment); 649 } 650 static FORCEINLINE HRESULT IMediaObject_GetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME *prtMaxLatency) { 651 return This->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency); 652 } 653 static FORCEINLINE HRESULT IMediaObject_SetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME rtMaxLatency) { 654 return This->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency); 655 } 656 static FORCEINLINE HRESULT IMediaObject_Flush(IMediaObject* This) { 657 return This->lpVtbl->Flush(This); 658 } 659 static FORCEINLINE HRESULT IMediaObject_Discontinuity(IMediaObject* This,DWORD dwInputStreamIndex) { 660 return This->lpVtbl->Discontinuity(This,dwInputStreamIndex); 661 } 662 static FORCEINLINE HRESULT IMediaObject_AllocateStreamingResources(IMediaObject* This) { 663 return This->lpVtbl->AllocateStreamingResources(This); 664 } 665 static FORCEINLINE HRESULT IMediaObject_FreeStreamingResources(IMediaObject* This) { 666 return This->lpVtbl->FreeStreamingResources(This); 667 } 668 static FORCEINLINE HRESULT IMediaObject_GetInputStatus(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *dwFlags) { 669 return This->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags); 670 } 671 static FORCEINLINE HRESULT IMediaObject_ProcessInput(IMediaObject* This,DWORD dwInputStreamIndex,IMediaBuffer *pBuffer,DWORD dwFlags,REFERENCE_TIME rtTimestamp,REFERENCE_TIME rtTimelength) { 672 return This->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength); 673 } 674 static FORCEINLINE HRESULT IMediaObject_ProcessOutput(IMediaObject* This,DWORD dwFlags,DWORD cOutputBufferCount,DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,DWORD *pdwStatus) { 675 return This->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus); 676 } 677 static FORCEINLINE HRESULT IMediaObject_Lock(IMediaObject* This,LONG bLock) { 678 return This->lpVtbl->Lock(This,bLock); 679 } 680 #endif 681 #endif 682 683 #endif 684 685 686 #endif /* __IMediaObject_INTERFACE_DEFINED__ */ 687 688 /***************************************************************************** 689 * IMediaObjectInPlace interface 690 */ 691 #ifndef __IMediaObjectInPlace_INTERFACE_DEFINED__ 692 #define __IMediaObjectInPlace_INTERFACE_DEFINED__ 693 694 DEFINE_GUID(IID_IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41); 695 #if defined(__cplusplus) && !defined(CINTERFACE) 696 MIDL_INTERFACE("651b9ad0-0fc7-4aa9-9538-d89931010741") 697 IMediaObjectInPlace : public IUnknown 698 { 699 virtual HRESULT STDMETHODCALLTYPE Process( 700 ULONG ulSize, 701 BYTE *pData, 702 REFERENCE_TIME refTimeStart, 703 DWORD dwFlags) = 0; 704 705 virtual HRESULT STDMETHODCALLTYPE Clone( 706 IMediaObjectInPlace **ppMediaObject) = 0; 707 708 virtual HRESULT STDMETHODCALLTYPE GetLatency( 709 REFERENCE_TIME *pLatencyTime) = 0; 710 711 }; 712 #ifdef __CRT_UUID_DECL 713 __CRT_UUID_DECL(IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41) 714 #endif 715 #else 716 typedef struct IMediaObjectInPlaceVtbl { 717 BEGIN_INTERFACE 718 719 /*** IUnknown methods ***/ 720 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 721 IMediaObjectInPlace *This, 722 REFIID riid, 723 void **ppvObject); 724 725 ULONG (STDMETHODCALLTYPE *AddRef)( 726 IMediaObjectInPlace *This); 727 728 ULONG (STDMETHODCALLTYPE *Release)( 729 IMediaObjectInPlace *This); 730 731 /*** IMediaObjectInPlace methods ***/ 732 HRESULT (STDMETHODCALLTYPE *Process)( 733 IMediaObjectInPlace *This, 734 ULONG ulSize, 735 BYTE *pData, 736 REFERENCE_TIME refTimeStart, 737 DWORD dwFlags); 738 739 HRESULT (STDMETHODCALLTYPE *Clone)( 740 IMediaObjectInPlace *This, 741 IMediaObjectInPlace **ppMediaObject); 742 743 HRESULT (STDMETHODCALLTYPE *GetLatency)( 744 IMediaObjectInPlace *This, 745 REFERENCE_TIME *pLatencyTime); 746 747 END_INTERFACE 748 } IMediaObjectInPlaceVtbl; 749 750 interface IMediaObjectInPlace { 751 CONST_VTBL IMediaObjectInPlaceVtbl* lpVtbl; 752 }; 753 754 #ifdef COBJMACROS 755 #ifndef WIDL_C_INLINE_WRAPPERS 756 /*** IUnknown methods ***/ 757 #define IMediaObjectInPlace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 758 #define IMediaObjectInPlace_AddRef(This) (This)->lpVtbl->AddRef(This) 759 #define IMediaObjectInPlace_Release(This) (This)->lpVtbl->Release(This) 760 /*** IMediaObjectInPlace methods ***/ 761 #define IMediaObjectInPlace_Process(This,ulSize,pData,refTimeStart,dwFlags) (This)->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags) 762 #define IMediaObjectInPlace_Clone(This,ppMediaObject) (This)->lpVtbl->Clone(This,ppMediaObject) 763 #define IMediaObjectInPlace_GetLatency(This,pLatencyTime) (This)->lpVtbl->GetLatency(This,pLatencyTime) 764 #else 765 /*** IUnknown methods ***/ 766 static FORCEINLINE HRESULT IMediaObjectInPlace_QueryInterface(IMediaObjectInPlace* This,REFIID riid,void **ppvObject) { 767 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 768 } 769 static FORCEINLINE ULONG IMediaObjectInPlace_AddRef(IMediaObjectInPlace* This) { 770 return This->lpVtbl->AddRef(This); 771 } 772 static FORCEINLINE ULONG IMediaObjectInPlace_Release(IMediaObjectInPlace* This) { 773 return This->lpVtbl->Release(This); 774 } 775 /*** IMediaObjectInPlace methods ***/ 776 static FORCEINLINE HRESULT IMediaObjectInPlace_Process(IMediaObjectInPlace* This,ULONG ulSize,BYTE *pData,REFERENCE_TIME refTimeStart,DWORD dwFlags) { 777 return This->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags); 778 } 779 static FORCEINLINE HRESULT IMediaObjectInPlace_Clone(IMediaObjectInPlace* This,IMediaObjectInPlace **ppMediaObject) { 780 return This->lpVtbl->Clone(This,ppMediaObject); 781 } 782 static FORCEINLINE HRESULT IMediaObjectInPlace_GetLatency(IMediaObjectInPlace* This,REFERENCE_TIME *pLatencyTime) { 783 return This->lpVtbl->GetLatency(This,pLatencyTime); 784 } 785 #endif 786 #endif 787 788 #endif 789 790 791 #endif /* __IMediaObjectInPlace_INTERFACE_DEFINED__ */ 792 793 enum _DMO_QUALITY_STATUS_FLAGS { 794 DMO_QUALITY_STATUS_ENABLED = 0x1 795 }; 796 /***************************************************************************** 797 * IDMOQualityControl interface 798 */ 799 #ifndef __IDMOQualityControl_INTERFACE_DEFINED__ 800 #define __IDMOQualityControl_INTERFACE_DEFINED__ 801 802 DEFINE_GUID(IID_IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60); 803 #if defined(__cplusplus) && !defined(CINTERFACE) 804 MIDL_INTERFACE("65abea96-cf36-453f-af8a-705e98f16260") 805 IDMOQualityControl : public IUnknown 806 { 807 virtual HRESULT STDMETHODCALLTYPE SetNow( 808 REFERENCE_TIME now) = 0; 809 810 virtual HRESULT STDMETHODCALLTYPE SetStatus( 811 DWORD flags) = 0; 812 813 virtual HRESULT STDMETHODCALLTYPE GetStatus( 814 DWORD *flags) = 0; 815 816 }; 817 #ifdef __CRT_UUID_DECL 818 __CRT_UUID_DECL(IDMOQualityControl, 0x65abea96, 0xcf36, 0x453f, 0xaf,0x8a, 0x70,0x5e,0x98,0xf1,0x62,0x60) 819 #endif 820 #else 821 typedef struct IDMOQualityControlVtbl { 822 BEGIN_INTERFACE 823 824 /*** IUnknown methods ***/ 825 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 826 IDMOQualityControl *This, 827 REFIID riid, 828 void **ppvObject); 829 830 ULONG (STDMETHODCALLTYPE *AddRef)( 831 IDMOQualityControl *This); 832 833 ULONG (STDMETHODCALLTYPE *Release)( 834 IDMOQualityControl *This); 835 836 /*** IDMOQualityControl methods ***/ 837 HRESULT (STDMETHODCALLTYPE *SetNow)( 838 IDMOQualityControl *This, 839 REFERENCE_TIME now); 840 841 HRESULT (STDMETHODCALLTYPE *SetStatus)( 842 IDMOQualityControl *This, 843 DWORD flags); 844 845 HRESULT (STDMETHODCALLTYPE *GetStatus)( 846 IDMOQualityControl *This, 847 DWORD *flags); 848 849 END_INTERFACE 850 } IDMOQualityControlVtbl; 851 852 interface IDMOQualityControl { 853 CONST_VTBL IDMOQualityControlVtbl* lpVtbl; 854 }; 855 856 #ifdef COBJMACROS 857 #ifndef WIDL_C_INLINE_WRAPPERS 858 /*** IUnknown methods ***/ 859 #define IDMOQualityControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 860 #define IDMOQualityControl_AddRef(This) (This)->lpVtbl->AddRef(This) 861 #define IDMOQualityControl_Release(This) (This)->lpVtbl->Release(This) 862 /*** IDMOQualityControl methods ***/ 863 #define IDMOQualityControl_SetNow(This,now) (This)->lpVtbl->SetNow(This,now) 864 #define IDMOQualityControl_SetStatus(This,flags) (This)->lpVtbl->SetStatus(This,flags) 865 #define IDMOQualityControl_GetStatus(This,flags) (This)->lpVtbl->GetStatus(This,flags) 866 #else 867 /*** IUnknown methods ***/ 868 static FORCEINLINE HRESULT IDMOQualityControl_QueryInterface(IDMOQualityControl* This,REFIID riid,void **ppvObject) { 869 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 870 } 871 static FORCEINLINE ULONG IDMOQualityControl_AddRef(IDMOQualityControl* This) { 872 return This->lpVtbl->AddRef(This); 873 } 874 static FORCEINLINE ULONG IDMOQualityControl_Release(IDMOQualityControl* This) { 875 return This->lpVtbl->Release(This); 876 } 877 /*** IDMOQualityControl methods ***/ 878 static FORCEINLINE HRESULT IDMOQualityControl_SetNow(IDMOQualityControl* This,REFERENCE_TIME now) { 879 return This->lpVtbl->SetNow(This,now); 880 } 881 static FORCEINLINE HRESULT IDMOQualityControl_SetStatus(IDMOQualityControl* This,DWORD flags) { 882 return This->lpVtbl->SetStatus(This,flags); 883 } 884 static FORCEINLINE HRESULT IDMOQualityControl_GetStatus(IDMOQualityControl* This,DWORD *flags) { 885 return This->lpVtbl->GetStatus(This,flags); 886 } 887 #endif 888 #endif 889 890 #endif 891 892 893 #endif /* __IDMOQualityControl_INTERFACE_DEFINED__ */ 894 895 enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS { 896 DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x1 897 }; 898 /***************************************************************************** 899 * IDMOVideoOutputOptimizations interface 900 */ 901 #ifndef __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ 902 #define __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ 903 904 DEFINE_GUID(IID_IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac); 905 #if defined(__cplusplus) && !defined(CINTERFACE) 906 MIDL_INTERFACE("be8f4f4e-5b16-4d29-b350-7f6b5d9298ac") 907 IDMOVideoOutputOptimizations : public IUnknown 908 { 909 virtual HRESULT STDMETHODCALLTYPE QueryOperationModePreferences( 910 ULONG index, 911 DWORD *flags) = 0; 912 913 virtual HRESULT STDMETHODCALLTYPE SetOperationMode( 914 ULONG index, 915 DWORD flags) = 0; 916 917 virtual HRESULT STDMETHODCALLTYPE GetCurrentOperationMode( 918 ULONG index, 919 DWORD *flags) = 0; 920 921 virtual HRESULT STDMETHODCALLTYPE GetCurrentSampleRequirements( 922 ULONG index, 923 DWORD *flags) = 0; 924 925 }; 926 #ifdef __CRT_UUID_DECL 927 __CRT_UUID_DECL(IDMOVideoOutputOptimizations, 0xbe8f4f4e, 0x5b16, 0x4d29, 0xb3,0x50, 0x7f,0x6b,0x5d,0x92,0x98,0xac) 928 #endif 929 #else 930 typedef struct IDMOVideoOutputOptimizationsVtbl { 931 BEGIN_INTERFACE 932 933 /*** IUnknown methods ***/ 934 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 935 IDMOVideoOutputOptimizations *This, 936 REFIID riid, 937 void **ppvObject); 938 939 ULONG (STDMETHODCALLTYPE *AddRef)( 940 IDMOVideoOutputOptimizations *This); 941 942 ULONG (STDMETHODCALLTYPE *Release)( 943 IDMOVideoOutputOptimizations *This); 944 945 /*** IDMOVideoOutputOptimizations methods ***/ 946 HRESULT (STDMETHODCALLTYPE *QueryOperationModePreferences)( 947 IDMOVideoOutputOptimizations *This, 948 ULONG index, 949 DWORD *flags); 950 951 HRESULT (STDMETHODCALLTYPE *SetOperationMode)( 952 IDMOVideoOutputOptimizations *This, 953 ULONG index, 954 DWORD flags); 955 956 HRESULT (STDMETHODCALLTYPE *GetCurrentOperationMode)( 957 IDMOVideoOutputOptimizations *This, 958 ULONG index, 959 DWORD *flags); 960 961 HRESULT (STDMETHODCALLTYPE *GetCurrentSampleRequirements)( 962 IDMOVideoOutputOptimizations *This, 963 ULONG index, 964 DWORD *flags); 965 966 END_INTERFACE 967 } IDMOVideoOutputOptimizationsVtbl; 968 969 interface IDMOVideoOutputOptimizations { 970 CONST_VTBL IDMOVideoOutputOptimizationsVtbl* lpVtbl; 971 }; 972 973 #ifdef COBJMACROS 974 #ifndef WIDL_C_INLINE_WRAPPERS 975 /*** IUnknown methods ***/ 976 #define IDMOVideoOutputOptimizations_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 977 #define IDMOVideoOutputOptimizations_AddRef(This) (This)->lpVtbl->AddRef(This) 978 #define IDMOVideoOutputOptimizations_Release(This) (This)->lpVtbl->Release(This) 979 /*** IDMOVideoOutputOptimizations methods ***/ 980 #define IDMOVideoOutputOptimizations_QueryOperationModePreferences(This,index,flags) (This)->lpVtbl->QueryOperationModePreferences(This,index,flags) 981 #define IDMOVideoOutputOptimizations_SetOperationMode(This,index,flags) (This)->lpVtbl->SetOperationMode(This,index,flags) 982 #define IDMOVideoOutputOptimizations_GetCurrentOperationMode(This,index,flags) (This)->lpVtbl->GetCurrentOperationMode(This,index,flags) 983 #define IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(This,index,flags) (This)->lpVtbl->GetCurrentSampleRequirements(This,index,flags) 984 #else 985 /*** IUnknown methods ***/ 986 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_QueryInterface(IDMOVideoOutputOptimizations* This,REFIID riid,void **ppvObject) { 987 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 988 } 989 static FORCEINLINE ULONG IDMOVideoOutputOptimizations_AddRef(IDMOVideoOutputOptimizations* This) { 990 return This->lpVtbl->AddRef(This); 991 } 992 static FORCEINLINE ULONG IDMOVideoOutputOptimizations_Release(IDMOVideoOutputOptimizations* This) { 993 return This->lpVtbl->Release(This); 994 } 995 /*** IDMOVideoOutputOptimizations methods ***/ 996 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_QueryOperationModePreferences(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) { 997 return This->lpVtbl->QueryOperationModePreferences(This,index,flags); 998 } 999 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_SetOperationMode(IDMOVideoOutputOptimizations* This,ULONG index,DWORD flags) { 1000 return This->lpVtbl->SetOperationMode(This,index,flags); 1001 } 1002 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_GetCurrentOperationMode(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) { 1003 return This->lpVtbl->GetCurrentOperationMode(This,index,flags); 1004 } 1005 static FORCEINLINE HRESULT IDMOVideoOutputOptimizations_GetCurrentSampleRequirements(IDMOVideoOutputOptimizations* This,ULONG index,DWORD *flags) { 1006 return This->lpVtbl->GetCurrentSampleRequirements(This,index,flags); 1007 } 1008 #endif 1009 #endif 1010 1011 #endif 1012 1013 1014 #endif /* __IDMOVideoOutputOptimizations_INTERFACE_DEFINED__ */ 1015 1016 /* Begin additional prototypes for all interfaces */ 1017 1018 1019 /* End additional prototypes */ 1020 1021 #ifdef __cplusplus 1022 } 1023 #endif 1024 1025 #endif /* __mediaobj_h__ */ 1026