mfplay.h 43 KB

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