1 /*** Autogenerated by WIDL 6.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 FORCEINLINE HRESULT IMFPMediaPlayer_QueryInterface(IMFPMediaPlayer* This,REFIID riid,void **ppvObject) {
501     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
502 }
503 static FORCEINLINE ULONG IMFPMediaPlayer_AddRef(IMFPMediaPlayer* This) {
504     return This->lpVtbl->AddRef(This);
505 }
506 static FORCEINLINE ULONG IMFPMediaPlayer_Release(IMFPMediaPlayer* This) {
507     return This->lpVtbl->Release(This);
508 }
509 /*** IMFPMediaPlayer methods ***/
510 static FORCEINLINE HRESULT IMFPMediaPlayer_Play(IMFPMediaPlayer* This) {
511     return This->lpVtbl->Play(This);
512 }
513 static FORCEINLINE HRESULT IMFPMediaPlayer_Pause(IMFPMediaPlayer* This) {
514     return This->lpVtbl->Pause(This);
515 }
516 static FORCEINLINE HRESULT IMFPMediaPlayer_Stop(IMFPMediaPlayer* This) {
517     return This->lpVtbl->Stop(This);
518 }
519 static FORCEINLINE HRESULT IMFPMediaPlayer_FrameStep(IMFPMediaPlayer* This) {
520     return This->lpVtbl->FrameStep(This);
521 }
522 static FORCEINLINE HRESULT IMFPMediaPlayer_SetPosition(IMFPMediaPlayer* This,REFGUID guidPositionType,const PROPVARIANT *pvPositionValue) {
523     return This->lpVtbl->SetPosition(This,guidPositionType,pvPositionValue);
524 }
525 static FORCEINLINE HRESULT IMFPMediaPlayer_GetPosition(IMFPMediaPlayer* This,REFGUID guidPositionType,PROPVARIANT *pvPositionValue) {
526     return This->lpVtbl->GetPosition(This,guidPositionType,pvPositionValue);
527 }
528 static FORCEINLINE HRESULT IMFPMediaPlayer_GetDuration(IMFPMediaPlayer* This,REFGUID guidPositionType,PROPVARIANT *pvDurationValue) {
529     return This->lpVtbl->GetDuration(This,guidPositionType,pvDurationValue);
530 }
531 static FORCEINLINE HRESULT IMFPMediaPlayer_SetRate(IMFPMediaPlayer* This,float flRate) {
532     return This->lpVtbl->SetRate(This,flRate);
533 }
534 static FORCEINLINE HRESULT IMFPMediaPlayer_GetRate(IMFPMediaPlayer* This,float *pflRate) {
535     return This->lpVtbl->GetRate(This,pflRate);
536 }
537 static FORCEINLINE HRESULT IMFPMediaPlayer_GetSupportedRates(IMFPMediaPlayer* This,WINBOOL fForwardDirection,float *pflSlowestRate,float *pflFastestRate) {
538     return This->lpVtbl->GetSupportedRates(This,fForwardDirection,pflSlowestRate,pflFastestRate);
539 }
540 static FORCEINLINE HRESULT IMFPMediaPlayer_GetState(IMFPMediaPlayer* This,MFP_MEDIAPLAYER_STATE *peState) {
541     return This->lpVtbl->GetState(This,peState);
542 }
543 static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IMFPMediaPlayer_SetMediaItem(IMFPMediaPlayer* This,IMFPMediaItem *pIMFPMediaItem) {
550     return This->lpVtbl->SetMediaItem(This,pIMFPMediaItem);
551 }
552 static FORCEINLINE HRESULT IMFPMediaPlayer_ClearMediaItem(IMFPMediaPlayer* This) {
553     return This->lpVtbl->ClearMediaItem(This);
554 }
555 static FORCEINLINE HRESULT IMFPMediaPlayer_GetMediaItem(IMFPMediaPlayer* This,IMFPMediaItem **ppIMFPMediaItem) {
556     return This->lpVtbl->GetMediaItem(This,ppIMFPMediaItem);
557 }
558 static FORCEINLINE HRESULT IMFPMediaPlayer_GetVolume(IMFPMediaPlayer* This,float *pflVolume) {
559     return This->lpVtbl->GetVolume(This,pflVolume);
560 }
561 static FORCEINLINE HRESULT IMFPMediaPlayer_SetVolume(IMFPMediaPlayer* This,float flVolume) {
562     return This->lpVtbl->SetVolume(This,flVolume);
563 }
564 static FORCEINLINE HRESULT IMFPMediaPlayer_GetBalance(IMFPMediaPlayer* This,float *pflBalance) {
565     return This->lpVtbl->GetBalance(This,pflBalance);
566 }
567 static FORCEINLINE HRESULT IMFPMediaPlayer_SetBalance(IMFPMediaPlayer* This,float flBalance) {
568     return This->lpVtbl->SetBalance(This,flBalance);
569 }
570 static FORCEINLINE HRESULT IMFPMediaPlayer_GetMute(IMFPMediaPlayer* This,WINBOOL *pfMute) {
571     return This->lpVtbl->GetMute(This,pfMute);
572 }
573 static FORCEINLINE HRESULT IMFPMediaPlayer_SetMute(IMFPMediaPlayer* This,WINBOOL fMute) {
574     return This->lpVtbl->SetMute(This,fMute);
575 }
576 static FORCEINLINE HRESULT IMFPMediaPlayer_GetNativeVideoSize(IMFPMediaPlayer* This,SIZE *pszVideo,SIZE *pszARVideo) {
577     return This->lpVtbl->GetNativeVideoSize(This,pszVideo,pszARVideo);
578 }
579 static FORCEINLINE HRESULT IMFPMediaPlayer_GetIdealVideoSize(IMFPMediaPlayer* This,SIZE *pszMin,SIZE *pszMax) {
580     return This->lpVtbl->GetIdealVideoSize(This,pszMin,pszMax);
581 }
582 static FORCEINLINE HRESULT IMFPMediaPlayer_SetVideoSourceRect(IMFPMediaPlayer* This,const MFVideoNormalizedRect *pnrcSource) {
583     return This->lpVtbl->SetVideoSourceRect(This,pnrcSource);
584 }
585 static FORCEINLINE HRESULT IMFPMediaPlayer_GetVideoSourceRect(IMFPMediaPlayer* This,MFVideoNormalizedRect *pnrcSource) {
586     return This->lpVtbl->GetVideoSourceRect(This,pnrcSource);
587 }
588 static FORCEINLINE HRESULT IMFPMediaPlayer_SetAspectRatioMode(IMFPMediaPlayer* This,DWORD dwAspectRatioMode) {
589     return This->lpVtbl->SetAspectRatioMode(This,dwAspectRatioMode);
590 }
591 static FORCEINLINE HRESULT IMFPMediaPlayer_GetAspectRatioMode(IMFPMediaPlayer* This,DWORD *pdwAspectRatioMode) {
592     return This->lpVtbl->GetAspectRatioMode(This,pdwAspectRatioMode);
593 }
594 static FORCEINLINE HRESULT IMFPMediaPlayer_GetVideoWindow(IMFPMediaPlayer* This,HWND *phwndVideo) {
595     return This->lpVtbl->GetVideoWindow(This,phwndVideo);
596 }
597 static FORCEINLINE HRESULT IMFPMediaPlayer_UpdateVideo(IMFPMediaPlayer* This) {
598     return This->lpVtbl->UpdateVideo(This);
599 }
600 static FORCEINLINE HRESULT IMFPMediaPlayer_SetBorderColor(IMFPMediaPlayer* This,COLORREF Clr) {
601     return This->lpVtbl->SetBorderColor(This,Clr);
602 }
603 static FORCEINLINE HRESULT IMFPMediaPlayer_GetBorderColor(IMFPMediaPlayer* This,COLORREF *pClr) {
604     return This->lpVtbl->GetBorderColor(This,pClr);
605 }
606 static FORCEINLINE HRESULT IMFPMediaPlayer_InsertEffect(IMFPMediaPlayer* This,IUnknown *pEffect,WINBOOL fOptional) {
607     return This->lpVtbl->InsertEffect(This,pEffect,fOptional);
608 }
609 static FORCEINLINE HRESULT IMFPMediaPlayer_RemoveEffect(IMFPMediaPlayer* This,IUnknown *pEffect) {
610     return This->lpVtbl->RemoveEffect(This,pEffect);
611 }
612 static FORCEINLINE HRESULT IMFPMediaPlayer_RemoveAllEffects(IMFPMediaPlayer* This) {
613     return This->lpVtbl->RemoveAllEffects(This);
614 }
615 static FORCEINLINE 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 FORCEINLINE HRESULT IMFPMediaItem_QueryInterface(IMFPMediaItem* This,REFIID riid,void **ppvObject) {
859     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
860 }
861 static FORCEINLINE ULONG IMFPMediaItem_AddRef(IMFPMediaItem* This) {
862     return This->lpVtbl->AddRef(This);
863 }
864 static FORCEINLINE ULONG IMFPMediaItem_Release(IMFPMediaItem* This) {
865     return This->lpVtbl->Release(This);
866 }
867 /*** IMFPMediaItem methods ***/
868 static FORCEINLINE HRESULT IMFPMediaItem_GetMediaPlayer(IMFPMediaItem* This,IMFPMediaPlayer **ppMediaPlayer) {
869     return This->lpVtbl->GetMediaPlayer(This,ppMediaPlayer);
870 }
871 static FORCEINLINE HRESULT IMFPMediaItem_GetURL(IMFPMediaItem* This,LPWSTR *ppwszURL) {
872     return This->lpVtbl->GetURL(This,ppwszURL);
873 }
874 static FORCEINLINE HRESULT IMFPMediaItem_GetObject(IMFPMediaItem* This,IUnknown **ppIUnknown) {
875     return This->lpVtbl->GetObject(This,ppIUnknown);
876 }
877 static FORCEINLINE HRESULT IMFPMediaItem_GetUserData(IMFPMediaItem* This,DWORD_PTR *pdwUserData) {
878     return This->lpVtbl->GetUserData(This,pdwUserData);
879 }
880 static FORCEINLINE HRESULT IMFPMediaItem_SetUserData(IMFPMediaItem* This,DWORD_PTR dwUserData) {
881     return This->lpVtbl->SetUserData(This,dwUserData);
882 }
883 static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IMFPMediaItem_HasVideo(IMFPMediaItem* This,WINBOOL *pfHasVideo,WINBOOL *pfSelected) {
890     return This->lpVtbl->HasVideo(This,pfHasVideo,pfSelected);
891 }
892 static FORCEINLINE HRESULT IMFPMediaItem_HasAudio(IMFPMediaItem* This,WINBOOL *pfHasAudio,WINBOOL *pfSelected) {
893     return This->lpVtbl->HasAudio(This,pfHasAudio,pfSelected);
894 }
895 static FORCEINLINE HRESULT IMFPMediaItem_IsProtected(IMFPMediaItem* This,WINBOOL *pfProtected) {
896     return This->lpVtbl->IsProtected(This,pfProtected);
897 }
898 static FORCEINLINE HRESULT IMFPMediaItem_GetDuration(IMFPMediaItem* This,REFGUID guidPositionType,PROPVARIANT *pvDurationValue) {
899     return This->lpVtbl->GetDuration(This,guidPositionType,pvDurationValue);
900 }
901 static FORCEINLINE HRESULT IMFPMediaItem_GetNumberOfStreams(IMFPMediaItem* This,DWORD *pdwStreamCount) {
902     return This->lpVtbl->GetNumberOfStreams(This,pdwStreamCount);
903 }
904 static FORCEINLINE HRESULT IMFPMediaItem_GetStreamSelection(IMFPMediaItem* This,DWORD dwStreamIndex,WINBOOL *pfEnabled) {
905     return This->lpVtbl->GetStreamSelection(This,dwStreamIndex,pfEnabled);
906 }
907 static FORCEINLINE HRESULT IMFPMediaItem_SetStreamSelection(IMFPMediaItem* This,DWORD dwStreamIndex,WINBOOL fEnabled) {
908     return This->lpVtbl->SetStreamSelection(This,dwStreamIndex,fEnabled);
909 }
910 static FORCEINLINE HRESULT IMFPMediaItem_GetStreamAttribute(IMFPMediaItem* This,DWORD dwStreamIndex,REFGUID guidMFAttribute,PROPVARIANT *pvValue) {
911     return This->lpVtbl->GetStreamAttribute(This,dwStreamIndex,guidMFAttribute,pvValue);
912 }
913 static FORCEINLINE HRESULT IMFPMediaItem_GetPresentationAttribute(IMFPMediaItem* This,REFGUID guidMFAttribute,PROPVARIANT *pvValue) {
914     return This->lpVtbl->GetPresentationAttribute(This,guidMFAttribute,pvValue);
915 }
916 static FORCEINLINE HRESULT IMFPMediaItem_GetCharacteristics(IMFPMediaItem* This,MFP_MEDIAITEM_CHARACTERISTICS *pCharacteristics) {
917     return This->lpVtbl->GetCharacteristics(This,pCharacteristics);
918 }
919 static FORCEINLINE HRESULT IMFPMediaItem_SetStreamSink(IMFPMediaItem* This,DWORD dwStreamIndex,IUnknown *pMediaSink) {
920     return This->lpVtbl->SetStreamSink(This,dwStreamIndex,pMediaSink);
921 }
922 static FORCEINLINE 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 FORCEINLINE HRESULT IMFPMediaPlayerCallback_QueryInterface(IMFPMediaPlayerCallback* This,REFIID riid,void **ppvObject) {
1108     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1109 }
1110 static FORCEINLINE ULONG IMFPMediaPlayerCallback_AddRef(IMFPMediaPlayerCallback* This) {
1111     return This->lpVtbl->AddRef(This);
1112 }
1113 static FORCEINLINE ULONG IMFPMediaPlayerCallback_Release(IMFPMediaPlayerCallback* This) {
1114     return This->lpVtbl->Release(This);
1115 }
1116 /*** IMFPMediaPlayerCallback methods ***/
1117 static FORCEINLINE 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__ */
1139