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