1 /*** Autogenerated by WIDL 4.19 from direct-x/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 /* Headers for imported files */ 54 55 #include <unknwn.h> 56 #include <objidl.h> 57 #include <strmif.h> 58 59 #ifdef __cplusplus 60 extern "C" { 61 #endif 62 63 #ifndef __IDMOQualityControl_FWD_DEFINED__ 64 #define __IDMOQualityControl_FWD_DEFINED__ 65 typedef interface IDMOQualityControl IDMOQualityControl; 66 #ifdef __cplusplus 67 interface IDMOQualityControl; 68 #endif /* __cplusplus */ 69 #endif 70 71 #ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__ 72 #define __IDMOVideoOutputOptimizations_FWD_DEFINED__ 73 typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations; 74 #ifdef __cplusplus 75 interface IDMOVideoOutputOptimizations; 76 #endif /* __cplusplus */ 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 typedef struct _DMO_OUTPUT_DATA_BUFFER { 307 IMediaBuffer *pBuffer; 308 DWORD dwStatus; 309 REFERENCE_TIME rtTimestamp; 310 REFERENCE_TIME rtTimelength; 311 } DMO_OUTPUT_DATA_BUFFER; 312 typedef struct _DMO_OUTPUT_DATA_BUFFER *PDMO_OUTPUT_DATA_BUFFER; 313 enum _DMO_INPLACE_PROCESS_FLAGS { 314 DMO_INPLACE_NORMAL = 0x0, 315 DMO_INPLACE_ZERO = 0x1 316 }; 317 enum _DMO_SET_TYPE_FLAGS { 318 DMO_SET_TYPEF_TEST_ONLY = 0x1, 319 DMO_SET_TYPEF_CLEAR = 0x2 320 }; 321 enum _DMO_OUTPUT_DATA_BUFFERF_FLAGS { 322 DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x1, 323 DMO_OUTPUT_DATA_BUFFERF_TIME = 0x2, 324 DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x4, 325 DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x1000000 326 }; 327 /***************************************************************************** 328 * IMediaObject interface 329 */ 330 #ifndef __IMediaObject_INTERFACE_DEFINED__ 331 #define __IMediaObject_INTERFACE_DEFINED__ 332 333 DEFINE_GUID(IID_IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4); 334 #if defined(__cplusplus) && !defined(CINTERFACE) 335 MIDL_INTERFACE("d8ad0f58-5494-4102-97c5-ec798e59bcf4") 336 IMediaObject : public IUnknown 337 { 338 virtual HRESULT STDMETHODCALLTYPE GetStreamCount( 339 DWORD *pcInputStreams, 340 DWORD *pcOutputStreams) = 0; 341 342 virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo( 343 DWORD dwInputStreamIndex, 344 DWORD *pdwFlags) = 0; 345 346 virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo( 347 DWORD dwOutputStreamIndex, 348 DWORD *pdwFlags) = 0; 349 350 virtual HRESULT STDMETHODCALLTYPE GetInputType( 351 DWORD dwInputStreamIndex, 352 DWORD dwTypeIndex, 353 DMO_MEDIA_TYPE *pmt) = 0; 354 355 virtual HRESULT STDMETHODCALLTYPE GetOutputType( 356 DWORD dwOutputStreamIndex, 357 DWORD dwTypeIndex, 358 DMO_MEDIA_TYPE *pmt) = 0; 359 360 virtual HRESULT STDMETHODCALLTYPE SetInputType( 361 DWORD dwInputStreamIndex, 362 const DMO_MEDIA_TYPE *pmt, 363 DWORD dwFlags) = 0; 364 365 virtual HRESULT STDMETHODCALLTYPE SetOutputType( 366 DWORD dwOutputStreamIndex, 367 const DMO_MEDIA_TYPE *pmt, 368 DWORD dwFlags) = 0; 369 370 virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType( 371 DWORD dwInputStreamIndex, 372 DMO_MEDIA_TYPE *pmt) = 0; 373 374 virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType( 375 DWORD dwOutputStreamIndex, 376 DMO_MEDIA_TYPE *pmt) = 0; 377 378 virtual HRESULT STDMETHODCALLTYPE GetInputSizeInfo( 379 DWORD dwInputStreamIndex, 380 DWORD *pcbSize, 381 DWORD *pcbMaxLookahead, 382 DWORD *pcbAlignment) = 0; 383 384 virtual HRESULT STDMETHODCALLTYPE GetOutputSizeInfo( 385 DWORD dwOutputStreamIndex, 386 DWORD *pcbSize, 387 DWORD *pcbAlignment) = 0; 388 389 virtual HRESULT STDMETHODCALLTYPE GetInputMaxLatency( 390 DWORD dwInputStreamIndex, 391 REFERENCE_TIME *prtMaxLatency) = 0; 392 393 virtual HRESULT STDMETHODCALLTYPE SetInputMaxLatency( 394 DWORD dwInputStreamIndex, 395 REFERENCE_TIME rtMaxLatency) = 0; 396 397 virtual HRESULT STDMETHODCALLTYPE Flush( 398 ) = 0; 399 400 virtual HRESULT STDMETHODCALLTYPE Discontinuity( 401 DWORD dwInputStreamIndex) = 0; 402 403 virtual HRESULT STDMETHODCALLTYPE AllocateStreamingResources( 404 ) = 0; 405 406 virtual HRESULT STDMETHODCALLTYPE FreeStreamingResources( 407 ) = 0; 408 409 virtual HRESULT STDMETHODCALLTYPE GetInputStatus( 410 DWORD dwInputStreamIndex, 411 DWORD *dwFlags) = 0; 412 413 virtual HRESULT STDMETHODCALLTYPE ProcessInput( 414 DWORD dwInputStreamIndex, 415 IMediaBuffer *pBuffer, 416 DWORD dwFlags, 417 REFERENCE_TIME rtTimestamp, 418 REFERENCE_TIME rtTimelength) = 0; 419 420 virtual HRESULT STDMETHODCALLTYPE ProcessOutput( 421 DWORD dwFlags, 422 DWORD cOutputBufferCount, 423 DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, 424 DWORD *pdwStatus) = 0; 425 426 virtual HRESULT STDMETHODCALLTYPE Lock( 427 LONG bLock) = 0; 428 429 }; 430 #ifdef __CRT_UUID_DECL 431 __CRT_UUID_DECL(IMediaObject, 0xd8ad0f58, 0x5494, 0x4102, 0x97,0xc5, 0xec,0x79,0x8e,0x59,0xbc,0xf4) 432 #endif 433 #else 434 typedef struct IMediaObjectVtbl { 435 BEGIN_INTERFACE 436 437 /*** IUnknown methods ***/ 438 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 439 IMediaObject *This, 440 REFIID riid, 441 void **ppvObject); 442 443 ULONG (STDMETHODCALLTYPE *AddRef)( 444 IMediaObject *This); 445 446 ULONG (STDMETHODCALLTYPE *Release)( 447 IMediaObject *This); 448 449 /*** IMediaObject methods ***/ 450 HRESULT (STDMETHODCALLTYPE *GetStreamCount)( 451 IMediaObject *This, 452 DWORD *pcInputStreams, 453 DWORD *pcOutputStreams); 454 455 HRESULT (STDMETHODCALLTYPE *GetInputStreamInfo)( 456 IMediaObject *This, 457 DWORD dwInputStreamIndex, 458 DWORD *pdwFlags); 459 460 HRESULT (STDMETHODCALLTYPE *GetOutputStreamInfo)( 461 IMediaObject *This, 462 DWORD dwOutputStreamIndex, 463 DWORD *pdwFlags); 464 465 HRESULT (STDMETHODCALLTYPE *GetInputType)( 466 IMediaObject *This, 467 DWORD dwInputStreamIndex, 468 DWORD dwTypeIndex, 469 DMO_MEDIA_TYPE *pmt); 470 471 HRESULT (STDMETHODCALLTYPE *GetOutputType)( 472 IMediaObject *This, 473 DWORD dwOutputStreamIndex, 474 DWORD dwTypeIndex, 475 DMO_MEDIA_TYPE *pmt); 476 477 HRESULT (STDMETHODCALLTYPE *SetInputType)( 478 IMediaObject *This, 479 DWORD dwInputStreamIndex, 480 const DMO_MEDIA_TYPE *pmt, 481 DWORD dwFlags); 482 483 HRESULT (STDMETHODCALLTYPE *SetOutputType)( 484 IMediaObject *This, 485 DWORD dwOutputStreamIndex, 486 const DMO_MEDIA_TYPE *pmt, 487 DWORD dwFlags); 488 489 HRESULT (STDMETHODCALLTYPE *GetInputCurrentType)( 490 IMediaObject *This, 491 DWORD dwInputStreamIndex, 492 DMO_MEDIA_TYPE *pmt); 493 494 HRESULT (STDMETHODCALLTYPE *GetOutputCurrentType)( 495 IMediaObject *This, 496 DWORD dwOutputStreamIndex, 497 DMO_MEDIA_TYPE *pmt); 498 499 HRESULT (STDMETHODCALLTYPE *GetInputSizeInfo)( 500 IMediaObject *This, 501 DWORD dwInputStreamIndex, 502 DWORD *pcbSize, 503 DWORD *pcbMaxLookahead, 504 DWORD *pcbAlignment); 505 506 HRESULT (STDMETHODCALLTYPE *GetOutputSizeInfo)( 507 IMediaObject *This, 508 DWORD dwOutputStreamIndex, 509 DWORD *pcbSize, 510 DWORD *pcbAlignment); 511 512 HRESULT (STDMETHODCALLTYPE *GetInputMaxLatency)( 513 IMediaObject *This, 514 DWORD dwInputStreamIndex, 515 REFERENCE_TIME *prtMaxLatency); 516 517 HRESULT (STDMETHODCALLTYPE *SetInputMaxLatency)( 518 IMediaObject *This, 519 DWORD dwInputStreamIndex, 520 REFERENCE_TIME rtMaxLatency); 521 522 HRESULT (STDMETHODCALLTYPE *Flush)( 523 IMediaObject *This); 524 525 HRESULT (STDMETHODCALLTYPE *Discontinuity)( 526 IMediaObject *This, 527 DWORD dwInputStreamIndex); 528 529 HRESULT (STDMETHODCALLTYPE *AllocateStreamingResources)( 530 IMediaObject *This); 531 532 HRESULT (STDMETHODCALLTYPE *FreeStreamingResources)( 533 IMediaObject *This); 534 535 HRESULT (STDMETHODCALLTYPE *GetInputStatus)( 536 IMediaObject *This, 537 DWORD dwInputStreamIndex, 538 DWORD *dwFlags); 539 540 HRESULT (STDMETHODCALLTYPE *ProcessInput)( 541 IMediaObject *This, 542 DWORD dwInputStreamIndex, 543 IMediaBuffer *pBuffer, 544 DWORD dwFlags, 545 REFERENCE_TIME rtTimestamp, 546 REFERENCE_TIME rtTimelength); 547 548 HRESULT (STDMETHODCALLTYPE *ProcessOutput)( 549 IMediaObject *This, 550 DWORD dwFlags, 551 DWORD cOutputBufferCount, 552 DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, 553 DWORD *pdwStatus); 554 555 HRESULT (STDMETHODCALLTYPE *Lock)( 556 IMediaObject *This, 557 LONG bLock); 558 559 END_INTERFACE 560 } IMediaObjectVtbl; 561 562 interface IMediaObject { 563 CONST_VTBL IMediaObjectVtbl* lpVtbl; 564 }; 565 566 #ifdef COBJMACROS 567 #ifndef WIDL_C_INLINE_WRAPPERS 568 /*** IUnknown methods ***/ 569 #define IMediaObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 570 #define IMediaObject_AddRef(This) (This)->lpVtbl->AddRef(This) 571 #define IMediaObject_Release(This) (This)->lpVtbl->Release(This) 572 /*** IMediaObject methods ***/ 573 #define IMediaObject_GetStreamCount(This,pcInputStreams,pcOutputStreams) (This)->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams) 574 #define IMediaObject_GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) (This)->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags) 575 #define IMediaObject_GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) (This)->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags) 576 #define IMediaObject_GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt) 577 #define IMediaObject_GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) (This)->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt) 578 #define IMediaObject_SetInputType(This,dwInputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags) 579 #define IMediaObject_SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) (This)->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags) 580 #define IMediaObject_GetInputCurrentType(This,dwInputStreamIndex,pmt) (This)->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt) 581 #define IMediaObject_GetOutputCurrentType(This,dwOutputStreamIndex,pmt) (This)->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt) 582 #define IMediaObject_GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) (This)->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment) 583 #define IMediaObject_GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) (This)->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment) 584 #define IMediaObject_GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) (This)->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency) 585 #define IMediaObject_SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) (This)->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency) 586 #define IMediaObject_Flush(This) (This)->lpVtbl->Flush(This) 587 #define IMediaObject_Discontinuity(This,dwInputStreamIndex) (This)->lpVtbl->Discontinuity(This,dwInputStreamIndex) 588 #define IMediaObject_AllocateStreamingResources(This) (This)->lpVtbl->AllocateStreamingResources(This) 589 #define IMediaObject_FreeStreamingResources(This) (This)->lpVtbl->FreeStreamingResources(This) 590 #define IMediaObject_GetInputStatus(This,dwInputStreamIndex,dwFlags) (This)->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags) 591 #define IMediaObject_ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) (This)->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength) 592 #define IMediaObject_ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) (This)->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus) 593 #define IMediaObject_Lock(This,bLock) (This)->lpVtbl->Lock(This,bLock) 594 #else 595 /*** IUnknown methods ***/ 596 static FORCEINLINE HRESULT IMediaObject_QueryInterface(IMediaObject* This,REFIID riid,void **ppvObject) { 597 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 598 } 599 static FORCEINLINE ULONG IMediaObject_AddRef(IMediaObject* This) { 600 return This->lpVtbl->AddRef(This); 601 } 602 static FORCEINLINE ULONG IMediaObject_Release(IMediaObject* This) { 603 return This->lpVtbl->Release(This); 604 } 605 /*** IMediaObject methods ***/ 606 static FORCEINLINE HRESULT IMediaObject_GetStreamCount(IMediaObject* This,DWORD *pcInputStreams,DWORD *pcOutputStreams) { 607 return This->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams); 608 } 609 static FORCEINLINE HRESULT IMediaObject_GetInputStreamInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pdwFlags) { 610 return This->lpVtbl->GetInputStreamInfo(This,dwInputStreamIndex,pdwFlags); 611 } 612 static FORCEINLINE HRESULT IMediaObject_GetOutputStreamInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pdwFlags) { 613 return This->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamIndex,pdwFlags); 614 } 615 static FORCEINLINE HRESULT IMediaObject_GetInputType(IMediaObject* This,DWORD dwInputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) { 616 return This->lpVtbl->GetInputType(This,dwInputStreamIndex,dwTypeIndex,pmt); 617 } 618 static FORCEINLINE HRESULT IMediaObject_GetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD dwTypeIndex,DMO_MEDIA_TYPE *pmt) { 619 return This->lpVtbl->GetOutputType(This,dwOutputStreamIndex,dwTypeIndex,pmt); 620 } 621 static FORCEINLINE HRESULT IMediaObject_SetInputType(IMediaObject* This,DWORD dwInputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) { 622 return This->lpVtbl->SetInputType(This,dwInputStreamIndex,pmt,dwFlags); 623 } 624 static FORCEINLINE HRESULT IMediaObject_SetOutputType(IMediaObject* This,DWORD dwOutputStreamIndex,const DMO_MEDIA_TYPE *pmt,DWORD dwFlags) { 625 return This->lpVtbl->SetOutputType(This,dwOutputStreamIndex,pmt,dwFlags); 626 } 627 static FORCEINLINE HRESULT IMediaObject_GetInputCurrentType(IMediaObject* This,DWORD dwInputStreamIndex,DMO_MEDIA_TYPE *pmt) { 628 return This->lpVtbl->GetInputCurrentType(This,dwInputStreamIndex,pmt); 629 } 630 static FORCEINLINE HRESULT IMediaObject_GetOutputCurrentType(IMediaObject* This,DWORD dwOutputStreamIndex,DMO_MEDIA_TYPE *pmt) { 631 return This->lpVtbl->GetOutputCurrentType(This,dwOutputStreamIndex,pmt); 632 } 633 static FORCEINLINE HRESULT IMediaObject_GetInputSizeInfo(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *pcbSize,DWORD *pcbMaxLookahead,DWORD *pcbAlignment) { 634 return This->lpVtbl->GetInputSizeInfo(This,dwInputStreamIndex,pcbSize,pcbMaxLookahead,pcbAlignment); 635 } 636 static FORCEINLINE HRESULT IMediaObject_GetOutputSizeInfo(IMediaObject* This,DWORD dwOutputStreamIndex,DWORD *pcbSize,DWORD *pcbAlignment) { 637 return This->lpVtbl->GetOutputSizeInfo(This,dwOutputStreamIndex,pcbSize,pcbAlignment); 638 } 639 static FORCEINLINE HRESULT IMediaObject_GetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME *prtMaxLatency) { 640 return This->lpVtbl->GetInputMaxLatency(This,dwInputStreamIndex,prtMaxLatency); 641 } 642 static FORCEINLINE HRESULT IMediaObject_SetInputMaxLatency(IMediaObject* This,DWORD dwInputStreamIndex,REFERENCE_TIME rtMaxLatency) { 643 return This->lpVtbl->SetInputMaxLatency(This,dwInputStreamIndex,rtMaxLatency); 644 } 645 static FORCEINLINE HRESULT IMediaObject_Flush(IMediaObject* This) { 646 return This->lpVtbl->Flush(This); 647 } 648 static FORCEINLINE HRESULT IMediaObject_Discontinuity(IMediaObject* This,DWORD dwInputStreamIndex) { 649 return This->lpVtbl->Discontinuity(This,dwInputStreamIndex); 650 } 651 static FORCEINLINE HRESULT IMediaObject_AllocateStreamingResources(IMediaObject* This) { 652 return This->lpVtbl->AllocateStreamingResources(This); 653 } 654 static FORCEINLINE HRESULT IMediaObject_FreeStreamingResources(IMediaObject* This) { 655 return This->lpVtbl->FreeStreamingResources(This); 656 } 657 static FORCEINLINE HRESULT IMediaObject_GetInputStatus(IMediaObject* This,DWORD dwInputStreamIndex,DWORD *dwFlags) { 658 return This->lpVtbl->GetInputStatus(This,dwInputStreamIndex,dwFlags); 659 } 660 static FORCEINLINE HRESULT IMediaObject_ProcessInput(IMediaObject* This,DWORD dwInputStreamIndex,IMediaBuffer *pBuffer,DWORD dwFlags,REFERENCE_TIME rtTimestamp,REFERENCE_TIME rtTimelength) { 661 return This->lpVtbl->ProcessInput(This,dwInputStreamIndex,pBuffer,dwFlags,rtTimestamp,rtTimelength); 662 } 663 static FORCEINLINE HRESULT IMediaObject_ProcessOutput(IMediaObject* This,DWORD dwFlags,DWORD cOutputBufferCount,DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,DWORD *pdwStatus) { 664 return This->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputBuffers,pdwStatus); 665 } 666 static FORCEINLINE HRESULT IMediaObject_Lock(IMediaObject* This,LONG bLock) { 667 return This->lpVtbl->Lock(This,bLock); 668 } 669 #endif 670 #endif 671 672 #endif 673 674 675 #endif /* __IMediaObject_INTERFACE_DEFINED__ */ 676 677 /***************************************************************************** 678 * IMediaObjectInPlace interface 679 */ 680 #ifndef __IMediaObjectInPlace_INTERFACE_DEFINED__ 681 #define __IMediaObjectInPlace_INTERFACE_DEFINED__ 682 683 DEFINE_GUID(IID_IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41); 684 #if defined(__cplusplus) && !defined(CINTERFACE) 685 MIDL_INTERFACE("651b9ad0-0fc7-4aa9-9538-d89931010741") 686 IMediaObjectInPlace : public IUnknown 687 { 688 virtual HRESULT STDMETHODCALLTYPE Process( 689 ULONG ulSize, 690 BYTE *pData, 691 REFERENCE_TIME refTimeStart, 692 DWORD dwFlags) = 0; 693 694 virtual HRESULT STDMETHODCALLTYPE Clone( 695 IMediaObjectInPlace **ppMediaObject) = 0; 696 697 virtual HRESULT STDMETHODCALLTYPE GetLatency( 698 REFERENCE_TIME *pLatencyTime) = 0; 699 700 }; 701 #ifdef __CRT_UUID_DECL 702 __CRT_UUID_DECL(IMediaObjectInPlace, 0x651b9ad0, 0x0fc7, 0x4aa9, 0x95,0x38, 0xd8,0x99,0x31,0x01,0x07,0x41) 703 #endif 704 #else 705 typedef struct IMediaObjectInPlaceVtbl { 706 BEGIN_INTERFACE 707 708 /*** IUnknown methods ***/ 709 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 710 IMediaObjectInPlace *This, 711 REFIID riid, 712 void **ppvObject); 713 714 ULONG (STDMETHODCALLTYPE *AddRef)( 715 IMediaObjectInPlace *This); 716 717 ULONG (STDMETHODCALLTYPE *Release)( 718 IMediaObjectInPlace *This); 719 720 /*** IMediaObjectInPlace methods ***/ 721 HRESULT (STDMETHODCALLTYPE *Process)( 722 IMediaObjectInPlace *This, 723 ULONG ulSize, 724 BYTE *pData, 725 REFERENCE_TIME refTimeStart, 726 DWORD dwFlags); 727 728 HRESULT (STDMETHODCALLTYPE *Clone)( 729 IMediaObjectInPlace *This, 730 IMediaObjectInPlace **ppMediaObject); 731 732 HRESULT (STDMETHODCALLTYPE *GetLatency)( 733 IMediaObjectInPlace *This, 734 REFERENCE_TIME *pLatencyTime); 735 736 END_INTERFACE 737 } IMediaObjectInPlaceVtbl; 738 739 interface IMediaObjectInPlace { 740 CONST_VTBL IMediaObjectInPlaceVtbl* lpVtbl; 741 }; 742 743 #ifdef COBJMACROS 744 #ifndef WIDL_C_INLINE_WRAPPERS 745 /*** IUnknown methods ***/ 746 #define IMediaObjectInPlace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 747 #define IMediaObjectInPlace_AddRef(This) (This)->lpVtbl->AddRef(This) 748 #define IMediaObjectInPlace_Release(This) (This)->lpVtbl->Release(This) 749 /*** IMediaObjectInPlace methods ***/ 750 #define IMediaObjectInPlace_Process(This,ulSize,pData,refTimeStart,dwFlags) (This)->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags) 751 #define IMediaObjectInPlace_Clone(This,ppMediaObject) (This)->lpVtbl->Clone(This,ppMediaObject) 752 #define IMediaObjectInPlace_GetLatency(This,pLatencyTime) (This)->lpVtbl->GetLatency(This,pLatencyTime) 753 #else 754 /*** IUnknown methods ***/ 755 static FORCEINLINE HRESULT IMediaObjectInPlace_QueryInterface(IMediaObjectInPlace* This,REFIID riid,void **ppvObject) { 756 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 757 } 758 static FORCEINLINE ULONG IMediaObjectInPlace_AddRef(IMediaObjectInPlace* This) { 759 return This->lpVtbl->AddRef(This); 760 } 761 static FORCEINLINE ULONG IMediaObjectInPlace_Release(IMediaObjectInPlace* This) { 762 return This->lpVtbl->Release(This); 763 } 764 /*** IMediaObjectInPlace methods ***/ 765 static FORCEINLINE HRESULT IMediaObjectInPlace_Process(IMediaObjectInPlace* This,ULONG ulSize,BYTE *pData,REFERENCE_TIME refTimeStart,DWORD dwFlags) { 766 return This->lpVtbl->Process(This,ulSize,pData,refTimeStart,dwFlags); 767 } 768 static FORCEINLINE HRESULT IMediaObjectInPlace_Clone(IMediaObjectInPlace* This,IMediaObjectInPlace **ppMediaObject) { 769 return This->lpVtbl->Clone(This,ppMediaObject); 770 } 771 static FORCEINLINE HRESULT IMediaObjectInPlace_GetLatency(IMediaObjectInPlace* This,REFERENCE_TIME *pLatencyTime) { 772 return This->lpVtbl->GetLatency(This,pLatencyTime); 773 } 774 #endif 775 #endif 776 777 #endif 778 779 780 #endif /* __IMediaObjectInPlace_INTERFACE_DEFINED__ */ 781 782 /* Begin additional prototypes for all interfaces */ 783 784 785 /* End additional prototypes */ 786 787 #ifdef __cplusplus 788 } 789 #endif 790 791 #endif /* __mediaobj_h__ */ 792