1/* 2 * Copyright 2012 André Hentschel 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19import "oaidl.idl"; 20import "wmsbuffer.idl"; 21import "drmexternals.idl"; 22 23typedef struct _WMMediaType 24{ 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; 35 36typedef struct _WMWriterStatistics 37{ 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; 49 50typedef struct _WMWriterStatisticsEx 51{ 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; 60 61typedef struct _WMReaderStatistics 62{ 63 DWORD cbSize; 64 DWORD dwBandwidth; 65 DWORD cPacketsReceived; 66 DWORD cPacketsRecovered; 67 DWORD cPacketsLost; 68 WORD wQuality; 69} WM_READER_STATISTICS; 70 71typedef struct _WMReaderClientInfo 72{ 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; 83 84typedef enum WMT_ATTR_DATATYPE 85{ 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; 94 95typedef enum WMT_STATUS 96{ 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; 151 152typedef enum WMT_STREAM_SELECTION 153{ 154 WMT_OFF = 0, 155 WMT_CLEANPOINT_ONLY = 1, 156 WMT_ON = 2, 157} WMT_STREAM_SELECTION; 158 159typedef enum WMT_VERSION 160{ 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; 166 167typedef enum WMT_PLAY_MODE 168{ 169 WMT_PLAY_MODE_AUTOSELECT, 170 WMT_PLAY_MODE_LOCAL, 171 WMT_PLAY_MODE_DOWNLOAD, 172 WMT_PLAY_MODE_STREAMING 173} WMT_PLAY_MODE; 174 175typedef enum tagWMT_OFFSET_FORMAT 176{ 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; 183 184typedef enum WMT_CODEC_INFO_TYPE 185{ 186 WMT_CODECINFO_AUDIO = 0, 187 WMT_CODECINFO_VIDEO = 1, 188 WMT_CODECINFO_UNKNOWN = 0xFFFFFFFF, 189} WMT_CODEC_INFO_TYPE; 190 191typedef enum WMT_PROXY_SETTINGS 192{ 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; 199 200typedef enum tagWMT_STORAGE_FORMAT 201{ 202 WMT_Storage_Format_MP3 = 0, 203 WMT_Storage_Format_V1 = 1 204} WMT_STORAGE_FORMAT; 205 206#include <pshpack2.h> 207typedef struct _WMStreamPrioritizationRecord 208{ 209 WORD wStreamNumber; 210 BOOL fMandatory; 211} WM_STREAM_PRIORITY_RECORD; 212 213typedef struct _WMT_TIMECODE_EXTENSION_DATA 214{ 215 WORD wRange; 216 DWORD dwTimecode; 217 DWORD dwUserbits; 218 DWORD dwAmFlags; 219} WMT_TIMECODE_EXTENSION_DATA; 220#include <poppack.h> 221 222typedef struct _WM_PORT_NUMBER_RANGE 223{ 224 WORD wPortBegin; 225 WORD wPortEnd; 226} WM_PORT_NUMBER_RANGE; 227 228typedef LPCWSTR LPCWSTR_WMSDK_TYPE_SAFE; 229 230[ 231 object, 232 uuid(6d7cdc70-9888-11d3-8edc-00c04f6109cf), 233 pointer_default(unique), 234 local 235] 236interface IWMStatusCallback : IUnknown 237{ 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); 244} 245 246[ 247 object, 248 uuid(96406bd8-2b2b-11d3-b36b-00c04f6108ff), 249 pointer_default(unique), 250 local 251] 252interface IWMReaderCallback : IWMStatusCallback 253{ 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); 261} 262 263[ 264 object, 265 uuid(96406Bdd-2b2b-11d3-b36b-00c04f6108ff), 266 pointer_default(unique), 267 local 268] 269interface IWMStreamList : IUnknown 270{ 271 HRESULT GetStreams( 272 [out, size_is(*pcStreams)] WORD *pwStreamNumArray, 273 [in, out] WORD *pcStreams); 274 275 HRESULT AddStream([in] WORD wStreamNum); 276 HRESULT RemoveStream([in] WORD wStreamNum); 277} 278 279[ 280 object, 281 uuid(96406Bde-2b2b-11d3-b36b-00c04f6108ff), 282 pointer_default(unique), 283 local 284] 285interface IWMMutualExclusion : IWMStreamList 286{ 287 HRESULT GetType([out] GUID *pguidType); 288 HRESULT SetType([in] REFGUID guidType); 289} 290 291[ 292 object, 293 uuid(ad694af1-f8d9-42f8-bc47-70311b0c4f9e), 294 pointer_default(unique), 295 local 296] 297interface IWMBandwidthSharing : IWMStreamList 298{ 299 HRESULT GetType([out] GUID *guid); 300 HRESULT SetType([in] REFGUID guid); 301 302 HRESULT GetBandwidth( 303 [out] DWORD *bitrate, 304 [out] DWORD *buffer); 305 306 HRESULT SetBandwidth( 307 [in] DWORD bitrate, 308 [in] DWORD buffer); 309} 310 311[ 312 object, 313 uuid(8c1c6090-f9a8-4748-8ec3-dd1108ba1e77), 314 pointer_default(unique), 315 local 316] 317interface IWMStreamPrioritization : IUnknown 318{ 319 HRESULT GetPriorityRecords( 320 [out] WM_STREAM_PRIORITY_RECORD *array, 321 [in, out] WORD *records); 322 323 HRESULT SetPriorityRecords( 324 [in] WM_STREAM_PRIORITY_RECORD *array, 325 [in] WORD records); 326} 327 328[ 329 object, 330 uuid(96406Bdc-2b2b-11d3-b36b-00c04f6108ff), 331 pointer_default(unique), 332 local 333] 334interface IWMStreamConfig : IUnknown 335{ 336 HRESULT GetStreamType([out] GUID *pguidStreamType); 337 HRESULT GetStreamNumber([out] WORD *pwStreamNum); 338 HRESULT SetStreamNumber([in] WORD wStreamNum); 339 340 HRESULT GetStreamName( 341 [out, size_is(*pcchStreamName)] WCHAR *pwszStreamName, 342 [in, out] WORD *pcchStreamName); 343 344 HRESULT SetStreamName([in] LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName); 345 346 HRESULT GetConnectionName( 347 [out, size_is(*pcchInputName)] WCHAR *pwszInputName, 348 [in, out] WORD *pcchInputName); 349 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); 355} 356 357[ 358 object, 359 uuid(96406bdb-2b2b-11d3-b36b-00c04f6108ff), 360 pointer_default(unique), 361 local 362] 363interface IWMProfile : IUnknown 364{ 365 HRESULT GetVersion( 366 [out] WMT_VERSION *pdwVersion); 367 368 HRESULT GetName( 369 [out, size_is(*pcchName)] WCHAR *pwszName, 370 [in, out] DWORD *pcchName); 371 372 HRESULT SetName( 373 [in] const WCHAR *pwszName); 374 375 HRESULT GetDescription( 376 [out, size_is(*pcchDescription)] WCHAR *pwszDescription, 377 [in, out] DWORD *pcchDescription); 378 379 HRESULT SetDescription( 380 [in] const WCHAR *pwszDescription); 381 382 HRESULT GetStreamCount( 383 [out] DWORD *pcStreams); 384 385 HRESULT GetStream( 386 [in] DWORD dwStreamIndex, 387 [out] IWMStreamConfig **ppConfig); 388 389 HRESULT GetStreamByNumber( 390 [in] WORD wStreamNum, 391 [out] IWMStreamConfig **ppConfig); 392 393 HRESULT RemoveStream( 394 [in] IWMStreamConfig *pConfig); 395 396 HRESULT RemoveStreamByNumber( 397 [in] WORD wStreamNum); 398 399 HRESULT AddStream( 400 [in] IWMStreamConfig *pConfig); 401 402 HRESULT ReconfigStream( 403 [in] IWMStreamConfig *pConfig); 404 405 HRESULT CreateNewStream( 406 [in] REFGUID guidStreamType, 407 [out] IWMStreamConfig **ppConfig); 408 409 HRESULT GetMutualExclusionCount( 410 [out] DWORD *pcME); 411 412 HRESULT GetMutualExclusion( 413 [in] DWORD dwMEIndex, 414 [out] IWMMutualExclusion **ppME); 415 416 HRESULT RemoveMutualExclusion( 417 [in] IWMMutualExclusion *pME); 418 419 HRESULT AddMutualExclusion( 420 [in] IWMMutualExclusion *pME); 421 422 HRESULT CreateNewMutualExclusion( 423 [out] IWMMutualExclusion **ppME); 424} 425 426[ 427 object, 428 uuid(07e72d33-d94e-4be7-8843-60ae5ff7e5f5), 429 pointer_default(unique), 430 local 431] 432interface IWMProfile2 : IWMProfile 433{ 434 HRESULT GetProfileID([out] GUID *guid); 435} 436 437[ 438 object, 439 uuid(00ef96cc-a461-4546-8bcd-c9a28f0e06f5), 440 pointer_default(unique), 441 local 442] 443interface IWMProfile3 : IWMProfile2 444{ 445 HRESULT GetStorageFormat([out] WMT_STORAGE_FORMAT *storage); 446 HRESULT SetStorageFormat([in] WMT_STORAGE_FORMAT storage); 447 448 HRESULT GetBandwidthSharingCount([out] DWORD *count); 449 450 HRESULT GetBandwidthSharing( 451 [in] DWORD index, 452 [out] IWMBandwidthSharing **bandwidth); 453 454 HRESULT RemoveBandwidthSharing([in] IWMBandwidthSharing *bandwidth); 455 456 HRESULT AddBandwidthSharing([in] IWMBandwidthSharing *bandwidth); 457 458 HRESULT CreateNewBandwidthSharing([out] IWMBandwidthSharing **bandwidth); 459 460 HRESULT GetStreamPrioritization([out] IWMStreamPrioritization **stream); 461 462 HRESULT SetStreamPrioritization([in] IWMStreamPrioritization *stream); 463 464 HRESULT RemoveStreamPrioritization(); 465 466 HRESULT CreateNewStreamPrioritization([out] IWMStreamPrioritization **stream); 467 468 HRESULT GetExpectedPacketCount( 469 [in] QWORD duration, 470 [out] QWORD *packets); 471} 472 473[ 474 object, 475 uuid(d16679f2-6ca0-472d-8d31-2f5d55aee155), 476 pointer_default(unique), 477 local 478] 479interface IWMProfileManager : IUnknown 480{ 481 HRESULT CreateEmptyProfile( 482 [in] WMT_VERSION dwVersion, 483 [out] IWMProfile **ppProfile); 484 485 HRESULT LoadProfileByID( 486 [in] REFGUID guidProfile, 487 [out] IWMProfile **ppProfile); 488 489 HRESULT LoadProfileByData( 490 [in] const WCHAR *pwszProfile, 491 [out] IWMProfile **ppProfile); 492 493 HRESULT SaveProfile( 494 [in] IWMProfile *pIWMProfile, 495 [in] WCHAR *pwszProfile, 496 [in, out] DWORD *pdwLength); 497 498 HRESULT GetSystemProfileCount( 499 [out] DWORD *pcProfiles); 500 501 HRESULT LoadSystemProfile( 502 [in] DWORD dwProfileIndex, 503 [out] IWMProfile **ppProfile); 504} 505 506[ 507 object, 508 uuid(7a924e51-73c1-494d-8019-23d37ed9b89a), 509 pointer_default(unique), 510 local 511] 512interface IWMProfileManager2 : IWMProfileManager 513{ 514 HRESULT GetSystemProfileVersion(WMT_VERSION *version); 515 HRESULT SetSystemProfileVersion(WMT_VERSION version); 516}; 517 518cpp_quote("HRESULT WINAPI WMCreateProfileManager(IWMProfileManager**);") 519 520[ 521 object, 522 uuid(a970f41e-34de-4a98-b3ba-e4b3ca7528f0), 523 pointer_default(unique), 524 local 525] 526interface IWMCodecInfo : IUnknown 527{ 528 HRESULT GetCodecInfoCount( 529 [in] REFGUID guid, 530 [out] DWORD *count); 531 532 HRESULT GetCodecFormatCount( 533 [in] REFGUID guid, 534 [in] DWORD codecindex, 535 [out] DWORD *formatcount); 536 537 HRESULT GetCodecFormat( 538 [in] REFGUID guid, 539 [in] DWORD codecindex, 540 [in] DWORD formatindex, 541 [out] IWMStreamConfig **streamconfig); 542} 543 544[ 545 object, 546 uuid(aa65e273-b686-4056-91ec-dd768d4df710), 547 pointer_default(unique), 548 local 549] 550interface IWMCodecInfo2 : IWMCodecInfo 551{ 552 HRESULT GetCodecName( 553 [in] REFGUID guid, 554 [in] DWORD codecindex, 555 [out, size_is(*namesize)] WCHAR *name, 556 [in, out] DWORD *namesize); 557 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); 565} 566 567[ 568 object, 569 uuid(7e51f487-4d93-4f98-8ab4-27d0565adc51), 570 pointer_default(unique), 571 local 572] 573interface IWMCodecInfo3 : IWMCodecInfo2 574{ 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); 583 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); 591 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); 599 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); 607} 608 609cpp_quote("static const WCHAR g_wszNumPasses[] = {'_','P','A','S','S','E','S','U','S','E','D',0};") 610cpp_quote("static const WCHAR g_wszVBREnabled[] = {'_','V','B','R','E','N','A','B','L','E','D',0};") 611 612[ 613 object, 614 uuid(96406bce-2b2b-11d3-b36b-00c04f6108ff), 615 pointer_default(unique), 616 local 617] 618interface IWMMediaProps : IUnknown 619{ 620 HRESULT GetType( 621 [out] GUID *pguidType); 622 623 HRESULT GetMediaType( 624 [out] WM_MEDIA_TYPE *pType, 625 [in, out] DWORD *pcbType); 626 627 HRESULT SetMediaType( 628 [in] WM_MEDIA_TYPE *pType); 629} 630 631[ 632 object, 633 uuid(96406bd7-2b2b-11d3-b36b-00c04f6108ff), 634 pointer_default(unique), 635 local 636] 637interface IWMOutputMediaProps : IWMMediaProps 638{ 639 HRESULT GetStreamGroupName( 640 [out, size_is(*pcchName)] WCHAR *pwszName, 641 [in, out] WORD *pcchName); 642 643 HRESULT GetConnectionName( 644 [out, size_is(*pcchName)] WCHAR *pwszName, 645 [in, out] WORD *pcchName); 646} 647 648[ 649 object, 650 uuid(96406bd9-2b2b-11d3-b36b-00c04f6108ff), 651 pointer_default(unique), 652 local 653] 654interface IWMMetadataEditor : IUnknown 655{ 656 HRESULT Open( 657 [in] const WCHAR *pwszFilename); 658 659 HRESULT Close(); 660 661 HRESULT Flush(); 662} 663 664[ 665 object, 666 uuid(96406bd6-2b2b-11d3-b36b-00c04f6108ff), 667 pointer_default(unique), 668 local 669] 670interface IWMReader : IUnknown 671{ 672 HRESULT Open( 673 [in] const WCHAR *pwszURL, 674 [in] IWMReaderCallback *pCallback, 675 [in] void *pvContext); 676 677 HRESULT Close(); 678 679 HRESULT GetOutputCount( 680 [out] DWORD *pcOutputs); 681 682 HRESULT GetOutputProps( 683 [in] DWORD dwOutputNum, 684 [out] IWMOutputMediaProps **ppOutput); 685 686 HRESULT SetOutputProps( 687 [in] DWORD dwOutputNum, 688 [in] IWMOutputMediaProps *pOutput); 689 690 HRESULT GetOutputFormatCount( 691 [in] DWORD dwOutputNumber, 692 [out] DWORD *pcFormats); 693 694 HRESULT GetOutputFormat( 695 [in] DWORD dwOutputNumber, 696 [in] DWORD dwFormatNumber, 697 [out] IWMOutputMediaProps** ppProps); 698 699 HRESULT Start( 700 [in] QWORD cnsStart, 701 [in] QWORD cnsDuration, 702 [in] float fRate, 703 [in] void *pvContext); 704 705 HRESULT Stop(); 706 707 HRESULT Pause(); 708 709 HRESULT Resume(); 710} 711 712[ 713 object, 714 uuid(e5b7ca9a-0f1c-4f66-9002-74ec50d8b304), 715 pointer_default(unique), 716 local 717] 718interface IWMPlayerHook : IUnknown 719{ 720 HRESULT PreDecode(); 721} 722 723[ 724 object, 725 uuid(96406bea-2b2b-11d3-b36b-00c04f6108ff), 726 pointer_default(unique), 727 local 728] 729interface IWMReaderAdvanced : IUnknown 730{ 731 HRESULT SetUserProvidedClock( 732 [in] BOOL fUserClock); 733 734 HRESULT GetUserProvidedClock( 735 [out] BOOL *pfUserClock); 736 737 HRESULT DeliverTime( 738 [in] QWORD cnsTime); 739 740 HRESULT SetManualStreamSelection( 741 [in] BOOL fSelection); 742 743 HRESULT GetManualStreamSelection( 744 [out] BOOL *pfSelection); 745 746 HRESULT SetStreamsSelected( 747 [in] WORD cStreamCount, 748 [in] WORD *pwStreamNumbers, 749 [in] WMT_STREAM_SELECTION *pSelections); 750 751 HRESULT GetStreamSelected( 752 [in] WORD wStreamNum, 753 [out] WMT_STREAM_SELECTION *pSelection); 754 755 HRESULT SetReceiveSelectionCallbacks( 756 [in] BOOL fGetCallbacks); 757 758 HRESULT GetReceiveSelectionCallbacks( 759 [out] BOOL *pfGetCallbacks); 760 761 HRESULT SetReceiveStreamSamples( 762 [in] WORD wStreamNum, 763 [in] BOOL fReceiveStreamSamples); 764 765 HRESULT GetReceiveStreamSamples( 766 [in] WORD wStreamNum, 767 [out] BOOL *pfReceiveStreamSamples); 768 769 HRESULT SetAllocateForOutput( 770 [in] DWORD dwOutputNum, 771 [in] BOOL fAllocate); 772 773 HRESULT GetAllocateForOutput( 774 [in] DWORD dwOutputNum, 775 [out] BOOL *pfAllocate); 776 777 HRESULT SetAllocateForStream( 778 [in] WORD wStreamNum, 779 [in] BOOL fAllocate); 780 781 HRESULT GetAllocateForStream( 782 [in] WORD dwStreamNum, 783 [out] BOOL *pfAllocate); 784 785 HRESULT GetStatistics( 786 [in, out] WM_READER_STATISTICS *pStatistics); 787 788 HRESULT SetClientInfo( 789 [in] WM_READER_CLIENTINFO *pClientInfo); 790 791 HRESULT GetMaxOutputSampleSize( 792 [in] DWORD dwOutput, 793 [out] DWORD *pcbMax); 794 795 HRESULT GetMaxStreamSampleSize( 796 [in] WORD wStream, 797 [out] DWORD *pcbMax); 798 799 HRESULT NotifyLateDelivery( 800 QWORD cnsLateness); 801} 802 803[ 804 object, 805 uuid(ae14a945-b90c-4d0d-9127-80d665f7d73e), 806 pointer_default(unique), 807 local 808] 809interface IWMReaderAdvanced2 : IWMReaderAdvanced 810{ 811 HRESULT SetPlayMode( 812 [in] WMT_PLAY_MODE Mode); 813 814 HRESULT GetPlayMode( 815 [out] WMT_PLAY_MODE *pMode); 816 817 HRESULT GetBufferProgress( 818 [out] DWORD *pdwPercent, 819 [out] QWORD *pcnsBuffering); 820 821 HRESULT GetDownloadProgress( 822 [out] DWORD *pdwPercent, 823 [out] QWORD *pqwBytesDownloaded, 824 [out] QWORD *pcnsDownload); 825 826 HRESULT GetSaveAsProgress( 827 [out] DWORD *pdwPercent); 828 829 HRESULT SaveFileAs( 830 [in] const WCHAR *pwszFilename); 831 832 HRESULT GetProtocolName( 833 [out, size_is(*pcchProtocol)] WCHAR *pwszProtocol, 834 [in, out] DWORD *pcchProtocol); 835 836 HRESULT StartAtMarker( 837 [in] WORD wMarkerIndex, 838 [in] QWORD cnsDuration, 839 [in] float fRate, 840 [in] void *pvContext); 841 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); 848 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); 855 856 HRESULT Preroll( 857 [in] QWORD cnsStart, 858 [in] QWORD cnsDuration, 859 [in] float fRate); 860 861 HRESULT SetLogClientID( 862 [in] BOOL fLogClientID); 863 864 HRESULT GetLogClientID( 865 [out] BOOL *pfLogClientID); 866 867 HRESULT StopBuffering(); 868 869 HRESULT OpenStream( 870 [in] IStream *pStream, 871 [in] IWMReaderCallback *pCallback, 872 [in] void *pvContext); 873} 874 875[ 876 object, 877 uuid(5dc0674b-f04B-4a4e-9f2a-b1afde2c8100), 878 pointer_default(unique), 879 local 880] 881interface IWMReaderAdvanced3 : IWMReaderAdvanced2 882{ 883 HRESULT StopNetStreaming(); 884 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); 892} 893 894[ 895 object, 896 uuid(945a76a2-12ae-4d48-bd3c-cd1d90399b85), 897 pointer_default(unique), 898 local 899] 900interface IWMReaderAdvanced4 : IWMReaderAdvanced3 901{ 902 HRESULT GetLanguageCount( 903 [in] DWORD dwOutputNum, 904 [out] WORD *pwLanguageCount); 905 906 HRESULT GetLanguage( 907 [in] DWORD dwOutputNum, 908 [in] WORD wLanguage, 909 [out, size_is(*pcchLanguageStringLength)] WCHAR *pwszLanguageString, 910 [in, out] WORD *pcchLanguageStringLength); 911 912 HRESULT GetMaxSpeedFactor( 913 [out] double *pdblFactor); 914 915 HRESULT IsUsingFastCache( 916 [out] BOOL *pfUsingFastCache); 917 918 HRESULT AddLogParam( 919 [in] LPCWSTR wszNameSpace, 920 [in] LPCWSTR wszName, 921 [in] LPCWSTR wszValue); 922 923 HRESULT SendLogParams(); 924 925 HRESULT CanSaveFileAs( 926 [out] BOOL *pfCanSave); 927 928 HRESULT CancelSaveFileAs(); 929 930 HRESULT GetURL( 931 [out, size_is(*pcchURL)] WCHAR *pwszURL, 932 [in, out] DWORD *pcchURL); 933} 934 935[ 936 object, 937 uuid(24c44db0-55d1-49ae-a5cc-f13815e36363), 938 pointer_default(unique), 939 local 940] 941interface IWMReaderAdvanced5 : IWMReaderAdvanced4 942{ 943 HRESULT SetPlayerHook( 944 [in] DWORD dwOutputNum, 945 [in] IWMPlayerHook *pHook); 946} 947 948[ 949 object, 950 uuid(18a2e7f8-428f-4acd-8a00-e64639bc93de), 951 pointer_default(unique), 952 local 953] 954interface IWMReaderAdvanced6 : IWMReaderAdvanced5 955{ 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); 963} 964 965[ 966 object, 967 uuid(9397f121-7705-4dc9-b049-98b698188414), 968 pointer_default( unique ), 969 local 970] 971interface IWMSyncReader : IUnknown 972{ 973 HRESULT Open( 974 [in] const WCHAR *pwszFilename); 975 976 HRESULT Close(); 977 978 HRESULT SetRange( 979 [in] QWORD cnsStartTime, 980 [in] LONGLONG cnsDuration); 981 982 HRESULT SetRangeByFrame( 983 [in] WORD wStreamNum, 984 [in] QWORD qwFrameNumber, 985 [in] LONGLONG cFramesToRead); 986 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); 995 996 HRESULT SetStreamsSelected( 997 [in] WORD cStreamCount, 998 [in] WORD *pwStreamNumbers, 999 [in] WMT_STREAM_SELECTION *pSelections); 1000 1001 HRESULT GetStreamSelected( 1002 [in] WORD wStreamNum, 1003 [out] WMT_STREAM_SELECTION *pSelection); 1004 1005 HRESULT SetReadStreamSamples( 1006 [in] WORD wStreamNum, 1007 [in] BOOL fCompressed); 1008 1009 HRESULT GetReadStreamSamples( 1010 [in] WORD wStreamNum, 1011 [out] BOOL *pfCompressed); 1012 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); 1019 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); 1026 1027 HRESULT GetOutputCount( 1028 [out] DWORD *pcOutputs); 1029 1030 HRESULT GetOutputProps( 1031 [in] DWORD dwOutputNum, 1032 [out] IWMOutputMediaProps **ppOutput); 1033 1034 HRESULT SetOutputProps( 1035 [in] DWORD dwOutputNum, 1036 [in] IWMOutputMediaProps *pOutput); 1037 1038 HRESULT GetOutputFormatCount( 1039 [in] DWORD dwOutputNum, 1040 [out] DWORD *pcFormats); 1041 1042 HRESULT GetOutputFormat( 1043 [in] DWORD dwOutputNum, 1044 [in] DWORD dwFormatNum, 1045 [out] IWMOutputMediaProps **ppProps); 1046 1047 HRESULT GetOutputNumberForStream( 1048 [in] WORD wStreamNum, 1049 [out] DWORD *pdwOutputNum); 1050 1051 HRESULT GetStreamNumberForOutput( 1052 [in] DWORD dwOutputNum, 1053 [out] WORD *pwStreamNum); 1054 1055 HRESULT GetMaxOutputSampleSize( 1056 [in] DWORD dwOutput, 1057 [out] DWORD *pcbMax); 1058 1059 HRESULT GetMaxStreamSampleSize( 1060 [in] WORD wStream, 1061 [out] DWORD *pcbMax); 1062 1063 HRESULT OpenStream( 1064 [in] IStream *pStream); 1065} 1066 1067[ 1068 object, 1069 uuid(9f762fa7-a22e-428d-93c9-ac82f3aafe5a), 1070 pointer_default( unique ), 1071 local 1072] 1073interface IWMReaderAllocatorEx : IUnknown 1074{ 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); 1083 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); 1092} 1093 1094[ 1095 object, 1096 uuid(faed3d21-1b6b-4af7-8bc6-3e189bbc187b), 1097 pointer_default( unique ), 1098 local 1099] 1100interface IWMSyncReader2 : IWMSyncReader 1101{ 1102 HRESULT SetRangeByTimecode( 1103 [in] WORD wStreamNum, 1104 [in] WMT_TIMECODE_EXTENSION_DATA *pStart, 1105 [in] WMT_TIMECODE_EXTENSION_DATA *pEnd); 1106 1107 HRESULT SetRangeByFrameEx( 1108 [in] WORD wStreamNum, 1109 [in] QWORD qwFrameNumber, 1110 [in] LONGLONG cFramesToRead, 1111 [out] QWORD *pcnsStartTime); 1112 1113 HRESULT SetAllocateForOutput( 1114 [in] DWORD dwOutputNum, 1115 [in] IWMReaderAllocatorEx *pAllocator); 1116 1117 HRESULT GetAllocateForOutput( 1118 [in] DWORD dwOutputNum, 1119 [out] IWMReaderAllocatorEx **ppAllocator); 1120 1121 HRESULT SetAllocateForStream( 1122 [in] DWORD dwStreamNum, 1123 [in] IWMReaderAllocatorEx *pAllocator); 1124 1125 HRESULT GetAllocateForStream( 1126 [in] DWORD dwStreamNum, 1127 [out] IWMReaderAllocatorEx **ppAllocator); 1128} 1129 1130[ 1131 object, 1132 uuid(96406bd5-2b2b-11d3-b36b-00c04f6108ff), 1133 pointer_default(unique), 1134 local 1135] 1136interface IWMInputMediaProps : IWMMediaProps 1137{ 1138 HRESULT GetConnectionName( 1139 [out, size_is(*pcchName)] WCHAR *pwszName, 1140 [in, out] WORD *pcchName); 1141 1142 HRESULT GetGroupName( 1143 [out, size_is(*pcchName)] WCHAR *pwszName, 1144 [in, out] WORD *pcchName); 1145} 1146 1147[ 1148 object, 1149 uuid(96406be4-2b2b-11d3-b36b-00c04f6108ff), 1150 pointer_default(unique), 1151 local 1152] 1153interface IWMWriterSink : IUnknown 1154{ 1155 HRESULT OnHeader( 1156 [in] INSSBuffer *pHeader); 1157 1158 HRESULT IsRealTime( 1159 [out] BOOL *pfRealTime); 1160 1161 HRESULT AllocateDataUnit( 1162 [in] DWORD cbDataUnit, 1163 [out] INSSBuffer **ppDataUnit); 1164 1165 HRESULT OnDataUnit( 1166 [in] INSSBuffer *pDataUnit); 1167 1168 HRESULT OnEndWriting(); 1169} 1170 1171[ 1172 object, 1173 uuid(96406bd4-2b2b-11d3-b36b-00c04f6108ff), 1174 pointer_default(unique), 1175 local 1176] 1177interface IWMWriter : IUnknown 1178{ 1179 HRESULT SetProfileByID( 1180 [in] REFGUID guidProfile); 1181 1182 HRESULT SetProfile( 1183 [in] IWMProfile *pProfile); 1184 1185 HRESULT SetOutputFilename( 1186 [in] const WCHAR *pwszFilename); 1187 1188 HRESULT GetInputCount( 1189 [out] DWORD *pcInputs); 1190 1191 HRESULT GetInputProps( 1192 [in] DWORD dwInputNum, 1193 [out] IWMInputMediaProps **ppInput); 1194 1195 HRESULT SetInputProps( 1196 [in] DWORD dwInputNum, 1197 [in] IWMInputMediaProps *pInput); 1198 1199 HRESULT GetInputFormatCount( 1200 [in] DWORD dwInputNumber, 1201 [out] DWORD *pcFormats); 1202 1203 HRESULT GetInputFormat( 1204 [in] DWORD dwInputNumber, 1205 [in] DWORD dwFormatNumber, 1206 [out] IWMInputMediaProps **pProps); 1207 1208 HRESULT BeginWriting(); 1209 1210 HRESULT EndWriting(); 1211 1212 HRESULT AllocateSample( 1213 [in] DWORD dwSampleSize, 1214 [out] INSSBuffer **ppSample); 1215 1216 HRESULT WriteSample( 1217 [in] DWORD dwInputNum, 1218 [in] QWORD cnsSampleTime, 1219 [in] DWORD dwFlags, 1220 [in] INSSBuffer *pSample); 1221 1222 HRESULT Flush(); 1223} 1224 1225[ 1226 object, 1227 uuid(96406be3-2b2b-11d3-b36b-00C04f6108ff), 1228 pointer_default(unique), 1229 local 1230] 1231interface IWMWriterAdvanced : IUnknown 1232{ 1233 HRESULT GetSinkCount( 1234 [out] DWORD *pcSinks); 1235 1236 HRESULT GetSink( 1237 [in] DWORD dwSinkNum, 1238 [out] IWMWriterSink **ppSink); 1239 1240 HRESULT AddSink( 1241 [in] IWMWriterSink *pSink); 1242 1243 HRESULT RemoveSink( 1244 [in] IWMWriterSink *pSink); 1245 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); 1253 1254 HRESULT SetLiveSource( 1255 BOOL fIsLiveSource); 1256 1257 HRESULT IsRealTime( 1258 [out] BOOL *pfRealTime); 1259 1260 HRESULT GetWriterTime( 1261 [out] QWORD *pCurrentTime); 1262 1263 HRESULT GetStatistics( 1264 [in] WORD wStreamNum, 1265 [out] WM_WRITER_STATISTICS *pStats); 1266 1267 HRESULT SetSyncTolerance( 1268 [in] DWORD msWindow); 1269 1270 HRESULT GetSyncTolerance( 1271 [out] DWORD *pmsWindow); 1272} 1273 1274[ 1275 object, 1276 uuid(962dc1ec-c046-4db8-9cc7-26ceae500817), 1277 pointer_default(unique), 1278 local 1279] 1280interface IWMWriterAdvanced2 : IWMWriterAdvanced 1281{ 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); 1288 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); 1295} 1296 1297[ 1298 object, 1299 uuid(2cd6492d-7c37-4e76-9d3b-59261183a22e), 1300 pointer_default(unique), 1301 local 1302] 1303interface IWMWriterAdvanced3 : IWMWriterAdvanced2 1304{ 1305 HRESULT GetStatisticsEx( 1306 [in] WORD wStreamNum, 1307 [out] WM_WRITER_STATISTICS_EX *pStats); 1308 1309 HRESULT SetNonBlocking(); 1310} 1311 1312[ 1313 object, 1314 uuid(96406bda-2b2b-11d3-b36b-00c04f6108ff), 1315 pointer_default(unique), 1316 local 1317] 1318interface IWMHeaderInfo : IUnknown 1319{ 1320 HRESULT GetAttributeCount( 1321 [in] WORD stream_num, 1322 [out] WORD *attributes ); 1323 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 ); 1332 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 ); 1339 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 ); 1346 1347 HRESULT GetMarkerCount( 1348 [out] WORD *markers ); 1349 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 ); 1355 1356 HRESULT AddMarker( 1357 [in] LPCWSTR_WMSDK_TYPE_SAFE marker_name, 1358 [in] QWORD marker_time ); 1359 1360 HRESULT RemoveMarker( 1361 [in] WORD index ); 1362 1363 HRESULT GetScriptCount( 1364 [out] WORD *scripts ); 1365 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 ); 1373 1374 HRESULT AddScript( 1375 [in] LPCWSTR_WMSDK_TYPE_SAFE type, 1376 [in] LPCWSTR_WMSDK_TYPE_SAFE command, 1377 [in] QWORD script_time ); 1378 1379 HRESULT RemoveScript( 1380 [in] WORD index ); 1381} 1382 1383[ 1384 object, 1385 uuid(15cf9781-454e-482e-b393-85fae487a810), 1386 pointer_default(unique), 1387 local 1388] 1389interface IWMHeaderInfo2 : IWMHeaderInfo 1390{ 1391 HRESULT GetCodecInfoCount( 1392 [out] DWORD *codec_infos ); 1393 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 ); 1403} 1404 1405[ 1406 object, 1407 uuid(15cc68e3-27cc-4ecd-b222-3f5d02d80bd5), 1408 pointer_default(unique), 1409 local 1410] 1411interface IWMHeaderInfo3 : IWMHeaderInfo2 1412{ 1413 HRESULT GetAttributeCountEx( 1414 [in] WORD stream_num, 1415 [out] WORD *attributes ); 1416 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 ); 1423 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 ); 1433 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 ); 1441 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 ); 1450 1451 HRESULT DeleteAttribute( 1452 [in] WORD stream_num, 1453 [in] WORD index ); 1454 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 ); 1461} 1462 1463[ 1464 object, 1465 uuid(96406bec-2b2b-11d3-b36b-00c04f6108ff), 1466 pointer_default(unique), 1467 local 1468] 1469interface IWMReaderNetworkConfig : IUnknown 1470{ 1471 HRESULT GetBufferingTime([out] QWORD *buffering_time); 1472 HRESULT SetBufferingTime([in] QWORD buffering_time); 1473 1474 HRESULT GetUDPPortRanges( 1475 [out, size_is( *ranges )] WM_PORT_NUMBER_RANGE *array, 1476 [in, out] DWORD *ranges); 1477 1478 HRESULT SetUDPPortRanges( 1479 [in, size_is( ranges )] WM_PORT_NUMBER_RANGE *array, 1480 [in] DWORD ranges); 1481 1482 HRESULT GetProxySettings( 1483 [in] const WCHAR *protocol, 1484 [out] WMT_PROXY_SETTINGS *proxy); 1485 1486 HRESULT SetProxySettings( 1487 [in] LPCWSTR protocol, 1488 [in] WMT_PROXY_SETTINGS proxy); 1489 1490 HRESULT GetProxyHostName( 1491 [in] const WCHAR *protocol, 1492 [out, size_is( *size )] WCHAR *hostname, 1493 [in, out] DWORD *size); 1494 1495 HRESULT SetProxyHostName( 1496 [in] const WCHAR *protocol, 1497 [in] const WCHAR *hostname); 1498 1499 HRESULT GetProxyPort( 1500 [in] const WCHAR *protocol, 1501 [out] DWORD *port); 1502 1503 HRESULT SetProxyPort( 1504 [in] const WCHAR *protocol, 1505 [in] DWORD port); 1506 1507 HRESULT GetProxyExceptionList( 1508 [in] const WCHAR *protocol, 1509 [out, size_is( *count )] WCHAR *exceptions, 1510 [in, out] DWORD *count); 1511 1512 HRESULT SetProxyExceptionList( 1513 [in] const WCHAR *protocol, 1514 [in] const WCHAR *exceptions); 1515 1516 HRESULT GetProxyBypassForLocal( 1517 [in] const WCHAR *protocol, 1518 [out] BOOL *bypass); 1519 1520 HRESULT SetProxyBypassForLocal( 1521 [in] const WCHAR *protocol, 1522 [in] BOOL bypass); 1523 1524 HRESULT GetForceRerunAutoProxyDetection([out] BOOL *detection); 1525 HRESULT SetForceRerunAutoProxyDetection([in] BOOL detection); 1526 1527 HRESULT GetEnableMulticast([out] BOOL *multicast); 1528 HRESULT SetEnableMulticast([in] BOOL multicast); 1529 1530 HRESULT GetEnableHTTP([out] BOOL *enable); 1531 HRESULT SetEnableHTTP([in] BOOL enable); 1532 1533 HRESULT GetEnableUDP([out] BOOL *enable); 1534 HRESULT SetEnableUDP([in] BOOL enable); 1535 1536 HRESULT GetEnableTCP([out] BOOL *enable); 1537 HRESULT SetEnableTCP([in] BOOL enable); 1538 1539 HRESULT ResetProtocolRollover(); 1540 1541 HRESULT GetConnectionBandwidth([out] DWORD *bandwidth); 1542 HRESULT SetConnectionBandwidth([in] DWORD bandwidth); 1543 1544 HRESULT GetNumProtocolsSupported([out] DWORD *protocols); 1545 1546 HRESULT GetSupportedProtocolName( 1547 [in] DWORD protocol_num, 1548 [out, size_is( *size )] WCHAR *protocol, 1549 [in, out] DWORD *size); 1550 1551 HRESULT AddLoggingUrl([in] const WCHAR *url); 1552 1553 HRESULT GetLoggingUrl( 1554 [in] DWORD index, 1555 [out, size_is( *size )] WCHAR *url, 1556 [in, out] DWORD *size); 1557 1558 HRESULT GetLoggingUrlCount([out] DWORD *count); 1559 1560 HRESULT ResetLoggingUrlList(); 1561} 1562 1563[ 1564 object, 1565 uuid(d979a853-042b-4050-8387-c939db22013f), 1566 pointer_default(unique), 1567 local 1568] 1569interface IWMReaderNetworkConfig2 : IWMReaderNetworkConfig 1570{ 1571 HRESULT GetEnableContentCaching([out] BOOL *enable); 1572 HRESULT SetEnableContentCaching([in] BOOL enable); 1573 1574 HRESULT GetEnableFastCache([out] BOOL *enable); 1575 HRESULT SetEnableFastCache([in] BOOL enable); 1576 1577 HRESULT GetAcceleratedStreamingDuration([out] QWORD *duration); 1578 HRESULT SetAcceleratedStreamingDuration([in] QWORD duration); 1579 1580 HRESULT GetAutoReconnectLimit([out] DWORD *limit); 1581 HRESULT SetAutoReconnectLimit([in] DWORD limit); 1582 1583 HRESULT GetEnableResends([out] BOOL *enable); 1584 HRESULT SetEnableResends([in] BOOL enable); 1585 1586 HRESULT GetEnableThinning([out] BOOL *enable); 1587 HRESULT SetEnableThinning([in] BOOL enable); 1588 1589 HRESULT GetMaxNetPacketSize([out] DWORD *packet_size); 1590} 1591 1592[ 1593 object, 1594 uuid(96406bed-2b2b-11d3-b36b-00c04f6108ff), 1595 pointer_default(unique), 1596 local 1597] 1598 1599interface IWMReaderStreamClock : IUnknown 1600{ 1601 HRESULT GetTime([in] QWORD *now); 1602 1603 HRESULT SetTimer([in] QWORD when, 1604 [in] void *param, 1605 [out] DWORD *id); 1606 1607 HRESULT KillTimer([in] DWORD id); 1608} 1609 1610[ 1611 object, 1612 uuid(cdfb97ab-188f-40b3-b643-5b7903975c59), 1613 pointer_default(unique), 1614 local 1615] 1616interface IWMPacketSize : IUnknown 1617{ 1618 HRESULT GetMaxPacketSize([out] DWORD *size); 1619 HRESULT SetMaxPacketSize([in] DWORD size); 1620} 1621 1622[ 1623 object, 1624 uuid(8bfc2b9e-b646-4233-a877-1c6a079669dc), 1625 pointer_default(unique), 1626 local 1627] 1628interface IWMPacketSize2 : IWMPacketSize 1629{ 1630 HRESULT GetMinPacketSize([out] DWORD *size); 1631 HRESULT SetMinPacketSize([in] DWORD size); 1632} 1633 1634[ 1635 object, 1636 uuid(d2827540-3ee7-432c-b14c-dc17f085d3b3), 1637 pointer_default(unique), 1638 local 1639] 1640interface IWMDRMReader : IUnknown 1641{ 1642 HRESULT AcquireLicense([in] DWORD flags); 1643 HRESULT CancelLicenseAcquisition(); 1644 1645 HRESULT Individualize([in] DWORD flags); 1646 HRESULT CancelIndividualization(); 1647 1648 HRESULT MonitorLicenseAcquisition(); 1649 HRESULT CancelMonitorLicenseAcquisition(); 1650 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); 1656 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); 1662} 1663 1664[ 1665 object, 1666 uuid(befe7a75-9f1d-4075-b9d9-a3c37bda49a0), 1667 pointer_default(unique), 1668 local 1669] 1670interface IWMDRMReader2 : IWMDRMReader 1671{ 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); 1677 1678 HRESULT GetCopyOutputLevels( 1679 [out, size_is( *length )] DRM_COPY_OPL *copy, 1680 [in, out] DWORD *length, 1681 [out] DWORD *level); 1682 1683 HRESULT TryNextLicense(); 1684} 1685 1686[ 1687 object, 1688 uuid(e08672de-f1e7-4ff4-a0a3-fc4b08e4caf8), 1689 pointer_default(unique), 1690 local 1691] 1692interface IWMDRMReader3 : IWMDRMReader2 1693{ 1694 HRESULT GetInclusionList( 1695 [out] GUID **guids, 1696 [out] DWORD *count); 1697} 1698 1699[ 1700 object, 1701 uuid(bddc4d08-944d-4d52-a612-46c3fda07dd4), 1702 pointer_default( unique ), 1703 local 1704] 1705interface IWMReaderAccelerator : IUnknown 1706{ 1707 HRESULT GetCodecInterface( 1708 [in] DWORD output, 1709 [in] REFIID riid, 1710 [out] void **codec); 1711 1712 HRESULT Notify( 1713 [in] DWORD output, 1714 [in] WM_MEDIA_TYPE *subtype); 1715} 1716 1717[ 1718 object, 1719 uuid(f369e2f0-e081-4fe6-8450-b810b2f410d1), 1720 pointer_default(unique), 1721 local 1722] 1723interface IWMReaderTimecode : IUnknown 1724{ 1725 HRESULT GetTimecodeRangeCount( 1726 [in] WORD num, 1727 [out] WORD *count); 1728 1729 HRESULT GetTimecodeRangeBounds( 1730 [in] WORD stream, 1731 [in] WORD range, 1732 [out] DWORD *start_timecode, 1733 [out] DWORD *end_timecode); 1734} 1735 1736[ 1737 object, 1738 uuid(fdbe5592-81a1-41ea-93bd-735cad1adc05), 1739 pointer_default(unique), 1740 local 1741] 1742interface IWMReaderTypeNegotiation : IUnknown 1743{ 1744 HRESULT TryOutputProps( 1745 [in] DWORD output, 1746 [in] IWMOutputMediaProps *props); 1747} 1748 1749[ 1750 object, 1751 uuid(df683f00-2d49-4d8e-92b7-fb19f6a0dc57), 1752 pointer_default(unique), 1753 local 1754] 1755interface IWMLanguageList : IUnknown 1756{ 1757 HRESULT GetLanguageCount( 1758 [out] WORD *count); 1759 1760 HRESULT GetLanguageDetails( 1761 [in] WORD index, 1762 [out, size_is( *length )] WCHAR *language, 1763 [in, out] WORD *length); 1764 1765 HRESULT AddLanguageByRFC1766String( 1766 [in] LPCWSTR_WMSDK_TYPE_SAFE language, 1767 [out] WORD *index); 1768} 1769 1770[ 1771 object, 1772 uuid(f28c0300-9baa-4477-a846-1744d9cbf533), 1773 pointer_default(unique), 1774 local 1775] 1776interface IWMReaderPlaylistBurn : IUnknown 1777{ 1778 HRESULT InitPlaylistBurn( 1779 [in] DWORD count, 1780 [in] LPCWSTR_WMSDK_TYPE_SAFE *filenames, 1781 [in] IWMStatusCallback *callback, 1782 [in] void *context); 1783 1784 HRESULT GetInitResults( 1785 [in] DWORD count, 1786 [out] HRESULT *stat); 1787 1788 HRESULT Cancel(); 1789 1790 HRESULT EndPlaylistBurn([in] HRESULT result); 1791} 1792 1793[ 1794 object, 1795 uuid(72995a79-5090-42a4-9c8c-d9d0b6d34be5), 1796 pointer_default(unique), 1797 local 1798] 1799interface IWMPropertyVault : IUnknown 1800{ 1801 HRESULT GetPropertyCount([in] DWORD *count); 1802 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); 1808 1809 HRESULT SetProperty( 1810 [in] const WCHAR *name, 1811 [in] WMT_ATTR_DATATYPE type, 1812 [in] BYTE *value, 1813 [in] DWORD size); 1814 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); 1822 1823 HRESULT CopyPropertiesFrom([in] IWMPropertyVault *vault); 1824 1825 HRESULT Clear(); 1826}; 1827 1828[ 1829 object, 1830 uuid(fc54a285-38c4-45b5-aa23-85b9f7cb424b), 1831 pointer_default(unique), 1832 local 1833] 1834interface IWMWriterPreprocess : IUnknown 1835{ 1836 HRESULT GetMaxPreprocessingPasses( 1837 [in] DWORD input, 1838 [in] DWORD flags, 1839 [out] DWORD *passes); 1840 1841 HRESULT SetNumPreprocessingPasses( 1842 [in] DWORD input, 1843 [in] DWORD flags, 1844 [in] DWORD passes); 1845 1846 HRESULT BeginPreprocessingPass( 1847 [in] DWORD input, 1848 [in] DWORD flags); 1849 1850 HRESULT PreprocessSample( 1851 [in] DWORD input, 1852 [in] QWORD sample_time, 1853 [in] DWORD flags, 1854 [in] INSSBuffer *sample); 1855 1856 HRESULT EndPreprocessingPass( 1857 [in] DWORD input, 1858 [in] DWORD flags); 1859}; 1860 1861[ 1862 object, 1863 uuid(05e5ac9f-3fb6-4508-bb43-a4067ba1ebe8), 1864 pointer_default(unique), 1865 local 1866] 1867interface IWMLicenseBackup : IUnknown 1868{ 1869 HRESULT BackupLicenses( 1870 [in] DWORD dwFlags, 1871 [in] IWMStatusCallback *pCallback); 1872 1873 HRESULT CancelLicenseBackup(); 1874} 1875 1876[ 1877 object, 1878 uuid(c70b6334-a22e-4efb-a245-15e65a004a13), 1879 pointer_default(unique), 1880 local 1881] 1882interface IWMLicenseRestore : IUnknown 1883{ 1884 HRESULT RestoreLicenses( 1885 [in] DWORD dwFlags, 1886 [in] IWMStatusCallback *pCallback); 1887 1888 HRESULT CancelLicenseRestore(); 1889} 1890 1891cpp_quote("HRESULT WINAPI WMCheckURLExtension(LPCWSTR);") 1892cpp_quote("HRESULT WINAPI WMCheckURLScheme(LPCWSTR);") 1893cpp_quote("HRESULT WINAPI WMCreateWriter(IUnknown*,IWMWriter**);") 1894cpp_quote("HRESULT WINAPI WMCreateReader(IUnknown*,DWORD,IWMReader**);") 1895cpp_quote("HRESULT WINAPI WMCreateSyncReader(IUnknown*,DWORD,IWMSyncReader**);") 1896cpp_quote("HRESULT WINAPI WMCreateEditor(IWMMetadataEditor**);") 1897cpp_quote("HRESULT WINAPI WMCreateBackupRestorer(IUnknown*,IWMLicenseBackup**);") 1898cpp_quote("HRESULT WINAPI WMCreateProfileManager(IWMProfileManager**);") 1899 1900 1901cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_Base, 0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1902cpp_quote("EXTERN_GUID(WMMEDIATYPE_Video, 0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1903cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB1, 0xe436eb78,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") 1904cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB4, 0xe436eb79,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") 1905cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB8, 0xe436eb7a,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") 1906cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB565, 0xe436eb7b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") 1907cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB555, 0xe436eb7c,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") 1908cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB24, 0xe436eb7d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") 1909cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB32, 0xe436eb7e,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") 1910cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_I420, 0x30323449,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1911cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_IYUV, 0x56555949,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1912cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YV12, 0x32315659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1913cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YUY2, 0x32595559,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1914cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_P422, 0x32323450,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1915cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_UYVY, 0x59565955,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1916cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YVYU, 0x55595659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1917cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YVU9, 0x39555659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1918cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_VIDEOIMAGE, 0x1d4a45f2,0xe5f6,0x4b44,0x83,0x88,0xf0,0xae,0x5c,0x0e,0x0c,0x37);") 1919cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MP43, 0x3334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1920cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MP4S, 0x5334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1921cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_M4S2, 0x3253344d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1922cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV1, 0x31564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1923cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV2, 0x32564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1924cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MSS1, 0x3153534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1925cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MPEG2_VIDEO, 0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea);") 1926cpp_quote("EXTERN_GUID(WMMEDIATYPE_Audio, 0x73647561,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1927cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_PCM, 0x00000001,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1928cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_DRM, 0x00000009,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1929cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMAudioV9, 0x00000162,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1930cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMAudio_Lossless, 0x00000163,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1931cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MSS2, 0x3253534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1932cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMSP1, 0x0000000a,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1933cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMSP2, 0x0000000b,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1934cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV3, 0x33564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1935cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMVP, 0x50564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1936cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WVP2, 0x32505657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1937cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMVA, 0x41564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1938cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WVC1, 0x31435657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") 1939