1 /*** Autogenerated by WIDL 1.5.25 from include/mfreadwrite.idl - Do not edit ***/ 2 3 #ifndef __REQUIRED_RPCNDR_H_VERSION__ 4 #define __REQUIRED_RPCNDR_H_VERSION__ 475 5 #endif 6 7 #include <rpc.h> 8 #include <rpcndr.h> 9 10 #ifndef COM_NO_WINDOWS_H 11 #include <windows.h> 12 #include <ole2.h> 13 #endif 14 15 #ifndef __mfreadwrite_h__ 16 #define __mfreadwrite_h__ 17 18 /* Forward declarations */ 19 20 #ifndef __IMFSourceReader_FWD_DEFINED__ 21 #define __IMFSourceReader_FWD_DEFINED__ 22 typedef interface IMFSourceReader IMFSourceReader; 23 #endif 24 25 #ifndef __IMFSinkWriter_FWD_DEFINED__ 26 #define __IMFSinkWriter_FWD_DEFINED__ 27 typedef interface IMFSinkWriter IMFSinkWriter; 28 #endif 29 30 #ifndef __IMFSourceReaderCallback_FWD_DEFINED__ 31 #define __IMFSourceReaderCallback_FWD_DEFINED__ 32 typedef interface IMFSourceReaderCallback IMFSourceReaderCallback; 33 #endif 34 35 /* Headers for imported files */ 36 37 #include <mfobjects.h> 38 39 #ifdef __cplusplus 40 extern "C" { 41 #endif 42 43 EXTERN_GUID(MF_SOURCE_READER_ASYNC_CALLBACK, 0x1e3dbeac,0xbb43,0x4c35,0xb5,0x07,0xcd,0x64,0x44,0x64,0xc9,0x65); 44 EXTERN_GUID(MF_SOURCE_READER_D3D_MANAGER, 0xec822da2,0xe1e9,0x4b29,0xa0,0xd8,0x56,0x3c,0x71,0x9f,0x52,0x69); 45 EXTERN_GUID(MF_SOURCE_READER_DISABLE_DXVA, 0xaa456cfd,0x3943,0x4a1e,0xa7,0x7d,0x18,0x38,0xc0,0xea,0x2e,0x35); 46 EXTERN_GUID(MF_SOURCE_READER_MEDIASOURCE_CONFIG, 0x9085abeb,0x0354,0x48f9,0xab,0xb5,0x20,0x0d,0xf8,0x38,0xc6,0x8e); 47 EXTERN_GUID(MF_SOURCE_READER_MEDIASOURCE_CHARACTERISTICS, 0x6d23f5c8,0xc5d7,0x4a9b,0x99,0x71,0x5d,0x11,0xf8,0xbc,0xa8,0x80); 48 EXTERN_GUID(MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING, 0xfb394f3d,0xccf1,0x42ee,0xbb,0xb3,0xf9,0xb8,0x45,0xd5,0x68,0x1d); 49 EXTERN_GUID(MF_SOURCE_READER_DISCONNECT_MEDIASOURCE_ON_SHUTDOWN, 0x56b67165,0x219e,0x456d,0xa2,0x2e,0x2d,0x30,0x04,0xc7,0xfe,0x56); 50 typedef enum MF_SOURCE_READER_FLAG { 51 MF_SOURCE_READERF_ERROR = 0x1, 52 MF_SOURCE_READERF_ENDOFSTREAM = 0x2, 53 MF_SOURCE_READERF_NEWSTREAM = 0x4, 54 MF_SOURCE_READERF_NATIVEMEDIATYPECHANGED = 0x10, 55 MF_SOURCE_READERF_CURRENTMEDIATYPECHANGED = 0x20, 56 MF_SOURCE_READERF_STREAMTICK = 0x100 57 } MF_SOURCE_READER_FLAG; 58 typedef struct _MF_SINK_WRITER_STATISTICS { 59 DWORD cb; 60 LONGLONG llLastTimestampReceived; 61 LONGLONG llLastTimestampEncoded; 62 LONGLONG llLastTimestampProcessed; 63 LONGLONG llLastStreamTickReceived; 64 LONGLONG llLastSinkSampleRequest; 65 QWORD qwNumSamplesReceived; 66 QWORD qwNumSamplesEncoded; 67 QWORD qwNumSamplesProcessed; 68 QWORD qwNumStreamTicksReceived; 69 DWORD dwByteCountQueued; 70 QWORD qwByteCountProcessed; 71 DWORD dwNumOutstandingSinkSampleRequests; 72 DWORD dwAverageSampleRateReceived; 73 DWORD dwAverageSampleRateEncoded; 74 DWORD dwAverageSampleRateProcessed; 75 } MF_SINK_WRITER_STATISTICS; 76 enum { 77 MF_SOURCE_READER_INVALID_STREAM_INDEX = 0xffffffff, 78 MF_SOURCE_READER_ALL_STREAMS = 0xfffffffe, 79 MF_SOURCE_READER_ANY_STREAM = 0xfffffffe, 80 MF_SOURCE_READER_FIRST_AUDIO_STREAM = 0xfffffffd, 81 MF_SOURCE_READER_FIRST_VIDEO_STREAM = 0xfffffffc, 82 MF_SOURCE_READER_MEDIASOURCE = 0xffffffff 83 }; 84 85 /***************************************************************************** 86 * IMFSourceReader interface 87 */ 88 #ifndef __IMFSourceReader_INTERFACE_DEFINED__ 89 #define __IMFSourceReader_INTERFACE_DEFINED__ 90 91 DEFINE_GUID(IID_IMFSourceReader, 0x70ae66f2, 0xc809, 0x4e4f, 0x89,0x15, 0xbd,0xcb,0x40,0x6b,0x79,0x93); 92 #if defined(__cplusplus) && !defined(CINTERFACE) 93 MIDL_INTERFACE("70ae66f2-c809-4e4f-8915-bdcb406b7993") 94 IMFSourceReader : public IUnknown 95 { 96 virtual HRESULT STDMETHODCALLTYPE GetStreamSelection( 97 DWORD dwStreamIndex, 98 WINBOOL *pfSelected) = 0; 99 100 virtual HRESULT STDMETHODCALLTYPE SetStreamSelection( 101 DWORD dwStreamIndex, 102 WINBOOL fSelected) = 0; 103 104 virtual HRESULT STDMETHODCALLTYPE GetNativeMediaType( 105 DWORD dwStreamIndex, 106 DWORD dwMediaTypeIndex, 107 IMFMediaType **ppMediaType) = 0; 108 109 virtual HRESULT STDMETHODCALLTYPE GetCurrentMediaType( 110 DWORD dwStreamIndex, 111 IMFMediaType **ppMediaType) = 0; 112 113 virtual HRESULT STDMETHODCALLTYPE SetCurrentMediaType( 114 DWORD dwStreamIndex, 115 DWORD *pdwReserved, 116 IMFMediaType *pMediaType) = 0; 117 118 virtual HRESULT STDMETHODCALLTYPE SetCurrentPosition( 119 REFGUID guidTimeFormat, 120 REFPROPVARIANT varPosition) = 0; 121 122 virtual HRESULT STDMETHODCALLTYPE ReadSample( 123 DWORD dwStreamIndex, 124 DWORD dwControlFlags, 125 DWORD *pdwActualStreamIndex, 126 DWORD *pdwStreamFlags, 127 LONGLONG *pllTimestamp, 128 IMFSample **ppSample) = 0; 129 130 virtual HRESULT STDMETHODCALLTYPE Flush( 131 DWORD dwStreamIndex) = 0; 132 133 virtual HRESULT STDMETHODCALLTYPE GetServiceForStream( 134 DWORD dwStreamIndex, 135 REFGUID guidService, 136 REFIID riid, 137 LPVOID *ppvObject) = 0; 138 139 virtual HRESULT STDMETHODCALLTYPE GetPresentationAttribute( 140 DWORD dwStreamIndex, 141 REFGUID guidAttribute, 142 PROPVARIANT *pvarAttribute) = 0; 143 144 }; 145 #ifdef __CRT_UUID_DECL 146 __CRT_UUID_DECL(IMFSourceReader, 0x70ae66f2, 0xc809, 0x4e4f, 0x89,0x15, 0xbd,0xcb,0x40,0x6b,0x79,0x93) 147 #endif 148 #else 149 typedef struct IMFSourceReaderVtbl { 150 BEGIN_INTERFACE 151 152 /*** IUnknown methods ***/ 153 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 154 IMFSourceReader* This, 155 REFIID riid, 156 void **ppvObject); 157 158 ULONG (STDMETHODCALLTYPE *AddRef)( 159 IMFSourceReader* This); 160 161 ULONG (STDMETHODCALLTYPE *Release)( 162 IMFSourceReader* This); 163 164 /*** IMFSourceReader methods ***/ 165 HRESULT (STDMETHODCALLTYPE *GetStreamSelection)( 166 IMFSourceReader* This, 167 DWORD dwStreamIndex, 168 WINBOOL *pfSelected); 169 170 HRESULT (STDMETHODCALLTYPE *SetStreamSelection)( 171 IMFSourceReader* This, 172 DWORD dwStreamIndex, 173 WINBOOL fSelected); 174 175 HRESULT (STDMETHODCALLTYPE *GetNativeMediaType)( 176 IMFSourceReader* This, 177 DWORD dwStreamIndex, 178 DWORD dwMediaTypeIndex, 179 IMFMediaType **ppMediaType); 180 181 HRESULT (STDMETHODCALLTYPE *GetCurrentMediaType)( 182 IMFSourceReader* This, 183 DWORD dwStreamIndex, 184 IMFMediaType **ppMediaType); 185 186 HRESULT (STDMETHODCALLTYPE *SetCurrentMediaType)( 187 IMFSourceReader* This, 188 DWORD dwStreamIndex, 189 DWORD *pdwReserved, 190 IMFMediaType *pMediaType); 191 192 HRESULT (STDMETHODCALLTYPE *SetCurrentPosition)( 193 IMFSourceReader* This, 194 REFGUID guidTimeFormat, 195 REFPROPVARIANT varPosition); 196 197 HRESULT (STDMETHODCALLTYPE *ReadSample)( 198 IMFSourceReader* This, 199 DWORD dwStreamIndex, 200 DWORD dwControlFlags, 201 DWORD *pdwActualStreamIndex, 202 DWORD *pdwStreamFlags, 203 LONGLONG *pllTimestamp, 204 IMFSample **ppSample); 205 206 HRESULT (STDMETHODCALLTYPE *Flush)( 207 IMFSourceReader* This, 208 DWORD dwStreamIndex); 209 210 HRESULT (STDMETHODCALLTYPE *GetServiceForStream)( 211 IMFSourceReader* This, 212 DWORD dwStreamIndex, 213 REFGUID guidService, 214 REFIID riid, 215 LPVOID *ppvObject); 216 217 HRESULT (STDMETHODCALLTYPE *GetPresentationAttribute)( 218 IMFSourceReader* This, 219 DWORD dwStreamIndex, 220 REFGUID guidAttribute, 221 PROPVARIANT *pvarAttribute); 222 223 END_INTERFACE 224 } IMFSourceReaderVtbl; 225 interface IMFSourceReader { 226 CONST_VTBL IMFSourceReaderVtbl* lpVtbl; 227 }; 228 229 #ifdef COBJMACROS 230 #ifndef WIDL_C_INLINE_WRAPPERS 231 /*** IUnknown methods ***/ 232 #define IMFSourceReader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 233 #define IMFSourceReader_AddRef(This) (This)->lpVtbl->AddRef(This) 234 #define IMFSourceReader_Release(This) (This)->lpVtbl->Release(This) 235 /*** IMFSourceReader methods ***/ 236 #define IMFSourceReader_GetStreamSelection(This,dwStreamIndex,pfSelected) (This)->lpVtbl->GetStreamSelection(This,dwStreamIndex,pfSelected) 237 #define IMFSourceReader_SetStreamSelection(This,dwStreamIndex,fSelected) (This)->lpVtbl->SetStreamSelection(This,dwStreamIndex,fSelected) 238 #define IMFSourceReader_GetNativeMediaType(This,dwStreamIndex,dwMediaTypeIndex,ppMediaType) (This)->lpVtbl->GetNativeMediaType(This,dwStreamIndex,dwMediaTypeIndex,ppMediaType) 239 #define IMFSourceReader_GetCurrentMediaType(This,dwStreamIndex,ppMediaType) (This)->lpVtbl->GetCurrentMediaType(This,dwStreamIndex,ppMediaType) 240 #define IMFSourceReader_SetCurrentMediaType(This,dwStreamIndex,pdwReserved,pMediaType) (This)->lpVtbl->SetCurrentMediaType(This,dwStreamIndex,pdwReserved,pMediaType) 241 #define IMFSourceReader_SetCurrentPosition(This,guidTimeFormat,varPosition) (This)->lpVtbl->SetCurrentPosition(This,guidTimeFormat,varPosition) 242 #define IMFSourceReader_ReadSample(This,dwStreamIndex,dwControlFlags,pdwActualStreamIndex,pdwStreamFlags,pllTimestamp,ppSample) (This)->lpVtbl->ReadSample(This,dwStreamIndex,dwControlFlags,pdwActualStreamIndex,pdwStreamFlags,pllTimestamp,ppSample) 243 #define IMFSourceReader_Flush(This,dwStreamIndex) (This)->lpVtbl->Flush(This,dwStreamIndex) 244 #define IMFSourceReader_GetServiceForStream(This,dwStreamIndex,guidService,riid,ppvObject) (This)->lpVtbl->GetServiceForStream(This,dwStreamIndex,guidService,riid,ppvObject) 245 #define IMFSourceReader_GetPresentationAttribute(This,dwStreamIndex,guidAttribute,pvarAttribute) (This)->lpVtbl->GetPresentationAttribute(This,dwStreamIndex,guidAttribute,pvarAttribute) 246 #else 247 /*** IUnknown methods ***/ 248 static FORCEINLINE HRESULT IMFSourceReader_QueryInterface(IMFSourceReader* This,REFIID riid,void **ppvObject) { 249 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 250 } 251 static FORCEINLINE ULONG IMFSourceReader_AddRef(IMFSourceReader* This) { 252 return This->lpVtbl->AddRef(This); 253 } 254 static FORCEINLINE ULONG IMFSourceReader_Release(IMFSourceReader* This) { 255 return This->lpVtbl->Release(This); 256 } 257 /*** IMFSourceReader methods ***/ 258 static FORCEINLINE HRESULT IMFSourceReader_GetStreamSelection(IMFSourceReader* This,DWORD dwStreamIndex,WINBOOL *pfSelected) { 259 return This->lpVtbl->GetStreamSelection(This,dwStreamIndex,pfSelected); 260 } 261 static FORCEINLINE HRESULT IMFSourceReader_SetStreamSelection(IMFSourceReader* This,DWORD dwStreamIndex,WINBOOL fSelected) { 262 return This->lpVtbl->SetStreamSelection(This,dwStreamIndex,fSelected); 263 } 264 static FORCEINLINE HRESULT IMFSourceReader_GetNativeMediaType(IMFSourceReader* This,DWORD dwStreamIndex,DWORD dwMediaTypeIndex,IMFMediaType **ppMediaType) { 265 return This->lpVtbl->GetNativeMediaType(This,dwStreamIndex,dwMediaTypeIndex,ppMediaType); 266 } 267 static FORCEINLINE HRESULT IMFSourceReader_GetCurrentMediaType(IMFSourceReader* This,DWORD dwStreamIndex,IMFMediaType **ppMediaType) { 268 return This->lpVtbl->GetCurrentMediaType(This,dwStreamIndex,ppMediaType); 269 } 270 static FORCEINLINE HRESULT IMFSourceReader_SetCurrentMediaType(IMFSourceReader* This,DWORD dwStreamIndex,DWORD *pdwReserved,IMFMediaType *pMediaType) { 271 return This->lpVtbl->SetCurrentMediaType(This,dwStreamIndex,pdwReserved,pMediaType); 272 } 273 static FORCEINLINE HRESULT IMFSourceReader_SetCurrentPosition(IMFSourceReader* This,REFGUID guidTimeFormat,REFPROPVARIANT varPosition) { 274 return This->lpVtbl->SetCurrentPosition(This,guidTimeFormat,varPosition); 275 } 276 static FORCEINLINE HRESULT IMFSourceReader_ReadSample(IMFSourceReader* This,DWORD dwStreamIndex,DWORD dwControlFlags,DWORD *pdwActualStreamIndex,DWORD *pdwStreamFlags,LONGLONG *pllTimestamp,IMFSample **ppSample) { 277 return This->lpVtbl->ReadSample(This,dwStreamIndex,dwControlFlags,pdwActualStreamIndex,pdwStreamFlags,pllTimestamp,ppSample); 278 } 279 static FORCEINLINE HRESULT IMFSourceReader_Flush(IMFSourceReader* This,DWORD dwStreamIndex) { 280 return This->lpVtbl->Flush(This,dwStreamIndex); 281 } 282 static FORCEINLINE HRESULT IMFSourceReader_GetServiceForStream(IMFSourceReader* This,DWORD dwStreamIndex,REFGUID guidService,REFIID riid,LPVOID *ppvObject) { 283 return This->lpVtbl->GetServiceForStream(This,dwStreamIndex,guidService,riid,ppvObject); 284 } 285 static FORCEINLINE HRESULT IMFSourceReader_GetPresentationAttribute(IMFSourceReader* This,DWORD dwStreamIndex,REFGUID guidAttribute,PROPVARIANT *pvarAttribute) { 286 return This->lpVtbl->GetPresentationAttribute(This,dwStreamIndex,guidAttribute,pvarAttribute); 287 } 288 #endif 289 #endif 290 291 #endif 292 293 HRESULT STDMETHODCALLTYPE IMFSourceReader_GetStreamSelection_Proxy( 294 IMFSourceReader* This, 295 DWORD dwStreamIndex, 296 WINBOOL *pfSelected); 297 void __RPC_STUB IMFSourceReader_GetStreamSelection_Stub( 298 IRpcStubBuffer* This, 299 IRpcChannelBuffer* pRpcChannelBuffer, 300 PRPC_MESSAGE pRpcMessage, 301 DWORD* pdwStubPhase); 302 HRESULT STDMETHODCALLTYPE IMFSourceReader_SetStreamSelection_Proxy( 303 IMFSourceReader* This, 304 DWORD dwStreamIndex, 305 WINBOOL fSelected); 306 void __RPC_STUB IMFSourceReader_SetStreamSelection_Stub( 307 IRpcStubBuffer* This, 308 IRpcChannelBuffer* pRpcChannelBuffer, 309 PRPC_MESSAGE pRpcMessage, 310 DWORD* pdwStubPhase); 311 HRESULT STDMETHODCALLTYPE IMFSourceReader_GetNativeMediaType_Proxy( 312 IMFSourceReader* This, 313 DWORD dwStreamIndex, 314 DWORD dwMediaTypeIndex, 315 IMFMediaType **ppMediaType); 316 void __RPC_STUB IMFSourceReader_GetNativeMediaType_Stub( 317 IRpcStubBuffer* This, 318 IRpcChannelBuffer* pRpcChannelBuffer, 319 PRPC_MESSAGE pRpcMessage, 320 DWORD* pdwStubPhase); 321 HRESULT STDMETHODCALLTYPE IMFSourceReader_GetCurrentMediaType_Proxy( 322 IMFSourceReader* This, 323 DWORD dwStreamIndex, 324 IMFMediaType **ppMediaType); 325 void __RPC_STUB IMFSourceReader_GetCurrentMediaType_Stub( 326 IRpcStubBuffer* This, 327 IRpcChannelBuffer* pRpcChannelBuffer, 328 PRPC_MESSAGE pRpcMessage, 329 DWORD* pdwStubPhase); 330 HRESULT STDMETHODCALLTYPE IMFSourceReader_SetCurrentMediaType_Proxy( 331 IMFSourceReader* This, 332 DWORD dwStreamIndex, 333 DWORD *pdwReserved, 334 IMFMediaType *pMediaType); 335 void __RPC_STUB IMFSourceReader_SetCurrentMediaType_Stub( 336 IRpcStubBuffer* This, 337 IRpcChannelBuffer* pRpcChannelBuffer, 338 PRPC_MESSAGE pRpcMessage, 339 DWORD* pdwStubPhase); 340 HRESULT STDMETHODCALLTYPE IMFSourceReader_SetCurrentPosition_Proxy( 341 IMFSourceReader* This, 342 REFGUID guidTimeFormat, 343 REFPROPVARIANT varPosition); 344 void __RPC_STUB IMFSourceReader_SetCurrentPosition_Stub( 345 IRpcStubBuffer* This, 346 IRpcChannelBuffer* pRpcChannelBuffer, 347 PRPC_MESSAGE pRpcMessage, 348 DWORD* pdwStubPhase); 349 HRESULT STDMETHODCALLTYPE IMFSourceReader_ReadSample_Proxy( 350 IMFSourceReader* This, 351 DWORD dwStreamIndex, 352 DWORD dwControlFlags, 353 DWORD *pdwActualStreamIndex, 354 DWORD *pdwStreamFlags, 355 LONGLONG *pllTimestamp, 356 IMFSample **ppSample); 357 void __RPC_STUB IMFSourceReader_ReadSample_Stub( 358 IRpcStubBuffer* This, 359 IRpcChannelBuffer* pRpcChannelBuffer, 360 PRPC_MESSAGE pRpcMessage, 361 DWORD* pdwStubPhase); 362 HRESULT STDMETHODCALLTYPE IMFSourceReader_Flush_Proxy( 363 IMFSourceReader* This, 364 DWORD dwStreamIndex); 365 void __RPC_STUB IMFSourceReader_Flush_Stub( 366 IRpcStubBuffer* This, 367 IRpcChannelBuffer* pRpcChannelBuffer, 368 PRPC_MESSAGE pRpcMessage, 369 DWORD* pdwStubPhase); 370 HRESULT STDMETHODCALLTYPE IMFSourceReader_GetServiceForStream_Proxy( 371 IMFSourceReader* This, 372 DWORD dwStreamIndex, 373 REFGUID guidService, 374 REFIID riid, 375 LPVOID *ppvObject); 376 void __RPC_STUB IMFSourceReader_GetServiceForStream_Stub( 377 IRpcStubBuffer* This, 378 IRpcChannelBuffer* pRpcChannelBuffer, 379 PRPC_MESSAGE pRpcMessage, 380 DWORD* pdwStubPhase); 381 HRESULT STDMETHODCALLTYPE IMFSourceReader_GetPresentationAttribute_Proxy( 382 IMFSourceReader* This, 383 DWORD dwStreamIndex, 384 REFGUID guidAttribute, 385 PROPVARIANT *pvarAttribute); 386 void __RPC_STUB IMFSourceReader_GetPresentationAttribute_Stub( 387 IRpcStubBuffer* This, 388 IRpcChannelBuffer* pRpcChannelBuffer, 389 PRPC_MESSAGE pRpcMessage, 390 DWORD* pdwStubPhase); 391 392 #endif /* __IMFSourceReader_INTERFACE_DEFINED__ */ 393 394 /***************************************************************************** 395 * IMFSinkWriter interface 396 */ 397 #ifndef __IMFSinkWriter_INTERFACE_DEFINED__ 398 #define __IMFSinkWriter_INTERFACE_DEFINED__ 399 400 DEFINE_GUID(IID_IMFSinkWriter, 0x3137f1cd, 0xfe5e, 0x4805, 0xa5,0xd8, 0xfb,0x47,0x74,0x48,0xcb,0x3d); 401 #if defined(__cplusplus) && !defined(CINTERFACE) 402 MIDL_INTERFACE("3137f1cd-fe5e-4805-a5d8-fb477448cb3d") 403 IMFSinkWriter : public IUnknown 404 { 405 virtual HRESULT STDMETHODCALLTYPE AddStream( 406 IMFMediaType *pTargetMediaType, 407 DWORD *pdwStreamIndex) = 0; 408 409 virtual HRESULT STDMETHODCALLTYPE SetInputMediaType( 410 DWORD dwStreamIndex, 411 IMFMediaType *pInputMediaType, 412 IMFAttributes *pEncodingParameters) = 0; 413 414 virtual HRESULT STDMETHODCALLTYPE BeginWriting( 415 ) = 0; 416 417 virtual HRESULT STDMETHODCALLTYPE WriteSample( 418 DWORD dwStreamIndex, 419 IMFSample *pSample) = 0; 420 421 virtual HRESULT STDMETHODCALLTYPE SendStreamTick( 422 DWORD dwStreamIndex, 423 LONGLONG llTimestamp) = 0; 424 425 virtual HRESULT STDMETHODCALLTYPE PlaceMarker( 426 DWORD dwStreamIndex, 427 LPVOID pvContext) = 0; 428 429 virtual HRESULT STDMETHODCALLTYPE NotifyEndOfSegment( 430 DWORD dwStreamIndex) = 0; 431 432 virtual HRESULT STDMETHODCALLTYPE Flush( 433 DWORD dwStreamIndex) = 0; 434 435 virtual HRESULT STDMETHODCALLTYPE Finalize( 436 ) = 0; 437 438 virtual HRESULT STDMETHODCALLTYPE GetServiceForStream( 439 DWORD dwStreamIndex, 440 REFGUID guidService, 441 REFIID riid, 442 LPVOID *ppvObject) = 0; 443 444 virtual HRESULT STDMETHODCALLTYPE GetStatistics( 445 DWORD dwStreamIndex, 446 MF_SINK_WRITER_STATISTICS *pStats) = 0; 447 448 }; 449 #ifdef __CRT_UUID_DECL 450 __CRT_UUID_DECL(IMFSinkWriter, 0x3137f1cd, 0xfe5e, 0x4805, 0xa5,0xd8, 0xfb,0x47,0x74,0x48,0xcb,0x3d) 451 #endif 452 #else 453 typedef struct IMFSinkWriterVtbl { 454 BEGIN_INTERFACE 455 456 /*** IUnknown methods ***/ 457 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 458 IMFSinkWriter* This, 459 REFIID riid, 460 void **ppvObject); 461 462 ULONG (STDMETHODCALLTYPE *AddRef)( 463 IMFSinkWriter* This); 464 465 ULONG (STDMETHODCALLTYPE *Release)( 466 IMFSinkWriter* This); 467 468 /*** IMFSinkWriter methods ***/ 469 HRESULT (STDMETHODCALLTYPE *AddStream)( 470 IMFSinkWriter* This, 471 IMFMediaType *pTargetMediaType, 472 DWORD *pdwStreamIndex); 473 474 HRESULT (STDMETHODCALLTYPE *SetInputMediaType)( 475 IMFSinkWriter* This, 476 DWORD dwStreamIndex, 477 IMFMediaType *pInputMediaType, 478 IMFAttributes *pEncodingParameters); 479 480 HRESULT (STDMETHODCALLTYPE *BeginWriting)( 481 IMFSinkWriter* This); 482 483 HRESULT (STDMETHODCALLTYPE *WriteSample)( 484 IMFSinkWriter* This, 485 DWORD dwStreamIndex, 486 IMFSample *pSample); 487 488 HRESULT (STDMETHODCALLTYPE *SendStreamTick)( 489 IMFSinkWriter* This, 490 DWORD dwStreamIndex, 491 LONGLONG llTimestamp); 492 493 HRESULT (STDMETHODCALLTYPE *PlaceMarker)( 494 IMFSinkWriter* This, 495 DWORD dwStreamIndex, 496 LPVOID pvContext); 497 498 HRESULT (STDMETHODCALLTYPE *NotifyEndOfSegment)( 499 IMFSinkWriter* This, 500 DWORD dwStreamIndex); 501 502 HRESULT (STDMETHODCALLTYPE *Flush)( 503 IMFSinkWriter* This, 504 DWORD dwStreamIndex); 505 506 HRESULT (STDMETHODCALLTYPE *Finalize)( 507 IMFSinkWriter* This); 508 509 HRESULT (STDMETHODCALLTYPE *GetServiceForStream)( 510 IMFSinkWriter* This, 511 DWORD dwStreamIndex, 512 REFGUID guidService, 513 REFIID riid, 514 LPVOID *ppvObject); 515 516 HRESULT (STDMETHODCALLTYPE *GetStatistics)( 517 IMFSinkWriter* This, 518 DWORD dwStreamIndex, 519 MF_SINK_WRITER_STATISTICS *pStats); 520 521 END_INTERFACE 522 } IMFSinkWriterVtbl; 523 interface IMFSinkWriter { 524 CONST_VTBL IMFSinkWriterVtbl* lpVtbl; 525 }; 526 527 #ifdef COBJMACROS 528 #ifndef WIDL_C_INLINE_WRAPPERS 529 /*** IUnknown methods ***/ 530 #define IMFSinkWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 531 #define IMFSinkWriter_AddRef(This) (This)->lpVtbl->AddRef(This) 532 #define IMFSinkWriter_Release(This) (This)->lpVtbl->Release(This) 533 /*** IMFSinkWriter methods ***/ 534 #define IMFSinkWriter_AddStream(This,pTargetMediaType,pdwStreamIndex) (This)->lpVtbl->AddStream(This,pTargetMediaType,pdwStreamIndex) 535 #define IMFSinkWriter_SetInputMediaType(This,dwStreamIndex,pInputMediaType,pEncodingParameters) (This)->lpVtbl->SetInputMediaType(This,dwStreamIndex,pInputMediaType,pEncodingParameters) 536 #define IMFSinkWriter_BeginWriting(This) (This)->lpVtbl->BeginWriting(This) 537 #define IMFSinkWriter_WriteSample(This,dwStreamIndex,pSample) (This)->lpVtbl->WriteSample(This,dwStreamIndex,pSample) 538 #define IMFSinkWriter_SendStreamTick(This,dwStreamIndex,llTimestamp) (This)->lpVtbl->SendStreamTick(This,dwStreamIndex,llTimestamp) 539 #define IMFSinkWriter_PlaceMarker(This,dwStreamIndex,pvContext) (This)->lpVtbl->PlaceMarker(This,dwStreamIndex,pvContext) 540 #define IMFSinkWriter_NotifyEndOfSegment(This,dwStreamIndex) (This)->lpVtbl->NotifyEndOfSegment(This,dwStreamIndex) 541 #define IMFSinkWriter_Flush(This,dwStreamIndex) (This)->lpVtbl->Flush(This,dwStreamIndex) 542 #define IMFSinkWriter_Finalize(This) (This)->lpVtbl->Finalize(This) 543 #define IMFSinkWriter_GetServiceForStream(This,dwStreamIndex,guidService,riid,ppvObject) (This)->lpVtbl->GetServiceForStream(This,dwStreamIndex,guidService,riid,ppvObject) 544 #define IMFSinkWriter_GetStatistics(This,dwStreamIndex,pStats) (This)->lpVtbl->GetStatistics(This,dwStreamIndex,pStats) 545 #else 546 /*** IUnknown methods ***/ 547 static FORCEINLINE HRESULT IMFSinkWriter_QueryInterface(IMFSinkWriter* This,REFIID riid,void **ppvObject) { 548 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 549 } 550 static FORCEINLINE ULONG IMFSinkWriter_AddRef(IMFSinkWriter* This) { 551 return This->lpVtbl->AddRef(This); 552 } 553 static FORCEINLINE ULONG IMFSinkWriter_Release(IMFSinkWriter* This) { 554 return This->lpVtbl->Release(This); 555 } 556 /*** IMFSinkWriter methods ***/ 557 static FORCEINLINE HRESULT IMFSinkWriter_AddStream(IMFSinkWriter* This,IMFMediaType *pTargetMediaType,DWORD *pdwStreamIndex) { 558 return This->lpVtbl->AddStream(This,pTargetMediaType,pdwStreamIndex); 559 } 560 static FORCEINLINE HRESULT IMFSinkWriter_SetInputMediaType(IMFSinkWriter* This,DWORD dwStreamIndex,IMFMediaType *pInputMediaType,IMFAttributes *pEncodingParameters) { 561 return This->lpVtbl->SetInputMediaType(This,dwStreamIndex,pInputMediaType,pEncodingParameters); 562 } 563 static FORCEINLINE HRESULT IMFSinkWriter_BeginWriting(IMFSinkWriter* This) { 564 return This->lpVtbl->BeginWriting(This); 565 } 566 static FORCEINLINE HRESULT IMFSinkWriter_WriteSample(IMFSinkWriter* This,DWORD dwStreamIndex,IMFSample *pSample) { 567 return This->lpVtbl->WriteSample(This,dwStreamIndex,pSample); 568 } 569 static FORCEINLINE HRESULT IMFSinkWriter_SendStreamTick(IMFSinkWriter* This,DWORD dwStreamIndex,LONGLONG llTimestamp) { 570 return This->lpVtbl->SendStreamTick(This,dwStreamIndex,llTimestamp); 571 } 572 static FORCEINLINE HRESULT IMFSinkWriter_PlaceMarker(IMFSinkWriter* This,DWORD dwStreamIndex,LPVOID pvContext) { 573 return This->lpVtbl->PlaceMarker(This,dwStreamIndex,pvContext); 574 } 575 static FORCEINLINE HRESULT IMFSinkWriter_NotifyEndOfSegment(IMFSinkWriter* This,DWORD dwStreamIndex) { 576 return This->lpVtbl->NotifyEndOfSegment(This,dwStreamIndex); 577 } 578 static FORCEINLINE HRESULT IMFSinkWriter_Flush(IMFSinkWriter* This,DWORD dwStreamIndex) { 579 return This->lpVtbl->Flush(This,dwStreamIndex); 580 } 581 static FORCEINLINE HRESULT IMFSinkWriter_Finalize(IMFSinkWriter* This) { 582 return This->lpVtbl->Finalize(This); 583 } 584 static FORCEINLINE HRESULT IMFSinkWriter_GetServiceForStream(IMFSinkWriter* This,DWORD dwStreamIndex,REFGUID guidService,REFIID riid,LPVOID *ppvObject) { 585 return This->lpVtbl->GetServiceForStream(This,dwStreamIndex,guidService,riid,ppvObject); 586 } 587 static FORCEINLINE HRESULT IMFSinkWriter_GetStatistics(IMFSinkWriter* This,DWORD dwStreamIndex,MF_SINK_WRITER_STATISTICS *pStats) { 588 return This->lpVtbl->GetStatistics(This,dwStreamIndex,pStats); 589 } 590 #endif 591 #endif 592 593 #endif 594 595 HRESULT STDMETHODCALLTYPE IMFSinkWriter_AddStream_Proxy( 596 IMFSinkWriter* This, 597 IMFMediaType *pTargetMediaType, 598 DWORD *pdwStreamIndex); 599 void __RPC_STUB IMFSinkWriter_AddStream_Stub( 600 IRpcStubBuffer* This, 601 IRpcChannelBuffer* pRpcChannelBuffer, 602 PRPC_MESSAGE pRpcMessage, 603 DWORD* pdwStubPhase); 604 HRESULT STDMETHODCALLTYPE IMFSinkWriter_SetInputMediaType_Proxy( 605 IMFSinkWriter* This, 606 DWORD dwStreamIndex, 607 IMFMediaType *pInputMediaType, 608 IMFAttributes *pEncodingParameters); 609 void __RPC_STUB IMFSinkWriter_SetInputMediaType_Stub( 610 IRpcStubBuffer* This, 611 IRpcChannelBuffer* pRpcChannelBuffer, 612 PRPC_MESSAGE pRpcMessage, 613 DWORD* pdwStubPhase); 614 HRESULT STDMETHODCALLTYPE IMFSinkWriter_BeginWriting_Proxy( 615 IMFSinkWriter* This); 616 void __RPC_STUB IMFSinkWriter_BeginWriting_Stub( 617 IRpcStubBuffer* This, 618 IRpcChannelBuffer* pRpcChannelBuffer, 619 PRPC_MESSAGE pRpcMessage, 620 DWORD* pdwStubPhase); 621 HRESULT STDMETHODCALLTYPE IMFSinkWriter_WriteSample_Proxy( 622 IMFSinkWriter* This, 623 DWORD dwStreamIndex, 624 IMFSample *pSample); 625 void __RPC_STUB IMFSinkWriter_WriteSample_Stub( 626 IRpcStubBuffer* This, 627 IRpcChannelBuffer* pRpcChannelBuffer, 628 PRPC_MESSAGE pRpcMessage, 629 DWORD* pdwStubPhase); 630 HRESULT STDMETHODCALLTYPE IMFSinkWriter_SendStreamTick_Proxy( 631 IMFSinkWriter* This, 632 DWORD dwStreamIndex, 633 LONGLONG llTimestamp); 634 void __RPC_STUB IMFSinkWriter_SendStreamTick_Stub( 635 IRpcStubBuffer* This, 636 IRpcChannelBuffer* pRpcChannelBuffer, 637 PRPC_MESSAGE pRpcMessage, 638 DWORD* pdwStubPhase); 639 HRESULT STDMETHODCALLTYPE IMFSinkWriter_PlaceMarker_Proxy( 640 IMFSinkWriter* This, 641 DWORD dwStreamIndex, 642 LPVOID pvContext); 643 void __RPC_STUB IMFSinkWriter_PlaceMarker_Stub( 644 IRpcStubBuffer* This, 645 IRpcChannelBuffer* pRpcChannelBuffer, 646 PRPC_MESSAGE pRpcMessage, 647 DWORD* pdwStubPhase); 648 HRESULT STDMETHODCALLTYPE IMFSinkWriter_NotifyEndOfSegment_Proxy( 649 IMFSinkWriter* This, 650 DWORD dwStreamIndex); 651 void __RPC_STUB IMFSinkWriter_NotifyEndOfSegment_Stub( 652 IRpcStubBuffer* This, 653 IRpcChannelBuffer* pRpcChannelBuffer, 654 PRPC_MESSAGE pRpcMessage, 655 DWORD* pdwStubPhase); 656 HRESULT STDMETHODCALLTYPE IMFSinkWriter_Flush_Proxy( 657 IMFSinkWriter* This, 658 DWORD dwStreamIndex); 659 void __RPC_STUB IMFSinkWriter_Flush_Stub( 660 IRpcStubBuffer* This, 661 IRpcChannelBuffer* pRpcChannelBuffer, 662 PRPC_MESSAGE pRpcMessage, 663 DWORD* pdwStubPhase); 664 HRESULT STDMETHODCALLTYPE IMFSinkWriter_Finalize_Proxy( 665 IMFSinkWriter* This); 666 void __RPC_STUB IMFSinkWriter_Finalize_Stub( 667 IRpcStubBuffer* This, 668 IRpcChannelBuffer* pRpcChannelBuffer, 669 PRPC_MESSAGE pRpcMessage, 670 DWORD* pdwStubPhase); 671 HRESULT STDMETHODCALLTYPE IMFSinkWriter_GetServiceForStream_Proxy( 672 IMFSinkWriter* This, 673 DWORD dwStreamIndex, 674 REFGUID guidService, 675 REFIID riid, 676 LPVOID *ppvObject); 677 void __RPC_STUB IMFSinkWriter_GetServiceForStream_Stub( 678 IRpcStubBuffer* This, 679 IRpcChannelBuffer* pRpcChannelBuffer, 680 PRPC_MESSAGE pRpcMessage, 681 DWORD* pdwStubPhase); 682 HRESULT STDMETHODCALLTYPE IMFSinkWriter_GetStatistics_Proxy( 683 IMFSinkWriter* This, 684 DWORD dwStreamIndex, 685 MF_SINK_WRITER_STATISTICS *pStats); 686 void __RPC_STUB IMFSinkWriter_GetStatistics_Stub( 687 IRpcStubBuffer* This, 688 IRpcChannelBuffer* pRpcChannelBuffer, 689 PRPC_MESSAGE pRpcMessage, 690 DWORD* pdwStubPhase); 691 692 #endif /* __IMFSinkWriter_INTERFACE_DEFINED__ */ 693 694 /***************************************************************************** 695 * IMFSourceReaderCallback interface 696 */ 697 #ifndef __IMFSourceReaderCallback_INTERFACE_DEFINED__ 698 #define __IMFSourceReaderCallback_INTERFACE_DEFINED__ 699 700 DEFINE_GUID(IID_IMFSourceReaderCallback, 0xdeec8d99, 0xfa1d, 0x4d82, 0x84,0xc2, 0x2c,0x89,0x69,0x94,0x48,0x67); 701 #if defined(__cplusplus) && !defined(CINTERFACE) 702 MIDL_INTERFACE("deec8d99-fa1d-4d82-84c2-2c8969944867") 703 IMFSourceReaderCallback : public IUnknown 704 { 705 virtual HRESULT STDMETHODCALLTYPE OnReadSample( 706 HRESULT hrStatus, 707 DWORD dwStreamIndex, 708 DWORD dwStreamFlags, 709 LONGLONG llTimestamp, 710 IMFSample *pSample) = 0; 711 712 virtual HRESULT STDMETHODCALLTYPE OnFlush( 713 DWORD dwStreamIndex) = 0; 714 715 virtual HRESULT STDMETHODCALLTYPE OnEvent( 716 DWORD dwStreamIndex, 717 IMFMediaEvent *pEvent) = 0; 718 719 }; 720 #ifdef __CRT_UUID_DECL 721 __CRT_UUID_DECL(IMFSourceReaderCallback, 0xdeec8d99, 0xfa1d, 0x4d82, 0x84,0xc2, 0x2c,0x89,0x69,0x94,0x48,0x67) 722 #endif 723 #else 724 typedef struct IMFSourceReaderCallbackVtbl { 725 BEGIN_INTERFACE 726 727 /*** IUnknown methods ***/ 728 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 729 IMFSourceReaderCallback* This, 730 REFIID riid, 731 void **ppvObject); 732 733 ULONG (STDMETHODCALLTYPE *AddRef)( 734 IMFSourceReaderCallback* This); 735 736 ULONG (STDMETHODCALLTYPE *Release)( 737 IMFSourceReaderCallback* This); 738 739 /*** IMFSourceReaderCallback methods ***/ 740 HRESULT (STDMETHODCALLTYPE *OnReadSample)( 741 IMFSourceReaderCallback* This, 742 HRESULT hrStatus, 743 DWORD dwStreamIndex, 744 DWORD dwStreamFlags, 745 LONGLONG llTimestamp, 746 IMFSample *pSample); 747 748 HRESULT (STDMETHODCALLTYPE *OnFlush)( 749 IMFSourceReaderCallback* This, 750 DWORD dwStreamIndex); 751 752 HRESULT (STDMETHODCALLTYPE *OnEvent)( 753 IMFSourceReaderCallback* This, 754 DWORD dwStreamIndex, 755 IMFMediaEvent *pEvent); 756 757 END_INTERFACE 758 } IMFSourceReaderCallbackVtbl; 759 interface IMFSourceReaderCallback { 760 CONST_VTBL IMFSourceReaderCallbackVtbl* lpVtbl; 761 }; 762 763 #ifdef COBJMACROS 764 #ifndef WIDL_C_INLINE_WRAPPERS 765 /*** IUnknown methods ***/ 766 #define IMFSourceReaderCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 767 #define IMFSourceReaderCallback_AddRef(This) (This)->lpVtbl->AddRef(This) 768 #define IMFSourceReaderCallback_Release(This) (This)->lpVtbl->Release(This) 769 /*** IMFSourceReaderCallback methods ***/ 770 #define IMFSourceReaderCallback_OnReadSample(This,hrStatus,dwStreamIndex,dwStreamFlags,llTimestamp,pSample) (This)->lpVtbl->OnReadSample(This,hrStatus,dwStreamIndex,dwStreamFlags,llTimestamp,pSample) 771 #define IMFSourceReaderCallback_OnFlush(This,dwStreamIndex) (This)->lpVtbl->OnFlush(This,dwStreamIndex) 772 #define IMFSourceReaderCallback_OnEvent(This,dwStreamIndex,pEvent) (This)->lpVtbl->OnEvent(This,dwStreamIndex,pEvent) 773 #else 774 /*** IUnknown methods ***/ 775 static FORCEINLINE HRESULT IMFSourceReaderCallback_QueryInterface(IMFSourceReaderCallback* This,REFIID riid,void **ppvObject) { 776 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 777 } 778 static FORCEINLINE ULONG IMFSourceReaderCallback_AddRef(IMFSourceReaderCallback* This) { 779 return This->lpVtbl->AddRef(This); 780 } 781 static FORCEINLINE ULONG IMFSourceReaderCallback_Release(IMFSourceReaderCallback* This) { 782 return This->lpVtbl->Release(This); 783 } 784 /*** IMFSourceReaderCallback methods ***/ 785 static FORCEINLINE HRESULT IMFSourceReaderCallback_OnReadSample(IMFSourceReaderCallback* This,HRESULT hrStatus,DWORD dwStreamIndex,DWORD dwStreamFlags,LONGLONG llTimestamp,IMFSample *pSample) { 786 return This->lpVtbl->OnReadSample(This,hrStatus,dwStreamIndex,dwStreamFlags,llTimestamp,pSample); 787 } 788 static FORCEINLINE HRESULT IMFSourceReaderCallback_OnFlush(IMFSourceReaderCallback* This,DWORD dwStreamIndex) { 789 return This->lpVtbl->OnFlush(This,dwStreamIndex); 790 } 791 static FORCEINLINE HRESULT IMFSourceReaderCallback_OnEvent(IMFSourceReaderCallback* This,DWORD dwStreamIndex,IMFMediaEvent *pEvent) { 792 return This->lpVtbl->OnEvent(This,dwStreamIndex,pEvent); 793 } 794 #endif 795 #endif 796 797 #endif 798 799 HRESULT STDMETHODCALLTYPE IMFSourceReaderCallback_OnReadSample_Proxy( 800 IMFSourceReaderCallback* This, 801 HRESULT hrStatus, 802 DWORD dwStreamIndex, 803 DWORD dwStreamFlags, 804 LONGLONG llTimestamp, 805 IMFSample *pSample); 806 void __RPC_STUB IMFSourceReaderCallback_OnReadSample_Stub( 807 IRpcStubBuffer* This, 808 IRpcChannelBuffer* pRpcChannelBuffer, 809 PRPC_MESSAGE pRpcMessage, 810 DWORD* pdwStubPhase); 811 HRESULT STDMETHODCALLTYPE IMFSourceReaderCallback_OnFlush_Proxy( 812 IMFSourceReaderCallback* This, 813 DWORD dwStreamIndex); 814 void __RPC_STUB IMFSourceReaderCallback_OnFlush_Stub( 815 IRpcStubBuffer* This, 816 IRpcChannelBuffer* pRpcChannelBuffer, 817 PRPC_MESSAGE pRpcMessage, 818 DWORD* pdwStubPhase); 819 HRESULT STDMETHODCALLTYPE IMFSourceReaderCallback_OnEvent_Proxy( 820 IMFSourceReaderCallback* This, 821 DWORD dwStreamIndex, 822 IMFMediaEvent *pEvent); 823 void __RPC_STUB IMFSourceReaderCallback_OnEvent_Stub( 824 IRpcStubBuffer* This, 825 IRpcChannelBuffer* pRpcChannelBuffer, 826 PRPC_MESSAGE pRpcMessage, 827 DWORD* pdwStubPhase); 828 829 #endif /* __IMFSourceReaderCallback_INTERFACE_DEFINED__ */ 830 831 HRESULT WINAPI MFCreateSinkWriterFromMediaSink(IMFMediaSink *pMediaSink,IMFAttributes *pAttributes,IMFSinkWriter **ppSinkWriter); 832 HRESULT WINAPI MFCreateSinkWriterFromURL(LPCWSTR pwszOutputURL,IMFByteStream *pByteStream,IMFAttributes *pAttributes,IMFSinkWriter **ppSinkWriter); 833 HRESULT WINAPI MFCreateSourceReaderFromByteStream(IMFByteStream *pByteStream,IMFAttributes *pAttributes,IMFSourceReader **ppSourceReader); 834 HRESULT WINAPI MFCreateSourceReaderFromMediaSource(IMFMediaSource *pMediaSource,IMFAttributes *pAttributes,IMFSourceReader **ppSourceReader); 835 HRESULT WINAPI MFCreateSourceReaderFromURL(LPCWSTR pwszURL,IMFAttributes *pAttributes,IMFSourceReader **ppSourceReader); 836 /* Begin additional prototypes for all interfaces */ 837 838 839 /* End additional prototypes */ 840 841 #ifdef __cplusplus 842 } 843 #endif 844 845 #endif /* __mfreadwrite_h__ */ 846