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