wmsdkidl.idl 51 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982
  1. /*
  2. * Copyright 2012 André Hentschel
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  17. */
  18. import "oaidl.idl";
  19. import "wmsbuffer.idl";
  20. import "drmexternals.idl";
  21. typedef struct _WMMediaType
  22. {
  23. GUID majortype;
  24. GUID subtype;
  25. BOOL bFixedSizeSamples;
  26. BOOL bTemporalCompression;
  27. ULONG lSampleSize;
  28. GUID formattype;
  29. IUnknown *pUnk;
  30. ULONG cbFormat;
  31. [size_is(cbFormat)] BYTE *pbFormat;
  32. } WM_MEDIA_TYPE;
  33. typedef struct _WMWriterStatistics
  34. {
  35. QWORD qwSampleCount;
  36. QWORD qwByteCount;
  37. QWORD qwDroppedSampleCount;
  38. QWORD qwDroppedByteCount;
  39. DWORD dwCurrentBitrate;
  40. DWORD dwAverageBitrate;
  41. DWORD dwExpectedBitrate;
  42. DWORD dwCurrentSampleRate;
  43. DWORD dwAverageSampleRate;
  44. DWORD dwExpectedSampleRate;
  45. } WM_WRITER_STATISTICS;
  46. typedef struct _WMWriterStatisticsEx
  47. {
  48. DWORD dwBitratePlusOverhead;
  49. DWORD dwCurrentSampleDropRateInQueue;
  50. DWORD dwCurrentSampleDropRateInCodec;
  51. DWORD dwCurrentSampleDropRateInMultiplexer;
  52. DWORD dwTotalSampleDropsInQueue;
  53. DWORD dwTotalSampleDropsInCodec;
  54. DWORD dwTotalSampleDropsInMultiplexer;
  55. } WM_WRITER_STATISTICS_EX;
  56. typedef struct _WMReaderStatistics
  57. {
  58. DWORD cbSize;
  59. DWORD dwBandwidth;
  60. DWORD cPacketsReceived;
  61. DWORD cPacketsRecovered;
  62. DWORD cPacketsLost;
  63. WORD wQuality;
  64. } WM_READER_STATISTICS;
  65. typedef struct _WMReaderClientInfo
  66. {
  67. DWORD cbSize;
  68. WCHAR *wszLang;
  69. WCHAR *wszBrowserUserAgent;
  70. WCHAR *wszBrowserWebPage;
  71. QWORD qwReserved;
  72. LPARAM *pReserved;
  73. WCHAR *wszHostExe;
  74. QWORD qwHostVersion;
  75. WCHAR *wszPlayerUserAgent;
  76. } WM_READER_CLIENTINFO;
  77. enum
  78. {
  79. WM_SF_CLEANPOINT = 0x1,
  80. WM_SF_DISCONTINUITY = 0x2,
  81. WM_SF_DATALOSS = 0x4,
  82. };
  83. typedef enum WMT_ATTR_DATATYPE
  84. {
  85. WMT_TYPE_DWORD = 0,
  86. WMT_TYPE_STRING = 1,
  87. WMT_TYPE_BINARY = 2,
  88. WMT_TYPE_BOOL = 3,
  89. WMT_TYPE_QWORD = 4,
  90. WMT_TYPE_WORD = 5,
  91. WMT_TYPE_GUID = 6,
  92. } WMT_ATTR_DATATYPE;
  93. typedef enum WMT_STATUS
  94. {
  95. WMT_ERROR = 0,
  96. WMT_OPENED = 1,
  97. WMT_BUFFERING_START = 2,
  98. WMT_BUFFERING_STOP = 3,
  99. WMT_EOF = 4,
  100. WMT_END_OF_FILE = 4,
  101. WMT_END_OF_SEGMENT = 5,
  102. WMT_END_OF_STREAMING = 6,
  103. WMT_LOCATING = 7,
  104. WMT_CONNECTING = 8,
  105. WMT_NO_RIGHTS = 9,
  106. WMT_MISSING_CODEC = 10,
  107. WMT_STARTED = 11,
  108. WMT_STOPPED = 12,
  109. WMT_CLOSED = 13,
  110. WMT_STRIDING = 14,
  111. WMT_TIMER = 15,
  112. WMT_INDEX_PROGRESS = 16,
  113. WMT_SAVEAS_START = 17,
  114. WMT_SAVEAS_STOP = 18,
  115. WMT_NEW_SOURCEFLAGS = 19,
  116. WMT_NEW_METADATA = 20,
  117. WMT_BACKUPRESTORE_BEGIN = 21,
  118. WMT_SOURCE_SWITCH = 22,
  119. WMT_ACQUIRE_LICENSE = 23,
  120. WMT_INDIVIDUALIZE = 24,
  121. WMT_NEEDS_INDIVIDUALIZATION = 25,
  122. WMT_NO_RIGHTS_EX = 26,
  123. WMT_BACKUPRESTORE_END = 27,
  124. WMT_BACKUPRESTORE_CONNECTING = 28,
  125. WMT_BACKUPRESTORE_DISCONNECTING = 29,
  126. WMT_ERROR_WITHURL = 30,
  127. WMT_RESTRICTED_LICENSE = 31,
  128. WMT_CLIENT_CONNECT = 32,
  129. WMT_CLIENT_DISCONNECT = 33,
  130. WMT_NATIVE_OUTPUT_PROPS_CHANGED = 34,
  131. WMT_RECONNECT_START = 35,
  132. WMT_RECONNECT_END = 36,
  133. WMT_CLIENT_CONNECT_EX = 37,
  134. WMT_CLIENT_DISCONNECT_EX = 38,
  135. WMT_SET_FEC_SPAN = 39,
  136. WMT_PREROLL_READY = 40,
  137. WMT_PREROLL_COMPLETE = 41,
  138. WMT_CLIENT_PROPERTIES = 42,
  139. WMT_LICENSEURL_SIGNATURE_STATE = 43,
  140. WMT_INIT_PLAYLIST_BURN = 44,
  141. WMT_TRANSCRYPTOR_INIT = 45,
  142. WMT_TRANSCRYPTOR_SEEKED = 46,
  143. WMT_TRANSCRYPTOR_READ = 47,
  144. WMT_TRANSCRYPTOR_CLOSED = 48,
  145. WMT_PROXIMITY_RESULT = 49,
  146. WMT_PROXIMITY_COMPLETED = 50,
  147. WMT_CONTENT_ENABLER = 51
  148. } WMT_STATUS;
  149. typedef enum WMT_STREAM_SELECTION
  150. {
  151. WMT_OFF = 0,
  152. WMT_CLEANPOINT_ONLY = 1,
  153. WMT_ON = 2,
  154. } WMT_STREAM_SELECTION;
  155. typedef enum WMT_VERSION
  156. {
  157. WMT_VER_4_0 = 0x00040000,
  158. WMT_VER_7_0 = 0x00070000,
  159. WMT_VER_8_0 = 0x00080000,
  160. WMT_VER_9_0 = 0x00090000
  161. } WMT_VERSION;
  162. typedef enum WMT_PLAY_MODE
  163. {
  164. WMT_PLAY_MODE_AUTOSELECT,
  165. WMT_PLAY_MODE_LOCAL,
  166. WMT_PLAY_MODE_DOWNLOAD,
  167. WMT_PLAY_MODE_STREAMING
  168. } WMT_PLAY_MODE;
  169. typedef enum tagWMT_OFFSET_FORMAT
  170. {
  171. WMT_OFFSET_FORMAT_100NS,
  172. WMT_OFFSET_FORMAT_FRAME_NUMBERS,
  173. WMT_OFFSET_FORMAT_PLAYLIST_OFFSET,
  174. WMT_OFFSET_FORMAT_TIMECODE,
  175. WMT_OFFSET_FORMAT_100NS_APPROXIMATE
  176. } WMT_OFFSET_FORMAT;
  177. typedef enum WMT_CODEC_INFO_TYPE
  178. {
  179. WMT_CODECINFO_AUDIO = 0,
  180. WMT_CODECINFO_VIDEO = 1,
  181. WMT_CODECINFO_UNKNOWN = 0xFFFFFFFF,
  182. } WMT_CODEC_INFO_TYPE;
  183. typedef enum WMT_PROXY_SETTINGS
  184. {
  185. WMT_PROXY_SETTING_NONE = 0,
  186. WMT_PROXY_SETTING_MANUAL = 1,
  187. WMT_PROXY_SETTING_AUTO = 2,
  188. WMT_PROXY_SETTING_BROWSER = 3,
  189. WMT_PROXY_SETTING_MAX
  190. } WMT_PROXY_SETTINGS;
  191. typedef enum tagWMT_STORAGE_FORMAT
  192. {
  193. WMT_Storage_Format_MP3 = 0,
  194. WMT_Storage_Format_V1 = 1
  195. } WMT_STORAGE_FORMAT;
  196. #include <pshpack2.h>
  197. typedef struct _WMStreamPrioritizationRecord
  198. {
  199. WORD wStreamNumber;
  200. BOOL fMandatory;
  201. } WM_STREAM_PRIORITY_RECORD;
  202. typedef struct _WMT_TIMECODE_EXTENSION_DATA
  203. {
  204. WORD wRange;
  205. DWORD dwTimecode;
  206. DWORD dwUserbits;
  207. DWORD dwAmFlags;
  208. } WMT_TIMECODE_EXTENSION_DATA;
  209. #include <poppack.h>
  210. typedef struct _WM_PORT_NUMBER_RANGE
  211. {
  212. WORD wPortBegin;
  213. WORD wPortEnd;
  214. } WM_PORT_NUMBER_RANGE;
  215. typedef LPCWSTR LPCWSTR_WMSDK_TYPE_SAFE;
  216. [
  217. object,
  218. uuid(6d7cdc70-9888-11d3-8edc-00c04f6109cf),
  219. pointer_default(unique),
  220. local
  221. ]
  222. interface IWMStatusCallback : IUnknown
  223. {
  224. HRESULT OnStatus(
  225. [in] WMT_STATUS Status,
  226. [in] HRESULT hr,
  227. [in] WMT_ATTR_DATATYPE dwType,
  228. [in] BYTE *pValue,
  229. [in] void *pvContext);
  230. }
  231. [
  232. object,
  233. uuid(96406bd8-2b2b-11d3-b36b-00c04f6108ff),
  234. pointer_default(unique),
  235. local
  236. ]
  237. interface IWMReaderCallback : IWMStatusCallback
  238. {
  239. HRESULT OnSample(
  240. [in] DWORD dwOutputNum,
  241. [in] QWORD cnsSampleTime,
  242. [in] QWORD cnsSampleDuration,
  243. [in] DWORD dwFlags,
  244. [in] INSSBuffer *pSample,
  245. [in] void *pvContext);
  246. }
  247. [
  248. object,
  249. local,
  250. uuid(96406beb-2b2b-11d3-b36b-00c04f6108ff),
  251. ]
  252. interface IWMReaderCallbackAdvanced : IUnknown
  253. {
  254. HRESULT OnStreamSample(WORD stream_number, QWORD pts, QWORD duration, DWORD flags, INSSBuffer *sample, void *context);
  255. HRESULT OnTime(QWORD time, void *context);
  256. HRESULT OnStreamSelection(WORD count, WORD *stream_numbers, WMT_STREAM_SELECTION *selections, void *context);
  257. HRESULT OnOutputPropsChanged(DWORD output_number, WM_MEDIA_TYPE *mt, void *context);
  258. HRESULT AllocateForStream(WORD stream_number, DWORD size, INSSBuffer **sample, void *context);
  259. HRESULT AllocateForOutput(DWORD output_number, DWORD size, INSSBuffer **sample, void *context);
  260. }
  261. [
  262. object,
  263. uuid(96406Bdd-2b2b-11d3-b36b-00c04f6108ff),
  264. pointer_default(unique),
  265. local
  266. ]
  267. interface IWMStreamList : IUnknown
  268. {
  269. HRESULT GetStreams(
  270. [out, size_is(*pcStreams)] WORD *pwStreamNumArray,
  271. [in, out] WORD *pcStreams);
  272. HRESULT AddStream([in] WORD wStreamNum);
  273. HRESULT RemoveStream([in] WORD wStreamNum);
  274. }
  275. [
  276. object,
  277. uuid(96406Bde-2b2b-11d3-b36b-00c04f6108ff),
  278. pointer_default(unique),
  279. local
  280. ]
  281. interface IWMMutualExclusion : IWMStreamList
  282. {
  283. HRESULT GetType([out] GUID *pguidType);
  284. HRESULT SetType([in] REFGUID guidType);
  285. }
  286. [
  287. object,
  288. uuid(ad694af1-f8d9-42f8-bc47-70311b0c4f9e),
  289. pointer_default(unique),
  290. local
  291. ]
  292. interface IWMBandwidthSharing : IWMStreamList
  293. {
  294. HRESULT GetType([out] GUID *guid);
  295. HRESULT SetType([in] REFGUID guid);
  296. HRESULT GetBandwidth(
  297. [out] DWORD *bitrate,
  298. [out] DWORD *buffer);
  299. HRESULT SetBandwidth(
  300. [in] DWORD bitrate,
  301. [in] DWORD buffer);
  302. }
  303. [
  304. object,
  305. uuid(8c1c6090-f9a8-4748-8ec3-dd1108ba1e77),
  306. pointer_default(unique),
  307. local
  308. ]
  309. interface IWMStreamPrioritization : IUnknown
  310. {
  311. HRESULT GetPriorityRecords(
  312. [out] WM_STREAM_PRIORITY_RECORD *array,
  313. [in, out] WORD *records);
  314. HRESULT SetPriorityRecords(
  315. [in] WM_STREAM_PRIORITY_RECORD *array,
  316. [in] WORD records);
  317. }
  318. [
  319. object,
  320. uuid(96406Bdc-2b2b-11d3-b36b-00c04f6108ff),
  321. pointer_default(unique),
  322. local
  323. ]
  324. interface IWMStreamConfig : IUnknown
  325. {
  326. HRESULT GetStreamType([out] GUID *pguidStreamType);
  327. HRESULT GetStreamNumber([out] WORD *pwStreamNum);
  328. HRESULT SetStreamNumber([in] WORD wStreamNum);
  329. HRESULT GetStreamName(
  330. [out, size_is(*pcchStreamName)] WCHAR *pwszStreamName,
  331. [in, out] WORD *pcchStreamName);
  332. HRESULT SetStreamName([in] LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName);
  333. HRESULT GetConnectionName(
  334. [out, size_is(*pcchInputName)] WCHAR *pwszInputName,
  335. [in, out] WORD *pcchInputName);
  336. HRESULT SetConnectionName([in] LPCWSTR_WMSDK_TYPE_SAFE pwszInputName);
  337. HRESULT GetBitrate([out] DWORD *pdwBitrate);
  338. HRESULT SetBitrate([in] DWORD pdwBitrate);
  339. HRESULT GetBufferWindow([out] DWORD *pmsBufferWindow);
  340. HRESULT SetBufferWindow([in] DWORD msBufferWindow);
  341. }
  342. [
  343. object,
  344. uuid(96406bdb-2b2b-11d3-b36b-00c04f6108ff),
  345. pointer_default(unique),
  346. local
  347. ]
  348. interface IWMProfile : IUnknown
  349. {
  350. HRESULT GetVersion(
  351. [out] WMT_VERSION *pdwVersion);
  352. HRESULT GetName(
  353. [out, size_is(*pcchName)] WCHAR *pwszName,
  354. [in, out] DWORD *pcchName);
  355. HRESULT SetName(
  356. [in] const WCHAR *pwszName);
  357. HRESULT GetDescription(
  358. [out, size_is(*pcchDescription)] WCHAR *pwszDescription,
  359. [in, out] DWORD *pcchDescription);
  360. HRESULT SetDescription(
  361. [in] const WCHAR *pwszDescription);
  362. HRESULT GetStreamCount(
  363. [out] DWORD *pcStreams);
  364. HRESULT GetStream(
  365. [in] DWORD dwStreamIndex,
  366. [out] IWMStreamConfig **ppConfig);
  367. HRESULT GetStreamByNumber(
  368. [in] WORD wStreamNum,
  369. [out] IWMStreamConfig **ppConfig);
  370. HRESULT RemoveStream(
  371. [in] IWMStreamConfig *pConfig);
  372. HRESULT RemoveStreamByNumber(
  373. [in] WORD wStreamNum);
  374. HRESULT AddStream(
  375. [in] IWMStreamConfig *pConfig);
  376. HRESULT ReconfigStream(
  377. [in] IWMStreamConfig *pConfig);
  378. HRESULT CreateNewStream(
  379. [in] REFGUID guidStreamType,
  380. [out] IWMStreamConfig **ppConfig);
  381. HRESULT GetMutualExclusionCount(
  382. [out] DWORD *pcME);
  383. HRESULT GetMutualExclusion(
  384. [in] DWORD dwMEIndex,
  385. [out] IWMMutualExclusion **ppME);
  386. HRESULT RemoveMutualExclusion(
  387. [in] IWMMutualExclusion *pME);
  388. HRESULT AddMutualExclusion(
  389. [in] IWMMutualExclusion *pME);
  390. HRESULT CreateNewMutualExclusion(
  391. [out] IWMMutualExclusion **ppME);
  392. }
  393. [
  394. object,
  395. uuid(07e72d33-d94e-4be7-8843-60ae5ff7e5f5),
  396. pointer_default(unique),
  397. local
  398. ]
  399. interface IWMProfile2 : IWMProfile
  400. {
  401. HRESULT GetProfileID([out] GUID *guid);
  402. }
  403. [
  404. object,
  405. uuid(00ef96cc-a461-4546-8bcd-c9a28f0e06f5),
  406. pointer_default(unique),
  407. local
  408. ]
  409. interface IWMProfile3 : IWMProfile2
  410. {
  411. HRESULT GetStorageFormat([out] WMT_STORAGE_FORMAT *storage);
  412. HRESULT SetStorageFormat([in] WMT_STORAGE_FORMAT storage);
  413. HRESULT GetBandwidthSharingCount([out] DWORD *count);
  414. HRESULT GetBandwidthSharing(
  415. [in] DWORD index,
  416. [out] IWMBandwidthSharing **bandwidth);
  417. HRESULT RemoveBandwidthSharing([in] IWMBandwidthSharing *bandwidth);
  418. HRESULT AddBandwidthSharing([in] IWMBandwidthSharing *bandwidth);
  419. HRESULT CreateNewBandwidthSharing([out] IWMBandwidthSharing **bandwidth);
  420. HRESULT GetStreamPrioritization([out] IWMStreamPrioritization **stream);
  421. HRESULT SetStreamPrioritization([in] IWMStreamPrioritization *stream);
  422. HRESULT RemoveStreamPrioritization();
  423. HRESULT CreateNewStreamPrioritization([out] IWMStreamPrioritization **stream);
  424. HRESULT GetExpectedPacketCount(
  425. [in] QWORD duration,
  426. [out] QWORD *packets);
  427. }
  428. [
  429. object,
  430. uuid(d16679f2-6ca0-472d-8d31-2f5d55aee155),
  431. pointer_default(unique),
  432. local
  433. ]
  434. interface IWMProfileManager : IUnknown
  435. {
  436. HRESULT CreateEmptyProfile(
  437. [in] WMT_VERSION dwVersion,
  438. [out] IWMProfile **ppProfile);
  439. HRESULT LoadProfileByID(
  440. [in] REFGUID guidProfile,
  441. [out] IWMProfile **ppProfile);
  442. HRESULT LoadProfileByData(
  443. [in] const WCHAR *pwszProfile,
  444. [out] IWMProfile **ppProfile);
  445. HRESULT SaveProfile(
  446. [in] IWMProfile *pIWMProfile,
  447. [in] WCHAR *pwszProfile,
  448. [in, out] DWORD *pdwLength);
  449. HRESULT GetSystemProfileCount(
  450. [out] DWORD *pcProfiles);
  451. HRESULT LoadSystemProfile(
  452. [in] DWORD dwProfileIndex,
  453. [out] IWMProfile **ppProfile);
  454. }
  455. [
  456. object,
  457. uuid(7a924e51-73c1-494d-8019-23d37ed9b89a),
  458. pointer_default(unique),
  459. local
  460. ]
  461. interface IWMProfileManager2 : IWMProfileManager
  462. {
  463. HRESULT GetSystemProfileVersion(WMT_VERSION *version);
  464. HRESULT SetSystemProfileVersion(WMT_VERSION version);
  465. };
  466. cpp_quote("HRESULT WINAPI WMCreateProfileManager(IWMProfileManager**);")
  467. [
  468. object,
  469. uuid(a970f41e-34de-4a98-b3ba-e4b3ca7528f0),
  470. pointer_default(unique),
  471. local
  472. ]
  473. interface IWMCodecInfo : IUnknown
  474. {
  475. HRESULT GetCodecInfoCount(
  476. [in] REFGUID guid,
  477. [out] DWORD *count);
  478. HRESULT GetCodecFormatCount(
  479. [in] REFGUID guid,
  480. [in] DWORD codecindex,
  481. [out] DWORD *formatcount);
  482. HRESULT GetCodecFormat(
  483. [in] REFGUID guid,
  484. [in] DWORD codecindex,
  485. [in] DWORD formatindex,
  486. [out] IWMStreamConfig **streamconfig);
  487. }
  488. [
  489. object,
  490. uuid(aa65e273-b686-4056-91ec-dd768d4df710),
  491. pointer_default(unique),
  492. local
  493. ]
  494. interface IWMCodecInfo2 : IWMCodecInfo
  495. {
  496. HRESULT GetCodecName(
  497. [in] REFGUID guid,
  498. [in] DWORD codecindex,
  499. [out, size_is(*namesize)] WCHAR *name,
  500. [in, out] DWORD *namesize);
  501. HRESULT GetCodecFormatDesc(
  502. [in] REFGUID guid,
  503. [in] DWORD codecindex,
  504. [in] DWORD formatindex,
  505. [out] IWMStreamConfig **streamconfig,
  506. [out, size_is(*descrsize)] WCHAR *description,
  507. [in, out] DWORD *descrsize);
  508. }
  509. [
  510. object,
  511. uuid(7e51f487-4d93-4f98-8ab4-27d0565adc51),
  512. pointer_default(unique),
  513. local
  514. ]
  515. interface IWMCodecInfo3 : IWMCodecInfo2
  516. {
  517. HRESULT GetCodecFormatProp(
  518. [in] REFGUID guid,
  519. [in] DWORD codecindex,
  520. [in] DWORD formatindex,
  521. [in] const WCHAR *name,
  522. [out] WMT_ATTR_DATATYPE *type,
  523. [out, size_is(*size)] BYTE *value,
  524. [in, out] DWORD *size);
  525. HRESULT GetCodecProp(
  526. [in] REFGUID guid,
  527. [in] DWORD codecindex,
  528. [in] const WCHAR *name,
  529. [out] WMT_ATTR_DATATYPE *type,
  530. [out, size_is(*size)] BYTE *value,
  531. [in, out] DWORD *size);
  532. HRESULT SetCodecEnumerationSetting(
  533. [in] REFGUID guid,
  534. [in] DWORD codecindex,
  535. [in] const WCHAR *name,
  536. [in] WMT_ATTR_DATATYPE type,
  537. [in, size_is(size)] const BYTE *value,
  538. [in] DWORD size);
  539. HRESULT GetCodecEnumerationSetting(
  540. [in] REFGUID guid,
  541. [in] DWORD codecindex,
  542. [in] const WCHAR *name,
  543. [out] WMT_ATTR_DATATYPE *type,
  544. [out, size_is(*size)] BYTE *value,
  545. [in, out] DWORD *size);
  546. }
  547. cpp_quote("static const WCHAR g_wszNumPasses[] = {'_','P','A','S','S','E','S','U','S','E','D',0};")
  548. cpp_quote("static const WCHAR g_wszVBREnabled[] = {'_','V','B','R','E','N','A','B','L','E','D',0};")
  549. [
  550. object,
  551. uuid(96406bce-2b2b-11d3-b36b-00c04f6108ff),
  552. pointer_default(unique),
  553. local
  554. ]
  555. interface IWMMediaProps : IUnknown
  556. {
  557. HRESULT GetType(
  558. [out] GUID *pguidType);
  559. HRESULT GetMediaType(
  560. [out] WM_MEDIA_TYPE *pType,
  561. [in, out] DWORD *pcbType);
  562. HRESULT SetMediaType(
  563. [in] WM_MEDIA_TYPE *pType);
  564. }
  565. [
  566. object,
  567. uuid(96406bd7-2b2b-11d3-b36b-00c04f6108ff),
  568. pointer_default(unique),
  569. local
  570. ]
  571. interface IWMOutputMediaProps : IWMMediaProps
  572. {
  573. HRESULT GetStreamGroupName(
  574. [out, size_is(*pcchName)] WCHAR *pwszName,
  575. [in, out] WORD *pcchName);
  576. HRESULT GetConnectionName(
  577. [out, size_is(*pcchName)] WCHAR *pwszName,
  578. [in, out] WORD *pcchName);
  579. }
  580. [
  581. object,
  582. uuid(96406bd9-2b2b-11d3-b36b-00c04f6108ff),
  583. pointer_default(unique),
  584. local
  585. ]
  586. interface IWMMetadataEditor : IUnknown
  587. {
  588. HRESULT Open(
  589. [in] const WCHAR *pwszFilename);
  590. HRESULT Close();
  591. HRESULT Flush();
  592. }
  593. [
  594. object,
  595. uuid(96406bd6-2b2b-11d3-b36b-00c04f6108ff),
  596. pointer_default(unique),
  597. local
  598. ]
  599. interface IWMReader : IUnknown
  600. {
  601. HRESULT Open(
  602. [in] const WCHAR *pwszURL,
  603. [in] IWMReaderCallback *pCallback,
  604. [in] void *pvContext);
  605. HRESULT Close();
  606. HRESULT GetOutputCount(
  607. [out] DWORD *pcOutputs);
  608. HRESULT GetOutputProps(
  609. [in] DWORD dwOutputNum,
  610. [out] IWMOutputMediaProps **ppOutput);
  611. HRESULT SetOutputProps(
  612. [in] DWORD dwOutputNum,
  613. [in] IWMOutputMediaProps *pOutput);
  614. HRESULT GetOutputFormatCount(
  615. [in] DWORD dwOutputNumber,
  616. [out] DWORD *pcFormats);
  617. HRESULT GetOutputFormat(
  618. [in] DWORD dwOutputNumber,
  619. [in] DWORD dwFormatNumber,
  620. [out] IWMOutputMediaProps** ppProps);
  621. HRESULT Start(
  622. [in] QWORD cnsStart,
  623. [in] QWORD cnsDuration,
  624. [in] float fRate,
  625. [in] void *pvContext);
  626. HRESULT Stop();
  627. HRESULT Pause();
  628. HRESULT Resume();
  629. }
  630. [
  631. object,
  632. uuid(e5b7ca9a-0f1c-4f66-9002-74ec50d8b304),
  633. pointer_default(unique),
  634. local
  635. ]
  636. interface IWMPlayerHook : IUnknown
  637. {
  638. HRESULT PreDecode();
  639. }
  640. [
  641. object,
  642. uuid(96406bea-2b2b-11d3-b36b-00c04f6108ff),
  643. pointer_default(unique),
  644. local
  645. ]
  646. interface IWMReaderAdvanced : IUnknown
  647. {
  648. HRESULT SetUserProvidedClock(
  649. [in] BOOL fUserClock);
  650. HRESULT GetUserProvidedClock(
  651. [out] BOOL *pfUserClock);
  652. HRESULT DeliverTime(
  653. [in] QWORD cnsTime);
  654. HRESULT SetManualStreamSelection(
  655. [in] BOOL fSelection);
  656. HRESULT GetManualStreamSelection(
  657. [out] BOOL *pfSelection);
  658. HRESULT SetStreamsSelected(
  659. [in] WORD cStreamCount,
  660. [in] WORD *pwStreamNumbers,
  661. [in] WMT_STREAM_SELECTION *pSelections);
  662. HRESULT GetStreamSelected(
  663. [in] WORD wStreamNum,
  664. [out] WMT_STREAM_SELECTION *pSelection);
  665. HRESULT SetReceiveSelectionCallbacks(
  666. [in] BOOL fGetCallbacks);
  667. HRESULT GetReceiveSelectionCallbacks(
  668. [out] BOOL *pfGetCallbacks);
  669. HRESULT SetReceiveStreamSamples(
  670. [in] WORD wStreamNum,
  671. [in] BOOL fReceiveStreamSamples);
  672. HRESULT GetReceiveStreamSamples(
  673. [in] WORD wStreamNum,
  674. [out] BOOL *pfReceiveStreamSamples);
  675. HRESULT SetAllocateForOutput(
  676. [in] DWORD dwOutputNum,
  677. [in] BOOL fAllocate);
  678. HRESULT GetAllocateForOutput(
  679. [in] DWORD dwOutputNum,
  680. [out] BOOL *pfAllocate);
  681. HRESULT SetAllocateForStream(
  682. [in] WORD wStreamNum,
  683. [in] BOOL fAllocate);
  684. HRESULT GetAllocateForStream(
  685. [in] WORD dwStreamNum,
  686. [out] BOOL *pfAllocate);
  687. HRESULT GetStatistics(
  688. [in, out] WM_READER_STATISTICS *pStatistics);
  689. HRESULT SetClientInfo(
  690. [in] WM_READER_CLIENTINFO *pClientInfo);
  691. HRESULT GetMaxOutputSampleSize(
  692. [in] DWORD dwOutput,
  693. [out] DWORD *pcbMax);
  694. HRESULT GetMaxStreamSampleSize(
  695. [in] WORD wStream,
  696. [out] DWORD *pcbMax);
  697. HRESULT NotifyLateDelivery(
  698. QWORD cnsLateness);
  699. }
  700. [
  701. object,
  702. uuid(ae14a945-b90c-4d0d-9127-80d665f7d73e),
  703. pointer_default(unique),
  704. local
  705. ]
  706. interface IWMReaderAdvanced2 : IWMReaderAdvanced
  707. {
  708. HRESULT SetPlayMode(
  709. [in] WMT_PLAY_MODE Mode);
  710. HRESULT GetPlayMode(
  711. [out] WMT_PLAY_MODE *pMode);
  712. HRESULT GetBufferProgress(
  713. [out] DWORD *pdwPercent,
  714. [out] QWORD *pcnsBuffering);
  715. HRESULT GetDownloadProgress(
  716. [out] DWORD *pdwPercent,
  717. [out] QWORD *pqwBytesDownloaded,
  718. [out] QWORD *pcnsDownload);
  719. HRESULT GetSaveAsProgress(
  720. [out] DWORD *pdwPercent);
  721. HRESULT SaveFileAs(
  722. [in] const WCHAR *pwszFilename);
  723. HRESULT GetProtocolName(
  724. [out, size_is(*pcchProtocol)] WCHAR *pwszProtocol,
  725. [in, out] DWORD *pcchProtocol);
  726. HRESULT StartAtMarker(
  727. [in] WORD wMarkerIndex,
  728. [in] QWORD cnsDuration,
  729. [in] float fRate,
  730. [in] void *pvContext);
  731. HRESULT GetOutputSetting(
  732. [in] DWORD dwOutputNum,
  733. [in] LPCWSTR pszName,
  734. [out] WMT_ATTR_DATATYPE *pType,
  735. [out, size_is(*pcbLength)] BYTE *pValue,
  736. [in, out] WORD *pcbLength);
  737. HRESULT SetOutputSetting(
  738. [in] DWORD dwOutputNum,
  739. [in] LPCWSTR pszName,
  740. [in] WMT_ATTR_DATATYPE Type,
  741. [in, size_is(cbLength)] const BYTE *pValue,
  742. [in] WORD cbLength);
  743. HRESULT Preroll(
  744. [in] QWORD cnsStart,
  745. [in] QWORD cnsDuration,
  746. [in] float fRate);
  747. HRESULT SetLogClientID(
  748. [in] BOOL fLogClientID);
  749. HRESULT GetLogClientID(
  750. [out] BOOL *pfLogClientID);
  751. HRESULT StopBuffering();
  752. HRESULT OpenStream(
  753. [in] IStream *pStream,
  754. [in] IWMReaderCallback *pCallback,
  755. [in] void *pvContext);
  756. }
  757. [
  758. object,
  759. uuid(5dc0674b-f04B-4a4e-9f2a-b1afde2c8100),
  760. pointer_default(unique),
  761. local
  762. ]
  763. interface IWMReaderAdvanced3 : IWMReaderAdvanced2
  764. {
  765. HRESULT StopNetStreaming();
  766. HRESULT StartAtPosition(
  767. [in] WORD wStreamNum,
  768. [in] void *pvOffsetStart,
  769. [in] void *pvDuration,
  770. [in] WMT_OFFSET_FORMAT dwOffsetFormat,
  771. [in] float fRate,
  772. [in] void *pvContext);
  773. }
  774. [
  775. object,
  776. uuid(945a76a2-12ae-4d48-bd3c-cd1d90399b85),
  777. pointer_default(unique),
  778. local
  779. ]
  780. interface IWMReaderAdvanced4 : IWMReaderAdvanced3
  781. {
  782. HRESULT GetLanguageCount(
  783. [in] DWORD dwOutputNum,
  784. [out] WORD *pwLanguageCount);
  785. HRESULT GetLanguage(
  786. [in] DWORD dwOutputNum,
  787. [in] WORD wLanguage,
  788. [out, size_is(*pcchLanguageStringLength)] WCHAR *pwszLanguageString,
  789. [in, out] WORD *pcchLanguageStringLength);
  790. HRESULT GetMaxSpeedFactor(
  791. [out] double *pdblFactor);
  792. HRESULT IsUsingFastCache(
  793. [out] BOOL *pfUsingFastCache);
  794. HRESULT AddLogParam(
  795. [in] LPCWSTR wszNameSpace,
  796. [in] LPCWSTR wszName,
  797. [in] LPCWSTR wszValue);
  798. HRESULT SendLogParams();
  799. HRESULT CanSaveFileAs(
  800. [out] BOOL *pfCanSave);
  801. HRESULT CancelSaveFileAs();
  802. HRESULT GetURL(
  803. [out, size_is(*pcchURL)] WCHAR *pwszURL,
  804. [in, out] DWORD *pcchURL);
  805. }
  806. [
  807. object,
  808. uuid(24c44db0-55d1-49ae-a5cc-f13815e36363),
  809. pointer_default(unique),
  810. local
  811. ]
  812. interface IWMReaderAdvanced5 : IWMReaderAdvanced4
  813. {
  814. HRESULT SetPlayerHook(
  815. [in] DWORD dwOutputNum,
  816. [in] IWMPlayerHook *pHook);
  817. }
  818. [
  819. object,
  820. uuid(18a2e7f8-428f-4acd-8a00-e64639bc93de),
  821. pointer_default(unique),
  822. local
  823. ]
  824. interface IWMReaderAdvanced6 : IWMReaderAdvanced5
  825. {
  826. HRESULT SetProtectStreamSamples(
  827. [in, size_is(cbCertificate)] BYTE *pbCertificate,
  828. [in] DWORD cbCertificate,
  829. [in] DWORD dwCertificateType,
  830. [in] DWORD dwFlags,
  831. [out, size_is(*pcbInitializationVector)] BYTE *pbInitializationVector,
  832. [in, out] DWORD *pcbInitializationVector);
  833. }
  834. [
  835. object,
  836. uuid(9397f121-7705-4dc9-b049-98b698188414),
  837. pointer_default( unique ),
  838. local
  839. ]
  840. interface IWMSyncReader : IUnknown
  841. {
  842. HRESULT Open(
  843. [in] const WCHAR *pwszFilename);
  844. HRESULT Close();
  845. HRESULT SetRange(
  846. [in] QWORD cnsStartTime,
  847. [in] LONGLONG cnsDuration);
  848. HRESULT SetRangeByFrame(
  849. [in] WORD wStreamNum,
  850. [in] QWORD qwFrameNumber,
  851. [in] LONGLONG cFramesToRead);
  852. HRESULT GetNextSample(
  853. [in] WORD wStreamNum,
  854. [out] INSSBuffer **ppSample,
  855. [out] QWORD *pcnsSampleTime,
  856. [out] QWORD *pcnsDuration,
  857. [out] DWORD *pdwFlags,
  858. [out] DWORD *pdwOutputNum,
  859. [out] WORD *pwStreamNum);
  860. HRESULT SetStreamsSelected(
  861. [in] WORD cStreamCount,
  862. [in] WORD *pwStreamNumbers,
  863. [in] WMT_STREAM_SELECTION *pSelections);
  864. HRESULT GetStreamSelected(
  865. [in] WORD wStreamNum,
  866. [out] WMT_STREAM_SELECTION *pSelection);
  867. HRESULT SetReadStreamSamples(
  868. [in] WORD wStreamNum,
  869. [in] BOOL fCompressed);
  870. HRESULT GetReadStreamSamples(
  871. [in] WORD wStreamNum,
  872. [out] BOOL *pfCompressed);
  873. HRESULT GetOutputSetting(
  874. [in] DWORD dwOutputNum,
  875. [in] LPCWSTR pszName,
  876. [out] WMT_ATTR_DATATYPE *pType,
  877. [out, size_is(*pcbLength)] BYTE *pValue,
  878. [in, out] WORD *pcbLength);
  879. HRESULT SetOutputSetting(
  880. [in] DWORD dwOutputNum,
  881. [in] LPCWSTR pszName,
  882. [in] WMT_ATTR_DATATYPE Type,
  883. [in, size_is(cbLength)] const BYTE *pValue,
  884. [in] WORD cbLength);
  885. HRESULT GetOutputCount(
  886. [out] DWORD *pcOutputs);
  887. HRESULT GetOutputProps(
  888. [in] DWORD dwOutputNum,
  889. [out] IWMOutputMediaProps **ppOutput);
  890. HRESULT SetOutputProps(
  891. [in] DWORD dwOutputNum,
  892. [in] IWMOutputMediaProps *pOutput);
  893. HRESULT GetOutputFormatCount(
  894. [in] DWORD dwOutputNum,
  895. [out] DWORD *pcFormats);
  896. HRESULT GetOutputFormat(
  897. [in] DWORD dwOutputNum,
  898. [in] DWORD dwFormatNum,
  899. [out] IWMOutputMediaProps **ppProps);
  900. HRESULT GetOutputNumberForStream(
  901. [in] WORD wStreamNum,
  902. [out] DWORD *pdwOutputNum);
  903. HRESULT GetStreamNumberForOutput(
  904. [in] DWORD dwOutputNum,
  905. [out] WORD *pwStreamNum);
  906. HRESULT GetMaxOutputSampleSize(
  907. [in] DWORD dwOutput,
  908. [out] DWORD *pcbMax);
  909. HRESULT GetMaxStreamSampleSize(
  910. [in] WORD wStream,
  911. [out] DWORD *pcbMax);
  912. HRESULT OpenStream(
  913. [in] IStream *pStream);
  914. }
  915. [
  916. object,
  917. uuid(9f762fa7-a22e-428d-93c9-ac82f3aafe5a),
  918. pointer_default( unique ),
  919. local
  920. ]
  921. interface IWMReaderAllocatorEx : IUnknown
  922. {
  923. HRESULT AllocateForStreamEx(
  924. [in] WORD wStreamNum,
  925. [in] DWORD cbBuffer,
  926. [out] INSSBuffer **ppBuffer,
  927. [in] DWORD dwFlags,
  928. [in] QWORD cnsSampleTime,
  929. [in] QWORD cnsSampleDuration,
  930. [in] void *pvContext);
  931. HRESULT AllocateForOutputEx(
  932. [in] DWORD output,
  933. [in] DWORD cbBuffer,
  934. [out] INSSBuffer **ppBuffer,
  935. [in] DWORD dwFlags,
  936. [in] QWORD cnsSampleTime,
  937. [in] QWORD cnsSampleDuration,
  938. [in] void *pvContext);
  939. }
  940. [
  941. object,
  942. uuid(faed3d21-1b6b-4af7-8cb6-3e189bbc187b),
  943. pointer_default( unique ),
  944. local
  945. ]
  946. interface IWMSyncReader2 : IWMSyncReader
  947. {
  948. HRESULT SetRangeByTimecode(
  949. [in] WORD wStreamNum,
  950. [in] WMT_TIMECODE_EXTENSION_DATA *pStart,
  951. [in] WMT_TIMECODE_EXTENSION_DATA *pEnd);
  952. HRESULT SetRangeByFrameEx(
  953. [in] WORD wStreamNum,
  954. [in] QWORD qwFrameNumber,
  955. [in] LONGLONG cFramesToRead,
  956. [out] QWORD *pcnsStartTime);
  957. HRESULT SetAllocateForOutput(
  958. [in] DWORD dwOutputNum,
  959. [in] IWMReaderAllocatorEx *pAllocator);
  960. HRESULT GetAllocateForOutput(
  961. [in] DWORD dwOutputNum,
  962. [out] IWMReaderAllocatorEx **ppAllocator);
  963. HRESULT SetAllocateForStream(
  964. [in] DWORD dwStreamNum,
  965. [in] IWMReaderAllocatorEx *pAllocator);
  966. HRESULT GetAllocateForStream(
  967. [in] DWORD dwStreamNum,
  968. [out] IWMReaderAllocatorEx **ppAllocator);
  969. }
  970. [
  971. object,
  972. uuid(96406bd5-2b2b-11d3-b36b-00c04f6108ff),
  973. pointer_default(unique),
  974. local
  975. ]
  976. interface IWMInputMediaProps : IWMMediaProps
  977. {
  978. HRESULT GetConnectionName(
  979. [out, size_is(*pcchName)] WCHAR *pwszName,
  980. [in, out] WORD *pcchName);
  981. HRESULT GetGroupName(
  982. [out, size_is(*pcchName)] WCHAR *pwszName,
  983. [in, out] WORD *pcchName);
  984. }
  985. [
  986. object,
  987. uuid(96406be4-2b2b-11d3-b36b-00c04f6108ff),
  988. pointer_default(unique),
  989. local
  990. ]
  991. interface IWMWriterSink : IUnknown
  992. {
  993. HRESULT OnHeader(
  994. [in] INSSBuffer *pHeader);
  995. HRESULT IsRealTime(
  996. [out] BOOL *pfRealTime);
  997. HRESULT AllocateDataUnit(
  998. [in] DWORD cbDataUnit,
  999. [out] INSSBuffer **ppDataUnit);
  1000. HRESULT OnDataUnit(
  1001. [in] INSSBuffer *pDataUnit);
  1002. HRESULT OnEndWriting();
  1003. }
  1004. [
  1005. object,
  1006. uuid(96406bd4-2b2b-11d3-b36b-00c04f6108ff),
  1007. pointer_default(unique),
  1008. local
  1009. ]
  1010. interface IWMWriter : IUnknown
  1011. {
  1012. HRESULT SetProfileByID(
  1013. [in] REFGUID guidProfile);
  1014. HRESULT SetProfile(
  1015. [in] IWMProfile *pProfile);
  1016. HRESULT SetOutputFilename(
  1017. [in] const WCHAR *pwszFilename);
  1018. HRESULT GetInputCount(
  1019. [out] DWORD *pcInputs);
  1020. HRESULT GetInputProps(
  1021. [in] DWORD dwInputNum,
  1022. [out] IWMInputMediaProps **ppInput);
  1023. HRESULT SetInputProps(
  1024. [in] DWORD dwInputNum,
  1025. [in] IWMInputMediaProps *pInput);
  1026. HRESULT GetInputFormatCount(
  1027. [in] DWORD dwInputNumber,
  1028. [out] DWORD *pcFormats);
  1029. HRESULT GetInputFormat(
  1030. [in] DWORD dwInputNumber,
  1031. [in] DWORD dwFormatNumber,
  1032. [out] IWMInputMediaProps **pProps);
  1033. HRESULT BeginWriting();
  1034. HRESULT EndWriting();
  1035. HRESULT AllocateSample(
  1036. [in] DWORD dwSampleSize,
  1037. [out] INSSBuffer **ppSample);
  1038. HRESULT WriteSample(
  1039. [in] DWORD dwInputNum,
  1040. [in] QWORD cnsSampleTime,
  1041. [in] DWORD dwFlags,
  1042. [in] INSSBuffer *pSample);
  1043. HRESULT Flush();
  1044. }
  1045. [
  1046. object,
  1047. uuid(96406be3-2b2b-11d3-b36b-00C04f6108ff),
  1048. pointer_default(unique),
  1049. local
  1050. ]
  1051. interface IWMWriterAdvanced : IUnknown
  1052. {
  1053. HRESULT GetSinkCount(
  1054. [out] DWORD *pcSinks);
  1055. HRESULT GetSink(
  1056. [in] DWORD dwSinkNum,
  1057. [out] IWMWriterSink **ppSink);
  1058. HRESULT AddSink(
  1059. [in] IWMWriterSink *pSink);
  1060. HRESULT RemoveSink(
  1061. [in] IWMWriterSink *pSink);
  1062. HRESULT WriteStreamSample(
  1063. [in] WORD wStreamNum,
  1064. [in] QWORD cnsSampleTime,
  1065. [in] DWORD msSampleSendTime,
  1066. [in] QWORD cnsSampleDuration,
  1067. [in] DWORD dwFlags,
  1068. [in] INSSBuffer *pSample);
  1069. HRESULT SetLiveSource(
  1070. BOOL fIsLiveSource);
  1071. HRESULT IsRealTime(
  1072. [out] BOOL *pfRealTime);
  1073. HRESULT GetWriterTime(
  1074. [out] QWORD *pCurrentTime);
  1075. HRESULT GetStatistics(
  1076. [in] WORD wStreamNum,
  1077. [out] WM_WRITER_STATISTICS *pStats);
  1078. HRESULT SetSyncTolerance(
  1079. [in] DWORD msWindow);
  1080. HRESULT GetSyncTolerance(
  1081. [out] DWORD *pmsWindow);
  1082. }
  1083. [
  1084. object,
  1085. uuid(962dc1ec-c046-4db8-9cc7-26ceae500817),
  1086. pointer_default(unique),
  1087. local
  1088. ]
  1089. interface IWMWriterAdvanced2 : IWMWriterAdvanced
  1090. {
  1091. HRESULT GetInputSetting(
  1092. [in] DWORD dwInputNum,
  1093. [in] LPCWSTR pszName,
  1094. [out] WMT_ATTR_DATATYPE *pType,
  1095. [out, size_is(*pcbLength)] BYTE *pValue,
  1096. [in, out] WORD *pcbLength);
  1097. HRESULT SetInputSetting(
  1098. [in] DWORD dwInputNum,
  1099. [in] LPCWSTR pszName,
  1100. [in] WMT_ATTR_DATATYPE Type,
  1101. [in, size_is(cbLength)] const BYTE *pValue,
  1102. [in] WORD cbLength);
  1103. }
  1104. [
  1105. object,
  1106. uuid(2cd6492d-7c37-4e76-9d3b-59261183a22e),
  1107. pointer_default(unique),
  1108. local
  1109. ]
  1110. interface IWMWriterAdvanced3 : IWMWriterAdvanced2
  1111. {
  1112. HRESULT GetStatisticsEx(
  1113. [in] WORD wStreamNum,
  1114. [out] WM_WRITER_STATISTICS_EX *pStats);
  1115. HRESULT SetNonBlocking();
  1116. }
  1117. [
  1118. object,
  1119. uuid(96406bda-2b2b-11d3-b36b-00c04f6108ff),
  1120. pointer_default(unique),
  1121. local
  1122. ]
  1123. interface IWMHeaderInfo : IUnknown
  1124. {
  1125. HRESULT GetAttributeCount(
  1126. [in] WORD stream_num,
  1127. [out] WORD *attributes );
  1128. HRESULT GetAttributeByIndex(
  1129. [in] WORD index,
  1130. [in, out] WORD *stream_num,
  1131. [out, size_is( *name_len )] WCHAR *name,
  1132. [in, out] WORD *name_len,
  1133. [out] WMT_ATTR_DATATYPE *type,
  1134. [out, size_is( *length )] BYTE *value,
  1135. [in, out] WORD *length );
  1136. HRESULT GetAttributeByName(
  1137. [in, out] WORD *stream_num,
  1138. [in] LPCWSTR name,
  1139. [out] WMT_ATTR_DATATYPE *type,
  1140. [out, size_is( *length )] BYTE *value,
  1141. [in, out] WORD *length );
  1142. HRESULT SetAttribute(
  1143. [in] WORD stream_num,
  1144. [in] LPCWSTR name,
  1145. [in] WMT_ATTR_DATATYPE type,
  1146. [in, size_is( length )] const BYTE *value,
  1147. [in] WORD length );
  1148. HRESULT GetMarkerCount(
  1149. [out] WORD *markers );
  1150. HRESULT GetMarker(
  1151. [in] WORD index,
  1152. [out, size_is( *marker_len )] WCHAR *marker_name,
  1153. [in, out] WORD *marker_len,
  1154. [out] QWORD *marker_time );
  1155. HRESULT AddMarker(
  1156. [in] LPCWSTR_WMSDK_TYPE_SAFE marker_name,
  1157. [in] QWORD marker_time );
  1158. HRESULT RemoveMarker(
  1159. [in] WORD index );
  1160. HRESULT GetScriptCount(
  1161. [out] WORD *scripts );
  1162. HRESULT GetScript(
  1163. [in] WORD index,
  1164. [out, size_is( *type_len )] WCHAR *type,
  1165. [in, out] WORD *type_len,
  1166. [out, size_is( *command_len )] WCHAR *command,
  1167. [in, out] WORD *command_len,
  1168. [out] QWORD *script_time );
  1169. HRESULT AddScript(
  1170. [in] LPCWSTR_WMSDK_TYPE_SAFE type,
  1171. [in] LPCWSTR_WMSDK_TYPE_SAFE command,
  1172. [in] QWORD script_time );
  1173. HRESULT RemoveScript(
  1174. [in] WORD index );
  1175. }
  1176. [
  1177. object,
  1178. uuid(15cf9781-454e-482e-b393-85fae487a810),
  1179. pointer_default(unique),
  1180. local
  1181. ]
  1182. interface IWMHeaderInfo2 : IWMHeaderInfo
  1183. {
  1184. HRESULT GetCodecInfoCount(
  1185. [out] DWORD *codec_infos );
  1186. HRESULT GetCodecInfo(
  1187. [in] DWORD index,
  1188. [in, out] WORD *name_len,
  1189. [out, size_is( *name_len )] WCHAR *name,
  1190. [in, out] WORD *description_len,
  1191. [out, size_is( *description_len )] WCHAR *description,
  1192. [out] WMT_CODEC_INFO_TYPE *codec_type,
  1193. [in, out] WORD *codec_info_cnt,
  1194. [out, size_is( *codec_info_cnt )] BYTE *codec_info );
  1195. }
  1196. [
  1197. object,
  1198. uuid(15cc68e3-27cc-4ecd-b222-3f5d02d80bd5),
  1199. pointer_default(unique),
  1200. local
  1201. ]
  1202. interface IWMHeaderInfo3 : IWMHeaderInfo2
  1203. {
  1204. HRESULT GetAttributeCountEx(
  1205. [in] WORD stream_num,
  1206. [out] WORD *attributes );
  1207. HRESULT GetAttributeIndices(
  1208. [in] WORD stream_num,
  1209. [in] LPCWSTR name,
  1210. [in] WORD *lang_index,
  1211. [out, size_is( *count )] WORD *indices,
  1212. [in, out] WORD *count );
  1213. HRESULT GetAttributeByIndexEx(
  1214. [in] WORD stream_num,
  1215. [in] WORD index,
  1216. [out, size_is( *name_len )] LPWSTR name,
  1217. [in, out] WORD *name_len,
  1218. [out] WMT_ATTR_DATATYPE *type,
  1219. [out] WORD *lang_index,
  1220. [out, size_is( *data_len )] BYTE *value,
  1221. [in, out] DWORD *data_len );
  1222. HRESULT ModifyAttribute(
  1223. [in] WORD stream_num,
  1224. [in] WORD index,
  1225. [in] WMT_ATTR_DATATYPE type,
  1226. [in] WORD lang_index,
  1227. [in, size_is( length )] const BYTE *value,
  1228. [in] DWORD length );
  1229. HRESULT AddAttribute(
  1230. [in] WORD stream_num,
  1231. [in] LPCWSTR name,
  1232. [out] WORD *index,
  1233. [in] WMT_ATTR_DATATYPE type,
  1234. [in] WORD lang_index,
  1235. [in, size_is( length )] const BYTE *value,
  1236. [in] DWORD length );
  1237. HRESULT DeleteAttribute(
  1238. [in] WORD stream_num,
  1239. [in] WORD index );
  1240. HRESULT AddCodecInfo(
  1241. [in] LPCWSTR_WMSDK_TYPE_SAFE name,
  1242. [in] LPCWSTR_WMSDK_TYPE_SAFE description,
  1243. [in] WMT_CODEC_INFO_TYPE codec_type,
  1244. [in] WORD codec_info_cnt,
  1245. [in, size_is( codec_info_cnt )] BYTE *codec_info );
  1246. }
  1247. [
  1248. object,
  1249. uuid(96406bec-2b2b-11d3-b36b-00c04f6108ff),
  1250. pointer_default(unique),
  1251. local
  1252. ]
  1253. interface IWMReaderNetworkConfig : IUnknown
  1254. {
  1255. HRESULT GetBufferingTime([out] QWORD *buffering_time);
  1256. HRESULT SetBufferingTime([in] QWORD buffering_time);
  1257. HRESULT GetUDPPortRanges(
  1258. [out, size_is( *ranges )] WM_PORT_NUMBER_RANGE *array,
  1259. [in, out] DWORD *ranges);
  1260. HRESULT SetUDPPortRanges(
  1261. [in, size_is( ranges )] WM_PORT_NUMBER_RANGE *array,
  1262. [in] DWORD ranges);
  1263. HRESULT GetProxySettings(
  1264. [in] const WCHAR *protocol,
  1265. [out] WMT_PROXY_SETTINGS *proxy);
  1266. HRESULT SetProxySettings(
  1267. [in] LPCWSTR protocol,
  1268. [in] WMT_PROXY_SETTINGS proxy);
  1269. HRESULT GetProxyHostName(
  1270. [in] const WCHAR *protocol,
  1271. [out, size_is( *size )] WCHAR *hostname,
  1272. [in, out] DWORD *size);
  1273. HRESULT SetProxyHostName(
  1274. [in] const WCHAR *protocol,
  1275. [in] const WCHAR *hostname);
  1276. HRESULT GetProxyPort(
  1277. [in] const WCHAR *protocol,
  1278. [out] DWORD *port);
  1279. HRESULT SetProxyPort(
  1280. [in] const WCHAR *protocol,
  1281. [in] DWORD port);
  1282. HRESULT GetProxyExceptionList(
  1283. [in] const WCHAR *protocol,
  1284. [out, size_is( *count )] WCHAR *exceptions,
  1285. [in, out] DWORD *count);
  1286. HRESULT SetProxyExceptionList(
  1287. [in] const WCHAR *protocol,
  1288. [in] const WCHAR *exceptions);
  1289. HRESULT GetProxyBypassForLocal(
  1290. [in] const WCHAR *protocol,
  1291. [out] BOOL *bypass);
  1292. HRESULT SetProxyBypassForLocal(
  1293. [in] const WCHAR *protocol,
  1294. [in] BOOL bypass);
  1295. HRESULT GetForceRerunAutoProxyDetection([out] BOOL *detection);
  1296. HRESULT SetForceRerunAutoProxyDetection([in] BOOL detection);
  1297. HRESULT GetEnableMulticast([out] BOOL *multicast);
  1298. HRESULT SetEnableMulticast([in] BOOL multicast);
  1299. HRESULT GetEnableHTTP([out] BOOL *enable);
  1300. HRESULT SetEnableHTTP([in] BOOL enable);
  1301. HRESULT GetEnableUDP([out] BOOL *enable);
  1302. HRESULT SetEnableUDP([in] BOOL enable);
  1303. HRESULT GetEnableTCP([out] BOOL *enable);
  1304. HRESULT SetEnableTCP([in] BOOL enable);
  1305. HRESULT ResetProtocolRollover();
  1306. HRESULT GetConnectionBandwidth([out] DWORD *bandwidth);
  1307. HRESULT SetConnectionBandwidth([in] DWORD bandwidth);
  1308. HRESULT GetNumProtocolsSupported([out] DWORD *protocols);
  1309. HRESULT GetSupportedProtocolName(
  1310. [in] DWORD protocol_num,
  1311. [out, size_is( *size )] WCHAR *protocol,
  1312. [in, out] DWORD *size);
  1313. HRESULT AddLoggingUrl([in] const WCHAR *url);
  1314. HRESULT GetLoggingUrl(
  1315. [in] DWORD index,
  1316. [out, size_is( *size )] WCHAR *url,
  1317. [in, out] DWORD *size);
  1318. HRESULT GetLoggingUrlCount([out] DWORD *count);
  1319. HRESULT ResetLoggingUrlList();
  1320. }
  1321. [
  1322. object,
  1323. uuid(d979a853-042b-4050-8387-c939db22013f),
  1324. pointer_default(unique),
  1325. local
  1326. ]
  1327. interface IWMReaderNetworkConfig2 : IWMReaderNetworkConfig
  1328. {
  1329. HRESULT GetEnableContentCaching([out] BOOL *enable);
  1330. HRESULT SetEnableContentCaching([in] BOOL enable);
  1331. HRESULT GetEnableFastCache([out] BOOL *enable);
  1332. HRESULT SetEnableFastCache([in] BOOL enable);
  1333. HRESULT GetAcceleratedStreamingDuration([out] QWORD *duration);
  1334. HRESULT SetAcceleratedStreamingDuration([in] QWORD duration);
  1335. HRESULT GetAutoReconnectLimit([out] DWORD *limit);
  1336. HRESULT SetAutoReconnectLimit([in] DWORD limit);
  1337. HRESULT GetEnableResends([out] BOOL *enable);
  1338. HRESULT SetEnableResends([in] BOOL enable);
  1339. HRESULT GetEnableThinning([out] BOOL *enable);
  1340. HRESULT SetEnableThinning([in] BOOL enable);
  1341. HRESULT GetMaxNetPacketSize([out] DWORD *packet_size);
  1342. }
  1343. [
  1344. object,
  1345. uuid(96406bed-2b2b-11d3-b36b-00c04f6108ff),
  1346. pointer_default(unique),
  1347. local
  1348. ]
  1349. interface IWMReaderStreamClock : IUnknown
  1350. {
  1351. HRESULT GetTime([in] QWORD *now);
  1352. HRESULT SetTimer([in] QWORD when,
  1353. [in] void *param,
  1354. [out] DWORD *id);
  1355. HRESULT KillTimer([in] DWORD id);
  1356. }
  1357. [
  1358. object,
  1359. uuid(cdfb97ab-188f-40b3-b643-5b7903975c59),
  1360. pointer_default(unique),
  1361. local
  1362. ]
  1363. interface IWMPacketSize : IUnknown
  1364. {
  1365. HRESULT GetMaxPacketSize([out] DWORD *size);
  1366. HRESULT SetMaxPacketSize([in] DWORD size);
  1367. }
  1368. [
  1369. object,
  1370. uuid(8bfc2b9e-b646-4233-a877-1c6a079669dc),
  1371. pointer_default(unique),
  1372. local
  1373. ]
  1374. interface IWMPacketSize2 : IWMPacketSize
  1375. {
  1376. HRESULT GetMinPacketSize([out] DWORD *size);
  1377. HRESULT SetMinPacketSize([in] DWORD size);
  1378. }
  1379. [
  1380. object,
  1381. uuid(d2827540-3ee7-432c-b14c-dc17f085d3b3),
  1382. pointer_default(unique),
  1383. local
  1384. ]
  1385. interface IWMDRMReader : IUnknown
  1386. {
  1387. HRESULT AcquireLicense([in] DWORD flags);
  1388. HRESULT CancelLicenseAcquisition();
  1389. HRESULT Individualize([in] DWORD flags);
  1390. HRESULT CancelIndividualization();
  1391. HRESULT MonitorLicenseAcquisition();
  1392. HRESULT CancelMonitorLicenseAcquisition();
  1393. HRESULT SetDRMProperty(
  1394. [in] const WCHAR *name,
  1395. [in] WMT_ATTR_DATATYPE type,
  1396. [in, size_is( length )] const BYTE *value,
  1397. [in] WORD length);
  1398. HRESULT GetDRMProperty(
  1399. [in] const WCHAR *name,
  1400. [out] WMT_ATTR_DATATYPE *type,
  1401. [out, size_is( *length )] BYTE *value,
  1402. [in, out] WORD *length);
  1403. }
  1404. [
  1405. object,
  1406. uuid(befe7a75-9f1d-4075-b9d9-a3c37bda49a0),
  1407. pointer_default(unique),
  1408. local
  1409. ]
  1410. interface IWMDRMReader2 : IWMDRMReader
  1411. {
  1412. HRESULT SetEvaluateOutputLevelLicenses([in] BOOL evaluate);
  1413. HRESULT GetPlayOutputLevels(
  1414. [out, size_is( *length )] DRM_PLAY_OPL *play,
  1415. [in, out] DWORD *length,
  1416. [out] DWORD *level);
  1417. HRESULT GetCopyOutputLevels(
  1418. [out, size_is( *length )] DRM_COPY_OPL *copy,
  1419. [in, out] DWORD *length,
  1420. [out] DWORD *level);
  1421. HRESULT TryNextLicense();
  1422. }
  1423. [
  1424. object,
  1425. uuid(e08672de-f1e7-4ff4-a0a3-fc4b08e4caf8),
  1426. pointer_default(unique),
  1427. local
  1428. ]
  1429. interface IWMDRMReader3 : IWMDRMReader2
  1430. {
  1431. HRESULT GetInclusionList(
  1432. [out] GUID **guids,
  1433. [out] DWORD *count);
  1434. }
  1435. [
  1436. object,
  1437. uuid(bddc4d08-944d-4d52-a612-46c3fda07dd4),
  1438. pointer_default( unique ),
  1439. local
  1440. ]
  1441. interface IWMReaderAccelerator : IUnknown
  1442. {
  1443. HRESULT GetCodecInterface(
  1444. [in] DWORD output,
  1445. [in] REFIID riid,
  1446. [out] void **codec);
  1447. HRESULT Notify(
  1448. [in] DWORD output,
  1449. [in] WM_MEDIA_TYPE *subtype);
  1450. }
  1451. [
  1452. object,
  1453. uuid(f369e2f0-e081-4fe6-8450-b810b2f410d1),
  1454. pointer_default(unique),
  1455. local
  1456. ]
  1457. interface IWMReaderTimecode : IUnknown
  1458. {
  1459. HRESULT GetTimecodeRangeCount(
  1460. [in] WORD num,
  1461. [out] WORD *count);
  1462. HRESULT GetTimecodeRangeBounds(
  1463. [in] WORD stream,
  1464. [in] WORD range,
  1465. [out] DWORD *start_timecode,
  1466. [out] DWORD *end_timecode);
  1467. }
  1468. [
  1469. object,
  1470. uuid(fdbe5592-81a1-41ea-93bd-735cad1adc05),
  1471. pointer_default(unique),
  1472. local
  1473. ]
  1474. interface IWMReaderTypeNegotiation : IUnknown
  1475. {
  1476. HRESULT TryOutputProps(
  1477. [in] DWORD output,
  1478. [in] IWMOutputMediaProps *props);
  1479. }
  1480. [
  1481. object,
  1482. uuid(df683f00-2d49-4d8e-92b7-fb19f6a0dc57),
  1483. pointer_default(unique),
  1484. local
  1485. ]
  1486. interface IWMLanguageList : IUnknown
  1487. {
  1488. HRESULT GetLanguageCount(
  1489. [out] WORD *count);
  1490. HRESULT GetLanguageDetails(
  1491. [in] WORD index,
  1492. [out, size_is( *length )] WCHAR *language,
  1493. [in, out] WORD *length);
  1494. HRESULT AddLanguageByRFC1766String(
  1495. [in] LPCWSTR_WMSDK_TYPE_SAFE language,
  1496. [out] WORD *index);
  1497. }
  1498. [
  1499. object,
  1500. uuid(f28c0300-9baa-4477-a846-1744d9cbf533),
  1501. pointer_default(unique),
  1502. local
  1503. ]
  1504. interface IWMReaderPlaylistBurn : IUnknown
  1505. {
  1506. HRESULT InitPlaylistBurn(
  1507. [in] DWORD count,
  1508. [in] LPCWSTR_WMSDK_TYPE_SAFE *filenames,
  1509. [in] IWMStatusCallback *callback,
  1510. [in] void *context);
  1511. HRESULT GetInitResults(
  1512. [in] DWORD count,
  1513. [out] HRESULT *stat);
  1514. HRESULT Cancel();
  1515. HRESULT EndPlaylistBurn([in] HRESULT result);
  1516. }
  1517. [
  1518. object,
  1519. uuid(72995a79-5090-42a4-9c8c-d9d0b6d34be5),
  1520. pointer_default(unique),
  1521. local
  1522. ]
  1523. interface IWMPropertyVault : IUnknown
  1524. {
  1525. HRESULT GetPropertyCount([in] DWORD *count);
  1526. HRESULT GetPropertyByName(
  1527. [in] const WCHAR *name,
  1528. [out] WMT_ATTR_DATATYPE *type,
  1529. [out, size_is( *size )] BYTE *value,
  1530. [in, out] DWORD *size);
  1531. HRESULT SetProperty(
  1532. [in] const WCHAR *name,
  1533. [in] WMT_ATTR_DATATYPE type,
  1534. [in] BYTE *value,
  1535. [in] DWORD size);
  1536. HRESULT GetPropertyByIndex(
  1537. [in] DWORD index,
  1538. [out, size_is( *pdwNameLen )] WCHAR *name,
  1539. [in, out] DWORD *length,
  1540. [out] WMT_ATTR_DATATYPE *type,
  1541. [out, size_is( *size )] BYTE *value,
  1542. [in, out] DWORD *size);
  1543. HRESULT CopyPropertiesFrom([in] IWMPropertyVault *vault);
  1544. HRESULT Clear();
  1545. };
  1546. [
  1547. object,
  1548. uuid(fc54a285-38c4-45b5-aa23-85b9f7cb424b),
  1549. pointer_default(unique),
  1550. local
  1551. ]
  1552. interface IWMWriterPreprocess : IUnknown
  1553. {
  1554. HRESULT GetMaxPreprocessingPasses(
  1555. [in] DWORD input,
  1556. [in] DWORD flags,
  1557. [out] DWORD *passes);
  1558. HRESULT SetNumPreprocessingPasses(
  1559. [in] DWORD input,
  1560. [in] DWORD flags,
  1561. [in] DWORD passes);
  1562. HRESULT BeginPreprocessingPass(
  1563. [in] DWORD input,
  1564. [in] DWORD flags);
  1565. HRESULT PreprocessSample(
  1566. [in] DWORD input,
  1567. [in] QWORD sample_time,
  1568. [in] DWORD flags,
  1569. [in] INSSBuffer *sample);
  1570. HRESULT EndPreprocessingPass(
  1571. [in] DWORD input,
  1572. [in] DWORD flags);
  1573. };
  1574. [
  1575. object,
  1576. uuid(05e5ac9f-3fb6-4508-bb43-a4067ba1ebe8),
  1577. pointer_default(unique),
  1578. local
  1579. ]
  1580. interface IWMLicenseBackup : IUnknown
  1581. {
  1582. HRESULT BackupLicenses(
  1583. [in] DWORD dwFlags,
  1584. [in] IWMStatusCallback *pCallback);
  1585. HRESULT CancelLicenseBackup();
  1586. }
  1587. [
  1588. object,
  1589. uuid(c70b6334-a22e-4efb-a245-15e65a004a13),
  1590. pointer_default(unique),
  1591. local
  1592. ]
  1593. interface IWMLicenseRestore : IUnknown
  1594. {
  1595. HRESULT RestoreLicenses(
  1596. [in] DWORD dwFlags,
  1597. [in] IWMStatusCallback *pCallback);
  1598. HRESULT CancelLicenseRestore();
  1599. }
  1600. [
  1601. object,
  1602. local,
  1603. uuid(6816dad3-2b4b-4c8e-8149-874c3483a753),
  1604. ]
  1605. interface IWMIStreamProps : IUnknown
  1606. {
  1607. HRESULT GetProperty(const WCHAR *name, WMT_ATTR_DATATYPE *type, BYTE *value, DWORD *size);
  1608. }
  1609. [
  1610. object,
  1611. local,
  1612. uuid(342e0eb7-e651-450c-975b-2ace2c90c48e),
  1613. ]
  1614. interface IWMCredentialCallback : IUnknown
  1615. {
  1616. HRESULT AcquireCredentials(WCHAR *realm, WCHAR *site, WCHAR *username, DWORD username_size,
  1617. WCHAR *password, DWORD password_size, HRESULT hr, DWORD *flags);
  1618. }
  1619. cpp_quote("HRESULT WINAPI WMCheckURLExtension(LPCWSTR);")
  1620. cpp_quote("HRESULT WINAPI WMCheckURLScheme(LPCWSTR);")
  1621. cpp_quote("HRESULT WINAPI WMCreateWriter(IUnknown*,IWMWriter**);")
  1622. cpp_quote("HRESULT WINAPI WMCreateReader(IUnknown*,DWORD,IWMReader**);")
  1623. cpp_quote("HRESULT WINAPI WMCreateSyncReader(IUnknown*,DWORD,IWMSyncReader**);")
  1624. cpp_quote("HRESULT WINAPI WMCreateEditor(IWMMetadataEditor**);")
  1625. cpp_quote("HRESULT WINAPI WMCreateBackupRestorer(IUnknown*,IWMLicenseBackup**);")
  1626. cpp_quote("HRESULT WINAPI WMCreateProfileManager(IWMProfileManager**);")
  1627. cpp_quote("HRESULT WINAPI WMIsContentProtected(const WCHAR*, WINBOOL*);")
  1628. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_Base, 0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1629. cpp_quote("EXTERN_GUID(WMMEDIATYPE_Video, 0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1630. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB1, 0xe436eb78,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
  1631. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB4, 0xe436eb79,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
  1632. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB8, 0xe436eb7a,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
  1633. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB565, 0xe436eb7b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
  1634. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB555, 0xe436eb7c,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
  1635. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB24, 0xe436eb7d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
  1636. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB32, 0xe436eb7e,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
  1637. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_I420, 0x30323449,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1638. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_IYUV, 0x56555949,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1639. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YV12, 0x32315659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1640. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YUY2, 0x32595559,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1641. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_P422, 0x32323450,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1642. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_UYVY, 0x59565955,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1643. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YVYU, 0x55595659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1644. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YVU9, 0x39555659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1645. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_VIDEOIMAGE, 0x1d4a45f2,0xe5f6,0x4b44,0x83,0x88,0xf0,0xae,0x5c,0x0e,0x0c,0x37);")
  1646. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MP43, 0x3334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1647. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MP4S, 0x5334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1648. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_M4S2, 0x3253344d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1649. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV1, 0x31564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1650. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV2, 0x32564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1651. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MSS1, 0x3153534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1652. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MPEG2_VIDEO, 0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea);")
  1653. cpp_quote("EXTERN_GUID(WMMEDIATYPE_Audio, 0x73647561,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1654. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_PCM, 0x00000001,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1655. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_DRM, 0x00000009,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1656. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMAudioV9, 0x00000162,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1657. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMAudio_Lossless, 0x00000163,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1658. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MSS2, 0x3253534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1659. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMSP1, 0x0000000a,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1660. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMSP2, 0x0000000b,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1661. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV3, 0x33564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1662. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMVP, 0x50564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1663. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WVP2, 0x32505657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1664. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMVA, 0x41564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
  1665. cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WVC1, 0x31435657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")