zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

mfplay.h (43323B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/mfplay.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 __mfplay_h__
     17 #define __mfplay_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IMFPMediaPlayer_FWD_DEFINED__
     22 #define __IMFPMediaPlayer_FWD_DEFINED__
     23 typedef interface IMFPMediaPlayer IMFPMediaPlayer;
     24 #ifdef __cplusplus
     25 interface IMFPMediaPlayer;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IMFPMediaItem_FWD_DEFINED__
     30 #define __IMFPMediaItem_FWD_DEFINED__
     31 typedef interface IMFPMediaItem IMFPMediaItem;
     32 #ifdef __cplusplus
     33 interface IMFPMediaItem;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IMFPMediaPlayerCallback_FWD_DEFINED__
     38 #define __IMFPMediaPlayerCallback_FWD_DEFINED__
     39 typedef interface IMFPMediaPlayerCallback IMFPMediaPlayerCallback;
     40 #ifdef __cplusplus
     41 interface IMFPMediaPlayerCallback;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 /* Headers for imported files */
     46 
     47 #include <unknwn.h>
     48 #include <propsys.h>
     49 #include <mfidl.h>
     50 #include <evr.h>
     51 
     52 #ifdef __cplusplus
     53 extern "C" {
     54 #endif
     55 
     56 /**
     57  * This file is part of the mingw-w64 runtime package.
     58  * No warranty is given; refer to the file DISCLAIMER within this package.
     59  */
     60 
     61 #if (WINVER >= _WIN32_WINNT_WIN7)
     62 #ifndef __IMFPMediaPlayer_FWD_DEFINED__
     63 #define __IMFPMediaPlayer_FWD_DEFINED__
     64 typedef interface IMFPMediaPlayer IMFPMediaPlayer;
     65 #ifdef __cplusplus
     66 interface IMFPMediaPlayer;
     67 #endif /* __cplusplus */
     68 #endif
     69 
     70 #ifndef __IMFPMediaItem_FWD_DEFINED__
     71 #define __IMFPMediaItem_FWD_DEFINED__
     72 typedef interface IMFPMediaItem IMFPMediaItem;
     73 #ifdef __cplusplus
     74 interface IMFPMediaItem;
     75 #endif /* __cplusplus */
     76 #endif
     77 
     78 #ifndef __IMFPMediaPlayerCallback_FWD_DEFINED__
     79 #define __IMFPMediaPlayerCallback_FWD_DEFINED__
     80 typedef interface IMFPMediaPlayerCallback IMFPMediaPlayerCallback;
     81 #ifdef __cplusplus
     82 interface IMFPMediaPlayerCallback;
     83 #endif /* __cplusplus */
     84 #endif
     85 
     86 #ifndef __IMFMediaEvent_FWD_DEFINED__
     87 #define __IMFMediaEvent_FWD_DEFINED__
     88 typedef interface IMFMediaEvent IMFMediaEvent;
     89 #ifdef __cplusplus
     90 interface IMFMediaEvent;
     91 #endif /* __cplusplus */
     92 #endif
     93 
     94 #ifndef __IMFNetCredential_FWD_DEFINED__
     95 #define __IMFNetCredential_FWD_DEFINED__
     96 typedef interface IMFNetCredential IMFNetCredential;
     97 #ifdef __cplusplus
     98 interface IMFNetCredential;
     99 #endif /* __cplusplus */
    100 #endif
    101 
    102 
    103 interface IMFMediaEvent;
    104 interface IMFNetCredential;
    105 
    106 typedef UINT32 MFP_CREATION_OPTIONS;
    107 
    108 typedef enum _MFP_CREATION_OPTIONS {
    109     MFP_OPTION_NONE = 0x0,
    110     MFP_OPTION_FREE_THREADED_CALLBACK = 0x1,
    111     MFP_OPTION_NO_MMCSS = 0x2,
    112     MFP_OPTION_NO_REMOTE_DESKTOP_OPTIMIZATION = 0x4
    113 } _MFP_CREATION_OPTIONS;
    114 
    115 typedef enum MFP_MEDIAPLAYER_STATE {
    116     MFP_MEDIAPLAYER_STATE_EMPTY = 0x0,
    117     MFP_MEDIAPLAYER_STATE_STOPPED = 0x1,
    118     MFP_MEDIAPLAYER_STATE_PLAYING = 0x2,
    119     MFP_MEDIAPLAYER_STATE_PAUSED = 0x3,
    120     MFP_MEDIAPLAYER_STATE_SHUTDOWN = 0x4
    121 } MFP_MEDIAPLAYER_STATE;
    122 
    123 typedef UINT32 MFP_MEDIAITEM_CHARACTERISTICS;
    124 
    125 typedef enum _MFP_MEDIAITEM_CHARACTERISTICS {
    126     MFP_MEDIAITEM_IS_LIVE = 0x1,
    127     MFP_MEDIAITEM_CAN_SEEK = 0x2,
    128     MFP_MEDIAITEM_CAN_PAUSE = 0x4,
    129     MFP_MEDIAITEM_HAS_SLOW_SEEK = 0x8
    130 } _MFP_MEDIAITEM_CHARACTERISTICS;
    131 
    132 typedef UINT32 MFP_CREDENTIAL_FLAGS;
    133 
    134 typedef enum _MFP_CREDENTIAL_FLAGS {
    135     MFP_CREDENTIAL_PROMPT = 0x1,
    136     MFP_CREDENTIAL_SAVE = 0x2,
    137     MFP_CREDENTIAL_DO_NOT_CACHE = 0x4,
    138     MFP_CREDENTIAL_CLEAR_TEXT = 0x8,
    139     MFP_CREDENTIAL_PROXY = 0x10,
    140     MFP_CREDENTIAL_LOGGED_ON_USER = 0x20
    141 } _MFP_CREDENTIAL_FLAGS;
    142 STDAPI MFPCreateMediaPlayer(LPCWSTR pwszURL, BOOL fStartPlayback, MFP_CREATION_OPTIONS creationOptions, IMFPMediaPlayerCallback * pCallback, HWND hWnd, IMFPMediaPlayer ** ppMediaPlayer);
    143 
    144 /*****************************************************************************
    145  * IMFPMediaPlayer interface
    146  */
    147 #ifndef __IMFPMediaPlayer_INTERFACE_DEFINED__
    148 #define __IMFPMediaPlayer_INTERFACE_DEFINED__
    149 
    150 DEFINE_GUID(IID_IMFPMediaPlayer, 0xa714590a, 0x58af, 0x430a, 0x85,0xbf, 0x44,0xf5,0xec,0x83,0x8d,0x85);
    151 #if defined(__cplusplus) && !defined(CINTERFACE)
    152 MIDL_INTERFACE("a714590a-58af-430a-85bf-44f5ec838d85")
    153 IMFPMediaPlayer : public IUnknown
    154 {
    155     virtual HRESULT STDMETHODCALLTYPE Play(
    156         ) = 0;
    157 
    158     virtual HRESULT STDMETHODCALLTYPE Pause(
    159         ) = 0;
    160 
    161     virtual HRESULT STDMETHODCALLTYPE Stop(
    162         ) = 0;
    163 
    164     virtual HRESULT STDMETHODCALLTYPE FrameStep(
    165         ) = 0;
    166 
    167     virtual HRESULT STDMETHODCALLTYPE SetPosition(
    168         REFGUID guidPositionType,
    169         const PROPVARIANT *pvPositionValue) = 0;
    170 
    171     virtual HRESULT STDMETHODCALLTYPE GetPosition(
    172         REFGUID guidPositionType,
    173         PROPVARIANT *pvPositionValue) = 0;
    174 
    175     virtual HRESULT STDMETHODCALLTYPE GetDuration(
    176         REFGUID guidPositionType,
    177         PROPVARIANT *pvDurationValue) = 0;
    178 
    179     virtual HRESULT STDMETHODCALLTYPE SetRate(
    180         float flRate) = 0;
    181 
    182     virtual HRESULT STDMETHODCALLTYPE GetRate(
    183         float *pflRate) = 0;
    184 
    185     virtual HRESULT STDMETHODCALLTYPE GetSupportedRates(
    186         WINBOOL fForwardDirection,
    187         float *pflSlowestRate,
    188         float *pflFastestRate) = 0;
    189 
    190     virtual HRESULT STDMETHODCALLTYPE GetState(
    191         MFP_MEDIAPLAYER_STATE *peState) = 0;
    192 
    193     virtual HRESULT STDMETHODCALLTYPE CreateMediaItemFromURL(
    194         LPCWSTR pwszURL,
    195         WINBOOL fSync,
    196         DWORD_PTR dwUserData,
    197         IMFPMediaItem **ppMediaItem) = 0;
    198 
    199     virtual HRESULT STDMETHODCALLTYPE CreateMediaItemFromObject(
    200         IUnknown *pIUnknownObj,
    201         WINBOOL fSync,
    202         DWORD_PTR dwUserData,
    203         IMFPMediaItem **ppMediaItem) = 0;
    204 
    205     virtual HRESULT STDMETHODCALLTYPE SetMediaItem(
    206         IMFPMediaItem *pIMFPMediaItem) = 0;
    207 
    208     virtual HRESULT STDMETHODCALLTYPE ClearMediaItem(
    209         ) = 0;
    210 
    211     virtual HRESULT STDMETHODCALLTYPE GetMediaItem(
    212         IMFPMediaItem **ppIMFPMediaItem) = 0;
    213 
    214     virtual HRESULT STDMETHODCALLTYPE GetVolume(
    215         float *pflVolume) = 0;
    216 
    217     virtual HRESULT STDMETHODCALLTYPE SetVolume(
    218         float flVolume) = 0;
    219 
    220     virtual HRESULT STDMETHODCALLTYPE GetBalance(
    221         float *pflBalance) = 0;
    222 
    223     virtual HRESULT STDMETHODCALLTYPE SetBalance(
    224         float flBalance) = 0;
    225 
    226     virtual HRESULT STDMETHODCALLTYPE GetMute(
    227         WINBOOL *pfMute) = 0;
    228 
    229     virtual HRESULT STDMETHODCALLTYPE SetMute(
    230         WINBOOL fMute) = 0;
    231 
    232     virtual HRESULT STDMETHODCALLTYPE GetNativeVideoSize(
    233         SIZE *pszVideo,
    234         SIZE *pszARVideo) = 0;
    235 
    236     virtual HRESULT STDMETHODCALLTYPE GetIdealVideoSize(
    237         SIZE *pszMin,
    238         SIZE *pszMax) = 0;
    239 
    240     virtual HRESULT STDMETHODCALLTYPE SetVideoSourceRect(
    241         const MFVideoNormalizedRect *pnrcSource) = 0;
    242 
    243     virtual HRESULT STDMETHODCALLTYPE GetVideoSourceRect(
    244         MFVideoNormalizedRect *pnrcSource) = 0;
    245 
    246     virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode(
    247         DWORD dwAspectRatioMode) = 0;
    248 
    249     virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode(
    250         DWORD *pdwAspectRatioMode) = 0;
    251 
    252     virtual HRESULT STDMETHODCALLTYPE GetVideoWindow(
    253         HWND *phwndVideo) = 0;
    254 
    255     virtual HRESULT STDMETHODCALLTYPE UpdateVideo(
    256         ) = 0;
    257 
    258     virtual HRESULT STDMETHODCALLTYPE SetBorderColor(
    259         COLORREF Clr) = 0;
    260 
    261     virtual HRESULT STDMETHODCALLTYPE GetBorderColor(
    262         COLORREF *pClr) = 0;
    263 
    264     virtual HRESULT STDMETHODCALLTYPE InsertEffect(
    265         IUnknown *pEffect,
    266         WINBOOL fOptional) = 0;
    267 
    268     virtual HRESULT STDMETHODCALLTYPE RemoveEffect(
    269         IUnknown *pEffect) = 0;
    270 
    271     virtual HRESULT STDMETHODCALLTYPE RemoveAllEffects(
    272         ) = 0;
    273 
    274     virtual HRESULT STDMETHODCALLTYPE Shutdown(
    275         ) = 0;
    276 
    277 };
    278 #ifdef __CRT_UUID_DECL
    279 __CRT_UUID_DECL(IMFPMediaPlayer, 0xa714590a, 0x58af, 0x430a, 0x85,0xbf, 0x44,0xf5,0xec,0x83,0x8d,0x85)
    280 #endif
    281 #else
    282 typedef struct IMFPMediaPlayerVtbl {
    283     BEGIN_INTERFACE
    284 
    285     /*** IUnknown methods ***/
    286     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    287         IMFPMediaPlayer *This,
    288         REFIID riid,
    289         void **ppvObject);
    290 
    291     ULONG (STDMETHODCALLTYPE *AddRef)(
    292         IMFPMediaPlayer *This);
    293 
    294     ULONG (STDMETHODCALLTYPE *Release)(
    295         IMFPMediaPlayer *This);
    296 
    297     /*** IMFPMediaPlayer methods ***/
    298     HRESULT (STDMETHODCALLTYPE *Play)(
    299         IMFPMediaPlayer *This);
    300 
    301     HRESULT (STDMETHODCALLTYPE *Pause)(
    302         IMFPMediaPlayer *This);
    303 
    304     HRESULT (STDMETHODCALLTYPE *Stop)(
    305         IMFPMediaPlayer *This);
    306 
    307     HRESULT (STDMETHODCALLTYPE *FrameStep)(
    308         IMFPMediaPlayer *This);
    309 
    310     HRESULT (STDMETHODCALLTYPE *SetPosition)(
    311         IMFPMediaPlayer *This,
    312         REFGUID guidPositionType,
    313         const PROPVARIANT *pvPositionValue);
    314 
    315     HRESULT (STDMETHODCALLTYPE *GetPosition)(
    316         IMFPMediaPlayer *This,
    317         REFGUID guidPositionType,
    318         PROPVARIANT *pvPositionValue);
    319 
    320     HRESULT (STDMETHODCALLTYPE *GetDuration)(
    321         IMFPMediaPlayer *This,
    322         REFGUID guidPositionType,
    323         PROPVARIANT *pvDurationValue);
    324 
    325     HRESULT (STDMETHODCALLTYPE *SetRate)(
    326         IMFPMediaPlayer *This,
    327         float flRate);
    328 
    329     HRESULT (STDMETHODCALLTYPE *GetRate)(
    330         IMFPMediaPlayer *This,
    331         float *pflRate);
    332 
    333     HRESULT (STDMETHODCALLTYPE *GetSupportedRates)(
    334         IMFPMediaPlayer *This,
    335         WINBOOL fForwardDirection,
    336         float *pflSlowestRate,
    337         float *pflFastestRate);
    338 
    339     HRESULT (STDMETHODCALLTYPE *GetState)(
    340         IMFPMediaPlayer *This,
    341         MFP_MEDIAPLAYER_STATE *peState);
    342 
    343     HRESULT (STDMETHODCALLTYPE *CreateMediaItemFromURL)(
    344         IMFPMediaPlayer *This,
    345         LPCWSTR pwszURL,
    346         WINBOOL fSync,
    347         DWORD_PTR dwUserData,
    348         IMFPMediaItem **ppMediaItem);
    349 
    350     HRESULT (STDMETHODCALLTYPE *CreateMediaItemFromObject)(
    351         IMFPMediaPlayer *This,
    352         IUnknown *pIUnknownObj,
    353         WINBOOL fSync,
    354         DWORD_PTR dwUserData,
    355         IMFPMediaItem **ppMediaItem);
    356 
    357     HRESULT (STDMETHODCALLTYPE *SetMediaItem)(
    358         IMFPMediaPlayer *This,
    359         IMFPMediaItem *pIMFPMediaItem);
    360 
    361     HRESULT (STDMETHODCALLTYPE *ClearMediaItem)(
    362         IMFPMediaPlayer *This);
    363 
    364     HRESULT (STDMETHODCALLTYPE *GetMediaItem)(
    365         IMFPMediaPlayer *This,
    366         IMFPMediaItem **ppIMFPMediaItem);
    367 
    368     HRESULT (STDMETHODCALLTYPE *GetVolume)(
    369         IMFPMediaPlayer *This,
    370         float *pflVolume);
    371 
    372     HRESULT (STDMETHODCALLTYPE *SetVolume)(
    373         IMFPMediaPlayer *This,
    374         float flVolume);
    375 
    376     HRESULT (STDMETHODCALLTYPE *GetBalance)(
    377         IMFPMediaPlayer *This,
    378         float *pflBalance);
    379 
    380     HRESULT (STDMETHODCALLTYPE *SetBalance)(
    381         IMFPMediaPlayer *This,
    382         float flBalance);
    383 
    384     HRESULT (STDMETHODCALLTYPE *GetMute)(
    385         IMFPMediaPlayer *This,
    386         WINBOOL *pfMute);
    387 
    388     HRESULT (STDMETHODCALLTYPE *SetMute)(
    389         IMFPMediaPlayer *This,
    390         WINBOOL fMute);
    391 
    392     HRESULT (STDMETHODCALLTYPE *GetNativeVideoSize)(
    393         IMFPMediaPlayer *This,
    394         SIZE *pszVideo,
    395         SIZE *pszARVideo);
    396 
    397     HRESULT (STDMETHODCALLTYPE *GetIdealVideoSize)(
    398         IMFPMediaPlayer *This,
    399         SIZE *pszMin,
    400         SIZE *pszMax);
    401 
    402     HRESULT (STDMETHODCALLTYPE *SetVideoSourceRect)(
    403         IMFPMediaPlayer *This,
    404         const MFVideoNormalizedRect *pnrcSource);
    405 
    406     HRESULT (STDMETHODCALLTYPE *GetVideoSourceRect)(
    407         IMFPMediaPlayer *This,
    408         MFVideoNormalizedRect *pnrcSource);
    409 
    410     HRESULT (STDMETHODCALLTYPE *SetAspectRatioMode)(
    411         IMFPMediaPlayer *This,
    412         DWORD dwAspectRatioMode);
    413 
    414     HRESULT (STDMETHODCALLTYPE *GetAspectRatioMode)(
    415         IMFPMediaPlayer *This,
    416         DWORD *pdwAspectRatioMode);
    417 
    418     HRESULT (STDMETHODCALLTYPE *GetVideoWindow)(
    419         IMFPMediaPlayer *This,
    420         HWND *phwndVideo);
    421 
    422     HRESULT (STDMETHODCALLTYPE *UpdateVideo)(
    423         IMFPMediaPlayer *This);
    424 
    425     HRESULT (STDMETHODCALLTYPE *SetBorderColor)(
    426         IMFPMediaPlayer *This,
    427         COLORREF Clr);
    428 
    429     HRESULT (STDMETHODCALLTYPE *GetBorderColor)(
    430         IMFPMediaPlayer *This,
    431         COLORREF *pClr);
    432 
    433     HRESULT (STDMETHODCALLTYPE *InsertEffect)(
    434         IMFPMediaPlayer *This,
    435         IUnknown *pEffect,
    436         WINBOOL fOptional);
    437 
    438     HRESULT (STDMETHODCALLTYPE *RemoveEffect)(
    439         IMFPMediaPlayer *This,
    440         IUnknown *pEffect);
    441 
    442     HRESULT (STDMETHODCALLTYPE *RemoveAllEffects)(
    443         IMFPMediaPlayer *This);
    444 
    445     HRESULT (STDMETHODCALLTYPE *Shutdown)(
    446         IMFPMediaPlayer *This);
    447 
    448     END_INTERFACE
    449 } IMFPMediaPlayerVtbl;
    450 
    451 interface IMFPMediaPlayer {
    452     CONST_VTBL IMFPMediaPlayerVtbl* lpVtbl;
    453 };
    454 
    455 #ifdef COBJMACROS
    456 #ifndef WIDL_C_INLINE_WRAPPERS
    457 /*** IUnknown methods ***/
    458 #define IMFPMediaPlayer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    459 #define IMFPMediaPlayer_AddRef(This) (This)->lpVtbl->AddRef(This)
    460 #define IMFPMediaPlayer_Release(This) (This)->lpVtbl->Release(This)
    461 /*** IMFPMediaPlayer methods ***/
    462 #define IMFPMediaPlayer_Play(This) (This)->lpVtbl->Play(This)
    463 #define IMFPMediaPlayer_Pause(This) (This)->lpVtbl->Pause(This)
    464 #define IMFPMediaPlayer_Stop(This) (This)->lpVtbl->Stop(This)
    465 #define IMFPMediaPlayer_FrameStep(This) (This)->lpVtbl->FrameStep(This)
    466 #define IMFPMediaPlayer_SetPosition(This,guidPositionType,pvPositionValue) (This)->lpVtbl->SetPosition(This,guidPositionType,pvPositionValue)
    467 #define IMFPMediaPlayer_GetPosition(This,guidPositionType,pvPositionValue) (This)->lpVtbl->GetPosition(This,guidPositionType,pvPositionValue)
    468 #define IMFPMediaPlayer_GetDuration(This,guidPositionType,pvDurationValue) (This)->lpVtbl->GetDuration(This,guidPositionType,pvDurationValue)
    469 #define IMFPMediaPlayer_SetRate(This,flRate) (This)->lpVtbl->SetRate(This,flRate)
    470 #define IMFPMediaPlayer_GetRate(This,pflRate) (This)->lpVtbl->GetRate(This,pflRate)
    471 #define IMFPMediaPlayer_GetSupportedRates(This,fForwardDirection,pflSlowestRate,pflFastestRate) (This)->lpVtbl->GetSupportedRates(This,fForwardDirection,pflSlowestRate,pflFastestRate)
    472 #define IMFPMediaPlayer_GetState(This,peState) (This)->lpVtbl->GetState(This,peState)
    473 #define IMFPMediaPlayer_CreateMediaItemFromURL(This,pwszURL,fSync,dwUserData,ppMediaItem) (This)->lpVtbl->CreateMediaItemFromURL(This,pwszURL,fSync,dwUserData,ppMediaItem)
    474 #define IMFPMediaPlayer_CreateMediaItemFromObject(This,pIUnknownObj,fSync,dwUserData,ppMediaItem) (This)->lpVtbl->CreateMediaItemFromObject(This,pIUnknownObj,fSync,dwUserData,ppMediaItem)
    475 #define IMFPMediaPlayer_SetMediaItem(This,pIMFPMediaItem) (This)->lpVtbl->SetMediaItem(This,pIMFPMediaItem)
    476 #define IMFPMediaPlayer_ClearMediaItem(This) (This)->lpVtbl->ClearMediaItem(This)
    477 #define IMFPMediaPlayer_GetMediaItem(This,ppIMFPMediaItem) (This)->lpVtbl->GetMediaItem(This,ppIMFPMediaItem)
    478 #define IMFPMediaPlayer_GetVolume(This,pflVolume) (This)->lpVtbl->GetVolume(This,pflVolume)
    479 #define IMFPMediaPlayer_SetVolume(This,flVolume) (This)->lpVtbl->SetVolume(This,flVolume)
    480 #define IMFPMediaPlayer_GetBalance(This,pflBalance) (This)->lpVtbl->GetBalance(This,pflBalance)
    481 #define IMFPMediaPlayer_SetBalance(This,flBalance) (This)->lpVtbl->SetBalance(This,flBalance)
    482 #define IMFPMediaPlayer_GetMute(This,pfMute) (This)->lpVtbl->GetMute(This,pfMute)
    483 #define IMFPMediaPlayer_SetMute(This,fMute) (This)->lpVtbl->SetMute(This,fMute)
    484 #define IMFPMediaPlayer_GetNativeVideoSize(This,pszVideo,pszARVideo) (This)->lpVtbl->GetNativeVideoSize(This,pszVideo,pszARVideo)
    485 #define IMFPMediaPlayer_GetIdealVideoSize(This,pszMin,pszMax) (This)->lpVtbl->GetIdealVideoSize(This,pszMin,pszMax)
    486 #define IMFPMediaPlayer_SetVideoSourceRect(This,pnrcSource) (This)->lpVtbl->SetVideoSourceRect(This,pnrcSource)
    487 #define IMFPMediaPlayer_GetVideoSourceRect(This,pnrcSource) (This)->lpVtbl->GetVideoSourceRect(This,pnrcSource)
    488 #define IMFPMediaPlayer_SetAspectRatioMode(This,dwAspectRatioMode) (This)->lpVtbl->SetAspectRatioMode(This,dwAspectRatioMode)
    489 #define IMFPMediaPlayer_GetAspectRatioMode(This,pdwAspectRatioMode) (This)->lpVtbl->GetAspectRatioMode(This,pdwAspectRatioMode)
    490 #define IMFPMediaPlayer_GetVideoWindow(This,phwndVideo) (This)->lpVtbl->GetVideoWindow(This,phwndVideo)
    491 #define IMFPMediaPlayer_UpdateVideo(This) (This)->lpVtbl->UpdateVideo(This)
    492 #define IMFPMediaPlayer_SetBorderColor(This,Clr) (This)->lpVtbl->SetBorderColor(This,Clr)
    493 #define IMFPMediaPlayer_GetBorderColor(This,pClr) (This)->lpVtbl->GetBorderColor(This,pClr)
    494 #define IMFPMediaPlayer_InsertEffect(This,pEffect,fOptional) (This)->lpVtbl->InsertEffect(This,pEffect,fOptional)
    495 #define IMFPMediaPlayer_RemoveEffect(This,pEffect) (This)->lpVtbl->RemoveEffect(This,pEffect)
    496 #define IMFPMediaPlayer_RemoveAllEffects(This) (This)->lpVtbl->RemoveAllEffects(This)
    497 #define IMFPMediaPlayer_Shutdown(This) (This)->lpVtbl->Shutdown(This)
    498 #else
    499 /*** IUnknown methods ***/
    500 static inline HRESULT IMFPMediaPlayer_QueryInterface(IMFPMediaPlayer* This,REFIID riid,void **ppvObject) {
    501     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    502 }
    503 static inline ULONG IMFPMediaPlayer_AddRef(IMFPMediaPlayer* This) {
    504     return This->lpVtbl->AddRef(This);
    505 }
    506 static inline ULONG IMFPMediaPlayer_Release(IMFPMediaPlayer* This) {
    507     return This->lpVtbl->Release(This);
    508 }
    509 /*** IMFPMediaPlayer methods ***/
    510 static inline HRESULT IMFPMediaPlayer_Play(IMFPMediaPlayer* This) {
    511     return This->lpVtbl->Play(This);
    512 }
    513 static inline HRESULT IMFPMediaPlayer_Pause(IMFPMediaPlayer* This) {
    514     return This->lpVtbl->Pause(This);
    515 }
    516 static inline HRESULT IMFPMediaPlayer_Stop(IMFPMediaPlayer* This) {
    517     return This->lpVtbl->Stop(This);
    518 }
    519 static inline HRESULT IMFPMediaPlayer_FrameStep(IMFPMediaPlayer* This) {
    520     return This->lpVtbl->FrameStep(This);
    521 }
    522 static inline HRESULT IMFPMediaPlayer_SetPosition(IMFPMediaPlayer* This,REFGUID guidPositionType,const PROPVARIANT *pvPositionValue) {
    523     return This->lpVtbl->SetPosition(This,guidPositionType,pvPositionValue);
    524 }
    525 static inline HRESULT IMFPMediaPlayer_GetPosition(IMFPMediaPlayer* This,REFGUID guidPositionType,PROPVARIANT *pvPositionValue) {
    526     return This->lpVtbl->GetPosition(This,guidPositionType,pvPositionValue);
    527 }
    528 static inline HRESULT IMFPMediaPlayer_GetDuration(IMFPMediaPlayer* This,REFGUID guidPositionType,PROPVARIANT *pvDurationValue) {
    529     return This->lpVtbl->GetDuration(This,guidPositionType,pvDurationValue);
    530 }
    531 static inline HRESULT IMFPMediaPlayer_SetRate(IMFPMediaPlayer* This,float flRate) {
    532     return This->lpVtbl->SetRate(This,flRate);
    533 }
    534 static inline HRESULT IMFPMediaPlayer_GetRate(IMFPMediaPlayer* This,float *pflRate) {
    535     return This->lpVtbl->GetRate(This,pflRate);
    536 }
    537 static inline HRESULT IMFPMediaPlayer_GetSupportedRates(IMFPMediaPlayer* This,WINBOOL fForwardDirection,float *pflSlowestRate,float *pflFastestRate) {
    538     return This->lpVtbl->GetSupportedRates(This,fForwardDirection,pflSlowestRate,pflFastestRate);
    539 }
    540 static inline HRESULT IMFPMediaPlayer_GetState(IMFPMediaPlayer* This,MFP_MEDIAPLAYER_STATE *peState) {
    541     return This->lpVtbl->GetState(This,peState);
    542 }
    543 static inline HRESULT IMFPMediaPlayer_CreateMediaItemFromURL(IMFPMediaPlayer* This,LPCWSTR pwszURL,WINBOOL fSync,DWORD_PTR dwUserData,IMFPMediaItem **ppMediaItem) {
    544     return This->lpVtbl->CreateMediaItemFromURL(This,pwszURL,fSync,dwUserData,ppMediaItem);
    545 }
    546 static inline HRESULT IMFPMediaPlayer_CreateMediaItemFromObject(IMFPMediaPlayer* This,IUnknown *pIUnknownObj,WINBOOL fSync,DWORD_PTR dwUserData,IMFPMediaItem **ppMediaItem) {
    547     return This->lpVtbl->CreateMediaItemFromObject(This,pIUnknownObj,fSync,dwUserData,ppMediaItem);
    548 }
    549 static inline HRESULT IMFPMediaPlayer_SetMediaItem(IMFPMediaPlayer* This,IMFPMediaItem *pIMFPMediaItem) {
    550     return This->lpVtbl->SetMediaItem(This,pIMFPMediaItem);
    551 }
    552 static inline HRESULT IMFPMediaPlayer_ClearMediaItem(IMFPMediaPlayer* This) {
    553     return This->lpVtbl->ClearMediaItem(This);
    554 }
    555 static inline HRESULT IMFPMediaPlayer_GetMediaItem(IMFPMediaPlayer* This,IMFPMediaItem **ppIMFPMediaItem) {
    556     return This->lpVtbl->GetMediaItem(This,ppIMFPMediaItem);
    557 }
    558 static inline HRESULT IMFPMediaPlayer_GetVolume(IMFPMediaPlayer* This,float *pflVolume) {
    559     return This->lpVtbl->GetVolume(This,pflVolume);
    560 }
    561 static inline HRESULT IMFPMediaPlayer_SetVolume(IMFPMediaPlayer* This,float flVolume) {
    562     return This->lpVtbl->SetVolume(This,flVolume);
    563 }
    564 static inline HRESULT IMFPMediaPlayer_GetBalance(IMFPMediaPlayer* This,float *pflBalance) {
    565     return This->lpVtbl->GetBalance(This,pflBalance);
    566 }
    567 static inline HRESULT IMFPMediaPlayer_SetBalance(IMFPMediaPlayer* This,float flBalance) {
    568     return This->lpVtbl->SetBalance(This,flBalance);
    569 }
    570 static inline HRESULT IMFPMediaPlayer_GetMute(IMFPMediaPlayer* This,WINBOOL *pfMute) {
    571     return This->lpVtbl->GetMute(This,pfMute);
    572 }
    573 static inline HRESULT IMFPMediaPlayer_SetMute(IMFPMediaPlayer* This,WINBOOL fMute) {
    574     return This->lpVtbl->SetMute(This,fMute);
    575 }
    576 static inline HRESULT IMFPMediaPlayer_GetNativeVideoSize(IMFPMediaPlayer* This,SIZE *pszVideo,SIZE *pszARVideo) {
    577     return This->lpVtbl->GetNativeVideoSize(This,pszVideo,pszARVideo);
    578 }
    579 static inline HRESULT IMFPMediaPlayer_GetIdealVideoSize(IMFPMediaPlayer* This,SIZE *pszMin,SIZE *pszMax) {
    580     return This->lpVtbl->GetIdealVideoSize(This,pszMin,pszMax);
    581 }
    582 static inline HRESULT IMFPMediaPlayer_SetVideoSourceRect(IMFPMediaPlayer* This,const MFVideoNormalizedRect *pnrcSource) {
    583     return This->lpVtbl->SetVideoSourceRect(This,pnrcSource);
    584 }
    585 static inline HRESULT IMFPMediaPlayer_GetVideoSourceRect(IMFPMediaPlayer* This,MFVideoNormalizedRect *pnrcSource) {
    586     return This->lpVtbl->GetVideoSourceRect(This,pnrcSource);
    587 }
    588 static inline HRESULT IMFPMediaPlayer_SetAspectRatioMode(IMFPMediaPlayer* This,DWORD dwAspectRatioMode) {
    589     return This->lpVtbl->SetAspectRatioMode(This,dwAspectRatioMode);
    590 }
    591 static inline HRESULT IMFPMediaPlayer_GetAspectRatioMode(IMFPMediaPlayer* This,DWORD *pdwAspectRatioMode) {
    592     return This->lpVtbl->GetAspectRatioMode(This,pdwAspectRatioMode);
    593 }
    594 static inline HRESULT IMFPMediaPlayer_GetVideoWindow(IMFPMediaPlayer* This,HWND *phwndVideo) {
    595     return This->lpVtbl->GetVideoWindow(This,phwndVideo);
    596 }
    597 static inline HRESULT IMFPMediaPlayer_UpdateVideo(IMFPMediaPlayer* This) {
    598     return This->lpVtbl->UpdateVideo(This);
    599 }
    600 static inline HRESULT IMFPMediaPlayer_SetBorderColor(IMFPMediaPlayer* This,COLORREF Clr) {
    601     return This->lpVtbl->SetBorderColor(This,Clr);
    602 }
    603 static inline HRESULT IMFPMediaPlayer_GetBorderColor(IMFPMediaPlayer* This,COLORREF *pClr) {
    604     return This->lpVtbl->GetBorderColor(This,pClr);
    605 }
    606 static inline HRESULT IMFPMediaPlayer_InsertEffect(IMFPMediaPlayer* This,IUnknown *pEffect,WINBOOL fOptional) {
    607     return This->lpVtbl->InsertEffect(This,pEffect,fOptional);
    608 }
    609 static inline HRESULT IMFPMediaPlayer_RemoveEffect(IMFPMediaPlayer* This,IUnknown *pEffect) {
    610     return This->lpVtbl->RemoveEffect(This,pEffect);
    611 }
    612 static inline HRESULT IMFPMediaPlayer_RemoveAllEffects(IMFPMediaPlayer* This) {
    613     return This->lpVtbl->RemoveAllEffects(This);
    614 }
    615 static inline HRESULT IMFPMediaPlayer_Shutdown(IMFPMediaPlayer* This) {
    616     return This->lpVtbl->Shutdown(This);
    617 }
    618 #endif
    619 #endif
    620 
    621 #endif
    622 
    623 
    624 #endif  /* __IMFPMediaPlayer_INTERFACE_DEFINED__ */
    625 
    626 EXTERN_GUID( MFP_POSITIONTYPE_100NS, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 );
    627 
    628 /*****************************************************************************
    629  * IMFPMediaItem interface
    630  */
    631 #ifndef __IMFPMediaItem_INTERFACE_DEFINED__
    632 #define __IMFPMediaItem_INTERFACE_DEFINED__
    633 
    634 DEFINE_GUID(IID_IMFPMediaItem, 0x90eb3e6b, 0xecbf, 0x45cc, 0xb1,0xda, 0xc6,0xfe,0x3e,0xa7,0x0d,0x57);
    635 #if defined(__cplusplus) && !defined(CINTERFACE)
    636 MIDL_INTERFACE("90eb3e6b-ecbf-45cc-b1da-c6fe3ea70d57")
    637 IMFPMediaItem : public IUnknown
    638 {
    639     virtual HRESULT STDMETHODCALLTYPE GetMediaPlayer(
    640         IMFPMediaPlayer **ppMediaPlayer) = 0;
    641 
    642     virtual HRESULT STDMETHODCALLTYPE GetURL(
    643         LPWSTR *ppwszURL) = 0;
    644 
    645     virtual HRESULT STDMETHODCALLTYPE GetObject(
    646         IUnknown **ppIUnknown) = 0;
    647 
    648     virtual HRESULT STDMETHODCALLTYPE GetUserData(
    649         DWORD_PTR *pdwUserData) = 0;
    650 
    651     virtual HRESULT STDMETHODCALLTYPE SetUserData(
    652         DWORD_PTR dwUserData) = 0;
    653 
    654     virtual HRESULT STDMETHODCALLTYPE GetStartStopPosition(
    655         GUID *pguidStartPositionType,
    656         PROPVARIANT *pvStartValue,
    657         GUID *pguidStopPositionType,
    658         PROPVARIANT *pvStopValue) = 0;
    659 
    660     virtual HRESULT STDMETHODCALLTYPE SetStartStopPosition(
    661         const GUID *pguidStartPositionType,
    662         const PROPVARIANT *pvStartValue,
    663         const GUID *pguidStopPositionType,
    664         const PROPVARIANT *pvStopValue) = 0;
    665 
    666     virtual HRESULT STDMETHODCALLTYPE HasVideo(
    667         WINBOOL *pfHasVideo,
    668         WINBOOL *pfSelected) = 0;
    669 
    670     virtual HRESULT STDMETHODCALLTYPE HasAudio(
    671         WINBOOL *pfHasAudio,
    672         WINBOOL *pfSelected) = 0;
    673 
    674     virtual HRESULT STDMETHODCALLTYPE IsProtected(
    675         WINBOOL *pfProtected) = 0;
    676 
    677     virtual HRESULT STDMETHODCALLTYPE GetDuration(
    678         REFGUID guidPositionType,
    679         PROPVARIANT *pvDurationValue) = 0;
    680 
    681     virtual HRESULT STDMETHODCALLTYPE GetNumberOfStreams(
    682         DWORD *pdwStreamCount) = 0;
    683 
    684     virtual HRESULT STDMETHODCALLTYPE GetStreamSelection(
    685         DWORD dwStreamIndex,
    686         WINBOOL *pfEnabled) = 0;
    687 
    688     virtual HRESULT STDMETHODCALLTYPE SetStreamSelection(
    689         DWORD dwStreamIndex,
    690         WINBOOL fEnabled) = 0;
    691 
    692     virtual HRESULT STDMETHODCALLTYPE GetStreamAttribute(
    693         DWORD dwStreamIndex,
    694         REFGUID guidMFAttribute,
    695         PROPVARIANT *pvValue) = 0;
    696 
    697     virtual HRESULT STDMETHODCALLTYPE GetPresentationAttribute(
    698         REFGUID guidMFAttribute,
    699         PROPVARIANT *pvValue) = 0;
    700 
    701     virtual HRESULT STDMETHODCALLTYPE GetCharacteristics(
    702         MFP_MEDIAITEM_CHARACTERISTICS *pCharacteristics) = 0;
    703 
    704     virtual HRESULT STDMETHODCALLTYPE SetStreamSink(
    705         DWORD dwStreamIndex,
    706         IUnknown *pMediaSink) = 0;
    707 
    708     virtual HRESULT STDMETHODCALLTYPE GetMetadata(
    709         IPropertyStore **ppMetadataStore) = 0;
    710 
    711 };
    712 #ifdef __CRT_UUID_DECL
    713 __CRT_UUID_DECL(IMFPMediaItem, 0x90eb3e6b, 0xecbf, 0x45cc, 0xb1,0xda, 0xc6,0xfe,0x3e,0xa7,0x0d,0x57)
    714 #endif
    715 #else
    716 typedef struct IMFPMediaItemVtbl {
    717     BEGIN_INTERFACE
    718 
    719     /*** IUnknown methods ***/
    720     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    721         IMFPMediaItem *This,
    722         REFIID riid,
    723         void **ppvObject);
    724 
    725     ULONG (STDMETHODCALLTYPE *AddRef)(
    726         IMFPMediaItem *This);
    727 
    728     ULONG (STDMETHODCALLTYPE *Release)(
    729         IMFPMediaItem *This);
    730 
    731     /*** IMFPMediaItem methods ***/
    732     HRESULT (STDMETHODCALLTYPE *GetMediaPlayer)(
    733         IMFPMediaItem *This,
    734         IMFPMediaPlayer **ppMediaPlayer);
    735 
    736     HRESULT (STDMETHODCALLTYPE *GetURL)(
    737         IMFPMediaItem *This,
    738         LPWSTR *ppwszURL);
    739 
    740     HRESULT (STDMETHODCALLTYPE *GetObject)(
    741         IMFPMediaItem *This,
    742         IUnknown **ppIUnknown);
    743 
    744     HRESULT (STDMETHODCALLTYPE *GetUserData)(
    745         IMFPMediaItem *This,
    746         DWORD_PTR *pdwUserData);
    747 
    748     HRESULT (STDMETHODCALLTYPE *SetUserData)(
    749         IMFPMediaItem *This,
    750         DWORD_PTR dwUserData);
    751 
    752     HRESULT (STDMETHODCALLTYPE *GetStartStopPosition)(
    753         IMFPMediaItem *This,
    754         GUID *pguidStartPositionType,
    755         PROPVARIANT *pvStartValue,
    756         GUID *pguidStopPositionType,
    757         PROPVARIANT *pvStopValue);
    758 
    759     HRESULT (STDMETHODCALLTYPE *SetStartStopPosition)(
    760         IMFPMediaItem *This,
    761         const GUID *pguidStartPositionType,
    762         const PROPVARIANT *pvStartValue,
    763         const GUID *pguidStopPositionType,
    764         const PROPVARIANT *pvStopValue);
    765 
    766     HRESULT (STDMETHODCALLTYPE *HasVideo)(
    767         IMFPMediaItem *This,
    768         WINBOOL *pfHasVideo,
    769         WINBOOL *pfSelected);
    770 
    771     HRESULT (STDMETHODCALLTYPE *HasAudio)(
    772         IMFPMediaItem *This,
    773         WINBOOL *pfHasAudio,
    774         WINBOOL *pfSelected);
    775 
    776     HRESULT (STDMETHODCALLTYPE *IsProtected)(
    777         IMFPMediaItem *This,
    778         WINBOOL *pfProtected);
    779 
    780     HRESULT (STDMETHODCALLTYPE *GetDuration)(
    781         IMFPMediaItem *This,
    782         REFGUID guidPositionType,
    783         PROPVARIANT *pvDurationValue);
    784 
    785     HRESULT (STDMETHODCALLTYPE *GetNumberOfStreams)(
    786         IMFPMediaItem *This,
    787         DWORD *pdwStreamCount);
    788 
    789     HRESULT (STDMETHODCALLTYPE *GetStreamSelection)(
    790         IMFPMediaItem *This,
    791         DWORD dwStreamIndex,
    792         WINBOOL *pfEnabled);
    793 
    794     HRESULT (STDMETHODCALLTYPE *SetStreamSelection)(
    795         IMFPMediaItem *This,
    796         DWORD dwStreamIndex,
    797         WINBOOL fEnabled);
    798 
    799     HRESULT (STDMETHODCALLTYPE *GetStreamAttribute)(
    800         IMFPMediaItem *This,
    801         DWORD dwStreamIndex,
    802         REFGUID guidMFAttribute,
    803         PROPVARIANT *pvValue);
    804 
    805     HRESULT (STDMETHODCALLTYPE *GetPresentationAttribute)(
    806         IMFPMediaItem *This,
    807         REFGUID guidMFAttribute,
    808         PROPVARIANT *pvValue);
    809 
    810     HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
    811         IMFPMediaItem *This,
    812         MFP_MEDIAITEM_CHARACTERISTICS *pCharacteristics);
    813 
    814     HRESULT (STDMETHODCALLTYPE *SetStreamSink)(
    815         IMFPMediaItem *This,
    816         DWORD dwStreamIndex,
    817         IUnknown *pMediaSink);
    818 
    819     HRESULT (STDMETHODCALLTYPE *GetMetadata)(
    820         IMFPMediaItem *This,
    821         IPropertyStore **ppMetadataStore);
    822 
    823     END_INTERFACE
    824 } IMFPMediaItemVtbl;
    825 
    826 interface IMFPMediaItem {
    827     CONST_VTBL IMFPMediaItemVtbl* lpVtbl;
    828 };
    829 
    830 #ifdef COBJMACROS
    831 #ifndef WIDL_C_INLINE_WRAPPERS
    832 /*** IUnknown methods ***/
    833 #define IMFPMediaItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    834 #define IMFPMediaItem_AddRef(This) (This)->lpVtbl->AddRef(This)
    835 #define IMFPMediaItem_Release(This) (This)->lpVtbl->Release(This)
    836 /*** IMFPMediaItem methods ***/
    837 #define IMFPMediaItem_GetMediaPlayer(This,ppMediaPlayer) (This)->lpVtbl->GetMediaPlayer(This,ppMediaPlayer)
    838 #define IMFPMediaItem_GetURL(This,ppwszURL) (This)->lpVtbl->GetURL(This,ppwszURL)
    839 #define IMFPMediaItem_GetObject(This,ppIUnknown) (This)->lpVtbl->GetObject(This,ppIUnknown)
    840 #define IMFPMediaItem_GetUserData(This,pdwUserData) (This)->lpVtbl->GetUserData(This,pdwUserData)
    841 #define IMFPMediaItem_SetUserData(This,dwUserData) (This)->lpVtbl->SetUserData(This,dwUserData)
    842 #define IMFPMediaItem_GetStartStopPosition(This,pguidStartPositionType,pvStartValue,pguidStopPositionType,pvStopValue) (This)->lpVtbl->GetStartStopPosition(This,pguidStartPositionType,pvStartValue,pguidStopPositionType,pvStopValue)
    843 #define IMFPMediaItem_SetStartStopPosition(This,pguidStartPositionType,pvStartValue,pguidStopPositionType,pvStopValue) (This)->lpVtbl->SetStartStopPosition(This,pguidStartPositionType,pvStartValue,pguidStopPositionType,pvStopValue)
    844 #define IMFPMediaItem_HasVideo(This,pfHasVideo,pfSelected) (This)->lpVtbl->HasVideo(This,pfHasVideo,pfSelected)
    845 #define IMFPMediaItem_HasAudio(This,pfHasAudio,pfSelected) (This)->lpVtbl->HasAudio(This,pfHasAudio,pfSelected)
    846 #define IMFPMediaItem_IsProtected(This,pfProtected) (This)->lpVtbl->IsProtected(This,pfProtected)
    847 #define IMFPMediaItem_GetDuration(This,guidPositionType,pvDurationValue) (This)->lpVtbl->GetDuration(This,guidPositionType,pvDurationValue)
    848 #define IMFPMediaItem_GetNumberOfStreams(This,pdwStreamCount) (This)->lpVtbl->GetNumberOfStreams(This,pdwStreamCount)
    849 #define IMFPMediaItem_GetStreamSelection(This,dwStreamIndex,pfEnabled) (This)->lpVtbl->GetStreamSelection(This,dwStreamIndex,pfEnabled)
    850 #define IMFPMediaItem_SetStreamSelection(This,dwStreamIndex,fEnabled) (This)->lpVtbl->SetStreamSelection(This,dwStreamIndex,fEnabled)
    851 #define IMFPMediaItem_GetStreamAttribute(This,dwStreamIndex,guidMFAttribute,pvValue) (This)->lpVtbl->GetStreamAttribute(This,dwStreamIndex,guidMFAttribute,pvValue)
    852 #define IMFPMediaItem_GetPresentationAttribute(This,guidMFAttribute,pvValue) (This)->lpVtbl->GetPresentationAttribute(This,guidMFAttribute,pvValue)
    853 #define IMFPMediaItem_GetCharacteristics(This,pCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pCharacteristics)
    854 #define IMFPMediaItem_SetStreamSink(This,dwStreamIndex,pMediaSink) (This)->lpVtbl->SetStreamSink(This,dwStreamIndex,pMediaSink)
    855 #define IMFPMediaItem_GetMetadata(This,ppMetadataStore) (This)->lpVtbl->GetMetadata(This,ppMetadataStore)
    856 #else
    857 /*** IUnknown methods ***/
    858 static inline HRESULT IMFPMediaItem_QueryInterface(IMFPMediaItem* This,REFIID riid,void **ppvObject) {
    859     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    860 }
    861 static inline ULONG IMFPMediaItem_AddRef(IMFPMediaItem* This) {
    862     return This->lpVtbl->AddRef(This);
    863 }
    864 static inline ULONG IMFPMediaItem_Release(IMFPMediaItem* This) {
    865     return This->lpVtbl->Release(This);
    866 }
    867 /*** IMFPMediaItem methods ***/
    868 static inline HRESULT IMFPMediaItem_GetMediaPlayer(IMFPMediaItem* This,IMFPMediaPlayer **ppMediaPlayer) {
    869     return This->lpVtbl->GetMediaPlayer(This,ppMediaPlayer);
    870 }
    871 static inline HRESULT IMFPMediaItem_GetURL(IMFPMediaItem* This,LPWSTR *ppwszURL) {
    872     return This->lpVtbl->GetURL(This,ppwszURL);
    873 }
    874 static inline HRESULT IMFPMediaItem_GetObject(IMFPMediaItem* This,IUnknown **ppIUnknown) {
    875     return This->lpVtbl->GetObject(This,ppIUnknown);
    876 }
    877 static inline HRESULT IMFPMediaItem_GetUserData(IMFPMediaItem* This,DWORD_PTR *pdwUserData) {
    878     return This->lpVtbl->GetUserData(This,pdwUserData);
    879 }
    880 static inline HRESULT IMFPMediaItem_SetUserData(IMFPMediaItem* This,DWORD_PTR dwUserData) {
    881     return This->lpVtbl->SetUserData(This,dwUserData);
    882 }
    883 static inline HRESULT IMFPMediaItem_GetStartStopPosition(IMFPMediaItem* This,GUID *pguidStartPositionType,PROPVARIANT *pvStartValue,GUID *pguidStopPositionType,PROPVARIANT *pvStopValue) {
    884     return This->lpVtbl->GetStartStopPosition(This,pguidStartPositionType,pvStartValue,pguidStopPositionType,pvStopValue);
    885 }
    886 static inline HRESULT IMFPMediaItem_SetStartStopPosition(IMFPMediaItem* This,const GUID *pguidStartPositionType,const PROPVARIANT *pvStartValue,const GUID *pguidStopPositionType,const PROPVARIANT *pvStopValue) {
    887     return This->lpVtbl->SetStartStopPosition(This,pguidStartPositionType,pvStartValue,pguidStopPositionType,pvStopValue);
    888 }
    889 static inline HRESULT IMFPMediaItem_HasVideo(IMFPMediaItem* This,WINBOOL *pfHasVideo,WINBOOL *pfSelected) {
    890     return This->lpVtbl->HasVideo(This,pfHasVideo,pfSelected);
    891 }
    892 static inline HRESULT IMFPMediaItem_HasAudio(IMFPMediaItem* This,WINBOOL *pfHasAudio,WINBOOL *pfSelected) {
    893     return This->lpVtbl->HasAudio(This,pfHasAudio,pfSelected);
    894 }
    895 static inline HRESULT IMFPMediaItem_IsProtected(IMFPMediaItem* This,WINBOOL *pfProtected) {
    896     return This->lpVtbl->IsProtected(This,pfProtected);
    897 }
    898 static inline HRESULT IMFPMediaItem_GetDuration(IMFPMediaItem* This,REFGUID guidPositionType,PROPVARIANT *pvDurationValue) {
    899     return This->lpVtbl->GetDuration(This,guidPositionType,pvDurationValue);
    900 }
    901 static inline HRESULT IMFPMediaItem_GetNumberOfStreams(IMFPMediaItem* This,DWORD *pdwStreamCount) {
    902     return This->lpVtbl->GetNumberOfStreams(This,pdwStreamCount);
    903 }
    904 static inline HRESULT IMFPMediaItem_GetStreamSelection(IMFPMediaItem* This,DWORD dwStreamIndex,WINBOOL *pfEnabled) {
    905     return This->lpVtbl->GetStreamSelection(This,dwStreamIndex,pfEnabled);
    906 }
    907 static inline HRESULT IMFPMediaItem_SetStreamSelection(IMFPMediaItem* This,DWORD dwStreamIndex,WINBOOL fEnabled) {
    908     return This->lpVtbl->SetStreamSelection(This,dwStreamIndex,fEnabled);
    909 }
    910 static inline HRESULT IMFPMediaItem_GetStreamAttribute(IMFPMediaItem* This,DWORD dwStreamIndex,REFGUID guidMFAttribute,PROPVARIANT *pvValue) {
    911     return This->lpVtbl->GetStreamAttribute(This,dwStreamIndex,guidMFAttribute,pvValue);
    912 }
    913 static inline HRESULT IMFPMediaItem_GetPresentationAttribute(IMFPMediaItem* This,REFGUID guidMFAttribute,PROPVARIANT *pvValue) {
    914     return This->lpVtbl->GetPresentationAttribute(This,guidMFAttribute,pvValue);
    915 }
    916 static inline HRESULT IMFPMediaItem_GetCharacteristics(IMFPMediaItem* This,MFP_MEDIAITEM_CHARACTERISTICS *pCharacteristics) {
    917     return This->lpVtbl->GetCharacteristics(This,pCharacteristics);
    918 }
    919 static inline HRESULT IMFPMediaItem_SetStreamSink(IMFPMediaItem* This,DWORD dwStreamIndex,IUnknown *pMediaSink) {
    920     return This->lpVtbl->SetStreamSink(This,dwStreamIndex,pMediaSink);
    921 }
    922 static inline HRESULT IMFPMediaItem_GetMetadata(IMFPMediaItem* This,IPropertyStore **ppMetadataStore) {
    923     return This->lpVtbl->GetMetadata(This,ppMetadataStore);
    924 }
    925 #endif
    926 #endif
    927 
    928 #endif
    929 
    930 
    931 #endif  /* __IMFPMediaItem_INTERFACE_DEFINED__ */
    932 
    933 
    934 typedef enum MFP_EVENT_TYPE {
    935     MFP_EVENT_TYPE_PLAY = 0,
    936     MFP_EVENT_TYPE_PAUSE = 1,
    937     MFP_EVENT_TYPE_STOP = 2,
    938     MFP_EVENT_TYPE_POSITION_SET = 3,
    939     MFP_EVENT_TYPE_RATE_SET = 4,
    940     MFP_EVENT_TYPE_MEDIAITEM_CREATED = 5,
    941     MFP_EVENT_TYPE_MEDIAITEM_SET = 6,
    942     MFP_EVENT_TYPE_FRAME_STEP = 7,
    943     MFP_EVENT_TYPE_MEDIAITEM_CLEARED = 8,
    944     MFP_EVENT_TYPE_MF = 9,
    945     MFP_EVENT_TYPE_ERROR = 10,
    946     MFP_EVENT_TYPE_PLAYBACK_ENDED = 11,
    947     MFP_EVENT_TYPE_ACQUIRE_USER_CREDENTIAL = 12
    948 } MFP_EVENT_TYPE;
    949 
    950 typedef struct MFP_EVENT_HEADER {
    951     MFP_EVENT_TYPE eEventType;
    952     HRESULT hrEvent;
    953     IMFPMediaPlayer *pMediaPlayer;
    954     MFP_MEDIAPLAYER_STATE eState;
    955     IPropertyStore *pPropertyStore;
    956 } MFP_EVENT_HEADER;
    957 
    958 typedef struct MFP_PLAY_EVENT {
    959     MFP_EVENT_HEADER header;
    960     IMFPMediaItem *pMediaItem;
    961 } MFP_PLAY_EVENT;
    962 
    963 typedef struct MFP_PAUSE_EVENT {
    964     MFP_EVENT_HEADER header;
    965     IMFPMediaItem *pMediaItem;
    966 } MFP_PAUSE_EVENT;
    967 
    968 typedef struct MFP_STOP_EVENT {
    969     MFP_EVENT_HEADER header;
    970     IMFPMediaItem *pMediaItem;
    971 } MFP_STOP_EVENT;
    972 
    973 typedef struct MFP_POSITION_SET_EVENT {
    974     MFP_EVENT_HEADER header;
    975     IMFPMediaItem *pMediaItem;
    976 } MFP_POSITION_SET_EVENT;
    977 
    978 typedef struct MFP_RATE_SET_EVENT {
    979     MFP_EVENT_HEADER header;
    980     IMFPMediaItem *pMediaItem;
    981     float flRate;
    982 } MFP_RATE_SET_EVENT;
    983 
    984 typedef struct MFP_MEDIAITEM_CREATED_EVENT {
    985     MFP_EVENT_HEADER header;
    986     IMFPMediaItem *pMediaItem;
    987     DWORD_PTR dwUserData;
    988 } MFP_MEDIAITEM_CREATED_EVENT;
    989 
    990 typedef struct MFP_MEDIAITEM_SET_EVENT {
    991     MFP_EVENT_HEADER header;
    992     IMFPMediaItem *pMediaItem;
    993 } MFP_MEDIAITEM_SET_EVENT;
    994 
    995 typedef struct MFP_FRAME_STEP_EVENT {
    996     MFP_EVENT_HEADER header;
    997     IMFPMediaItem *pMediaItem;
    998 } MFP_FRAME_STEP_EVENT;
    999 
   1000 typedef struct MFP_MEDIAITEM_CLEARED_EVENT {
   1001     MFP_EVENT_HEADER header;
   1002     IMFPMediaItem *pMediaItem;
   1003 } MFP_MEDIAITEM_CLEARED_EVENT;
   1004 
   1005 typedef struct MFP_MF_EVENT {
   1006     MFP_EVENT_HEADER header;
   1007     MediaEventType MFEventType;
   1008     IMFMediaEvent *pMFMediaEvent;
   1009     IMFPMediaItem *pMediaItem;
   1010 } MFP_MF_EVENT;
   1011 
   1012 typedef struct MFP_ERROR_EVENT {
   1013     MFP_EVENT_HEADER header;
   1014 } MFP_ERROR_EVENT;
   1015 
   1016 typedef struct MFP_PLAYBACK_ENDED_EVENT {
   1017     MFP_EVENT_HEADER header;
   1018     IMFPMediaItem *pMediaItem;
   1019 } MFP_PLAYBACK_ENDED_EVENT;
   1020 
   1021 typedef struct MFP_ACQUIRE_USER_CREDENTIAL_EVENT {
   1022     MFP_EVENT_HEADER header;
   1023     DWORD_PTR dwUserData;
   1024     WINBOOL fProceedWithAuthentication;
   1025     HRESULT hrAuthenticationStatus;
   1026     LPCWSTR pwszURL;
   1027     LPCWSTR pwszSite;
   1028     LPCWSTR pwszRealm;
   1029     LPCWSTR pwszPackage;
   1030     LONG nRetries;
   1031     MFP_CREDENTIAL_FLAGS flags;
   1032     IMFNetCredential *pCredential;
   1033 } MFP_ACQUIRE_USER_CREDENTIAL_EVENT;
   1034 EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFP_PKEY_StreamIndex = { { 0xa7cf9740, 0xe8d9, 0x4a87, { 0xbd, 0x8e, 0x29, 0x67, 0x0, 0x1f, 0xd3, 0xad } }, 0x00 };
   1035 EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFP_PKEY_StreamRenderingResults = { { 0xa7cf9740, 0xe8d9, 0x4a87, { 0xbd, 0x8e, 0x29, 0x67, 0x0, 0x1f, 0xd3, 0xad } }, 0x01 };
   1036 #define __MFP_CAST_EVENT( pHdr, Tag ) (((pHdr)->eEventType == MFP_EVENT_TYPE_##Tag ) ? (MFP_##Tag##_EVENT*)(pHdr) : NULL)
   1037 #define MFP_GET_PLAY_EVENT( pHdr )                     __MFP_CAST_EVENT( pHdr, PLAY )
   1038 #define MFP_GET_PAUSE_EVENT( pHdr )                    __MFP_CAST_EVENT( pHdr, PAUSE )
   1039 #define MFP_GET_STOP_EVENT( pHdr )                     __MFP_CAST_EVENT( pHdr, STOP )
   1040 #define MFP_GET_POSITION_SET_EVENT( pHdr )             __MFP_CAST_EVENT( pHdr, POSITION_SET )
   1041 #define MFP_GET_RATE_SET_EVENT( pHdr )                 __MFP_CAST_EVENT( pHdr, RATE_SET )
   1042 #define MFP_GET_MEDIAITEM_CREATED_EVENT( pHdr )        __MFP_CAST_EVENT( pHdr, MEDIAITEM_CREATED )
   1043 #define MFP_GET_MEDIAITEM_SET_EVENT( pHdr )            __MFP_CAST_EVENT( pHdr, MEDIAITEM_SET )
   1044 #define MFP_GET_FRAME_STEP_EVENT( pHdr )               __MFP_CAST_EVENT( pHdr, FRAME_STEP )
   1045 #define MFP_GET_MEDIAITEM_CLEARED_EVENT( pHdr )        __MFP_CAST_EVENT( pHdr, MEDIAITEM_CLEARED )
   1046 #define MFP_GET_MF_EVENT( pHdr )                       __MFP_CAST_EVENT( pHdr, MF )
   1047 #define MFP_GET_ERROR_EVENT( pHdr )                    __MFP_CAST_EVENT( pHdr, ERROR )
   1048 #define MFP_GET_PLAYBACK_ENDED_EVENT( pHdr )           __MFP_CAST_EVENT( pHdr, PLAYBACK_ENDED )
   1049 #define MFP_GET_ACQUIRE_USER_CREDENTIAL_EVENT( pHdr )  __MFP_CAST_EVENT( pHdr, ACQUIRE_USER_CREDENTIAL )
   1050 
   1051 /*****************************************************************************
   1052  * IMFPMediaPlayerCallback interface
   1053  */
   1054 #ifndef __IMFPMediaPlayerCallback_INTERFACE_DEFINED__
   1055 #define __IMFPMediaPlayerCallback_INTERFACE_DEFINED__
   1056 
   1057 DEFINE_GUID(IID_IMFPMediaPlayerCallback, 0x766c8ffb, 0x5fdb, 0x4fea, 0xa2,0x8d, 0xb9,0x12,0x99,0x6f,0x51,0xbd);
   1058 #if defined(__cplusplus) && !defined(CINTERFACE)
   1059 MIDL_INTERFACE("766c8ffb-5fdb-4fea-a28d-b912996f51bd")
   1060 IMFPMediaPlayerCallback : public IUnknown
   1061 {
   1062     virtual void STDMETHODCALLTYPE OnMediaPlayerEvent(
   1063         MFP_EVENT_HEADER *pEventHeader) = 0;
   1064 
   1065 };
   1066 #ifdef __CRT_UUID_DECL
   1067 __CRT_UUID_DECL(IMFPMediaPlayerCallback, 0x766c8ffb, 0x5fdb, 0x4fea, 0xa2,0x8d, 0xb9,0x12,0x99,0x6f,0x51,0xbd)
   1068 #endif
   1069 #else
   1070 typedef struct IMFPMediaPlayerCallbackVtbl {
   1071     BEGIN_INTERFACE
   1072 
   1073     /*** IUnknown methods ***/
   1074     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1075         IMFPMediaPlayerCallback *This,
   1076         REFIID riid,
   1077         void **ppvObject);
   1078 
   1079     ULONG (STDMETHODCALLTYPE *AddRef)(
   1080         IMFPMediaPlayerCallback *This);
   1081 
   1082     ULONG (STDMETHODCALLTYPE *Release)(
   1083         IMFPMediaPlayerCallback *This);
   1084 
   1085     /*** IMFPMediaPlayerCallback methods ***/
   1086     void (STDMETHODCALLTYPE *OnMediaPlayerEvent)(
   1087         IMFPMediaPlayerCallback *This,
   1088         MFP_EVENT_HEADER *pEventHeader);
   1089 
   1090     END_INTERFACE
   1091 } IMFPMediaPlayerCallbackVtbl;
   1092 
   1093 interface IMFPMediaPlayerCallback {
   1094     CONST_VTBL IMFPMediaPlayerCallbackVtbl* lpVtbl;
   1095 };
   1096 
   1097 #ifdef COBJMACROS
   1098 #ifndef WIDL_C_INLINE_WRAPPERS
   1099 /*** IUnknown methods ***/
   1100 #define IMFPMediaPlayerCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1101 #define IMFPMediaPlayerCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
   1102 #define IMFPMediaPlayerCallback_Release(This) (This)->lpVtbl->Release(This)
   1103 /*** IMFPMediaPlayerCallback methods ***/
   1104 #define IMFPMediaPlayerCallback_OnMediaPlayerEvent(This,pEventHeader) (This)->lpVtbl->OnMediaPlayerEvent(This,pEventHeader)
   1105 #else
   1106 /*** IUnknown methods ***/
   1107 static inline HRESULT IMFPMediaPlayerCallback_QueryInterface(IMFPMediaPlayerCallback* This,REFIID riid,void **ppvObject) {
   1108     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1109 }
   1110 static inline ULONG IMFPMediaPlayerCallback_AddRef(IMFPMediaPlayerCallback* This) {
   1111     return This->lpVtbl->AddRef(This);
   1112 }
   1113 static inline ULONG IMFPMediaPlayerCallback_Release(IMFPMediaPlayerCallback* This) {
   1114     return This->lpVtbl->Release(This);
   1115 }
   1116 /*** IMFPMediaPlayerCallback methods ***/
   1117 static inline void IMFPMediaPlayerCallback_OnMediaPlayerEvent(IMFPMediaPlayerCallback* This,MFP_EVENT_HEADER *pEventHeader) {
   1118     This->lpVtbl->OnMediaPlayerEvent(This,pEventHeader);
   1119 }
   1120 #endif
   1121 #endif
   1122 
   1123 #endif
   1124 
   1125 
   1126 #endif  /* __IMFPMediaPlayerCallback_INTERFACE_DEFINED__ */
   1127 
   1128 #endif // (WINVER >= _WIN32_WINNT_WIN7)
   1129 /* Begin additional prototypes for all interfaces */
   1130 
   1131 
   1132 /* End additional prototypes */
   1133 
   1134 #ifdef __cplusplus
   1135 }
   1136 #endif
   1137 
   1138 #endif /* __mfplay_h__ */