d3d10/tests: Avoid implicit cast changing value.
[wine.git] / include / wmsdkidl.idl
blob55142f47e93e08244c93e94181c278fc95ef3a38
1 /*
2 * Copyright 2012 André Hentschel
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.
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.
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
19 import "oaidl.idl";
20 import "wmsbuffer.idl";
21 import "drmexternals.idl";
23 typedef struct _WMMediaType
25 GUID majortype;
26 GUID subtype;
27 BOOL bFixedSizeSamples;
28 BOOL bTemporalCompression;
29 ULONG lSampleSize;
30 GUID formattype;
31 IUnknown *pUnk;
32 ULONG cbFormat;
33 [size_is(cbFormat)] BYTE *pbFormat;
34 } WM_MEDIA_TYPE;
36 typedef struct _WMWriterStatistics
38 QWORD qwSampleCount;
39 QWORD qwByteCount;
40 QWORD qwDroppedSampleCount;
41 QWORD qwDroppedByteCount;
42 DWORD dwCurrentBitrate;
43 DWORD dwAverageBitrate;
44 DWORD dwExpectedBitrate;
45 DWORD dwCurrentSampleRate;
46 DWORD dwAverageSampleRate;
47 DWORD dwExpectedSampleRate;
48 } WM_WRITER_STATISTICS;
50 typedef struct _WMWriterStatisticsEx
52 DWORD dwBitratePlusOverhead;
53 DWORD dwCurrentSampleDropRateInQueue;
54 DWORD dwCurrentSampleDropRateInCodec;
55 DWORD dwCurrentSampleDropRateInMultiplexer;
56 DWORD dwTotalSampleDropsInQueue;
57 DWORD dwTotalSampleDropsInCodec;
58 DWORD dwTotalSampleDropsInMultiplexer;
59 } WM_WRITER_STATISTICS_EX;
61 typedef struct _WMReaderStatistics
63 DWORD cbSize;
64 DWORD dwBandwidth;
65 DWORD cPacketsReceived;
66 DWORD cPacketsRecovered;
67 DWORD cPacketsLost;
68 WORD wQuality;
69 } WM_READER_STATISTICS;
71 typedef struct _WMReaderClientInfo
73 DWORD cbSize;
74 WCHAR *wszLang;
75 WCHAR *wszBrowserUserAgent;
76 WCHAR *wszBrowserWebPage;
77 QWORD qwReserved;
78 LPARAM *pReserved;
79 WCHAR *wszHostExe;
80 QWORD qwHostVersion;
81 WCHAR *wszPlayerUserAgent;
82 } WM_READER_CLIENTINFO;
84 enum
86 WM_SF_CLEANPOINT = 0x1,
87 WM_SF_DISCONTINUITY = 0x2,
88 WM_SF_DATALOSS = 0x4,
91 typedef enum WMT_ATTR_DATATYPE
93 WMT_TYPE_DWORD = 0,
94 WMT_TYPE_STRING = 1,
95 WMT_TYPE_BINARY = 2,
96 WMT_TYPE_BOOL = 3,
97 WMT_TYPE_QWORD = 4,
98 WMT_TYPE_WORD = 5,
99 WMT_TYPE_GUID = 6,
100 } WMT_ATTR_DATATYPE;
102 typedef enum WMT_STATUS
104 WMT_ERROR = 0,
105 WMT_OPENED = 1,
106 WMT_BUFFERING_START = 2,
107 WMT_BUFFERING_STOP = 3,
108 WMT_EOF = 4,
109 WMT_END_OF_FILE = 4,
110 WMT_END_OF_SEGMENT = 5,
111 WMT_END_OF_STREAMING = 6,
112 WMT_LOCATING = 7,
113 WMT_CONNECTING = 8,
114 WMT_NO_RIGHTS = 9,
115 WMT_MISSING_CODEC = 10,
116 WMT_STARTED = 11,
117 WMT_STOPPED = 12,
118 WMT_CLOSED = 13,
119 WMT_STRIDING = 14,
120 WMT_TIMER = 15,
121 WMT_INDEX_PROGRESS = 16,
122 WMT_SAVEAS_START = 17,
123 WMT_SAVEAS_STOP = 18,
124 WMT_NEW_SOURCEFLAGS = 19,
125 WMT_NEW_METADATA = 20,
126 WMT_BACKUPRESTORE_BEGIN = 21,
127 WMT_SOURCE_SWITCH = 22,
128 WMT_ACQUIRE_LICENSE = 23,
129 WMT_INDIVIDUALIZE = 24,
130 WMT_NEEDS_INDIVIDUALIZATION = 25,
131 WMT_NO_RIGHTS_EX = 26,
132 WMT_BACKUPRESTORE_END = 27,
133 WMT_BACKUPRESTORE_CONNECTING = 28,
134 WMT_BACKUPRESTORE_DISCONNECTING = 29,
135 WMT_ERROR_WITHURL = 30,
136 WMT_RESTRICTED_LICENSE = 31,
137 WMT_CLIENT_CONNECT = 32,
138 WMT_CLIENT_DISCONNECT = 33,
139 WMT_NATIVE_OUTPUT_PROPS_CHANGED = 34,
140 WMT_RECONNECT_START = 35,
141 WMT_RECONNECT_END = 36,
142 WMT_CLIENT_CONNECT_EX = 37,
143 WMT_CLIENT_DISCONNECT_EX = 38,
144 WMT_SET_FEC_SPAN = 39,
145 WMT_PREROLL_READY = 40,
146 WMT_PREROLL_COMPLETE = 41,
147 WMT_CLIENT_PROPERTIES = 42,
148 WMT_LICENSEURL_SIGNATURE_STATE = 43,
149 WMT_INIT_PLAYLIST_BURN = 44,
150 WMT_TRANSCRYPTOR_INIT = 45,
151 WMT_TRANSCRYPTOR_SEEKED = 46,
152 WMT_TRANSCRYPTOR_READ = 47,
153 WMT_TRANSCRYPTOR_CLOSED = 48,
154 WMT_PROXIMITY_RESULT = 49,
155 WMT_PROXIMITY_COMPLETED = 50,
156 WMT_CONTENT_ENABLER = 51
157 } WMT_STATUS;
159 typedef enum WMT_STREAM_SELECTION
161 WMT_OFF = 0,
162 WMT_CLEANPOINT_ONLY = 1,
163 WMT_ON = 2,
164 } WMT_STREAM_SELECTION;
166 typedef enum WMT_VERSION
168 WMT_VER_4_0 = 0x00040000,
169 WMT_VER_7_0 = 0x00070000,
170 WMT_VER_8_0 = 0x00080000,
171 WMT_VER_9_0 = 0x00090000
172 } WMT_VERSION;
174 typedef enum WMT_PLAY_MODE
176 WMT_PLAY_MODE_AUTOSELECT,
177 WMT_PLAY_MODE_LOCAL,
178 WMT_PLAY_MODE_DOWNLOAD,
179 WMT_PLAY_MODE_STREAMING
180 } WMT_PLAY_MODE;
182 typedef enum tagWMT_OFFSET_FORMAT
184 WMT_OFFSET_FORMAT_100NS,
185 WMT_OFFSET_FORMAT_FRAME_NUMBERS,
186 WMT_OFFSET_FORMAT_PLAYLIST_OFFSET,
187 WMT_OFFSET_FORMAT_TIMECODE,
188 WMT_OFFSET_FORMAT_100NS_APPROXIMATE
189 } WMT_OFFSET_FORMAT;
191 typedef enum WMT_CODEC_INFO_TYPE
193 WMT_CODECINFO_AUDIO = 0,
194 WMT_CODECINFO_VIDEO = 1,
195 WMT_CODECINFO_UNKNOWN = 0xFFFFFFFF,
196 } WMT_CODEC_INFO_TYPE;
198 typedef enum WMT_PROXY_SETTINGS
200 WMT_PROXY_SETTING_NONE = 0,
201 WMT_PROXY_SETTING_MANUAL = 1,
202 WMT_PROXY_SETTING_AUTO = 2,
203 WMT_PROXY_SETTING_BROWSER = 3,
204 WMT_PROXY_SETTING_MAX
205 } WMT_PROXY_SETTINGS;
207 typedef enum tagWMT_STORAGE_FORMAT
209 WMT_Storage_Format_MP3 = 0,
210 WMT_Storage_Format_V1 = 1
211 } WMT_STORAGE_FORMAT;
213 #include <pshpack2.h>
214 typedef struct _WMStreamPrioritizationRecord
216 WORD wStreamNumber;
217 BOOL fMandatory;
218 } WM_STREAM_PRIORITY_RECORD;
220 typedef struct _WMT_TIMECODE_EXTENSION_DATA
222 WORD wRange;
223 DWORD dwTimecode;
224 DWORD dwUserbits;
225 DWORD dwAmFlags;
226 } WMT_TIMECODE_EXTENSION_DATA;
227 #include <poppack.h>
229 typedef struct _WM_PORT_NUMBER_RANGE
231 WORD wPortBegin;
232 WORD wPortEnd;
233 } WM_PORT_NUMBER_RANGE;
235 typedef LPCWSTR LPCWSTR_WMSDK_TYPE_SAFE;
238 object,
239 uuid(6d7cdc70-9888-11d3-8edc-00c04f6109cf),
240 pointer_default(unique),
241 local
243 interface IWMStatusCallback : IUnknown
245 HRESULT OnStatus(
246 [in] WMT_STATUS Status,
247 [in] HRESULT hr,
248 [in] WMT_ATTR_DATATYPE dwType,
249 [in] BYTE *pValue,
250 [in] void *pvContext);
254 object,
255 uuid(96406bd8-2b2b-11d3-b36b-00c04f6108ff),
256 pointer_default(unique),
257 local
259 interface IWMReaderCallback : IWMStatusCallback
261 HRESULT OnSample(
262 [in] DWORD dwOutputNum,
263 [in] QWORD cnsSampleTime,
264 [in] QWORD cnsSampleDuration,
265 [in] DWORD dwFlags,
266 [in] INSSBuffer *pSample,
267 [in] void *pvContext);
271 object,
272 local,
273 uuid(96406beb-2b2b-11d3-b36b-00c04f6108ff),
275 interface IWMReaderCallbackAdvanced : IUnknown
277 HRESULT OnStreamSample(WORD stream_number, QWORD pts, QWORD duration, DWORD flags, INSSBuffer *sample, void *context);
278 HRESULT OnTime(QWORD time, void *context);
279 HRESULT OnStreamSelection(WORD count, WORD *stream_numbers, WMT_STREAM_SELECTION *selections, void *context);
280 HRESULT OnOutputPropsChanged(DWORD output_number, WM_MEDIA_TYPE *mt, void *context);
281 HRESULT AllocateForStream(WORD stream_number, DWORD size, INSSBuffer **sample, void *context);
282 HRESULT AllocateForOutput(DWORD output_number, DWORD size, INSSBuffer **sample, void *context);
286 object,
287 uuid(96406Bdd-2b2b-11d3-b36b-00c04f6108ff),
288 pointer_default(unique),
289 local
291 interface IWMStreamList : IUnknown
293 HRESULT GetStreams(
294 [out, size_is(*pcStreams)] WORD *pwStreamNumArray,
295 [in, out] WORD *pcStreams);
297 HRESULT AddStream([in] WORD wStreamNum);
298 HRESULT RemoveStream([in] WORD wStreamNum);
302 object,
303 uuid(96406Bde-2b2b-11d3-b36b-00c04f6108ff),
304 pointer_default(unique),
305 local
307 interface IWMMutualExclusion : IWMStreamList
309 HRESULT GetType([out] GUID *pguidType);
310 HRESULT SetType([in] REFGUID guidType);
314 object,
315 uuid(ad694af1-f8d9-42f8-bc47-70311b0c4f9e),
316 pointer_default(unique),
317 local
319 interface IWMBandwidthSharing : IWMStreamList
321 HRESULT GetType([out] GUID *guid);
322 HRESULT SetType([in] REFGUID guid);
324 HRESULT GetBandwidth(
325 [out] DWORD *bitrate,
326 [out] DWORD *buffer);
328 HRESULT SetBandwidth(
329 [in] DWORD bitrate,
330 [in] DWORD buffer);
334 object,
335 uuid(8c1c6090-f9a8-4748-8ec3-dd1108ba1e77),
336 pointer_default(unique),
337 local
339 interface IWMStreamPrioritization : IUnknown
341 HRESULT GetPriorityRecords(
342 [out] WM_STREAM_PRIORITY_RECORD *array,
343 [in, out] WORD *records);
345 HRESULT SetPriorityRecords(
346 [in] WM_STREAM_PRIORITY_RECORD *array,
347 [in] WORD records);
351 object,
352 uuid(96406Bdc-2b2b-11d3-b36b-00c04f6108ff),
353 pointer_default(unique),
354 local
356 interface IWMStreamConfig : IUnknown
358 HRESULT GetStreamType([out] GUID *pguidStreamType);
359 HRESULT GetStreamNumber([out] WORD *pwStreamNum);
360 HRESULT SetStreamNumber([in] WORD wStreamNum);
362 HRESULT GetStreamName(
363 [out, size_is(*pcchStreamName)] WCHAR *pwszStreamName,
364 [in, out] WORD *pcchStreamName);
366 HRESULT SetStreamName([in] LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName);
368 HRESULT GetConnectionName(
369 [out, size_is(*pcchInputName)] WCHAR *pwszInputName,
370 [in, out] WORD *pcchInputName);
372 HRESULT SetConnectionName([in] LPCWSTR_WMSDK_TYPE_SAFE pwszInputName);
373 HRESULT GetBitrate([out] DWORD *pdwBitrate);
374 HRESULT SetBitrate([in] DWORD pdwBitrate);
375 HRESULT GetBufferWindow([out] DWORD *pmsBufferWindow);
376 HRESULT SetBufferWindow([in] DWORD msBufferWindow);
380 object,
381 uuid(96406bdb-2b2b-11d3-b36b-00c04f6108ff),
382 pointer_default(unique),
383 local
385 interface IWMProfile : IUnknown
387 HRESULT GetVersion(
388 [out] WMT_VERSION *pdwVersion);
390 HRESULT GetName(
391 [out, size_is(*pcchName)] WCHAR *pwszName,
392 [in, out] DWORD *pcchName);
394 HRESULT SetName(
395 [in] const WCHAR *pwszName);
397 HRESULT GetDescription(
398 [out, size_is(*pcchDescription)] WCHAR *pwszDescription,
399 [in, out] DWORD *pcchDescription);
401 HRESULT SetDescription(
402 [in] const WCHAR *pwszDescription);
404 HRESULT GetStreamCount(
405 [out] DWORD *pcStreams);
407 HRESULT GetStream(
408 [in] DWORD dwStreamIndex,
409 [out] IWMStreamConfig **ppConfig);
411 HRESULT GetStreamByNumber(
412 [in] WORD wStreamNum,
413 [out] IWMStreamConfig **ppConfig);
415 HRESULT RemoveStream(
416 [in] IWMStreamConfig *pConfig);
418 HRESULT RemoveStreamByNumber(
419 [in] WORD wStreamNum);
421 HRESULT AddStream(
422 [in] IWMStreamConfig *pConfig);
424 HRESULT ReconfigStream(
425 [in] IWMStreamConfig *pConfig);
427 HRESULT CreateNewStream(
428 [in] REFGUID guidStreamType,
429 [out] IWMStreamConfig **ppConfig);
431 HRESULT GetMutualExclusionCount(
432 [out] DWORD *pcME);
434 HRESULT GetMutualExclusion(
435 [in] DWORD dwMEIndex,
436 [out] IWMMutualExclusion **ppME);
438 HRESULT RemoveMutualExclusion(
439 [in] IWMMutualExclusion *pME);
441 HRESULT AddMutualExclusion(
442 [in] IWMMutualExclusion *pME);
444 HRESULT CreateNewMutualExclusion(
445 [out] IWMMutualExclusion **ppME);
449 object,
450 uuid(07e72d33-d94e-4be7-8843-60ae5ff7e5f5),
451 pointer_default(unique),
452 local
454 interface IWMProfile2 : IWMProfile
456 HRESULT GetProfileID([out] GUID *guid);
460 object,
461 uuid(00ef96cc-a461-4546-8bcd-c9a28f0e06f5),
462 pointer_default(unique),
463 local
465 interface IWMProfile3 : IWMProfile2
467 HRESULT GetStorageFormat([out] WMT_STORAGE_FORMAT *storage);
468 HRESULT SetStorageFormat([in] WMT_STORAGE_FORMAT storage);
470 HRESULT GetBandwidthSharingCount([out] DWORD *count);
472 HRESULT GetBandwidthSharing(
473 [in] DWORD index,
474 [out] IWMBandwidthSharing **bandwidth);
476 HRESULT RemoveBandwidthSharing([in] IWMBandwidthSharing *bandwidth);
478 HRESULT AddBandwidthSharing([in] IWMBandwidthSharing *bandwidth);
480 HRESULT CreateNewBandwidthSharing([out] IWMBandwidthSharing **bandwidth);
482 HRESULT GetStreamPrioritization([out] IWMStreamPrioritization **stream);
484 HRESULT SetStreamPrioritization([in] IWMStreamPrioritization *stream);
486 HRESULT RemoveStreamPrioritization();
488 HRESULT CreateNewStreamPrioritization([out] IWMStreamPrioritization **stream);
490 HRESULT GetExpectedPacketCount(
491 [in] QWORD duration,
492 [out] QWORD *packets);
496 object,
497 uuid(d16679f2-6ca0-472d-8d31-2f5d55aee155),
498 pointer_default(unique),
499 local
501 interface IWMProfileManager : IUnknown
503 HRESULT CreateEmptyProfile(
504 [in] WMT_VERSION dwVersion,
505 [out] IWMProfile **ppProfile);
507 HRESULT LoadProfileByID(
508 [in] REFGUID guidProfile,
509 [out] IWMProfile **ppProfile);
511 HRESULT LoadProfileByData(
512 [in] const WCHAR *pwszProfile,
513 [out] IWMProfile **ppProfile);
515 HRESULT SaveProfile(
516 [in] IWMProfile *pIWMProfile,
517 [in] WCHAR *pwszProfile,
518 [in, out] DWORD *pdwLength);
520 HRESULT GetSystemProfileCount(
521 [out] DWORD *pcProfiles);
523 HRESULT LoadSystemProfile(
524 [in] DWORD dwProfileIndex,
525 [out] IWMProfile **ppProfile);
529 object,
530 uuid(7a924e51-73c1-494d-8019-23d37ed9b89a),
531 pointer_default(unique),
532 local
534 interface IWMProfileManager2 : IWMProfileManager
536 HRESULT GetSystemProfileVersion(WMT_VERSION *version);
537 HRESULT SetSystemProfileVersion(WMT_VERSION version);
540 cpp_quote("HRESULT WINAPI WMCreateProfileManager(IWMProfileManager**);")
543 object,
544 uuid(a970f41e-34de-4a98-b3ba-e4b3ca7528f0),
545 pointer_default(unique),
546 local
548 interface IWMCodecInfo : IUnknown
550 HRESULT GetCodecInfoCount(
551 [in] REFGUID guid,
552 [out] DWORD *count);
554 HRESULT GetCodecFormatCount(
555 [in] REFGUID guid,
556 [in] DWORD codecindex,
557 [out] DWORD *formatcount);
559 HRESULT GetCodecFormat(
560 [in] REFGUID guid,
561 [in] DWORD codecindex,
562 [in] DWORD formatindex,
563 [out] IWMStreamConfig **streamconfig);
567 object,
568 uuid(aa65e273-b686-4056-91ec-dd768d4df710),
569 pointer_default(unique),
570 local
572 interface IWMCodecInfo2 : IWMCodecInfo
574 HRESULT GetCodecName(
575 [in] REFGUID guid,
576 [in] DWORD codecindex,
577 [out, size_is(*namesize)] WCHAR *name,
578 [in, out] DWORD *namesize);
580 HRESULT GetCodecFormatDesc(
581 [in] REFGUID guid,
582 [in] DWORD codecindex,
583 [in] DWORD formatindex,
584 [out] IWMStreamConfig **streamconfig,
585 [out, size_is(*descrsize)] WCHAR *description,
586 [in, out] DWORD *descrsize);
590 object,
591 uuid(7e51f487-4d93-4f98-8ab4-27d0565adc51),
592 pointer_default(unique),
593 local
595 interface IWMCodecInfo3 : IWMCodecInfo2
597 HRESULT GetCodecFormatProp(
598 [in] REFGUID guid,
599 [in] DWORD codecindex,
600 [in] DWORD formatindex,
601 [in] const WCHAR *name,
602 [out] WMT_ATTR_DATATYPE *type,
603 [out, size_is(*size)] BYTE *value,
604 [in, out] DWORD *size);
606 HRESULT GetCodecProp(
607 [in] REFGUID guid,
608 [in] DWORD codecindex,
609 [in] const WCHAR *name,
610 [out] WMT_ATTR_DATATYPE *type,
611 [out, size_is(*size)] BYTE *value,
612 [in, out] DWORD *size);
614 HRESULT SetCodecEnumerationSetting(
615 [in] REFGUID guid,
616 [in] DWORD codecindex,
617 [in] const WCHAR *name,
618 [in] WMT_ATTR_DATATYPE type,
619 [in, size_is(size)] const BYTE *value,
620 [in] DWORD size);
622 HRESULT GetCodecEnumerationSetting(
623 [in] REFGUID guid,
624 [in] DWORD codecindex,
625 [in] const WCHAR *name,
626 [out] WMT_ATTR_DATATYPE *type,
627 [out, size_is(*size)] BYTE *value,
628 [in, out] DWORD *size);
631 cpp_quote("static const WCHAR g_wszNumPasses[] = {'_','P','A','S','S','E','S','U','S','E','D',0};")
632 cpp_quote("static const WCHAR g_wszVBREnabled[] = {'_','V','B','R','E','N','A','B','L','E','D',0};")
635 object,
636 uuid(96406bce-2b2b-11d3-b36b-00c04f6108ff),
637 pointer_default(unique),
638 local
640 interface IWMMediaProps : IUnknown
642 HRESULT GetType(
643 [out] GUID *pguidType);
645 HRESULT GetMediaType(
646 [out] WM_MEDIA_TYPE *pType,
647 [in, out] DWORD *pcbType);
649 HRESULT SetMediaType(
650 [in] WM_MEDIA_TYPE *pType);
654 object,
655 uuid(96406bd7-2b2b-11d3-b36b-00c04f6108ff),
656 pointer_default(unique),
657 local
659 interface IWMOutputMediaProps : IWMMediaProps
661 HRESULT GetStreamGroupName(
662 [out, size_is(*pcchName)] WCHAR *pwszName,
663 [in, out] WORD *pcchName);
665 HRESULT GetConnectionName(
666 [out, size_is(*pcchName)] WCHAR *pwszName,
667 [in, out] WORD *pcchName);
671 object,
672 uuid(96406bd9-2b2b-11d3-b36b-00c04f6108ff),
673 pointer_default(unique),
674 local
676 interface IWMMetadataEditor : IUnknown
678 HRESULT Open(
679 [in] const WCHAR *pwszFilename);
681 HRESULT Close();
683 HRESULT Flush();
687 object,
688 uuid(96406bd6-2b2b-11d3-b36b-00c04f6108ff),
689 pointer_default(unique),
690 local
692 interface IWMReader : IUnknown
694 HRESULT Open(
695 [in] const WCHAR *pwszURL,
696 [in] IWMReaderCallback *pCallback,
697 [in] void *pvContext);
699 HRESULT Close();
701 HRESULT GetOutputCount(
702 [out] DWORD *pcOutputs);
704 HRESULT GetOutputProps(
705 [in] DWORD dwOutputNum,
706 [out] IWMOutputMediaProps **ppOutput);
708 HRESULT SetOutputProps(
709 [in] DWORD dwOutputNum,
710 [in] IWMOutputMediaProps *pOutput);
712 HRESULT GetOutputFormatCount(
713 [in] DWORD dwOutputNumber,
714 [out] DWORD *pcFormats);
716 HRESULT GetOutputFormat(
717 [in] DWORD dwOutputNumber,
718 [in] DWORD dwFormatNumber,
719 [out] IWMOutputMediaProps** ppProps);
721 HRESULT Start(
722 [in] QWORD cnsStart,
723 [in] QWORD cnsDuration,
724 [in] float fRate,
725 [in] void *pvContext);
727 HRESULT Stop();
729 HRESULT Pause();
731 HRESULT Resume();
735 object,
736 uuid(e5b7ca9a-0f1c-4f66-9002-74ec50d8b304),
737 pointer_default(unique),
738 local
740 interface IWMPlayerHook : IUnknown
742 HRESULT PreDecode();
746 object,
747 uuid(96406bea-2b2b-11d3-b36b-00c04f6108ff),
748 pointer_default(unique),
749 local
751 interface IWMReaderAdvanced : IUnknown
753 HRESULT SetUserProvidedClock(
754 [in] BOOL fUserClock);
756 HRESULT GetUserProvidedClock(
757 [out] BOOL *pfUserClock);
759 HRESULT DeliverTime(
760 [in] QWORD cnsTime);
762 HRESULT SetManualStreamSelection(
763 [in] BOOL fSelection);
765 HRESULT GetManualStreamSelection(
766 [out] BOOL *pfSelection);
768 HRESULT SetStreamsSelected(
769 [in] WORD cStreamCount,
770 [in] WORD *pwStreamNumbers,
771 [in] WMT_STREAM_SELECTION *pSelections);
773 HRESULT GetStreamSelected(
774 [in] WORD wStreamNum,
775 [out] WMT_STREAM_SELECTION *pSelection);
777 HRESULT SetReceiveSelectionCallbacks(
778 [in] BOOL fGetCallbacks);
780 HRESULT GetReceiveSelectionCallbacks(
781 [out] BOOL *pfGetCallbacks);
783 HRESULT SetReceiveStreamSamples(
784 [in] WORD wStreamNum,
785 [in] BOOL fReceiveStreamSamples);
787 HRESULT GetReceiveStreamSamples(
788 [in] WORD wStreamNum,
789 [out] BOOL *pfReceiveStreamSamples);
791 HRESULT SetAllocateForOutput(
792 [in] DWORD dwOutputNum,
793 [in] BOOL fAllocate);
795 HRESULT GetAllocateForOutput(
796 [in] DWORD dwOutputNum,
797 [out] BOOL *pfAllocate);
799 HRESULT SetAllocateForStream(
800 [in] WORD wStreamNum,
801 [in] BOOL fAllocate);
803 HRESULT GetAllocateForStream(
804 [in] WORD dwStreamNum,
805 [out] BOOL *pfAllocate);
807 HRESULT GetStatistics(
808 [in, out] WM_READER_STATISTICS *pStatistics);
810 HRESULT SetClientInfo(
811 [in] WM_READER_CLIENTINFO *pClientInfo);
813 HRESULT GetMaxOutputSampleSize(
814 [in] DWORD dwOutput,
815 [out] DWORD *pcbMax);
817 HRESULT GetMaxStreamSampleSize(
818 [in] WORD wStream,
819 [out] DWORD *pcbMax);
821 HRESULT NotifyLateDelivery(
822 QWORD cnsLateness);
826 object,
827 uuid(ae14a945-b90c-4d0d-9127-80d665f7d73e),
828 pointer_default(unique),
829 local
831 interface IWMReaderAdvanced2 : IWMReaderAdvanced
833 HRESULT SetPlayMode(
834 [in] WMT_PLAY_MODE Mode);
836 HRESULT GetPlayMode(
837 [out] WMT_PLAY_MODE *pMode);
839 HRESULT GetBufferProgress(
840 [out] DWORD *pdwPercent,
841 [out] QWORD *pcnsBuffering);
843 HRESULT GetDownloadProgress(
844 [out] DWORD *pdwPercent,
845 [out] QWORD *pqwBytesDownloaded,
846 [out] QWORD *pcnsDownload);
848 HRESULT GetSaveAsProgress(
849 [out] DWORD *pdwPercent);
851 HRESULT SaveFileAs(
852 [in] const WCHAR *pwszFilename);
854 HRESULT GetProtocolName(
855 [out, size_is(*pcchProtocol)] WCHAR *pwszProtocol,
856 [in, out] DWORD *pcchProtocol);
858 HRESULT StartAtMarker(
859 [in] WORD wMarkerIndex,
860 [in] QWORD cnsDuration,
861 [in] float fRate,
862 [in] void *pvContext);
864 HRESULT GetOutputSetting(
865 [in] DWORD dwOutputNum,
866 [in] LPCWSTR pszName,
867 [out] WMT_ATTR_DATATYPE *pType,
868 [out, size_is(*pcbLength)] BYTE *pValue,
869 [in, out] WORD *pcbLength);
871 HRESULT SetOutputSetting(
872 [in] DWORD dwOutputNum,
873 [in] LPCWSTR pszName,
874 [in] WMT_ATTR_DATATYPE Type,
875 [in, size_is(cbLength)] const BYTE *pValue,
876 [in] WORD cbLength);
878 HRESULT Preroll(
879 [in] QWORD cnsStart,
880 [in] QWORD cnsDuration,
881 [in] float fRate);
883 HRESULT SetLogClientID(
884 [in] BOOL fLogClientID);
886 HRESULT GetLogClientID(
887 [out] BOOL *pfLogClientID);
889 HRESULT StopBuffering();
891 HRESULT OpenStream(
892 [in] IStream *pStream,
893 [in] IWMReaderCallback *pCallback,
894 [in] void *pvContext);
898 object,
899 uuid(5dc0674b-f04B-4a4e-9f2a-b1afde2c8100),
900 pointer_default(unique),
901 local
903 interface IWMReaderAdvanced3 : IWMReaderAdvanced2
905 HRESULT StopNetStreaming();
907 HRESULT StartAtPosition(
908 [in] WORD wStreamNum,
909 [in] void *pvOffsetStart,
910 [in] void *pvDuration,
911 [in] WMT_OFFSET_FORMAT dwOffsetFormat,
912 [in] float fRate,
913 [in] void *pvContext);
917 object,
918 uuid(945a76a2-12ae-4d48-bd3c-cd1d90399b85),
919 pointer_default(unique),
920 local
922 interface IWMReaderAdvanced4 : IWMReaderAdvanced3
924 HRESULT GetLanguageCount(
925 [in] DWORD dwOutputNum,
926 [out] WORD *pwLanguageCount);
928 HRESULT GetLanguage(
929 [in] DWORD dwOutputNum,
930 [in] WORD wLanguage,
931 [out, size_is(*pcchLanguageStringLength)] WCHAR *pwszLanguageString,
932 [in, out] WORD *pcchLanguageStringLength);
934 HRESULT GetMaxSpeedFactor(
935 [out] double *pdblFactor);
937 HRESULT IsUsingFastCache(
938 [out] BOOL *pfUsingFastCache);
940 HRESULT AddLogParam(
941 [in] LPCWSTR wszNameSpace,
942 [in] LPCWSTR wszName,
943 [in] LPCWSTR wszValue);
945 HRESULT SendLogParams();
947 HRESULT CanSaveFileAs(
948 [out] BOOL *pfCanSave);
950 HRESULT CancelSaveFileAs();
952 HRESULT GetURL(
953 [out, size_is(*pcchURL)] WCHAR *pwszURL,
954 [in, out] DWORD *pcchURL);
958 object,
959 uuid(24c44db0-55d1-49ae-a5cc-f13815e36363),
960 pointer_default(unique),
961 local
963 interface IWMReaderAdvanced5 : IWMReaderAdvanced4
965 HRESULT SetPlayerHook(
966 [in] DWORD dwOutputNum,
967 [in] IWMPlayerHook *pHook);
971 object,
972 uuid(18a2e7f8-428f-4acd-8a00-e64639bc93de),
973 pointer_default(unique),
974 local
976 interface IWMReaderAdvanced6 : IWMReaderAdvanced5
978 HRESULT SetProtectStreamSamples(
979 [in, size_is(cbCertificate)] BYTE *pbCertificate,
980 [in] DWORD cbCertificate,
981 [in] DWORD dwCertificateType,
982 [in] DWORD dwFlags,
983 [out, size_is(*pcbInitializationVector)] BYTE *pbInitializationVector,
984 [in, out] DWORD *pcbInitializationVector);
988 object,
989 uuid(9397f121-7705-4dc9-b049-98b698188414),
990 pointer_default( unique ),
991 local
993 interface IWMSyncReader : IUnknown
995 HRESULT Open(
996 [in] const WCHAR *pwszFilename);
998 HRESULT Close();
1000 HRESULT SetRange(
1001 [in] QWORD cnsStartTime,
1002 [in] LONGLONG cnsDuration);
1004 HRESULT SetRangeByFrame(
1005 [in] WORD wStreamNum,
1006 [in] QWORD qwFrameNumber,
1007 [in] LONGLONG cFramesToRead);
1009 HRESULT GetNextSample(
1010 [in] WORD wStreamNum,
1011 [out] INSSBuffer **ppSample,
1012 [out] QWORD *pcnsSampleTime,
1013 [out] QWORD *pcnsDuration,
1014 [out] DWORD *pdwFlags,
1015 [out] DWORD *pdwOutputNum,
1016 [out] WORD *pwStreamNum);
1018 HRESULT SetStreamsSelected(
1019 [in] WORD cStreamCount,
1020 [in] WORD *pwStreamNumbers,
1021 [in] WMT_STREAM_SELECTION *pSelections);
1023 HRESULT GetStreamSelected(
1024 [in] WORD wStreamNum,
1025 [out] WMT_STREAM_SELECTION *pSelection);
1027 HRESULT SetReadStreamSamples(
1028 [in] WORD wStreamNum,
1029 [in] BOOL fCompressed);
1031 HRESULT GetReadStreamSamples(
1032 [in] WORD wStreamNum,
1033 [out] BOOL *pfCompressed);
1035 HRESULT GetOutputSetting(
1036 [in] DWORD dwOutputNum,
1037 [in] LPCWSTR pszName,
1038 [out] WMT_ATTR_DATATYPE *pType,
1039 [out, size_is(*pcbLength)] BYTE *pValue,
1040 [in, out] WORD *pcbLength);
1042 HRESULT SetOutputSetting(
1043 [in] DWORD dwOutputNum,
1044 [in] LPCWSTR pszName,
1045 [in] WMT_ATTR_DATATYPE Type,
1046 [in, size_is(cbLength)] const BYTE *pValue,
1047 [in] WORD cbLength);
1049 HRESULT GetOutputCount(
1050 [out] DWORD *pcOutputs);
1052 HRESULT GetOutputProps(
1053 [in] DWORD dwOutputNum,
1054 [out] IWMOutputMediaProps **ppOutput);
1056 HRESULT SetOutputProps(
1057 [in] DWORD dwOutputNum,
1058 [in] IWMOutputMediaProps *pOutput);
1060 HRESULT GetOutputFormatCount(
1061 [in] DWORD dwOutputNum,
1062 [out] DWORD *pcFormats);
1064 HRESULT GetOutputFormat(
1065 [in] DWORD dwOutputNum,
1066 [in] DWORD dwFormatNum,
1067 [out] IWMOutputMediaProps **ppProps);
1069 HRESULT GetOutputNumberForStream(
1070 [in] WORD wStreamNum,
1071 [out] DWORD *pdwOutputNum);
1073 HRESULT GetStreamNumberForOutput(
1074 [in] DWORD dwOutputNum,
1075 [out] WORD *pwStreamNum);
1077 HRESULT GetMaxOutputSampleSize(
1078 [in] DWORD dwOutput,
1079 [out] DWORD *pcbMax);
1081 HRESULT GetMaxStreamSampleSize(
1082 [in] WORD wStream,
1083 [out] DWORD *pcbMax);
1085 HRESULT OpenStream(
1086 [in] IStream *pStream);
1090 object,
1091 uuid(9f762fa7-a22e-428d-93c9-ac82f3aafe5a),
1092 pointer_default( unique ),
1093 local
1095 interface IWMReaderAllocatorEx : IUnknown
1097 HRESULT AllocateForStreamEx(
1098 [in] WORD wStreamNum,
1099 [in] DWORD cbBuffer,
1100 [out] INSSBuffer **ppBuffer,
1101 [in] DWORD dwFlags,
1102 [in] QWORD cnsSampleTime,
1103 [in] QWORD cnsSampleDuration,
1104 [in] void *pvContext);
1106 HRESULT AllocateForOutputEx(
1107 [in] DWORD output,
1108 [in] DWORD cbBuffer,
1109 [out] INSSBuffer **ppBuffer,
1110 [in] DWORD dwFlags,
1111 [in] QWORD cnsSampleTime,
1112 [in] QWORD cnsSampleDuration,
1113 [in] void *pvContext);
1117 object,
1118 uuid(faed3d21-1b6b-4af7-8cb6-3e189bbc187b),
1119 pointer_default( unique ),
1120 local
1122 interface IWMSyncReader2 : IWMSyncReader
1124 HRESULT SetRangeByTimecode(
1125 [in] WORD wStreamNum,
1126 [in] WMT_TIMECODE_EXTENSION_DATA *pStart,
1127 [in] WMT_TIMECODE_EXTENSION_DATA *pEnd);
1129 HRESULT SetRangeByFrameEx(
1130 [in] WORD wStreamNum,
1131 [in] QWORD qwFrameNumber,
1132 [in] LONGLONG cFramesToRead,
1133 [out] QWORD *pcnsStartTime);
1135 HRESULT SetAllocateForOutput(
1136 [in] DWORD dwOutputNum,
1137 [in] IWMReaderAllocatorEx *pAllocator);
1139 HRESULT GetAllocateForOutput(
1140 [in] DWORD dwOutputNum,
1141 [out] IWMReaderAllocatorEx **ppAllocator);
1143 HRESULT SetAllocateForStream(
1144 [in] DWORD dwStreamNum,
1145 [in] IWMReaderAllocatorEx *pAllocator);
1147 HRESULT GetAllocateForStream(
1148 [in] DWORD dwStreamNum,
1149 [out] IWMReaderAllocatorEx **ppAllocator);
1153 object,
1154 uuid(96406bd5-2b2b-11d3-b36b-00c04f6108ff),
1155 pointer_default(unique),
1156 local
1158 interface IWMInputMediaProps : IWMMediaProps
1160 HRESULT GetConnectionName(
1161 [out, size_is(*pcchName)] WCHAR *pwszName,
1162 [in, out] WORD *pcchName);
1164 HRESULT GetGroupName(
1165 [out, size_is(*pcchName)] WCHAR *pwszName,
1166 [in, out] WORD *pcchName);
1170 object,
1171 uuid(96406be4-2b2b-11d3-b36b-00c04f6108ff),
1172 pointer_default(unique),
1173 local
1175 interface IWMWriterSink : IUnknown
1177 HRESULT OnHeader(
1178 [in] INSSBuffer *pHeader);
1180 HRESULT IsRealTime(
1181 [out] BOOL *pfRealTime);
1183 HRESULT AllocateDataUnit(
1184 [in] DWORD cbDataUnit,
1185 [out] INSSBuffer **ppDataUnit);
1187 HRESULT OnDataUnit(
1188 [in] INSSBuffer *pDataUnit);
1190 HRESULT OnEndWriting();
1194 object,
1195 uuid(96406bd4-2b2b-11d3-b36b-00c04f6108ff),
1196 pointer_default(unique),
1197 local
1199 interface IWMWriter : IUnknown
1201 HRESULT SetProfileByID(
1202 [in] REFGUID guidProfile);
1204 HRESULT SetProfile(
1205 [in] IWMProfile *pProfile);
1207 HRESULT SetOutputFilename(
1208 [in] const WCHAR *pwszFilename);
1210 HRESULT GetInputCount(
1211 [out] DWORD *pcInputs);
1213 HRESULT GetInputProps(
1214 [in] DWORD dwInputNum,
1215 [out] IWMInputMediaProps **ppInput);
1217 HRESULT SetInputProps(
1218 [in] DWORD dwInputNum,
1219 [in] IWMInputMediaProps *pInput);
1221 HRESULT GetInputFormatCount(
1222 [in] DWORD dwInputNumber,
1223 [out] DWORD *pcFormats);
1225 HRESULT GetInputFormat(
1226 [in] DWORD dwInputNumber,
1227 [in] DWORD dwFormatNumber,
1228 [out] IWMInputMediaProps **pProps);
1230 HRESULT BeginWriting();
1232 HRESULT EndWriting();
1234 HRESULT AllocateSample(
1235 [in] DWORD dwSampleSize,
1236 [out] INSSBuffer **ppSample);
1238 HRESULT WriteSample(
1239 [in] DWORD dwInputNum,
1240 [in] QWORD cnsSampleTime,
1241 [in] DWORD dwFlags,
1242 [in] INSSBuffer *pSample);
1244 HRESULT Flush();
1248 object,
1249 uuid(96406be3-2b2b-11d3-b36b-00C04f6108ff),
1250 pointer_default(unique),
1251 local
1253 interface IWMWriterAdvanced : IUnknown
1255 HRESULT GetSinkCount(
1256 [out] DWORD *pcSinks);
1258 HRESULT GetSink(
1259 [in] DWORD dwSinkNum,
1260 [out] IWMWriterSink **ppSink);
1262 HRESULT AddSink(
1263 [in] IWMWriterSink *pSink);
1265 HRESULT RemoveSink(
1266 [in] IWMWriterSink *pSink);
1268 HRESULT WriteStreamSample(
1269 [in] WORD wStreamNum,
1270 [in] QWORD cnsSampleTime,
1271 [in] DWORD msSampleSendTime,
1272 [in] QWORD cnsSampleDuration,
1273 [in] DWORD dwFlags,
1274 [in] INSSBuffer *pSample);
1276 HRESULT SetLiveSource(
1277 BOOL fIsLiveSource);
1279 HRESULT IsRealTime(
1280 [out] BOOL *pfRealTime);
1282 HRESULT GetWriterTime(
1283 [out] QWORD *pCurrentTime);
1285 HRESULT GetStatistics(
1286 [in] WORD wStreamNum,
1287 [out] WM_WRITER_STATISTICS *pStats);
1289 HRESULT SetSyncTolerance(
1290 [in] DWORD msWindow);
1292 HRESULT GetSyncTolerance(
1293 [out] DWORD *pmsWindow);
1297 object,
1298 uuid(962dc1ec-c046-4db8-9cc7-26ceae500817),
1299 pointer_default(unique),
1300 local
1302 interface IWMWriterAdvanced2 : IWMWriterAdvanced
1304 HRESULT GetInputSetting(
1305 [in] DWORD dwInputNum,
1306 [in] LPCWSTR pszName,
1307 [out] WMT_ATTR_DATATYPE *pType,
1308 [out, size_is(*pcbLength)] BYTE *pValue,
1309 [in, out] WORD *pcbLength);
1311 HRESULT SetInputSetting(
1312 [in] DWORD dwInputNum,
1313 [in] LPCWSTR pszName,
1314 [in] WMT_ATTR_DATATYPE Type,
1315 [in, size_is(cbLength)] const BYTE *pValue,
1316 [in] WORD cbLength);
1320 object,
1321 uuid(2cd6492d-7c37-4e76-9d3b-59261183a22e),
1322 pointer_default(unique),
1323 local
1325 interface IWMWriterAdvanced3 : IWMWriterAdvanced2
1327 HRESULT GetStatisticsEx(
1328 [in] WORD wStreamNum,
1329 [out] WM_WRITER_STATISTICS_EX *pStats);
1331 HRESULT SetNonBlocking();
1335 object,
1336 uuid(96406bda-2b2b-11d3-b36b-00c04f6108ff),
1337 pointer_default(unique),
1338 local
1340 interface IWMHeaderInfo : IUnknown
1342 HRESULT GetAttributeCount(
1343 [in] WORD stream_num,
1344 [out] WORD *attributes );
1346 HRESULT GetAttributeByIndex(
1347 [in] WORD index,
1348 [in, out] WORD *stream_num,
1349 [out, size_is( *name_len )] WCHAR *name,
1350 [in, out] WORD *name_len,
1351 [out] WMT_ATTR_DATATYPE *type,
1352 [out, size_is( *length )] BYTE *value,
1353 [in, out] WORD *length );
1355 HRESULT GetAttributeByName(
1356 [in, out] WORD *stream_num,
1357 [in] LPCWSTR name,
1358 [out] WMT_ATTR_DATATYPE *type,
1359 [out, size_is( *length )] BYTE *value,
1360 [in, out] WORD *length );
1362 HRESULT SetAttribute(
1363 [in] WORD stream_num,
1364 [in] LPCWSTR name,
1365 [in] WMT_ATTR_DATATYPE type,
1366 [in, size_is( length )] const BYTE *value,
1367 [in] WORD length );
1369 HRESULT GetMarkerCount(
1370 [out] WORD *markers );
1372 HRESULT GetMarker(
1373 [in] WORD index,
1374 [out, size_is( *marker_len )] WCHAR *marker_name,
1375 [in, out] WORD *marker_len,
1376 [out] QWORD *marker_time );
1378 HRESULT AddMarker(
1379 [in] LPCWSTR_WMSDK_TYPE_SAFE marker_name,
1380 [in] QWORD marker_time );
1382 HRESULT RemoveMarker(
1383 [in] WORD index );
1385 HRESULT GetScriptCount(
1386 [out] WORD *scripts );
1388 HRESULT GetScript(
1389 [in] WORD index,
1390 [out, size_is( *type_len )] WCHAR *type,
1391 [in, out] WORD *type_len,
1392 [out, size_is( *command_len )] WCHAR *command,
1393 [in, out] WORD *command_len,
1394 [out] QWORD *script_time );
1396 HRESULT AddScript(
1397 [in] LPCWSTR_WMSDK_TYPE_SAFE type,
1398 [in] LPCWSTR_WMSDK_TYPE_SAFE command,
1399 [in] QWORD script_time );
1401 HRESULT RemoveScript(
1402 [in] WORD index );
1406 object,
1407 uuid(15cf9781-454e-482e-b393-85fae487a810),
1408 pointer_default(unique),
1409 local
1411 interface IWMHeaderInfo2 : IWMHeaderInfo
1413 HRESULT GetCodecInfoCount(
1414 [out] DWORD *codec_infos );
1416 HRESULT GetCodecInfo(
1417 [in] DWORD index,
1418 [in, out] WORD *name_len,
1419 [out, size_is( *name_len )] WCHAR *name,
1420 [in, out] WORD *description_len,
1421 [out, size_is( *description_len )] WCHAR *description,
1422 [out] WMT_CODEC_INFO_TYPE *codec_type,
1423 [in, out] WORD *codec_info_cnt,
1424 [out, size_is( *codec_info_cnt )] BYTE *codec_info );
1428 object,
1429 uuid(15cc68e3-27cc-4ecd-b222-3f5d02d80bd5),
1430 pointer_default(unique),
1431 local
1433 interface IWMHeaderInfo3 : IWMHeaderInfo2
1435 HRESULT GetAttributeCountEx(
1436 [in] WORD stream_num,
1437 [out] WORD *attributes );
1439 HRESULT GetAttributeIndices(
1440 [in] WORD stream_num,
1441 [in] LPCWSTR name,
1442 [in] WORD *lang_index,
1443 [out, size_is( *count )] WORD *indices,
1444 [in, out] WORD *count );
1446 HRESULT GetAttributeByIndexEx(
1447 [in] WORD stream_num,
1448 [in] WORD index,
1449 [out, size_is( *name_len )] LPWSTR name,
1450 [in, out] WORD *name_len,
1451 [out] WMT_ATTR_DATATYPE *type,
1452 [out] WORD *lang_index,
1453 [out, size_is( *data_len )] BYTE *value,
1454 [in, out] DWORD *data_len );
1456 HRESULT ModifyAttribute(
1457 [in] WORD stream_num,
1458 [in] WORD index,
1459 [in] WMT_ATTR_DATATYPE type,
1460 [in] WORD lang_index,
1461 [in, size_is( length )] const BYTE *value,
1462 [in] DWORD length );
1464 HRESULT AddAttribute(
1465 [in] WORD stream_num,
1466 [in] LPCWSTR name,
1467 [out] WORD *index,
1468 [in] WMT_ATTR_DATATYPE type,
1469 [in] WORD lang_index,
1470 [in, size_is( length )] const BYTE *value,
1471 [in] DWORD length );
1473 HRESULT DeleteAttribute(
1474 [in] WORD stream_num,
1475 [in] WORD index );
1477 HRESULT AddCodecInfo(
1478 [in] LPCWSTR_WMSDK_TYPE_SAFE name,
1479 [in] LPCWSTR_WMSDK_TYPE_SAFE description,
1480 [in] WMT_CODEC_INFO_TYPE codec_type,
1481 [in] WORD codec_info_cnt,
1482 [in, size_is( codec_info_cnt )] BYTE *codec_info );
1486 object,
1487 uuid(96406bec-2b2b-11d3-b36b-00c04f6108ff),
1488 pointer_default(unique),
1489 local
1491 interface IWMReaderNetworkConfig : IUnknown
1493 HRESULT GetBufferingTime([out] QWORD *buffering_time);
1494 HRESULT SetBufferingTime([in] QWORD buffering_time);
1496 HRESULT GetUDPPortRanges(
1497 [out, size_is( *ranges )] WM_PORT_NUMBER_RANGE *array,
1498 [in, out] DWORD *ranges);
1500 HRESULT SetUDPPortRanges(
1501 [in, size_is( ranges )] WM_PORT_NUMBER_RANGE *array,
1502 [in] DWORD ranges);
1504 HRESULT GetProxySettings(
1505 [in] const WCHAR *protocol,
1506 [out] WMT_PROXY_SETTINGS *proxy);
1508 HRESULT SetProxySettings(
1509 [in] LPCWSTR protocol,
1510 [in] WMT_PROXY_SETTINGS proxy);
1512 HRESULT GetProxyHostName(
1513 [in] const WCHAR *protocol,
1514 [out, size_is( *size )] WCHAR *hostname,
1515 [in, out] DWORD *size);
1517 HRESULT SetProxyHostName(
1518 [in] const WCHAR *protocol,
1519 [in] const WCHAR *hostname);
1521 HRESULT GetProxyPort(
1522 [in] const WCHAR *protocol,
1523 [out] DWORD *port);
1525 HRESULT SetProxyPort(
1526 [in] const WCHAR *protocol,
1527 [in] DWORD port);
1529 HRESULT GetProxyExceptionList(
1530 [in] const WCHAR *protocol,
1531 [out, size_is( *count )] WCHAR *exceptions,
1532 [in, out] DWORD *count);
1534 HRESULT SetProxyExceptionList(
1535 [in] const WCHAR *protocol,
1536 [in] const WCHAR *exceptions);
1538 HRESULT GetProxyBypassForLocal(
1539 [in] const WCHAR *protocol,
1540 [out] BOOL *bypass);
1542 HRESULT SetProxyBypassForLocal(
1543 [in] const WCHAR *protocol,
1544 [in] BOOL bypass);
1546 HRESULT GetForceRerunAutoProxyDetection([out] BOOL *detection);
1547 HRESULT SetForceRerunAutoProxyDetection([in] BOOL detection);
1549 HRESULT GetEnableMulticast([out] BOOL *multicast);
1550 HRESULT SetEnableMulticast([in] BOOL multicast);
1552 HRESULT GetEnableHTTP([out] BOOL *enable);
1553 HRESULT SetEnableHTTP([in] BOOL enable);
1555 HRESULT GetEnableUDP([out] BOOL *enable);
1556 HRESULT SetEnableUDP([in] BOOL enable);
1558 HRESULT GetEnableTCP([out] BOOL *enable);
1559 HRESULT SetEnableTCP([in] BOOL enable);
1561 HRESULT ResetProtocolRollover();
1563 HRESULT GetConnectionBandwidth([out] DWORD *bandwidth);
1564 HRESULT SetConnectionBandwidth([in] DWORD bandwidth);
1566 HRESULT GetNumProtocolsSupported([out] DWORD *protocols);
1568 HRESULT GetSupportedProtocolName(
1569 [in] DWORD protocol_num,
1570 [out, size_is( *size )] WCHAR *protocol,
1571 [in, out] DWORD *size);
1573 HRESULT AddLoggingUrl([in] const WCHAR *url);
1575 HRESULT GetLoggingUrl(
1576 [in] DWORD index,
1577 [out, size_is( *size )] WCHAR *url,
1578 [in, out] DWORD *size);
1580 HRESULT GetLoggingUrlCount([out] DWORD *count);
1582 HRESULT ResetLoggingUrlList();
1586 object,
1587 uuid(d979a853-042b-4050-8387-c939db22013f),
1588 pointer_default(unique),
1589 local
1591 interface IWMReaderNetworkConfig2 : IWMReaderNetworkConfig
1593 HRESULT GetEnableContentCaching([out] BOOL *enable);
1594 HRESULT SetEnableContentCaching([in] BOOL enable);
1596 HRESULT GetEnableFastCache([out] BOOL *enable);
1597 HRESULT SetEnableFastCache([in] BOOL enable);
1599 HRESULT GetAcceleratedStreamingDuration([out] QWORD *duration);
1600 HRESULT SetAcceleratedStreamingDuration([in] QWORD duration);
1602 HRESULT GetAutoReconnectLimit([out] DWORD *limit);
1603 HRESULT SetAutoReconnectLimit([in] DWORD limit);
1605 HRESULT GetEnableResends([out] BOOL *enable);
1606 HRESULT SetEnableResends([in] BOOL enable);
1608 HRESULT GetEnableThinning([out] BOOL *enable);
1609 HRESULT SetEnableThinning([in] BOOL enable);
1611 HRESULT GetMaxNetPacketSize([out] DWORD *packet_size);
1615 object,
1616 uuid(96406bed-2b2b-11d3-b36b-00c04f6108ff),
1617 pointer_default(unique),
1618 local
1621 interface IWMReaderStreamClock : IUnknown
1623 HRESULT GetTime([in] QWORD *now);
1625 HRESULT SetTimer([in] QWORD when,
1626 [in] void *param,
1627 [out] DWORD *id);
1629 HRESULT KillTimer([in] DWORD id);
1633 object,
1634 uuid(cdfb97ab-188f-40b3-b643-5b7903975c59),
1635 pointer_default(unique),
1636 local
1638 interface IWMPacketSize : IUnknown
1640 HRESULT GetMaxPacketSize([out] DWORD *size);
1641 HRESULT SetMaxPacketSize([in] DWORD size);
1645 object,
1646 uuid(8bfc2b9e-b646-4233-a877-1c6a079669dc),
1647 pointer_default(unique),
1648 local
1650 interface IWMPacketSize2 : IWMPacketSize
1652 HRESULT GetMinPacketSize([out] DWORD *size);
1653 HRESULT SetMinPacketSize([in] DWORD size);
1657 object,
1658 uuid(d2827540-3ee7-432c-b14c-dc17f085d3b3),
1659 pointer_default(unique),
1660 local
1662 interface IWMDRMReader : IUnknown
1664 HRESULT AcquireLicense([in] DWORD flags);
1665 HRESULT CancelLicenseAcquisition();
1667 HRESULT Individualize([in] DWORD flags);
1668 HRESULT CancelIndividualization();
1670 HRESULT MonitorLicenseAcquisition();
1671 HRESULT CancelMonitorLicenseAcquisition();
1673 HRESULT SetDRMProperty(
1674 [in] const WCHAR *name,
1675 [in] WMT_ATTR_DATATYPE type,
1676 [in, size_is( length )] const BYTE *value,
1677 [in] WORD length);
1679 HRESULT GetDRMProperty(
1680 [in] const WCHAR *name,
1681 [out] WMT_ATTR_DATATYPE *type,
1682 [out, size_is( *length )] BYTE *value,
1683 [in, out] WORD *length);
1687 object,
1688 uuid(befe7a75-9f1d-4075-b9d9-a3c37bda49a0),
1689 pointer_default(unique),
1690 local
1692 interface IWMDRMReader2 : IWMDRMReader
1694 HRESULT SetEvaluateOutputLevelLicenses([in] BOOL evaluate);
1695 HRESULT GetPlayOutputLevels(
1696 [out, size_is( *length )] DRM_PLAY_OPL *play,
1697 [in, out] DWORD *length,
1698 [out] DWORD *level);
1700 HRESULT GetCopyOutputLevels(
1701 [out, size_is( *length )] DRM_COPY_OPL *copy,
1702 [in, out] DWORD *length,
1703 [out] DWORD *level);
1705 HRESULT TryNextLicense();
1709 object,
1710 uuid(e08672de-f1e7-4ff4-a0a3-fc4b08e4caf8),
1711 pointer_default(unique),
1712 local
1714 interface IWMDRMReader3 : IWMDRMReader2
1716 HRESULT GetInclusionList(
1717 [out] GUID **guids,
1718 [out] DWORD *count);
1722 object,
1723 uuid(bddc4d08-944d-4d52-a612-46c3fda07dd4),
1724 pointer_default( unique ),
1725 local
1727 interface IWMReaderAccelerator : IUnknown
1729 HRESULT GetCodecInterface(
1730 [in] DWORD output,
1731 [in] REFIID riid,
1732 [out] void **codec);
1734 HRESULT Notify(
1735 [in] DWORD output,
1736 [in] WM_MEDIA_TYPE *subtype);
1740 object,
1741 uuid(f369e2f0-e081-4fe6-8450-b810b2f410d1),
1742 pointer_default(unique),
1743 local
1745 interface IWMReaderTimecode : IUnknown
1747 HRESULT GetTimecodeRangeCount(
1748 [in] WORD num,
1749 [out] WORD *count);
1751 HRESULT GetTimecodeRangeBounds(
1752 [in] WORD stream,
1753 [in] WORD range,
1754 [out] DWORD *start_timecode,
1755 [out] DWORD *end_timecode);
1759 object,
1760 uuid(fdbe5592-81a1-41ea-93bd-735cad1adc05),
1761 pointer_default(unique),
1762 local
1764 interface IWMReaderTypeNegotiation : IUnknown
1766 HRESULT TryOutputProps(
1767 [in] DWORD output,
1768 [in] IWMOutputMediaProps *props);
1772 object,
1773 uuid(df683f00-2d49-4d8e-92b7-fb19f6a0dc57),
1774 pointer_default(unique),
1775 local
1777 interface IWMLanguageList : IUnknown
1779 HRESULT GetLanguageCount(
1780 [out] WORD *count);
1782 HRESULT GetLanguageDetails(
1783 [in] WORD index,
1784 [out, size_is( *length )] WCHAR *language,
1785 [in, out] WORD *length);
1787 HRESULT AddLanguageByRFC1766String(
1788 [in] LPCWSTR_WMSDK_TYPE_SAFE language,
1789 [out] WORD *index);
1793 object,
1794 uuid(f28c0300-9baa-4477-a846-1744d9cbf533),
1795 pointer_default(unique),
1796 local
1798 interface IWMReaderPlaylistBurn : IUnknown
1800 HRESULT InitPlaylistBurn(
1801 [in] DWORD count,
1802 [in] LPCWSTR_WMSDK_TYPE_SAFE *filenames,
1803 [in] IWMStatusCallback *callback,
1804 [in] void *context);
1806 HRESULT GetInitResults(
1807 [in] DWORD count,
1808 [out] HRESULT *stat);
1810 HRESULT Cancel();
1812 HRESULT EndPlaylistBurn([in] HRESULT result);
1816 object,
1817 uuid(72995a79-5090-42a4-9c8c-d9d0b6d34be5),
1818 pointer_default(unique),
1819 local
1821 interface IWMPropertyVault : IUnknown
1823 HRESULT GetPropertyCount([in] DWORD *count);
1825 HRESULT GetPropertyByName(
1826 [in] const WCHAR *name,
1827 [out] WMT_ATTR_DATATYPE *type,
1828 [out, size_is( *size )] BYTE *value,
1829 [in, out] DWORD *size);
1831 HRESULT SetProperty(
1832 [in] const WCHAR *name,
1833 [in] WMT_ATTR_DATATYPE type,
1834 [in] BYTE *value,
1835 [in] DWORD size);
1837 HRESULT GetPropertyByIndex(
1838 [in] DWORD index,
1839 [out, size_is( *pdwNameLen )] WCHAR *name,
1840 [in, out] DWORD *length,
1841 [out] WMT_ATTR_DATATYPE *type,
1842 [out, size_is( *size )] BYTE *value,
1843 [in, out] DWORD *size);
1845 HRESULT CopyPropertiesFrom([in] IWMPropertyVault *vault);
1847 HRESULT Clear();
1851 object,
1852 uuid(fc54a285-38c4-45b5-aa23-85b9f7cb424b),
1853 pointer_default(unique),
1854 local
1856 interface IWMWriterPreprocess : IUnknown
1858 HRESULT GetMaxPreprocessingPasses(
1859 [in] DWORD input,
1860 [in] DWORD flags,
1861 [out] DWORD *passes);
1863 HRESULT SetNumPreprocessingPasses(
1864 [in] DWORD input,
1865 [in] DWORD flags,
1866 [in] DWORD passes);
1868 HRESULT BeginPreprocessingPass(
1869 [in] DWORD input,
1870 [in] DWORD flags);
1872 HRESULT PreprocessSample(
1873 [in] DWORD input,
1874 [in] QWORD sample_time,
1875 [in] DWORD flags,
1876 [in] INSSBuffer *sample);
1878 HRESULT EndPreprocessingPass(
1879 [in] DWORD input,
1880 [in] DWORD flags);
1884 object,
1885 uuid(05e5ac9f-3fb6-4508-bb43-a4067ba1ebe8),
1886 pointer_default(unique),
1887 local
1889 interface IWMLicenseBackup : IUnknown
1891 HRESULT BackupLicenses(
1892 [in] DWORD dwFlags,
1893 [in] IWMStatusCallback *pCallback);
1895 HRESULT CancelLicenseBackup();
1899 object,
1900 uuid(c70b6334-a22e-4efb-a245-15e65a004a13),
1901 pointer_default(unique),
1902 local
1904 interface IWMLicenseRestore : IUnknown
1906 HRESULT RestoreLicenses(
1907 [in] DWORD dwFlags,
1908 [in] IWMStatusCallback *pCallback);
1910 HRESULT CancelLicenseRestore();
1914 object,
1915 local,
1916 uuid(6816dad3-2b4b-4c8e-8149-874c3483a753),
1918 interface IWMIStreamProps : IUnknown
1920 HRESULT GetProperty(const WCHAR *name, WMT_ATTR_DATATYPE *type, BYTE *value, DWORD *size);
1924 object,
1925 local,
1926 uuid(342e0eb7-e651-450c-975b-2ace2c90c48e),
1928 interface IWMCredentialCallback : IUnknown
1930 HRESULT AcquireCredentials(WCHAR *realm, WCHAR *site, WCHAR *username, DWORD username_size,
1931 WCHAR *password, DWORD password_size, HRESULT hr, DWORD *flags);
1934 cpp_quote("HRESULT WINAPI WMCheckURLExtension(LPCWSTR);")
1935 cpp_quote("HRESULT WINAPI WMCheckURLScheme(LPCWSTR);")
1936 cpp_quote("HRESULT WINAPI WMCreateWriter(IUnknown*,IWMWriter**);")
1937 cpp_quote("HRESULT WINAPI WMCreateReader(IUnknown*,DWORD,IWMReader**);")
1938 cpp_quote("HRESULT WINAPI WMCreateSyncReader(IUnknown*,DWORD,IWMSyncReader**);")
1939 cpp_quote("HRESULT WINAPI WMCreateEditor(IWMMetadataEditor**);")
1940 cpp_quote("HRESULT WINAPI WMCreateBackupRestorer(IUnknown*,IWMLicenseBackup**);")
1941 cpp_quote("HRESULT WINAPI WMCreateProfileManager(IWMProfileManager**);")
1942 cpp_quote("HRESULT WINAPI WMIsContentProtected(const WCHAR*, BOOL*);")
1945 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_Base, 0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1946 cpp_quote("EXTERN_GUID(WMMEDIATYPE_Video, 0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1947 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB1, 0xe436eb78,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1948 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB4, 0xe436eb79,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1949 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB8, 0xe436eb7a,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1950 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB565, 0xe436eb7b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1951 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB555, 0xe436eb7c,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1952 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB24, 0xe436eb7d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1953 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB32, 0xe436eb7e,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1954 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_I420, 0x30323449,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1955 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_IYUV, 0x56555949,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1956 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YV12, 0x32315659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1957 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YUY2, 0x32595559,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1958 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_P422, 0x32323450,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1959 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_UYVY, 0x59565955,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1960 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YVYU, 0x55595659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1961 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YVU9, 0x39555659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1962 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_VIDEOIMAGE, 0x1d4a45f2,0xe5f6,0x4b44,0x83,0x88,0xf0,0xae,0x5c,0x0e,0x0c,0x37);")
1963 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MP43, 0x3334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1964 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MP4S, 0x5334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1965 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_M4S2, 0x3253344d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1966 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV1, 0x31564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1967 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV2, 0x32564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1968 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MSS1, 0x3153534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1969 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MPEG2_VIDEO, 0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea);")
1970 cpp_quote("EXTERN_GUID(WMMEDIATYPE_Audio, 0x73647561,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1971 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_PCM, 0x00000001,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1972 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_DRM, 0x00000009,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1973 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMAudioV9, 0x00000162,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1974 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMAudio_Lossless, 0x00000163,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1975 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MSS2, 0x3253534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1976 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMSP1, 0x0000000a,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1977 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMSP2, 0x0000000b,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1978 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV3, 0x33564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1979 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMVP, 0x50564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1980 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WVP2, 0x32505657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1981 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMVA, 0x41564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1982 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WVC1, 0x31435657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")