widl: Always check the runtimeclass interfaces presence.
[wine/zf.git] / include / wmsdkidl.idl
blob716abe056db104c65dd397cbaa971d222277a4e8
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 typedef enum WMT_ATTR_DATATYPE
86 WMT_TYPE_DWORD = 0,
87 WMT_TYPE_STRING = 1,
88 WMT_TYPE_BINARY = 2,
89 WMT_TYPE_BOOL = 3,
90 WMT_TYPE_QWORD = 4,
91 WMT_TYPE_WORD = 5,
92 WMT_TYPE_GUID = 6,
93 } WMT_ATTR_DATATYPE;
95 typedef enum WMT_STATUS
97 WMT_ERROR = 0,
98 WMT_OPENED = 1,
99 WMT_BUFFERING_START = 2,
100 WMT_BUFFERING_STOP = 3,
101 WMT_EOF = 4,
102 WMT_END_OF_FILE = 4,
103 WMT_END_OF_SEGMENT = 5,
104 WMT_END_OF_STREAMING = 6,
105 WMT_LOCATING = 7,
106 WMT_CONNECTING = 8,
107 WMT_NO_RIGHTS = 9,
108 WMT_MISSING_CODEC = 10,
109 WMT_STARTED = 11,
110 WMT_STOPPED = 12,
111 WMT_CLOSED = 13,
112 WMT_STRIDING = 14,
113 WMT_TIMER = 15,
114 WMT_INDEX_PROGRESS = 16,
115 WMT_SAVEAS_START = 17,
116 WMT_SAVEAS_STOP = 18,
117 WMT_NEW_SOURCEFLAGS = 19,
118 WMT_NEW_METADATA = 20,
119 WMT_BACKUPRESTORE_BEGIN = 21,
120 WMT_SOURCE_SWITCH = 22,
121 WMT_ACQUIRE_LICENSE = 23,
122 WMT_INDIVIDUALIZE = 24,
123 WMT_NEEDS_INDIVIDUALIZATION = 25,
124 WMT_NO_RIGHTS_EX = 26,
125 WMT_BACKUPRESTORE_END = 27,
126 WMT_BACKUPRESTORE_CONNECTING = 28,
127 WMT_BACKUPRESTORE_DISCONNECTING = 29,
128 WMT_ERROR_WITHURL = 30,
129 WMT_RESTRICTED_LICENSE = 31,
130 WMT_CLIENT_CONNECT = 32,
131 WMT_CLIENT_DISCONNECT = 33,
132 WMT_NATIVE_OUTPUT_PROPS_CHANGED = 34,
133 WMT_RECONNECT_START = 35,
134 WMT_RECONNECT_END = 36,
135 WMT_CLIENT_CONNECT_EX = 37,
136 WMT_CLIENT_DISCONNECT_EX = 38,
137 WMT_SET_FEC_SPAN = 39,
138 WMT_PREROLL_READY = 40,
139 WMT_PREROLL_COMPLETE = 41,
140 WMT_CLIENT_PROPERTIES = 42,
141 WMT_LICENSEURL_SIGNATURE_STATE = 43,
142 WMT_INIT_PLAYLIST_BURN = 44,
143 WMT_TRANSCRYPTOR_INIT = 45,
144 WMT_TRANSCRYPTOR_SEEKED = 46,
145 WMT_TRANSCRYPTOR_READ = 47,
146 WMT_TRANSCRYPTOR_CLOSED = 48,
147 WMT_PROXIMITY_RESULT = 49,
148 WMT_PROXIMITY_COMPLETED = 50,
149 WMT_CONTENT_ENABLER = 51
150 } WMT_STATUS;
152 typedef enum WMT_STREAM_SELECTION
154 WMT_OFF = 0,
155 WMT_CLEANPOINT_ONLY = 1,
156 WMT_ON = 2,
157 } WMT_STREAM_SELECTION;
159 typedef enum WMT_VERSION
161 WMT_VER_4_0 = 0x00040000,
162 WMT_VER_7_0 = 0x00070000,
163 WMT_VER_8_0 = 0x00080000,
164 WMT_VER_9_0 = 0x00090000
165 } WMT_VERSION;
167 typedef enum WMT_PLAY_MODE
169 WMT_PLAY_MODE_AUTOSELECT,
170 WMT_PLAY_MODE_LOCAL,
171 WMT_PLAY_MODE_DOWNLOAD,
172 WMT_PLAY_MODE_STREAMING
173 } WMT_PLAY_MODE;
175 typedef enum tagWMT_OFFSET_FORMAT
177 WMT_OFFSET_FORMAT_100NS,
178 WMT_OFFSET_FORMAT_FRAME_NUMBERS,
179 WMT_OFFSET_FORMAT_PLAYLIST_OFFSET,
180 WMT_OFFSET_FORMAT_TIMECODE,
181 WMT_OFFSET_FORMAT_100NS_APPROXIMATE
182 } WMT_OFFSET_FORMAT;
184 typedef enum WMT_CODEC_INFO_TYPE
186 WMT_CODECINFO_AUDIO = 0,
187 WMT_CODECINFO_VIDEO = 1,
188 WMT_CODECINFO_UNKNOWN = 0xFFFFFFFF,
189 } WMT_CODEC_INFO_TYPE;
191 typedef enum WMT_PROXY_SETTINGS
193 WMT_PROXY_SETTING_NONE = 0,
194 WMT_PROXY_SETTING_MANUAL = 1,
195 WMT_PROXY_SETTING_AUTO = 2,
196 WMT_PROXY_SETTING_BROWSER = 3,
197 WMT_PROXY_SETTING_MAX
198 } WMT_PROXY_SETTINGS;
200 typedef enum tagWMT_STORAGE_FORMAT
202 WMT_Storage_Format_MP3 = 0,
203 WMT_Storage_Format_V1 = 1
204 } WMT_STORAGE_FORMAT;
206 #include <pshpack2.h>
207 typedef struct _WMStreamPrioritizationRecord
209 WORD wStreamNumber;
210 BOOL fMandatory;
211 } WM_STREAM_PRIORITY_RECORD;
213 typedef struct _WMT_TIMECODE_EXTENSION_DATA
215 WORD wRange;
216 DWORD dwTimecode;
217 DWORD dwUserbits;
218 DWORD dwAmFlags;
219 } WMT_TIMECODE_EXTENSION_DATA;
220 #include <poppack.h>
222 typedef struct _WM_PORT_NUMBER_RANGE
224 WORD wPortBegin;
225 WORD wPortEnd;
226 } WM_PORT_NUMBER_RANGE;
228 typedef LPCWSTR LPCWSTR_WMSDK_TYPE_SAFE;
231 object,
232 uuid(6d7cdc70-9888-11d3-8edc-00c04f6109cf),
233 pointer_default(unique),
234 local
236 interface IWMStatusCallback : IUnknown
238 HRESULT OnStatus(
239 [in] WMT_STATUS Status,
240 [in] HRESULT hr,
241 [in] WMT_ATTR_DATATYPE dwType,
242 [in] BYTE *pValue,
243 [in] void *pvContext);
247 object,
248 uuid(96406bd8-2b2b-11d3-b36b-00c04f6108ff),
249 pointer_default(unique),
250 local
252 interface IWMReaderCallback : IWMStatusCallback
254 HRESULT OnSample(
255 [in] DWORD dwOutputNum,
256 [in] QWORD cnsSampleTime,
257 [in] QWORD cnsSampleDuration,
258 [in] DWORD dwFlags,
259 [in] INSSBuffer *pSample,
260 [in] void *pvContext);
264 object,
265 uuid(96406Bdd-2b2b-11d3-b36b-00c04f6108ff),
266 pointer_default(unique),
267 local
269 interface IWMStreamList : IUnknown
271 HRESULT GetStreams(
272 [out, size_is(*pcStreams)] WORD *pwStreamNumArray,
273 [in, out] WORD *pcStreams);
275 HRESULT AddStream([in] WORD wStreamNum);
276 HRESULT RemoveStream([in] WORD wStreamNum);
280 object,
281 uuid(96406Bde-2b2b-11d3-b36b-00c04f6108ff),
282 pointer_default(unique),
283 local
285 interface IWMMutualExclusion : IWMStreamList
287 HRESULT GetType([out] GUID *pguidType);
288 HRESULT SetType([in] REFGUID guidType);
292 object,
293 uuid(ad694af1-f8d9-42f8-bc47-70311b0c4f9e),
294 pointer_default(unique),
295 local
297 interface IWMBandwidthSharing : IWMStreamList
299 HRESULT GetType([out] GUID *guid);
300 HRESULT SetType([in] REFGUID guid);
302 HRESULT GetBandwidth(
303 [out] DWORD *bitrate,
304 [out] DWORD *buffer);
306 HRESULT SetBandwidth(
307 [in] DWORD bitrate,
308 [in] DWORD buffer);
312 object,
313 uuid(8c1c6090-f9a8-4748-8ec3-dd1108ba1e77),
314 pointer_default(unique),
315 local
317 interface IWMStreamPrioritization : IUnknown
319 HRESULT GetPriorityRecords(
320 [out] WM_STREAM_PRIORITY_RECORD *array,
321 [in, out] WORD *records);
323 HRESULT SetPriorityRecords(
324 [in] WM_STREAM_PRIORITY_RECORD *array,
325 [in] WORD records);
329 object,
330 uuid(96406Bdc-2b2b-11d3-b36b-00c04f6108ff),
331 pointer_default(unique),
332 local
334 interface IWMStreamConfig : IUnknown
336 HRESULT GetStreamType([out] GUID *pguidStreamType);
337 HRESULT GetStreamNumber([out] WORD *pwStreamNum);
338 HRESULT SetStreamNumber([in] WORD wStreamNum);
340 HRESULT GetStreamName(
341 [out, size_is(*pcchStreamName)] WCHAR *pwszStreamName,
342 [in, out] WORD *pcchStreamName);
344 HRESULT SetStreamName([in] LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName);
346 HRESULT GetConnectionName(
347 [out, size_is(*pcchInputName)] WCHAR *pwszInputName,
348 [in, out] WORD *pcchInputName);
350 HRESULT SetConnectionName([in] LPCWSTR_WMSDK_TYPE_SAFE pwszInputName);
351 HRESULT GetBitrate([out] DWORD *pdwBitrate);
352 HRESULT SetBitrate([in] DWORD pdwBitrate);
353 HRESULT GetBufferWindow([out] DWORD *pmsBufferWindow);
354 HRESULT SetBufferWindow([in] DWORD msBufferWindow);
358 object,
359 uuid(96406bdb-2b2b-11d3-b36b-00c04f6108ff),
360 pointer_default(unique),
361 local
363 interface IWMProfile : IUnknown
365 HRESULT GetVersion(
366 [out] WMT_VERSION *pdwVersion);
368 HRESULT GetName(
369 [out, size_is(*pcchName)] WCHAR *pwszName,
370 [in, out] DWORD *pcchName);
372 HRESULT SetName(
373 [in] const WCHAR *pwszName);
375 HRESULT GetDescription(
376 [out, size_is(*pcchDescription)] WCHAR *pwszDescription,
377 [in, out] DWORD *pcchDescription);
379 HRESULT SetDescription(
380 [in] const WCHAR *pwszDescription);
382 HRESULT GetStreamCount(
383 [out] DWORD *pcStreams);
385 HRESULT GetStream(
386 [in] DWORD dwStreamIndex,
387 [out] IWMStreamConfig **ppConfig);
389 HRESULT GetStreamByNumber(
390 [in] WORD wStreamNum,
391 [out] IWMStreamConfig **ppConfig);
393 HRESULT RemoveStream(
394 [in] IWMStreamConfig *pConfig);
396 HRESULT RemoveStreamByNumber(
397 [in] WORD wStreamNum);
399 HRESULT AddStream(
400 [in] IWMStreamConfig *pConfig);
402 HRESULT ReconfigStream(
403 [in] IWMStreamConfig *pConfig);
405 HRESULT CreateNewStream(
406 [in] REFGUID guidStreamType,
407 [out] IWMStreamConfig **ppConfig);
409 HRESULT GetMutualExclusionCount(
410 [out] DWORD *pcME);
412 HRESULT GetMutualExclusion(
413 [in] DWORD dwMEIndex,
414 [out] IWMMutualExclusion **ppME);
416 HRESULT RemoveMutualExclusion(
417 [in] IWMMutualExclusion *pME);
419 HRESULT AddMutualExclusion(
420 [in] IWMMutualExclusion *pME);
422 HRESULT CreateNewMutualExclusion(
423 [out] IWMMutualExclusion **ppME);
427 object,
428 uuid(07e72d33-d94e-4be7-8843-60ae5ff7e5f5),
429 pointer_default(unique),
430 local
432 interface IWMProfile2 : IWMProfile
434 HRESULT GetProfileID([out] GUID *guid);
438 object,
439 uuid(00ef96cc-a461-4546-8bcd-c9a28f0e06f5),
440 pointer_default(unique),
441 local
443 interface IWMProfile3 : IWMProfile2
445 HRESULT GetStorageFormat([out] WMT_STORAGE_FORMAT *storage);
446 HRESULT SetStorageFormat([in] WMT_STORAGE_FORMAT storage);
448 HRESULT GetBandwidthSharingCount([out] DWORD *count);
450 HRESULT GetBandwidthSharing(
451 [in] DWORD index,
452 [out] IWMBandwidthSharing **bandwidth);
454 HRESULT RemoveBandwidthSharing([in] IWMBandwidthSharing *bandwidth);
456 HRESULT AddBandwidthSharing([in] IWMBandwidthSharing *bandwidth);
458 HRESULT CreateNewBandwidthSharing([out] IWMBandwidthSharing **bandwidth);
460 HRESULT GetStreamPrioritization([out] IWMStreamPrioritization **stream);
462 HRESULT SetStreamPrioritization([in] IWMStreamPrioritization *stream);
464 HRESULT RemoveStreamPrioritization();
466 HRESULT CreateNewStreamPrioritization([out] IWMStreamPrioritization **stream);
468 HRESULT GetExpectedPacketCount(
469 [in] QWORD duration,
470 [out] QWORD *packets);
474 object,
475 uuid(d16679f2-6ca0-472d-8d31-2f5d55aee155),
476 pointer_default(unique),
477 local
479 interface IWMProfileManager : IUnknown
481 HRESULT CreateEmptyProfile(
482 [in] WMT_VERSION dwVersion,
483 [out] IWMProfile **ppProfile);
485 HRESULT LoadProfileByID(
486 [in] REFGUID guidProfile,
487 [out] IWMProfile **ppProfile);
489 HRESULT LoadProfileByData(
490 [in] const WCHAR *pwszProfile,
491 [out] IWMProfile **ppProfile);
493 HRESULT SaveProfile(
494 [in] IWMProfile *pIWMProfile,
495 [in] WCHAR *pwszProfile,
496 [in, out] DWORD *pdwLength);
498 HRESULT GetSystemProfileCount(
499 [out] DWORD *pcProfiles);
501 HRESULT LoadSystemProfile(
502 [in] DWORD dwProfileIndex,
503 [out] IWMProfile **ppProfile);
507 object,
508 uuid(7a924e51-73c1-494d-8019-23d37ed9b89a),
509 pointer_default(unique),
510 local
512 interface IWMProfileManager2 : IWMProfileManager
514 HRESULT GetSystemProfileVersion(WMT_VERSION *version);
515 HRESULT SetSystemProfileVersion(WMT_VERSION version);
518 cpp_quote("HRESULT WINAPI WMCreateProfileManager(IWMProfileManager**);")
521 object,
522 uuid(a970f41e-34de-4a98-b3ba-e4b3ca7528f0),
523 pointer_default(unique),
524 local
526 interface IWMCodecInfo : IUnknown
528 HRESULT GetCodecInfoCount(
529 [in] REFGUID guid,
530 [out] DWORD *count);
532 HRESULT GetCodecFormatCount(
533 [in] REFGUID guid,
534 [in] DWORD codecindex,
535 [out] DWORD *formatcount);
537 HRESULT GetCodecFormat(
538 [in] REFGUID guid,
539 [in] DWORD codecindex,
540 [in] DWORD formatindex,
541 [out] IWMStreamConfig **streamconfig);
545 object,
546 uuid(aa65e273-b686-4056-91ec-dd768d4df710),
547 pointer_default(unique),
548 local
550 interface IWMCodecInfo2 : IWMCodecInfo
552 HRESULT GetCodecName(
553 [in] REFGUID guid,
554 [in] DWORD codecindex,
555 [out, size_is(*namesize)] WCHAR *name,
556 [in, out] DWORD *namesize);
558 HRESULT GetCodecFormatDesc(
559 [in] REFGUID guid,
560 [in] DWORD codecindex,
561 [in] DWORD formatindex,
562 [out] IWMStreamConfig **streamconfig,
563 [out, size_is(*descrsize)] WCHAR *description,
564 [in, out] DWORD *descrsize);
568 object,
569 uuid(7e51f487-4d93-4f98-8ab4-27d0565adc51),
570 pointer_default(unique),
571 local
573 interface IWMCodecInfo3 : IWMCodecInfo2
575 HRESULT GetCodecFormatProp(
576 [in] REFGUID guid,
577 [in] DWORD codecindex,
578 [in] DWORD formatindex,
579 [in] const WCHAR *name,
580 [out] WMT_ATTR_DATATYPE *type,
581 [out, size_is(*size)] BYTE *value,
582 [in, out] DWORD *size);
584 HRESULT GetCodecProp(
585 [in] REFGUID guid,
586 [in] DWORD codecindex,
587 [in] const WCHAR *name,
588 [out] WMT_ATTR_DATATYPE *type,
589 [out, size_is(*size)] BYTE *value,
590 [in, out] DWORD *size);
592 HRESULT SetCodecEnumerationSetting(
593 [in] REFGUID guid,
594 [in] DWORD codecindex,
595 [in] const WCHAR *name,
596 [in] WMT_ATTR_DATATYPE type,
597 [in, size_is(size)] const BYTE *value,
598 [in] DWORD size);
600 HRESULT GetCodecEnumerationSetting(
601 [in] REFGUID guid,
602 [in] DWORD codecindex,
603 [in] const WCHAR *name,
604 [out] WMT_ATTR_DATATYPE *type,
605 [out, size_is(*size)] BYTE *value,
606 [in, out] DWORD *size);
609 cpp_quote("static const WCHAR g_wszNumPasses[] = {'_','P','A','S','S','E','S','U','S','E','D',0};")
610 cpp_quote("static const WCHAR g_wszVBREnabled[] = {'_','V','B','R','E','N','A','B','L','E','D',0};")
613 object,
614 uuid(96406bce-2b2b-11d3-b36b-00c04f6108ff),
615 pointer_default(unique),
616 local
618 interface IWMMediaProps : IUnknown
620 HRESULT GetType(
621 [out] GUID *pguidType);
623 HRESULT GetMediaType(
624 [out] WM_MEDIA_TYPE *pType,
625 [in, out] DWORD *pcbType);
627 HRESULT SetMediaType(
628 [in] WM_MEDIA_TYPE *pType);
632 object,
633 uuid(96406bd7-2b2b-11d3-b36b-00c04f6108ff),
634 pointer_default(unique),
635 local
637 interface IWMOutputMediaProps : IWMMediaProps
639 HRESULT GetStreamGroupName(
640 [out, size_is(*pcchName)] WCHAR *pwszName,
641 [in, out] WORD *pcchName);
643 HRESULT GetConnectionName(
644 [out, size_is(*pcchName)] WCHAR *pwszName,
645 [in, out] WORD *pcchName);
649 object,
650 uuid(96406bd9-2b2b-11d3-b36b-00c04f6108ff),
651 pointer_default(unique),
652 local
654 interface IWMMetadataEditor : IUnknown
656 HRESULT Open(
657 [in] const WCHAR *pwszFilename);
659 HRESULT Close();
661 HRESULT Flush();
665 object,
666 uuid(96406bd6-2b2b-11d3-b36b-00c04f6108ff),
667 pointer_default(unique),
668 local
670 interface IWMReader : IUnknown
672 HRESULT Open(
673 [in] const WCHAR *pwszURL,
674 [in] IWMReaderCallback *pCallback,
675 [in] void *pvContext);
677 HRESULT Close();
679 HRESULT GetOutputCount(
680 [out] DWORD *pcOutputs);
682 HRESULT GetOutputProps(
683 [in] DWORD dwOutputNum,
684 [out] IWMOutputMediaProps **ppOutput);
686 HRESULT SetOutputProps(
687 [in] DWORD dwOutputNum,
688 [in] IWMOutputMediaProps *pOutput);
690 HRESULT GetOutputFormatCount(
691 [in] DWORD dwOutputNumber,
692 [out] DWORD *pcFormats);
694 HRESULT GetOutputFormat(
695 [in] DWORD dwOutputNumber,
696 [in] DWORD dwFormatNumber,
697 [out] IWMOutputMediaProps** ppProps);
699 HRESULT Start(
700 [in] QWORD cnsStart,
701 [in] QWORD cnsDuration,
702 [in] float fRate,
703 [in] void *pvContext);
705 HRESULT Stop();
707 HRESULT Pause();
709 HRESULT Resume();
713 object,
714 uuid(e5b7ca9a-0f1c-4f66-9002-74ec50d8b304),
715 pointer_default(unique),
716 local
718 interface IWMPlayerHook : IUnknown
720 HRESULT PreDecode();
724 object,
725 uuid(96406bea-2b2b-11d3-b36b-00c04f6108ff),
726 pointer_default(unique),
727 local
729 interface IWMReaderAdvanced : IUnknown
731 HRESULT SetUserProvidedClock(
732 [in] BOOL fUserClock);
734 HRESULT GetUserProvidedClock(
735 [out] BOOL *pfUserClock);
737 HRESULT DeliverTime(
738 [in] QWORD cnsTime);
740 HRESULT SetManualStreamSelection(
741 [in] BOOL fSelection);
743 HRESULT GetManualStreamSelection(
744 [out] BOOL *pfSelection);
746 HRESULT SetStreamsSelected(
747 [in] WORD cStreamCount,
748 [in] WORD *pwStreamNumbers,
749 [in] WMT_STREAM_SELECTION *pSelections);
751 HRESULT GetStreamSelected(
752 [in] WORD wStreamNum,
753 [out] WMT_STREAM_SELECTION *pSelection);
755 HRESULT SetReceiveSelectionCallbacks(
756 [in] BOOL fGetCallbacks);
758 HRESULT GetReceiveSelectionCallbacks(
759 [out] BOOL *pfGetCallbacks);
761 HRESULT SetReceiveStreamSamples(
762 [in] WORD wStreamNum,
763 [in] BOOL fReceiveStreamSamples);
765 HRESULT GetReceiveStreamSamples(
766 [in] WORD wStreamNum,
767 [out] BOOL *pfReceiveStreamSamples);
769 HRESULT SetAllocateForOutput(
770 [in] DWORD dwOutputNum,
771 [in] BOOL fAllocate);
773 HRESULT GetAllocateForOutput(
774 [in] DWORD dwOutputNum,
775 [out] BOOL *pfAllocate);
777 HRESULT SetAllocateForStream(
778 [in] WORD wStreamNum,
779 [in] BOOL fAllocate);
781 HRESULT GetAllocateForStream(
782 [in] WORD dwStreamNum,
783 [out] BOOL *pfAllocate);
785 HRESULT GetStatistics(
786 [in, out] WM_READER_STATISTICS *pStatistics);
788 HRESULT SetClientInfo(
789 [in] WM_READER_CLIENTINFO *pClientInfo);
791 HRESULT GetMaxOutputSampleSize(
792 [in] DWORD dwOutput,
793 [out] DWORD *pcbMax);
795 HRESULT GetMaxStreamSampleSize(
796 [in] WORD wStream,
797 [out] DWORD *pcbMax);
799 HRESULT NotifyLateDelivery(
800 QWORD cnsLateness);
804 object,
805 uuid(ae14a945-b90c-4d0d-9127-80d665f7d73e),
806 pointer_default(unique),
807 local
809 interface IWMReaderAdvanced2 : IWMReaderAdvanced
811 HRESULT SetPlayMode(
812 [in] WMT_PLAY_MODE Mode);
814 HRESULT GetPlayMode(
815 [out] WMT_PLAY_MODE *pMode);
817 HRESULT GetBufferProgress(
818 [out] DWORD *pdwPercent,
819 [out] QWORD *pcnsBuffering);
821 HRESULT GetDownloadProgress(
822 [out] DWORD *pdwPercent,
823 [out] QWORD *pqwBytesDownloaded,
824 [out] QWORD *pcnsDownload);
826 HRESULT GetSaveAsProgress(
827 [out] DWORD *pdwPercent);
829 HRESULT SaveFileAs(
830 [in] const WCHAR *pwszFilename);
832 HRESULT GetProtocolName(
833 [out, size_is(*pcchProtocol)] WCHAR *pwszProtocol,
834 [in, out] DWORD *pcchProtocol);
836 HRESULT StartAtMarker(
837 [in] WORD wMarkerIndex,
838 [in] QWORD cnsDuration,
839 [in] float fRate,
840 [in] void *pvContext);
842 HRESULT GetOutputSetting(
843 [in] DWORD dwOutputNum,
844 [in] LPCWSTR pszName,
845 [out] WMT_ATTR_DATATYPE *pType,
846 [out, size_is(*pcbLength)] BYTE *pValue,
847 [in, out] WORD *pcbLength);
849 HRESULT SetOutputSetting(
850 [in] DWORD dwOutputNum,
851 [in] LPCWSTR pszName,
852 [in] WMT_ATTR_DATATYPE Type,
853 [in, size_is(cbLength)] const BYTE *pValue,
854 [in] WORD cbLength);
856 HRESULT Preroll(
857 [in] QWORD cnsStart,
858 [in] QWORD cnsDuration,
859 [in] float fRate);
861 HRESULT SetLogClientID(
862 [in] BOOL fLogClientID);
864 HRESULT GetLogClientID(
865 [out] BOOL *pfLogClientID);
867 HRESULT StopBuffering();
869 HRESULT OpenStream(
870 [in] IStream *pStream,
871 [in] IWMReaderCallback *pCallback,
872 [in] void *pvContext);
876 object,
877 uuid(5dc0674b-f04B-4a4e-9f2a-b1afde2c8100),
878 pointer_default(unique),
879 local
881 interface IWMReaderAdvanced3 : IWMReaderAdvanced2
883 HRESULT StopNetStreaming();
885 HRESULT StartAtPosition(
886 [in] WORD wStreamNum,
887 [in] void *pvOffsetStart,
888 [in] void *pvDuration,
889 [in] WMT_OFFSET_FORMAT dwOffsetFormat,
890 [in] float fRate,
891 [in] void *pvContext);
895 object,
896 uuid(945a76a2-12ae-4d48-bd3c-cd1d90399b85),
897 pointer_default(unique),
898 local
900 interface IWMReaderAdvanced4 : IWMReaderAdvanced3
902 HRESULT GetLanguageCount(
903 [in] DWORD dwOutputNum,
904 [out] WORD *pwLanguageCount);
906 HRESULT GetLanguage(
907 [in] DWORD dwOutputNum,
908 [in] WORD wLanguage,
909 [out, size_is(*pcchLanguageStringLength)] WCHAR *pwszLanguageString,
910 [in, out] WORD *pcchLanguageStringLength);
912 HRESULT GetMaxSpeedFactor(
913 [out] double *pdblFactor);
915 HRESULT IsUsingFastCache(
916 [out] BOOL *pfUsingFastCache);
918 HRESULT AddLogParam(
919 [in] LPCWSTR wszNameSpace,
920 [in] LPCWSTR wszName,
921 [in] LPCWSTR wszValue);
923 HRESULT SendLogParams();
925 HRESULT CanSaveFileAs(
926 [out] BOOL *pfCanSave);
928 HRESULT CancelSaveFileAs();
930 HRESULT GetURL(
931 [out, size_is(*pcchURL)] WCHAR *pwszURL,
932 [in, out] DWORD *pcchURL);
936 object,
937 uuid(24c44db0-55d1-49ae-a5cc-f13815e36363),
938 pointer_default(unique),
939 local
941 interface IWMReaderAdvanced5 : IWMReaderAdvanced4
943 HRESULT SetPlayerHook(
944 [in] DWORD dwOutputNum,
945 [in] IWMPlayerHook *pHook);
949 object,
950 uuid(18a2e7f8-428f-4acd-8a00-e64639bc93de),
951 pointer_default(unique),
952 local
954 interface IWMReaderAdvanced6 : IWMReaderAdvanced5
956 HRESULT SetProtectStreamSamples(
957 [in, size_is(cbCertificate)] BYTE *pbCertificate,
958 [in] DWORD cbCertificate,
959 [in] DWORD dwCertificateType,
960 [in] DWORD dwFlags,
961 [out, size_is(*pcbInitializationVector)] BYTE *pbInitializationVector,
962 [in, out] DWORD *pcbInitializationVector);
966 object,
967 uuid(9397f121-7705-4dc9-b049-98b698188414),
968 pointer_default( unique ),
969 local
971 interface IWMSyncReader : IUnknown
973 HRESULT Open(
974 [in] const WCHAR *pwszFilename);
976 HRESULT Close();
978 HRESULT SetRange(
979 [in] QWORD cnsStartTime,
980 [in] LONGLONG cnsDuration);
982 HRESULT SetRangeByFrame(
983 [in] WORD wStreamNum,
984 [in] QWORD qwFrameNumber,
985 [in] LONGLONG cFramesToRead);
987 HRESULT GetNextSample(
988 [in] WORD wStreamNum,
989 [out] INSSBuffer **ppSample,
990 [out] QWORD *pcnsSampleTime,
991 [out] QWORD *pcnsDuration,
992 [out] DWORD *pdwFlags,
993 [out] DWORD *pdwOutputNum,
994 [out] WORD *pwStreamNum);
996 HRESULT SetStreamsSelected(
997 [in] WORD cStreamCount,
998 [in] WORD *pwStreamNumbers,
999 [in] WMT_STREAM_SELECTION *pSelections);
1001 HRESULT GetStreamSelected(
1002 [in] WORD wStreamNum,
1003 [out] WMT_STREAM_SELECTION *pSelection);
1005 HRESULT SetReadStreamSamples(
1006 [in] WORD wStreamNum,
1007 [in] BOOL fCompressed);
1009 HRESULT GetReadStreamSamples(
1010 [in] WORD wStreamNum,
1011 [out] BOOL *pfCompressed);
1013 HRESULT GetOutputSetting(
1014 [in] DWORD dwOutputNum,
1015 [in] LPCWSTR pszName,
1016 [out] WMT_ATTR_DATATYPE *pType,
1017 [out, size_is(*pcbLength)] BYTE *pValue,
1018 [in, out] WORD *pcbLength);
1020 HRESULT SetOutputSetting(
1021 [in] DWORD dwOutputNum,
1022 [in] LPCWSTR pszName,
1023 [in] WMT_ATTR_DATATYPE Type,
1024 [in, size_is(cbLength)] const BYTE *pValue,
1025 [in] WORD cbLength);
1027 HRESULT GetOutputCount(
1028 [out] DWORD *pcOutputs);
1030 HRESULT GetOutputProps(
1031 [in] DWORD dwOutputNum,
1032 [out] IWMOutputMediaProps **ppOutput);
1034 HRESULT SetOutputProps(
1035 [in] DWORD dwOutputNum,
1036 [in] IWMOutputMediaProps *pOutput);
1038 HRESULT GetOutputFormatCount(
1039 [in] DWORD dwOutputNum,
1040 [out] DWORD *pcFormats);
1042 HRESULT GetOutputFormat(
1043 [in] DWORD dwOutputNum,
1044 [in] DWORD dwFormatNum,
1045 [out] IWMOutputMediaProps **ppProps);
1047 HRESULT GetOutputNumberForStream(
1048 [in] WORD wStreamNum,
1049 [out] DWORD *pdwOutputNum);
1051 HRESULT GetStreamNumberForOutput(
1052 [in] DWORD dwOutputNum,
1053 [out] WORD *pwStreamNum);
1055 HRESULT GetMaxOutputSampleSize(
1056 [in] DWORD dwOutput,
1057 [out] DWORD *pcbMax);
1059 HRESULT GetMaxStreamSampleSize(
1060 [in] WORD wStream,
1061 [out] DWORD *pcbMax);
1063 HRESULT OpenStream(
1064 [in] IStream *pStream);
1068 object,
1069 uuid(9f762fa7-a22e-428d-93c9-ac82f3aafe5a),
1070 pointer_default( unique ),
1071 local
1073 interface IWMReaderAllocatorEx : IUnknown
1075 HRESULT AllocateForStreamEx(
1076 [in] WORD wStreamNum,
1077 [in] DWORD cbBuffer,
1078 [out] INSSBuffer **ppBuffer,
1079 [in] DWORD dwFlags,
1080 [in] QWORD cnsSampleTime,
1081 [in] QWORD cnsSampleDuration,
1082 [in] void *pvContext);
1084 HRESULT AllocateForOutputEx(
1085 [in] WORD wOutputNum,
1086 [in] DWORD cbBuffer,
1087 [out] INSSBuffer **ppBuffer,
1088 [in] DWORD dwFlags,
1089 [in] QWORD cnsSampleTime,
1090 [in] QWORD cnsSampleDuration,
1091 [in] void *pvContext);
1095 object,
1096 uuid(faed3d21-1b6b-4af7-8cb6-3e189bbc187b),
1097 pointer_default( unique ),
1098 local
1100 interface IWMSyncReader2 : IWMSyncReader
1102 HRESULT SetRangeByTimecode(
1103 [in] WORD wStreamNum,
1104 [in] WMT_TIMECODE_EXTENSION_DATA *pStart,
1105 [in] WMT_TIMECODE_EXTENSION_DATA *pEnd);
1107 HRESULT SetRangeByFrameEx(
1108 [in] WORD wStreamNum,
1109 [in] QWORD qwFrameNumber,
1110 [in] LONGLONG cFramesToRead,
1111 [out] QWORD *pcnsStartTime);
1113 HRESULT SetAllocateForOutput(
1114 [in] DWORD dwOutputNum,
1115 [in] IWMReaderAllocatorEx *pAllocator);
1117 HRESULT GetAllocateForOutput(
1118 [in] DWORD dwOutputNum,
1119 [out] IWMReaderAllocatorEx **ppAllocator);
1121 HRESULT SetAllocateForStream(
1122 [in] DWORD dwStreamNum,
1123 [in] IWMReaderAllocatorEx *pAllocator);
1125 HRESULT GetAllocateForStream(
1126 [in] DWORD dwStreamNum,
1127 [out] IWMReaderAllocatorEx **ppAllocator);
1131 object,
1132 uuid(96406bd5-2b2b-11d3-b36b-00c04f6108ff),
1133 pointer_default(unique),
1134 local
1136 interface IWMInputMediaProps : IWMMediaProps
1138 HRESULT GetConnectionName(
1139 [out, size_is(*pcchName)] WCHAR *pwszName,
1140 [in, out] WORD *pcchName);
1142 HRESULT GetGroupName(
1143 [out, size_is(*pcchName)] WCHAR *pwszName,
1144 [in, out] WORD *pcchName);
1148 object,
1149 uuid(96406be4-2b2b-11d3-b36b-00c04f6108ff),
1150 pointer_default(unique),
1151 local
1153 interface IWMWriterSink : IUnknown
1155 HRESULT OnHeader(
1156 [in] INSSBuffer *pHeader);
1158 HRESULT IsRealTime(
1159 [out] BOOL *pfRealTime);
1161 HRESULT AllocateDataUnit(
1162 [in] DWORD cbDataUnit,
1163 [out] INSSBuffer **ppDataUnit);
1165 HRESULT OnDataUnit(
1166 [in] INSSBuffer *pDataUnit);
1168 HRESULT OnEndWriting();
1172 object,
1173 uuid(96406bd4-2b2b-11d3-b36b-00c04f6108ff),
1174 pointer_default(unique),
1175 local
1177 interface IWMWriter : IUnknown
1179 HRESULT SetProfileByID(
1180 [in] REFGUID guidProfile);
1182 HRESULT SetProfile(
1183 [in] IWMProfile *pProfile);
1185 HRESULT SetOutputFilename(
1186 [in] const WCHAR *pwszFilename);
1188 HRESULT GetInputCount(
1189 [out] DWORD *pcInputs);
1191 HRESULT GetInputProps(
1192 [in] DWORD dwInputNum,
1193 [out] IWMInputMediaProps **ppInput);
1195 HRESULT SetInputProps(
1196 [in] DWORD dwInputNum,
1197 [in] IWMInputMediaProps *pInput);
1199 HRESULT GetInputFormatCount(
1200 [in] DWORD dwInputNumber,
1201 [out] DWORD *pcFormats);
1203 HRESULT GetInputFormat(
1204 [in] DWORD dwInputNumber,
1205 [in] DWORD dwFormatNumber,
1206 [out] IWMInputMediaProps **pProps);
1208 HRESULT BeginWriting();
1210 HRESULT EndWriting();
1212 HRESULT AllocateSample(
1213 [in] DWORD dwSampleSize,
1214 [out] INSSBuffer **ppSample);
1216 HRESULT WriteSample(
1217 [in] DWORD dwInputNum,
1218 [in] QWORD cnsSampleTime,
1219 [in] DWORD dwFlags,
1220 [in] INSSBuffer *pSample);
1222 HRESULT Flush();
1226 object,
1227 uuid(96406be3-2b2b-11d3-b36b-00C04f6108ff),
1228 pointer_default(unique),
1229 local
1231 interface IWMWriterAdvanced : IUnknown
1233 HRESULT GetSinkCount(
1234 [out] DWORD *pcSinks);
1236 HRESULT GetSink(
1237 [in] DWORD dwSinkNum,
1238 [out] IWMWriterSink **ppSink);
1240 HRESULT AddSink(
1241 [in] IWMWriterSink *pSink);
1243 HRESULT RemoveSink(
1244 [in] IWMWriterSink *pSink);
1246 HRESULT WriteStreamSample(
1247 [in] WORD wStreamNum,
1248 [in] QWORD cnsSampleTime,
1249 [in] DWORD msSampleSendTime,
1250 [in] QWORD cnsSampleDuration,
1251 [in] DWORD dwFlags,
1252 [in] INSSBuffer *pSample);
1254 HRESULT SetLiveSource(
1255 BOOL fIsLiveSource);
1257 HRESULT IsRealTime(
1258 [out] BOOL *pfRealTime);
1260 HRESULT GetWriterTime(
1261 [out] QWORD *pCurrentTime);
1263 HRESULT GetStatistics(
1264 [in] WORD wStreamNum,
1265 [out] WM_WRITER_STATISTICS *pStats);
1267 HRESULT SetSyncTolerance(
1268 [in] DWORD msWindow);
1270 HRESULT GetSyncTolerance(
1271 [out] DWORD *pmsWindow);
1275 object,
1276 uuid(962dc1ec-c046-4db8-9cc7-26ceae500817),
1277 pointer_default(unique),
1278 local
1280 interface IWMWriterAdvanced2 : IWMWriterAdvanced
1282 HRESULT GetInputSetting(
1283 [in] DWORD dwInputNum,
1284 [in] LPCWSTR pszName,
1285 [out] WMT_ATTR_DATATYPE *pType,
1286 [out, size_is(*pcbLength)] BYTE *pValue,
1287 [in, out] WORD *pcbLength);
1289 HRESULT SetInputSetting(
1290 [in] DWORD dwInputNum,
1291 [in] LPCWSTR pszName,
1292 [in] WMT_ATTR_DATATYPE Type,
1293 [in, size_is(cbLength)] const BYTE *pValue,
1294 [in] WORD cbLength);
1298 object,
1299 uuid(2cd6492d-7c37-4e76-9d3b-59261183a22e),
1300 pointer_default(unique),
1301 local
1303 interface IWMWriterAdvanced3 : IWMWriterAdvanced2
1305 HRESULT GetStatisticsEx(
1306 [in] WORD wStreamNum,
1307 [out] WM_WRITER_STATISTICS_EX *pStats);
1309 HRESULT SetNonBlocking();
1313 object,
1314 uuid(96406bda-2b2b-11d3-b36b-00c04f6108ff),
1315 pointer_default(unique),
1316 local
1318 interface IWMHeaderInfo : IUnknown
1320 HRESULT GetAttributeCount(
1321 [in] WORD stream_num,
1322 [out] WORD *attributes );
1324 HRESULT GetAttributeByIndex(
1325 [in] WORD index,
1326 [in, out] WORD *stream_num,
1327 [out, size_is( *name_len )] WCHAR *name,
1328 [in, out] WORD *name_len,
1329 [out] WMT_ATTR_DATATYPE *type,
1330 [out, size_is( *length )] BYTE *value,
1331 [in, out] WORD *length );
1333 HRESULT GetAttributeByName(
1334 [in, out] WORD *stream_num,
1335 [in] LPCWSTR name,
1336 [out] WMT_ATTR_DATATYPE *type,
1337 [out, size_is( *length )] BYTE *value,
1338 [in, out] WORD *length );
1340 HRESULT SetAttribute(
1341 [in] WORD stream_num,
1342 [in] LPCWSTR name,
1343 [in] WMT_ATTR_DATATYPE type,
1344 [in, size_is( length )] const BYTE *value,
1345 [in] WORD length );
1347 HRESULT GetMarkerCount(
1348 [out] WORD *markers );
1350 HRESULT GetMarker(
1351 [in] WORD index,
1352 [out, size_is( *marker_len )] WCHAR *marker_name,
1353 [in, out] WORD *marker_len,
1354 [out] QWORD *marker_time );
1356 HRESULT AddMarker(
1357 [in] LPCWSTR_WMSDK_TYPE_SAFE marker_name,
1358 [in] QWORD marker_time );
1360 HRESULT RemoveMarker(
1361 [in] WORD index );
1363 HRESULT GetScriptCount(
1364 [out] WORD *scripts );
1366 HRESULT GetScript(
1367 [in] WORD index,
1368 [out, size_is( *type_len )] WCHAR *type,
1369 [in, out] WORD *type_len,
1370 [out, size_is( *command_len )] WCHAR *command,
1371 [in, out] WORD *command_len,
1372 [out] QWORD *script_time );
1374 HRESULT AddScript(
1375 [in] LPCWSTR_WMSDK_TYPE_SAFE type,
1376 [in] LPCWSTR_WMSDK_TYPE_SAFE command,
1377 [in] QWORD script_time );
1379 HRESULT RemoveScript(
1380 [in] WORD index );
1384 object,
1385 uuid(15cf9781-454e-482e-b393-85fae487a810),
1386 pointer_default(unique),
1387 local
1389 interface IWMHeaderInfo2 : IWMHeaderInfo
1391 HRESULT GetCodecInfoCount(
1392 [out] DWORD *codec_infos );
1394 HRESULT GetCodecInfo(
1395 [in] DWORD index,
1396 [in, out] WORD *name_len,
1397 [out, size_is( *name_len )] WCHAR *name,
1398 [in, out] WORD *description_len,
1399 [out, size_is( *description_len )] WCHAR *description,
1400 [out] WMT_CODEC_INFO_TYPE *codec_type,
1401 [in, out] WORD *codec_info_cnt,
1402 [out, size_is( *codec_info_cnt )] BYTE *codec_info );
1406 object,
1407 uuid(15cc68e3-27cc-4ecd-b222-3f5d02d80bd5),
1408 pointer_default(unique),
1409 local
1411 interface IWMHeaderInfo3 : IWMHeaderInfo2
1413 HRESULT GetAttributeCountEx(
1414 [in] WORD stream_num,
1415 [out] WORD *attributes );
1417 HRESULT GetAttributeIndices(
1418 [in] WORD stream_num,
1419 [in] LPCWSTR name,
1420 [in] WORD *lang_index,
1421 [out, size_is( *count )] WORD *indices,
1422 [in, out] WORD *count );
1424 HRESULT GetAttributeByIndexEx(
1425 [in] WORD stream_num,
1426 [in] WORD index,
1427 [out, size_is( *name_len )] LPWSTR name,
1428 [in, out] WORD *name_len,
1429 [out] WMT_ATTR_DATATYPE *type,
1430 [out] WORD *lang_index,
1431 [out, size_is( *data_len )] BYTE *value,
1432 [in, out] DWORD *data_len );
1434 HRESULT ModifyAttribute(
1435 [in] WORD stream_num,
1436 [in] WORD index,
1437 [in] WMT_ATTR_DATATYPE type,
1438 [in] WORD lang_index,
1439 [in, size_is( length )] const BYTE *value,
1440 [in] DWORD length );
1442 HRESULT AddAttribute(
1443 [in] WORD stream_num,
1444 [in] LPCWSTR name,
1445 [out] WORD *index,
1446 [in] WMT_ATTR_DATATYPE type,
1447 [in] WORD lang_index,
1448 [in, size_is( length )] const BYTE *value,
1449 [in] DWORD length );
1451 HRESULT DeleteAttribute(
1452 [in] WORD stream_num,
1453 [in] WORD index );
1455 HRESULT AddCodecInfo(
1456 [in] LPCWSTR_WMSDK_TYPE_SAFE name,
1457 [in] LPCWSTR_WMSDK_TYPE_SAFE description,
1458 [in] WMT_CODEC_INFO_TYPE codec_type,
1459 [in] WORD codec_info_cnt,
1460 [in, size_is( codec_info_cnt )] BYTE *codec_info );
1464 object,
1465 uuid(96406bec-2b2b-11d3-b36b-00c04f6108ff),
1466 pointer_default(unique),
1467 local
1469 interface IWMReaderNetworkConfig : IUnknown
1471 HRESULT GetBufferingTime([out] QWORD *buffering_time);
1472 HRESULT SetBufferingTime([in] QWORD buffering_time);
1474 HRESULT GetUDPPortRanges(
1475 [out, size_is( *ranges )] WM_PORT_NUMBER_RANGE *array,
1476 [in, out] DWORD *ranges);
1478 HRESULT SetUDPPortRanges(
1479 [in, size_is( ranges )] WM_PORT_NUMBER_RANGE *array,
1480 [in] DWORD ranges);
1482 HRESULT GetProxySettings(
1483 [in] const WCHAR *protocol,
1484 [out] WMT_PROXY_SETTINGS *proxy);
1486 HRESULT SetProxySettings(
1487 [in] LPCWSTR protocol,
1488 [in] WMT_PROXY_SETTINGS proxy);
1490 HRESULT GetProxyHostName(
1491 [in] const WCHAR *protocol,
1492 [out, size_is( *size )] WCHAR *hostname,
1493 [in, out] DWORD *size);
1495 HRESULT SetProxyHostName(
1496 [in] const WCHAR *protocol,
1497 [in] const WCHAR *hostname);
1499 HRESULT GetProxyPort(
1500 [in] const WCHAR *protocol,
1501 [out] DWORD *port);
1503 HRESULT SetProxyPort(
1504 [in] const WCHAR *protocol,
1505 [in] DWORD port);
1507 HRESULT GetProxyExceptionList(
1508 [in] const WCHAR *protocol,
1509 [out, size_is( *count )] WCHAR *exceptions,
1510 [in, out] DWORD *count);
1512 HRESULT SetProxyExceptionList(
1513 [in] const WCHAR *protocol,
1514 [in] const WCHAR *exceptions);
1516 HRESULT GetProxyBypassForLocal(
1517 [in] const WCHAR *protocol,
1518 [out] BOOL *bypass);
1520 HRESULT SetProxyBypassForLocal(
1521 [in] const WCHAR *protocol,
1522 [in] BOOL bypass);
1524 HRESULT GetForceRerunAutoProxyDetection([out] BOOL *detection);
1525 HRESULT SetForceRerunAutoProxyDetection([in] BOOL detection);
1527 HRESULT GetEnableMulticast([out] BOOL *multicast);
1528 HRESULT SetEnableMulticast([in] BOOL multicast);
1530 HRESULT GetEnableHTTP([out] BOOL *enable);
1531 HRESULT SetEnableHTTP([in] BOOL enable);
1533 HRESULT GetEnableUDP([out] BOOL *enable);
1534 HRESULT SetEnableUDP([in] BOOL enable);
1536 HRESULT GetEnableTCP([out] BOOL *enable);
1537 HRESULT SetEnableTCP([in] BOOL enable);
1539 HRESULT ResetProtocolRollover();
1541 HRESULT GetConnectionBandwidth([out] DWORD *bandwidth);
1542 HRESULT SetConnectionBandwidth([in] DWORD bandwidth);
1544 HRESULT GetNumProtocolsSupported([out] DWORD *protocols);
1546 HRESULT GetSupportedProtocolName(
1547 [in] DWORD protocol_num,
1548 [out, size_is( *size )] WCHAR *protocol,
1549 [in, out] DWORD *size);
1551 HRESULT AddLoggingUrl([in] const WCHAR *url);
1553 HRESULT GetLoggingUrl(
1554 [in] DWORD index,
1555 [out, size_is( *size )] WCHAR *url,
1556 [in, out] DWORD *size);
1558 HRESULT GetLoggingUrlCount([out] DWORD *count);
1560 HRESULT ResetLoggingUrlList();
1564 object,
1565 uuid(d979a853-042b-4050-8387-c939db22013f),
1566 pointer_default(unique),
1567 local
1569 interface IWMReaderNetworkConfig2 : IWMReaderNetworkConfig
1571 HRESULT GetEnableContentCaching([out] BOOL *enable);
1572 HRESULT SetEnableContentCaching([in] BOOL enable);
1574 HRESULT GetEnableFastCache([out] BOOL *enable);
1575 HRESULT SetEnableFastCache([in] BOOL enable);
1577 HRESULT GetAcceleratedStreamingDuration([out] QWORD *duration);
1578 HRESULT SetAcceleratedStreamingDuration([in] QWORD duration);
1580 HRESULT GetAutoReconnectLimit([out] DWORD *limit);
1581 HRESULT SetAutoReconnectLimit([in] DWORD limit);
1583 HRESULT GetEnableResends([out] BOOL *enable);
1584 HRESULT SetEnableResends([in] BOOL enable);
1586 HRESULT GetEnableThinning([out] BOOL *enable);
1587 HRESULT SetEnableThinning([in] BOOL enable);
1589 HRESULT GetMaxNetPacketSize([out] DWORD *packet_size);
1593 object,
1594 uuid(96406bed-2b2b-11d3-b36b-00c04f6108ff),
1595 pointer_default(unique),
1596 local
1599 interface IWMReaderStreamClock : IUnknown
1601 HRESULT GetTime([in] QWORD *now);
1603 HRESULT SetTimer([in] QWORD when,
1604 [in] void *param,
1605 [out] DWORD *id);
1607 HRESULT KillTimer([in] DWORD id);
1611 object,
1612 uuid(cdfb97ab-188f-40b3-b643-5b7903975c59),
1613 pointer_default(unique),
1614 local
1616 interface IWMPacketSize : IUnknown
1618 HRESULT GetMaxPacketSize([out] DWORD *size);
1619 HRESULT SetMaxPacketSize([in] DWORD size);
1623 object,
1624 uuid(8bfc2b9e-b646-4233-a877-1c6a079669dc),
1625 pointer_default(unique),
1626 local
1628 interface IWMPacketSize2 : IWMPacketSize
1630 HRESULT GetMinPacketSize([out] DWORD *size);
1631 HRESULT SetMinPacketSize([in] DWORD size);
1635 object,
1636 uuid(d2827540-3ee7-432c-b14c-dc17f085d3b3),
1637 pointer_default(unique),
1638 local
1640 interface IWMDRMReader : IUnknown
1642 HRESULT AcquireLicense([in] DWORD flags);
1643 HRESULT CancelLicenseAcquisition();
1645 HRESULT Individualize([in] DWORD flags);
1646 HRESULT CancelIndividualization();
1648 HRESULT MonitorLicenseAcquisition();
1649 HRESULT CancelMonitorLicenseAcquisition();
1651 HRESULT SetDRMProperty(
1652 [in] const WCHAR *name,
1653 [in] WMT_ATTR_DATATYPE type,
1654 [in, size_is( length )] const BYTE *value,
1655 [in] WORD length);
1657 HRESULT GetDRMProperty(
1658 [in] const WCHAR *name,
1659 [out] WMT_ATTR_DATATYPE *type,
1660 [out, size_is( *length )] BYTE *value,
1661 [in, out] WORD *length);
1665 object,
1666 uuid(befe7a75-9f1d-4075-b9d9-a3c37bda49a0),
1667 pointer_default(unique),
1668 local
1670 interface IWMDRMReader2 : IWMDRMReader
1672 HRESULT SetEvaluateOutputLevelLicenses([in] BOOL evaluate);
1673 HRESULT GetPlayOutputLevels(
1674 [out, size_is( *length )] DRM_PLAY_OPL *play,
1675 [in, out] DWORD *length,
1676 [out] DWORD *level);
1678 HRESULT GetCopyOutputLevels(
1679 [out, size_is( *length )] DRM_COPY_OPL *copy,
1680 [in, out] DWORD *length,
1681 [out] DWORD *level);
1683 HRESULT TryNextLicense();
1687 object,
1688 uuid(e08672de-f1e7-4ff4-a0a3-fc4b08e4caf8),
1689 pointer_default(unique),
1690 local
1692 interface IWMDRMReader3 : IWMDRMReader2
1694 HRESULT GetInclusionList(
1695 [out] GUID **guids,
1696 [out] DWORD *count);
1700 object,
1701 uuid(bddc4d08-944d-4d52-a612-46c3fda07dd4),
1702 pointer_default( unique ),
1703 local
1705 interface IWMReaderAccelerator : IUnknown
1707 HRESULT GetCodecInterface(
1708 [in] DWORD output,
1709 [in] REFIID riid,
1710 [out] void **codec);
1712 HRESULT Notify(
1713 [in] DWORD output,
1714 [in] WM_MEDIA_TYPE *subtype);
1718 object,
1719 uuid(f369e2f0-e081-4fe6-8450-b810b2f410d1),
1720 pointer_default(unique),
1721 local
1723 interface IWMReaderTimecode : IUnknown
1725 HRESULT GetTimecodeRangeCount(
1726 [in] WORD num,
1727 [out] WORD *count);
1729 HRESULT GetTimecodeRangeBounds(
1730 [in] WORD stream,
1731 [in] WORD range,
1732 [out] DWORD *start_timecode,
1733 [out] DWORD *end_timecode);
1737 object,
1738 uuid(fdbe5592-81a1-41ea-93bd-735cad1adc05),
1739 pointer_default(unique),
1740 local
1742 interface IWMReaderTypeNegotiation : IUnknown
1744 HRESULT TryOutputProps(
1745 [in] DWORD output,
1746 [in] IWMOutputMediaProps *props);
1750 object,
1751 uuid(df683f00-2d49-4d8e-92b7-fb19f6a0dc57),
1752 pointer_default(unique),
1753 local
1755 interface IWMLanguageList : IUnknown
1757 HRESULT GetLanguageCount(
1758 [out] WORD *count);
1760 HRESULT GetLanguageDetails(
1761 [in] WORD index,
1762 [out, size_is( *length )] WCHAR *language,
1763 [in, out] WORD *length);
1765 HRESULT AddLanguageByRFC1766String(
1766 [in] LPCWSTR_WMSDK_TYPE_SAFE language,
1767 [out] WORD *index);
1771 object,
1772 uuid(f28c0300-9baa-4477-a846-1744d9cbf533),
1773 pointer_default(unique),
1774 local
1776 interface IWMReaderPlaylistBurn : IUnknown
1778 HRESULT InitPlaylistBurn(
1779 [in] DWORD count,
1780 [in] LPCWSTR_WMSDK_TYPE_SAFE *filenames,
1781 [in] IWMStatusCallback *callback,
1782 [in] void *context);
1784 HRESULT GetInitResults(
1785 [in] DWORD count,
1786 [out] HRESULT *stat);
1788 HRESULT Cancel();
1790 HRESULT EndPlaylistBurn([in] HRESULT result);
1794 object,
1795 uuid(72995a79-5090-42a4-9c8c-d9d0b6d34be5),
1796 pointer_default(unique),
1797 local
1799 interface IWMPropertyVault : IUnknown
1801 HRESULT GetPropertyCount([in] DWORD *count);
1803 HRESULT GetPropertyByName(
1804 [in] const WCHAR *name,
1805 [out] WMT_ATTR_DATATYPE *type,
1806 [out, size_is( *size )] BYTE *value,
1807 [in, out] DWORD *size);
1809 HRESULT SetProperty(
1810 [in] const WCHAR *name,
1811 [in] WMT_ATTR_DATATYPE type,
1812 [in] BYTE *value,
1813 [in] DWORD size);
1815 HRESULT GetPropertyByIndex(
1816 [in] DWORD index,
1817 [out, size_is( *pdwNameLen )] WCHAR *name,
1818 [in, out] DWORD *length,
1819 [out] WMT_ATTR_DATATYPE *type,
1820 [out, size_is( *size )] BYTE *value,
1821 [in, out] DWORD *size);
1823 HRESULT CopyPropertiesFrom([in] IWMPropertyVault *vault);
1825 HRESULT Clear();
1829 object,
1830 uuid(fc54a285-38c4-45b5-aa23-85b9f7cb424b),
1831 pointer_default(unique),
1832 local
1834 interface IWMWriterPreprocess : IUnknown
1836 HRESULT GetMaxPreprocessingPasses(
1837 [in] DWORD input,
1838 [in] DWORD flags,
1839 [out] DWORD *passes);
1841 HRESULT SetNumPreprocessingPasses(
1842 [in] DWORD input,
1843 [in] DWORD flags,
1844 [in] DWORD passes);
1846 HRESULT BeginPreprocessingPass(
1847 [in] DWORD input,
1848 [in] DWORD flags);
1850 HRESULT PreprocessSample(
1851 [in] DWORD input,
1852 [in] QWORD sample_time,
1853 [in] DWORD flags,
1854 [in] INSSBuffer *sample);
1856 HRESULT EndPreprocessingPass(
1857 [in] DWORD input,
1858 [in] DWORD flags);
1862 object,
1863 uuid(05e5ac9f-3fb6-4508-bb43-a4067ba1ebe8),
1864 pointer_default(unique),
1865 local
1867 interface IWMLicenseBackup : IUnknown
1869 HRESULT BackupLicenses(
1870 [in] DWORD dwFlags,
1871 [in] IWMStatusCallback *pCallback);
1873 HRESULT CancelLicenseBackup();
1877 object,
1878 uuid(c70b6334-a22e-4efb-a245-15e65a004a13),
1879 pointer_default(unique),
1880 local
1882 interface IWMLicenseRestore : IUnknown
1884 HRESULT RestoreLicenses(
1885 [in] DWORD dwFlags,
1886 [in] IWMStatusCallback *pCallback);
1888 HRESULT CancelLicenseRestore();
1891 cpp_quote("HRESULT WINAPI WMCheckURLExtension(LPCWSTR);")
1892 cpp_quote("HRESULT WINAPI WMCheckURLScheme(LPCWSTR);")
1893 cpp_quote("HRESULT WINAPI WMCreateWriter(IUnknown*,IWMWriter**);")
1894 cpp_quote("HRESULT WINAPI WMCreateReader(IUnknown*,DWORD,IWMReader**);")
1895 cpp_quote("HRESULT WINAPI WMCreateSyncReader(IUnknown*,DWORD,IWMSyncReader**);")
1896 cpp_quote("HRESULT WINAPI WMCreateEditor(IWMMetadataEditor**);")
1897 cpp_quote("HRESULT WINAPI WMCreateBackupRestorer(IUnknown*,IWMLicenseBackup**);")
1898 cpp_quote("HRESULT WINAPI WMCreateProfileManager(IWMProfileManager**);")
1899 cpp_quote("HRESULT WINAPI WMIsContentProtected(const WCHAR*, BOOL*);")
1902 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_Base, 0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1903 cpp_quote("EXTERN_GUID(WMMEDIATYPE_Video, 0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1904 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB1, 0xe436eb78,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1905 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB4, 0xe436eb79,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1906 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB8, 0xe436eb7a,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1907 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB565, 0xe436eb7b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1908 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB555, 0xe436eb7c,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1909 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB24, 0xe436eb7d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1910 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB32, 0xe436eb7e,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);")
1911 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_I420, 0x30323449,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1912 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_IYUV, 0x56555949,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1913 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YV12, 0x32315659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1914 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YUY2, 0x32595559,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1915 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_P422, 0x32323450,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1916 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_UYVY, 0x59565955,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1917 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YVYU, 0x55595659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1918 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YVU9, 0x39555659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1919 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_VIDEOIMAGE, 0x1d4a45f2,0xe5f6,0x4b44,0x83,0x88,0xf0,0xae,0x5c,0x0e,0x0c,0x37);")
1920 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MP43, 0x3334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1921 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MP4S, 0x5334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1922 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_M4S2, 0x3253344d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1923 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV1, 0x31564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1924 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV2, 0x32564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1925 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MSS1, 0x3153534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1926 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MPEG2_VIDEO, 0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea);")
1927 cpp_quote("EXTERN_GUID(WMMEDIATYPE_Audio, 0x73647561,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1928 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_PCM, 0x00000001,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1929 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_DRM, 0x00000009,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1930 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMAudioV9, 0x00000162,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1931 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMAudio_Lossless, 0x00000163,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1932 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MSS2, 0x3253534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1933 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMSP1, 0x0000000a,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1934 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMSP2, 0x0000000b,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1935 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV3, 0x33564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1936 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMVP, 0x50564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1937 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WVP2, 0x32505657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1938 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMVA, 0x41564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")
1939 cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WVC1, 0x31435657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);")