zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

wmcontainer.h (115684B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/wmcontainer.idl - Do not edit ***/
      2 
      3 #ifdef _WIN32
      4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      6 #endif
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 #endif
     10 
     11 #ifndef COM_NO_WINDOWS_H
     12 #include <windows.h>
     13 #include <ole2.h>
     14 #endif
     15 
     16 #ifndef __wmcontainer_h__
     17 #define __wmcontainer_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IMFASFContentInfo_FWD_DEFINED__
     22 #define __IMFASFContentInfo_FWD_DEFINED__
     23 typedef interface IMFASFContentInfo IMFASFContentInfo;
     24 #ifdef __cplusplus
     25 interface IMFASFContentInfo;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IMFASFMutualExclusion_FWD_DEFINED__
     30 #define __IMFASFMutualExclusion_FWD_DEFINED__
     31 typedef interface IMFASFMutualExclusion IMFASFMutualExclusion;
     32 #ifdef __cplusplus
     33 interface IMFASFMutualExclusion;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IMFASFStreamPrioritization_FWD_DEFINED__
     38 #define __IMFASFStreamPrioritization_FWD_DEFINED__
     39 typedef interface IMFASFStreamPrioritization IMFASFStreamPrioritization;
     40 #ifdef __cplusplus
     41 interface IMFASFStreamPrioritization;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IMFASFSplitter_FWD_DEFINED__
     46 #define __IMFASFSplitter_FWD_DEFINED__
     47 typedef interface IMFASFSplitter IMFASFSplitter;
     48 #ifdef __cplusplus
     49 interface IMFASFSplitter;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IMFASFMultiplexer_FWD_DEFINED__
     54 #define __IMFASFMultiplexer_FWD_DEFINED__
     55 typedef interface IMFASFMultiplexer IMFASFMultiplexer;
     56 #ifdef __cplusplus
     57 interface IMFASFMultiplexer;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IMFASFIndexer_FWD_DEFINED__
     62 #define __IMFASFIndexer_FWD_DEFINED__
     63 typedef interface IMFASFIndexer IMFASFIndexer;
     64 #ifdef __cplusplus
     65 interface IMFASFIndexer;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IMFASFStreamSelector_FWD_DEFINED__
     70 #define __IMFASFStreamSelector_FWD_DEFINED__
     71 typedef interface IMFASFStreamSelector IMFASFStreamSelector;
     72 #ifdef __cplusplus
     73 interface IMFASFStreamSelector;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __IMFDRMNetHelper_FWD_DEFINED__
     78 #define __IMFDRMNetHelper_FWD_DEFINED__
     79 typedef interface IMFDRMNetHelper IMFDRMNetHelper;
     80 #ifdef __cplusplus
     81 interface IMFDRMNetHelper;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IMFASFProfile_FWD_DEFINED__
     86 #define __IMFASFProfile_FWD_DEFINED__
     87 typedef interface IMFASFProfile IMFASFProfile;
     88 #ifdef __cplusplus
     89 interface IMFASFProfile;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __IMFASFStreamConfig_FWD_DEFINED__
     94 #define __IMFASFStreamConfig_FWD_DEFINED__
     95 typedef interface IMFASFStreamConfig IMFASFStreamConfig;
     96 #ifdef __cplusplus
     97 interface IMFASFStreamConfig;
     98 #endif /* __cplusplus */
     99 #endif
    100 
    101 /* Headers for imported files */
    102 
    103 #include <mfidl.h>
    104 
    105 #ifdef __cplusplus
    106 extern "C" {
    107 #endif
    108 
    109 #include <winapifamily.h>
    110 
    111 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    112 
    113 EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_FILE_ID, 0x3de649b4, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
    114 EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_CREATION_TIME, 0x3de649b6, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
    115 EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_FLAGS, 0x3de649bb, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
    116 EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_MAX_PACKET_SIZE, 0x3de649bd, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
    117 EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_MAX_BITRATE, 0x3de649be, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
    118 EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_MIN_PACKET_SIZE, 0x3de649bc, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
    119 EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_PACKETS, 0x3de649b7, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
    120 EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_PLAY_DURATION, 0x3de649b8, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
    121 EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_PREROLL, 0x3de649ba, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
    122 EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_SEND_DURATION, 0x3de649b9, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
    123 EXTERN_GUID(CLSID_WMDRMSystemID, 0x8948BB22, 0x11BD, 0x4796, 0x93, 0xE3, 0x97, 0x4D, 0x1B, 0x57, 0x56, 0x78);
    124 EXTERN_GUID(MF_PD_ASF_CONTENTENCRYPTION_KEYID, 0x8520fe3e, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
    125 EXTERN_GUID(MF_PD_ASF_CONTENTENCRYPTION_LICENSE_URL, 0x8520fe40, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
    126 EXTERN_GUID(MF_PD_ASF_CONTENTENCRYPTION_SECRET_DATA, 0x8520fe3f, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
    127 EXTERN_GUID(MF_PD_ASF_CONTENTENCRYPTION_TYPE, 0x8520fe3d, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
    128 EXTERN_GUID(MF_PD_ASF_CONTENTENCRYPTIONEX_ENCRYPTION_DATA, 0x62508be5, 0xecdf, 0x4924, 0xa3, 0x59, 0x72, 0xba, 0xb3, 0x39, 0x7b, 0x9d);
    129 EXTERN_GUID(MF_PD_ASF_LANGLIST, 0xf23de43c, 0x9977, 0x460d, 0xa6, 0xec, 0x32, 0x93, 0x7f, 0x16, 0xf, 0x7d);
    130 EXTERN_GUID(MF_PD_ASF_MARKER, 0x5134330e, 0x83a6, 0x475e, 0xa9, 0xd5, 0x4f, 0xb8, 0x75, 0xfb, 0x2e, 0x31);
    131 EXTERN_GUID(MF_PD_ASF_SCRIPT, 0xe29cd0d7, 0xd602, 0x4923, 0xa7, 0xfe, 0x73, 0xfd, 0x97, 0xec, 0xc6, 0x50);
    132 EXTERN_GUID(MF_PD_ASF_CODECLIST, 0xe4bb3509, 0xc18d, 0x4df1, 0xbb, 0x99, 0x7a, 0x36, 0xb3, 0xcc, 0x41, 0x19);
    133 EXTERN_GUID(MF_PD_ASF_METADATA_IS_VBR, 0x5fc6947a, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
    134 EXTERN_GUID(MF_PD_ASF_METADATA_V8_VBRPEAK, 0x5fc6947b, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
    135 EXTERN_GUID(MF_PD_ASF_METADATA_V8_BUFFERAVERAGE, 0x5fc6947c, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
    136 EXTERN_GUID(MF_PD_ASF_METADATA_LEAKY_BUCKET_PAIRS, 0x5fc6947d, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
    137 EXTERN_GUID(MF_PD_ASF_DATA_START_OFFSET, 0xe7d5b3e7, 0x1f29, 0x45d3, 0x88, 0x22, 0x3e, 0x78, 0xfa, 0xe2, 0x72, 0xed);
    138 EXTERN_GUID(MF_PD_ASF_DATA_LENGTH, 0xe7d5b3e8, 0x1f29, 0x45d3, 0x88, 0x22, 0x3e, 0x78, 0xfa, 0xe2, 0x72, 0xed);
    139 EXTERN_GUID(MF_SD_ASF_EXTSTRMPROP_LANGUAGE_ID_INDEX, 0x48f8a522, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
    140 EXTERN_GUID(MF_SD_ASF_EXTSTRMPROP_AVG_DATA_BITRATE, 0x48f8a523, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
    141 EXTERN_GUID(MF_SD_ASF_EXTSTRMPROP_AVG_BUFFERSIZE, 0x48f8a524, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
    142 EXTERN_GUID(MF_SD_ASF_EXTSTRMPROP_MAX_DATA_BITRATE, 0x48f8a525, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
    143 EXTERN_GUID(MF_SD_ASF_EXTSTRMPROP_MAX_BUFFERSIZE, 0x48f8a526, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
    144 EXTERN_GUID(MF_SD_ASF_STREAMBITRATES_BITRATE, 0xa8e182ed, 0xafc8, 0x43d0, 0xb0, 0xd1, 0xf6, 0x5b, 0xad, 0x9d, 0xa5, 0x58);
    145 EXTERN_GUID(MF_SD_ASF_METADATA_DEVICE_CONFORMANCE_TEMPLATE, 0x245e929d, 0xc44e, 0x4f7e, 0xbb, 0x3c, 0x77, 0xd4, 0xdf, 0xd2, 0x7f, 0x8a);
    146 EXTERN_GUID(MF_PD_ASF_INFO_HAS_AUDIO, 0x80e62295, 0x2296, 0x4a44, 0xb3, 0x1c, 0xd1, 0x3, 0xc6, 0xfe, 0xd2, 0x3c);
    147 EXTERN_GUID(MF_PD_ASF_INFO_HAS_VIDEO, 0x80e62296, 0x2296, 0x4a44, 0xb3, 0x1c, 0xd1, 0x3, 0xc6, 0xfe, 0xd2, 0x3c);
    148 EXTERN_GUID(MF_PD_ASF_INFO_HAS_NON_AUDIO_VIDEO, 0x80e62297, 0x2296, 0x4a44, 0xb3, 0x1c, 0xd1, 0x3, 0xc6, 0xfe, 0xd2, 0x3c);
    149 #if WINVER >= 0x0601
    150 EXTERN_GUID(MFASFINDEXER_TYPE_TIMECODE, 0x49815231, 0x6bad, 0x44fd, 0x81, 0xa, 0x3f, 0x60, 0x98, 0x4e, 0xc7, 0xfd);
    151 EXTERN_GUID(MF_PD_ASF_LANGLIST_LEGACYORDER, 0xf23de43d, 0x9977, 0x460d, 0xa6, 0xec, 0x32, 0x93, 0x7f, 0x16, 0xf, 0x7d);
    152 #endif
    153 
    154 EXTERN_GUID(MFASFMutexType_Bitrate, 0x72178C2C, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
    155 EXTERN_GUID(MFASFMutexType_Language, 0x72178C2B, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
    156 EXTERN_GUID(MFASFMutexType_Presentation, 0x72178C2D, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
    157 EXTERN_GUID(MFASFMutexType_Unknown, 0x72178C2E, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
    158 EXTERN_GUID(MFASFSampleExtension_ContentType, 0xd590dc20, 0x07bc, 0x436c, 0x9c, 0xf7, 0xf3, 0xbb, 0xfb, 0xf1, 0xa4, 0xdc);
    159 EXTERN_GUID(MFASFSampleExtension_Encryption_SampleID, 0x6698B84E, 0x0AFA, 0x4330, 0xAE, 0xB2, 0x1C, 0x0A, 0x98, 0xD7, 0xA4, 0x4D);
    160 EXTERN_GUID(MFASFSampleExtension_Encryption_KeyID, 0x76376591,  0x795f,  0x4da1, 0x86, 0xed, 0x9d, 0x46, 0xec, 0xa1, 0x09, 0xa9);
    161 EXTERN_GUID(MFASFSampleExtension_FileName, 0xe165ec0e, 0x19ed, 0x45d7, 0xb4, 0xa7, 0x25, 0xcb, 0xd1, 0xe2, 0x8e, 0x9b);
    162 EXTERN_GUID(MFASFSampleExtension_OutputCleanPoint, 0xf72a3c6f, 0x6eb4, 0x4ebc, 0xb1, 0x92, 0x9, 0xad, 0x97, 0x59, 0xe8, 0x28);
    163 EXTERN_GUID(MFASFSampleExtension_PixelAspectRatio, 0x1b1ee554, 0xf9ea, 0x4bc8, 0x82, 0x1a, 0x37, 0x6b, 0x74, 0xe4, 0xc4, 0xb8);
    164 EXTERN_GUID(MFASFSampleExtension_SampleDuration, 0xc6bd9450, 0x867f, 0x4907, 0x83, 0xa3, 0xc7, 0x79, 0x21, 0xb7, 0x33, 0xad);
    165 EXTERN_GUID(MFASFSampleExtension_SMPTE, 0x399595ec, 0x8667, 0x4e2d, 0x8f, 0xdb, 0x98, 0x81, 0x4c, 0xe7, 0x6c, 0x1e);
    166 EXTERN_GUID(MFASFSPLITTER_PACKET_BOUNDARY, 0xfe584a05, 0xe8d6, 0x42e3, 0xb1, 0x76, 0xf1, 0x21, 0x17, 0x5, 0xfb, 0x6f);
    167 EXTERN_GUID(MF_ASFPROFILE_MINPACKETSIZE, 0x22587626, 0x47de, 0x4168, 0x87, 0xf5, 0xb5, 0xaa, 0x9b, 0x12, 0xa8, 0xf0);
    168 EXTERN_GUID(MF_ASFPROFILE_MAXPACKETSIZE, 0x22587627, 0x47de, 0x4168, 0x87, 0xf5, 0xb5, 0xaa, 0x9b, 0x12, 0xa8, 0xf0);
    169 EXTERN_GUID(MF_ASFSTREAMCONFIG_LEAKYBUCKET1, 0xc69b5901, 0xea1a, 0x4c9b, 0xb6, 0x92, 0xe2, 0xa0, 0xd2, 0x9a, 0x8a, 0xdd);
    170 EXTERN_GUID(MF_ASFSTREAMCONFIG_LEAKYBUCKET2, 0xc69b5902, 0xea1a, 0x4c9b, 0xb6, 0x92, 0xe2, 0xa0, 0xd2, 0x9a, 0x8a, 0xdd);
    171 #ifndef __IMFASFProfile_FWD_DEFINED__
    172 #define __IMFASFProfile_FWD_DEFINED__
    173 typedef interface IMFASFProfile IMFASFProfile;
    174 #ifdef __cplusplus
    175 interface IMFASFProfile;
    176 #endif /* __cplusplus */
    177 #endif
    178 
    179 #ifndef __IMFASFStreamConfig_FWD_DEFINED__
    180 #define __IMFASFStreamConfig_FWD_DEFINED__
    181 typedef interface IMFASFStreamConfig IMFASFStreamConfig;
    182 #ifdef __cplusplus
    183 interface IMFASFStreamConfig;
    184 #endif /* __cplusplus */
    185 #endif
    186 
    187 #ifndef __IMFASFMutualExclusion_FWD_DEFINED__
    188 #define __IMFASFMutualExclusion_FWD_DEFINED__
    189 typedef interface IMFASFMutualExclusion IMFASFMutualExclusion;
    190 #ifdef __cplusplus
    191 interface IMFASFMutualExclusion;
    192 #endif /* __cplusplus */
    193 #endif
    194 
    195 #ifndef __IMFASFStreamPrioritization_FWD_DEFINED__
    196 #define __IMFASFStreamPrioritization_FWD_DEFINED__
    197 typedef interface IMFASFStreamPrioritization IMFASFStreamPrioritization;
    198 #ifdef __cplusplus
    199 interface IMFASFStreamPrioritization;
    200 #endif /* __cplusplus */
    201 #endif
    202 
    203 #define MFASFINDEXER_PER_ENTRY_BYTES_DYNAMIC 0xffff
    204 #define MFASFINDEXER_NO_FIXED_INTERVAL 0xffffffff
    205 #define MFASFINDEXER_READ_FOR_REVERSEPLAYBACK_OUTOFDATASEGMENT 0xffffffffffffffffll
    206 #define MFASFINDEXER_APPROX_SEEK_TIME_UNKNOWN 0xffffffffffffffffll
    207 
    208 #define MFASF_MIN_HEADER_BYTES (sizeof (GUID) + sizeof (QWORD))
    209 
    210 #define  MFASF_MAX_STREAM_NUMBER 127
    211 #define  MFASF_INVALID_STREAM_NUMBER (MFASF_MAX_STREAM_NUMBER + 1)
    212 #define  MFASF_PAYLOADEXTENSION_MAX_SIZE 0xff
    213 #define  MFASF_PAYLOADEXTENSION_VARIABLE_SIZE 0xffff
    214 #define  MFASF_DEFAULT_BUFFER_WINDOW_MS 3000
    215 
    216 typedef enum MFASF_SPLITTERFLAGS {
    217     MFASF_SPLITTER_REVERSE = 0x1,
    218     MFASF_SPLITTER_WMDRM = 0x2
    219 } MFASF_SPLITTERFLAGS;
    220 typedef enum ASF_STATUSFLAGS {
    221     ASF_STATUSFLAGS_INCOMPLETE = 0x1
    222 } ASF_STATUSFLAGS;
    223 typedef enum MFASF_MULTIPLEXERFLAGS {
    224     MFASF_MULTIPLEXER_AUTOADJUST_BITRATE = 0x1
    225 } MFASF_MULTIPLEXERFLAGS;
    226 typedef enum MFASF_INDEXERFLAGS {
    227     MFASF_INDEXER_WRITE_NEW_INDEX = 0x1,
    228     MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK = 0x2,
    229     MFASF_INDEXER_WRITE_FOR_LIVEREAD = 0x4
    230 } MFASF_INDEXER_FLAGS;
    231 typedef enum MFASF_STREAMSELECTORFLAGS {
    232     MFASF_STREAMSELECTOR_DISABLE_THINNING = 0x1,
    233     MFASF_STREAMSELECTOR_USE_AVERAGE_BITRATE = 0x2
    234 } MFASF_STREAMSELECTOR_FLAGS;
    235 typedef enum ASF_SELECTION_STATUS {
    236     ASF_STATUS_NOTSELECTED = 0,
    237     ASF_STATUS_CLEANPOINTSONLY = 1,
    238     ASF_STATUS_ALLDATAUNITS = 2
    239 } ASF_SELECTION_STATUS;
    240 typedef enum _MFSINK_WMDRMACTION {
    241     MFSINK_WMDRMACTION_UNDEFINED = 0,
    242     MFSINK_WMDRMACTION_ENCODE = 1,
    243     MFSINK_WMDRMACTION_TRANSCODE = 2,
    244     MFSINK_WMDRMACTION_TRANSCRYPT = 3,
    245     MFSINK_WMDRMACTION_LAST = 3
    246 } MFSINK_WMDRMACTION;
    247 
    248 typedef struct ASF_MUX_STATISTICS {
    249     DWORD cFramesWritten;
    250     DWORD cFramesDropped;
    251 } ASF_MUX_STATISTICS;
    252 typedef struct _ASF_INDEX_IDENTIFIER {
    253     GUID guidIndexType;
    254     WORD wStreamNumber;
    255 } ASF_INDEX_IDENTIFIER;
    256 typedef struct _ASF_INDEX_DESCRIPTOR {
    257     ASF_INDEX_IDENTIFIER Identifier;
    258     WORD cPerEntryBytes;
    259     WCHAR szDescription[32];
    260     DWORD dwInterval;
    261 } ASF_INDEX_DESCRIPTOR;
    262 
    263 /*****************************************************************************
    264  * IMFASFContentInfo interface
    265  */
    266 #ifndef __IMFASFContentInfo_INTERFACE_DEFINED__
    267 #define __IMFASFContentInfo_INTERFACE_DEFINED__
    268 
    269 DEFINE_GUID(IID_IMFASFContentInfo, 0xb1dca5cd, 0xd5da, 0x4451, 0x8e,0x9e, 0xdb,0x5c,0x59,0x91,0x4e,0xad);
    270 #if defined(__cplusplus) && !defined(CINTERFACE)
    271 MIDL_INTERFACE("b1dca5cd-d5da-4451-8e9e-db5c59914ead")
    272 IMFASFContentInfo : public IUnknown
    273 {
    274     virtual HRESULT STDMETHODCALLTYPE GetHeaderSize(
    275         IMFMediaBuffer *pIStartOfContent,
    276         QWORD *cbHeaderSize) = 0;
    277 
    278     virtual HRESULT STDMETHODCALLTYPE ParseHeader(
    279         IMFMediaBuffer *pIHeaderBuffer,
    280         QWORD cbOffsetWithinHeader) = 0;
    281 
    282     virtual HRESULT STDMETHODCALLTYPE GenerateHeader(
    283         IMFMediaBuffer *pIHeader,
    284         DWORD *pcbHeader) = 0;
    285 
    286     virtual HRESULT STDMETHODCALLTYPE GetProfile(
    287         IMFASFProfile **ppIProfile) = 0;
    288 
    289     virtual HRESULT STDMETHODCALLTYPE SetProfile(
    290         IMFASFProfile *pIProfile) = 0;
    291 
    292     virtual HRESULT STDMETHODCALLTYPE GeneratePresentationDescriptor(
    293         IMFPresentationDescriptor **ppIPresentationDescriptor) = 0;
    294 
    295     virtual HRESULT STDMETHODCALLTYPE GetEncodingConfigurationPropertyStore(
    296         WORD wStreamNumber,
    297         IPropertyStore **ppIStore) = 0;
    298 
    299 };
    300 #ifdef __CRT_UUID_DECL
    301 __CRT_UUID_DECL(IMFASFContentInfo, 0xb1dca5cd, 0xd5da, 0x4451, 0x8e,0x9e, 0xdb,0x5c,0x59,0x91,0x4e,0xad)
    302 #endif
    303 #else
    304 typedef struct IMFASFContentInfoVtbl {
    305     BEGIN_INTERFACE
    306 
    307     /*** IUnknown methods ***/
    308     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    309         IMFASFContentInfo *This,
    310         REFIID riid,
    311         void **ppvObject);
    312 
    313     ULONG (STDMETHODCALLTYPE *AddRef)(
    314         IMFASFContentInfo *This);
    315 
    316     ULONG (STDMETHODCALLTYPE *Release)(
    317         IMFASFContentInfo *This);
    318 
    319     /*** IMFASFContentInfo methods ***/
    320     HRESULT (STDMETHODCALLTYPE *GetHeaderSize)(
    321         IMFASFContentInfo *This,
    322         IMFMediaBuffer *pIStartOfContent,
    323         QWORD *cbHeaderSize);
    324 
    325     HRESULT (STDMETHODCALLTYPE *ParseHeader)(
    326         IMFASFContentInfo *This,
    327         IMFMediaBuffer *pIHeaderBuffer,
    328         QWORD cbOffsetWithinHeader);
    329 
    330     HRESULT (STDMETHODCALLTYPE *GenerateHeader)(
    331         IMFASFContentInfo *This,
    332         IMFMediaBuffer *pIHeader,
    333         DWORD *pcbHeader);
    334 
    335     HRESULT (STDMETHODCALLTYPE *GetProfile)(
    336         IMFASFContentInfo *This,
    337         IMFASFProfile **ppIProfile);
    338 
    339     HRESULT (STDMETHODCALLTYPE *SetProfile)(
    340         IMFASFContentInfo *This,
    341         IMFASFProfile *pIProfile);
    342 
    343     HRESULT (STDMETHODCALLTYPE *GeneratePresentationDescriptor)(
    344         IMFASFContentInfo *This,
    345         IMFPresentationDescriptor **ppIPresentationDescriptor);
    346 
    347     HRESULT (STDMETHODCALLTYPE *GetEncodingConfigurationPropertyStore)(
    348         IMFASFContentInfo *This,
    349         WORD wStreamNumber,
    350         IPropertyStore **ppIStore);
    351 
    352     END_INTERFACE
    353 } IMFASFContentInfoVtbl;
    354 
    355 interface IMFASFContentInfo {
    356     CONST_VTBL IMFASFContentInfoVtbl* lpVtbl;
    357 };
    358 
    359 #ifdef COBJMACROS
    360 #ifndef WIDL_C_INLINE_WRAPPERS
    361 /*** IUnknown methods ***/
    362 #define IMFASFContentInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    363 #define IMFASFContentInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
    364 #define IMFASFContentInfo_Release(This) (This)->lpVtbl->Release(This)
    365 /*** IMFASFContentInfo methods ***/
    366 #define IMFASFContentInfo_GetHeaderSize(This,pIStartOfContent,cbHeaderSize) (This)->lpVtbl->GetHeaderSize(This,pIStartOfContent,cbHeaderSize)
    367 #define IMFASFContentInfo_ParseHeader(This,pIHeaderBuffer,cbOffsetWithinHeader) (This)->lpVtbl->ParseHeader(This,pIHeaderBuffer,cbOffsetWithinHeader)
    368 #define IMFASFContentInfo_GenerateHeader(This,pIHeader,pcbHeader) (This)->lpVtbl->GenerateHeader(This,pIHeader,pcbHeader)
    369 #define IMFASFContentInfo_GetProfile(This,ppIProfile) (This)->lpVtbl->GetProfile(This,ppIProfile)
    370 #define IMFASFContentInfo_SetProfile(This,pIProfile) (This)->lpVtbl->SetProfile(This,pIProfile)
    371 #define IMFASFContentInfo_GeneratePresentationDescriptor(This,ppIPresentationDescriptor) (This)->lpVtbl->GeneratePresentationDescriptor(This,ppIPresentationDescriptor)
    372 #define IMFASFContentInfo_GetEncodingConfigurationPropertyStore(This,wStreamNumber,ppIStore) (This)->lpVtbl->GetEncodingConfigurationPropertyStore(This,wStreamNumber,ppIStore)
    373 #else
    374 /*** IUnknown methods ***/
    375 static inline HRESULT IMFASFContentInfo_QueryInterface(IMFASFContentInfo* This,REFIID riid,void **ppvObject) {
    376     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    377 }
    378 static inline ULONG IMFASFContentInfo_AddRef(IMFASFContentInfo* This) {
    379     return This->lpVtbl->AddRef(This);
    380 }
    381 static inline ULONG IMFASFContentInfo_Release(IMFASFContentInfo* This) {
    382     return This->lpVtbl->Release(This);
    383 }
    384 /*** IMFASFContentInfo methods ***/
    385 static inline HRESULT IMFASFContentInfo_GetHeaderSize(IMFASFContentInfo* This,IMFMediaBuffer *pIStartOfContent,QWORD *cbHeaderSize) {
    386     return This->lpVtbl->GetHeaderSize(This,pIStartOfContent,cbHeaderSize);
    387 }
    388 static inline HRESULT IMFASFContentInfo_ParseHeader(IMFASFContentInfo* This,IMFMediaBuffer *pIHeaderBuffer,QWORD cbOffsetWithinHeader) {
    389     return This->lpVtbl->ParseHeader(This,pIHeaderBuffer,cbOffsetWithinHeader);
    390 }
    391 static inline HRESULT IMFASFContentInfo_GenerateHeader(IMFASFContentInfo* This,IMFMediaBuffer *pIHeader,DWORD *pcbHeader) {
    392     return This->lpVtbl->GenerateHeader(This,pIHeader,pcbHeader);
    393 }
    394 static inline HRESULT IMFASFContentInfo_GetProfile(IMFASFContentInfo* This,IMFASFProfile **ppIProfile) {
    395     return This->lpVtbl->GetProfile(This,ppIProfile);
    396 }
    397 static inline HRESULT IMFASFContentInfo_SetProfile(IMFASFContentInfo* This,IMFASFProfile *pIProfile) {
    398     return This->lpVtbl->SetProfile(This,pIProfile);
    399 }
    400 static inline HRESULT IMFASFContentInfo_GeneratePresentationDescriptor(IMFASFContentInfo* This,IMFPresentationDescriptor **ppIPresentationDescriptor) {
    401     return This->lpVtbl->GeneratePresentationDescriptor(This,ppIPresentationDescriptor);
    402 }
    403 static inline HRESULT IMFASFContentInfo_GetEncodingConfigurationPropertyStore(IMFASFContentInfo* This,WORD wStreamNumber,IPropertyStore **ppIStore) {
    404     return This->lpVtbl->GetEncodingConfigurationPropertyStore(This,wStreamNumber,ppIStore);
    405 }
    406 #endif
    407 #endif
    408 
    409 #endif
    410 
    411 
    412 #endif  /* __IMFASFContentInfo_INTERFACE_DEFINED__ */
    413 
    414 /*****************************************************************************
    415  * IMFASFMutualExclusion interface
    416  */
    417 #ifndef __IMFASFMutualExclusion_INTERFACE_DEFINED__
    418 #define __IMFASFMutualExclusion_INTERFACE_DEFINED__
    419 
    420 DEFINE_GUID(IID_IMFASFMutualExclusion, 0x12558291, 0xe399, 0x11d5, 0xbc,0x2a, 0x00,0xb0,0xd0,0xf3,0xf4,0xab);
    421 #if defined(__cplusplus) && !defined(CINTERFACE)
    422 MIDL_INTERFACE("12558291-e399-11d5-bc2a-00b0d0f3f4ab")
    423 IMFASFMutualExclusion : public IUnknown
    424 {
    425     virtual HRESULT STDMETHODCALLTYPE GetType(
    426         GUID *pguidType) = 0;
    427 
    428     virtual HRESULT STDMETHODCALLTYPE SetType(
    429         REFGUID guidType) = 0;
    430 
    431     virtual HRESULT STDMETHODCALLTYPE GetRecordCount(
    432         DWORD *pdwRecordCount) = 0;
    433 
    434     virtual HRESULT STDMETHODCALLTYPE GetStreamsForRecord(
    435         DWORD dwRecordNumber,
    436         WORD *pwStreamNumArray,
    437         DWORD *pcStreams) = 0;
    438 
    439     virtual HRESULT STDMETHODCALLTYPE AddStreamForRecord(
    440         DWORD dwRecordNumber,
    441         WORD wStreamNumber) = 0;
    442 
    443     virtual HRESULT STDMETHODCALLTYPE RemoveStreamFromRecord(
    444         DWORD dwRecordNumber,
    445         WORD wStreamNumber) = 0;
    446 
    447     virtual HRESULT STDMETHODCALLTYPE RemoveRecord(
    448         DWORD dwRecordNumber) = 0;
    449 
    450     virtual HRESULT STDMETHODCALLTYPE AddRecord(
    451         DWORD *pdwRecordNumber) = 0;
    452 
    453     virtual HRESULT STDMETHODCALLTYPE Clone(
    454         IMFASFMutualExclusion **ppIMutex) = 0;
    455 
    456 };
    457 #ifdef __CRT_UUID_DECL
    458 __CRT_UUID_DECL(IMFASFMutualExclusion, 0x12558291, 0xe399, 0x11d5, 0xbc,0x2a, 0x00,0xb0,0xd0,0xf3,0xf4,0xab)
    459 #endif
    460 #else
    461 typedef struct IMFASFMutualExclusionVtbl {
    462     BEGIN_INTERFACE
    463 
    464     /*** IUnknown methods ***/
    465     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    466         IMFASFMutualExclusion *This,
    467         REFIID riid,
    468         void **ppvObject);
    469 
    470     ULONG (STDMETHODCALLTYPE *AddRef)(
    471         IMFASFMutualExclusion *This);
    472 
    473     ULONG (STDMETHODCALLTYPE *Release)(
    474         IMFASFMutualExclusion *This);
    475 
    476     /*** IMFASFMutualExclusion methods ***/
    477     HRESULT (STDMETHODCALLTYPE *GetType)(
    478         IMFASFMutualExclusion *This,
    479         GUID *pguidType);
    480 
    481     HRESULT (STDMETHODCALLTYPE *SetType)(
    482         IMFASFMutualExclusion *This,
    483         REFGUID guidType);
    484 
    485     HRESULT (STDMETHODCALLTYPE *GetRecordCount)(
    486         IMFASFMutualExclusion *This,
    487         DWORD *pdwRecordCount);
    488 
    489     HRESULT (STDMETHODCALLTYPE *GetStreamsForRecord)(
    490         IMFASFMutualExclusion *This,
    491         DWORD dwRecordNumber,
    492         WORD *pwStreamNumArray,
    493         DWORD *pcStreams);
    494 
    495     HRESULT (STDMETHODCALLTYPE *AddStreamForRecord)(
    496         IMFASFMutualExclusion *This,
    497         DWORD dwRecordNumber,
    498         WORD wStreamNumber);
    499 
    500     HRESULT (STDMETHODCALLTYPE *RemoveStreamFromRecord)(
    501         IMFASFMutualExclusion *This,
    502         DWORD dwRecordNumber,
    503         WORD wStreamNumber);
    504 
    505     HRESULT (STDMETHODCALLTYPE *RemoveRecord)(
    506         IMFASFMutualExclusion *This,
    507         DWORD dwRecordNumber);
    508 
    509     HRESULT (STDMETHODCALLTYPE *AddRecord)(
    510         IMFASFMutualExclusion *This,
    511         DWORD *pdwRecordNumber);
    512 
    513     HRESULT (STDMETHODCALLTYPE *Clone)(
    514         IMFASFMutualExclusion *This,
    515         IMFASFMutualExclusion **ppIMutex);
    516 
    517     END_INTERFACE
    518 } IMFASFMutualExclusionVtbl;
    519 
    520 interface IMFASFMutualExclusion {
    521     CONST_VTBL IMFASFMutualExclusionVtbl* lpVtbl;
    522 };
    523 
    524 #ifdef COBJMACROS
    525 #ifndef WIDL_C_INLINE_WRAPPERS
    526 /*** IUnknown methods ***/
    527 #define IMFASFMutualExclusion_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    528 #define IMFASFMutualExclusion_AddRef(This) (This)->lpVtbl->AddRef(This)
    529 #define IMFASFMutualExclusion_Release(This) (This)->lpVtbl->Release(This)
    530 /*** IMFASFMutualExclusion methods ***/
    531 #define IMFASFMutualExclusion_GetType(This,pguidType) (This)->lpVtbl->GetType(This,pguidType)
    532 #define IMFASFMutualExclusion_SetType(This,guidType) (This)->lpVtbl->SetType(This,guidType)
    533 #define IMFASFMutualExclusion_GetRecordCount(This,pdwRecordCount) (This)->lpVtbl->GetRecordCount(This,pdwRecordCount)
    534 #define IMFASFMutualExclusion_GetStreamsForRecord(This,dwRecordNumber,pwStreamNumArray,pcStreams) (This)->lpVtbl->GetStreamsForRecord(This,dwRecordNumber,pwStreamNumArray,pcStreams)
    535 #define IMFASFMutualExclusion_AddStreamForRecord(This,dwRecordNumber,wStreamNumber) (This)->lpVtbl->AddStreamForRecord(This,dwRecordNumber,wStreamNumber)
    536 #define IMFASFMutualExclusion_RemoveStreamFromRecord(This,dwRecordNumber,wStreamNumber) (This)->lpVtbl->RemoveStreamFromRecord(This,dwRecordNumber,wStreamNumber)
    537 #define IMFASFMutualExclusion_RemoveRecord(This,dwRecordNumber) (This)->lpVtbl->RemoveRecord(This,dwRecordNumber)
    538 #define IMFASFMutualExclusion_AddRecord(This,pdwRecordNumber) (This)->lpVtbl->AddRecord(This,pdwRecordNumber)
    539 #define IMFASFMutualExclusion_Clone(This,ppIMutex) (This)->lpVtbl->Clone(This,ppIMutex)
    540 #else
    541 /*** IUnknown methods ***/
    542 static inline HRESULT IMFASFMutualExclusion_QueryInterface(IMFASFMutualExclusion* This,REFIID riid,void **ppvObject) {
    543     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    544 }
    545 static inline ULONG IMFASFMutualExclusion_AddRef(IMFASFMutualExclusion* This) {
    546     return This->lpVtbl->AddRef(This);
    547 }
    548 static inline ULONG IMFASFMutualExclusion_Release(IMFASFMutualExclusion* This) {
    549     return This->lpVtbl->Release(This);
    550 }
    551 /*** IMFASFMutualExclusion methods ***/
    552 static inline HRESULT IMFASFMutualExclusion_GetType(IMFASFMutualExclusion* This,GUID *pguidType) {
    553     return This->lpVtbl->GetType(This,pguidType);
    554 }
    555 static inline HRESULT IMFASFMutualExclusion_SetType(IMFASFMutualExclusion* This,REFGUID guidType) {
    556     return This->lpVtbl->SetType(This,guidType);
    557 }
    558 static inline HRESULT IMFASFMutualExclusion_GetRecordCount(IMFASFMutualExclusion* This,DWORD *pdwRecordCount) {
    559     return This->lpVtbl->GetRecordCount(This,pdwRecordCount);
    560 }
    561 static inline HRESULT IMFASFMutualExclusion_GetStreamsForRecord(IMFASFMutualExclusion* This,DWORD dwRecordNumber,WORD *pwStreamNumArray,DWORD *pcStreams) {
    562     return This->lpVtbl->GetStreamsForRecord(This,dwRecordNumber,pwStreamNumArray,pcStreams);
    563 }
    564 static inline HRESULT IMFASFMutualExclusion_AddStreamForRecord(IMFASFMutualExclusion* This,DWORD dwRecordNumber,WORD wStreamNumber) {
    565     return This->lpVtbl->AddStreamForRecord(This,dwRecordNumber,wStreamNumber);
    566 }
    567 static inline HRESULT IMFASFMutualExclusion_RemoveStreamFromRecord(IMFASFMutualExclusion* This,DWORD dwRecordNumber,WORD wStreamNumber) {
    568     return This->lpVtbl->RemoveStreamFromRecord(This,dwRecordNumber,wStreamNumber);
    569 }
    570 static inline HRESULT IMFASFMutualExclusion_RemoveRecord(IMFASFMutualExclusion* This,DWORD dwRecordNumber) {
    571     return This->lpVtbl->RemoveRecord(This,dwRecordNumber);
    572 }
    573 static inline HRESULT IMFASFMutualExclusion_AddRecord(IMFASFMutualExclusion* This,DWORD *pdwRecordNumber) {
    574     return This->lpVtbl->AddRecord(This,pdwRecordNumber);
    575 }
    576 static inline HRESULT IMFASFMutualExclusion_Clone(IMFASFMutualExclusion* This,IMFASFMutualExclusion **ppIMutex) {
    577     return This->lpVtbl->Clone(This,ppIMutex);
    578 }
    579 #endif
    580 #endif
    581 
    582 #endif
    583 
    584 
    585 #endif  /* __IMFASFMutualExclusion_INTERFACE_DEFINED__ */
    586 
    587 /*****************************************************************************
    588  * IMFASFStreamPrioritization interface
    589  */
    590 #ifndef __IMFASFStreamPrioritization_INTERFACE_DEFINED__
    591 #define __IMFASFStreamPrioritization_INTERFACE_DEFINED__
    592 
    593 DEFINE_GUID(IID_IMFASFStreamPrioritization, 0x699bdc27, 0xbbaf, 0x49ff, 0x8e,0x38, 0x9c,0x39,0xc9,0xb5,0xe0,0x88);
    594 #if defined(__cplusplus) && !defined(CINTERFACE)
    595 MIDL_INTERFACE("699bdc27-bbaf-49ff-8e38-9c39c9b5e088")
    596 IMFASFStreamPrioritization : public IUnknown
    597 {
    598     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
    599         DWORD *pdwStreamCount) = 0;
    600 
    601     virtual HRESULT STDMETHODCALLTYPE GetStream(
    602         DWORD dwStreamIndex,
    603         WORD *pwStreamNumber,
    604         WORD *pwStreamFlags) = 0;
    605 
    606     virtual HRESULT STDMETHODCALLTYPE AddStream(
    607         WORD wStreamNumber,
    608         WORD wStreamFlags) = 0;
    609 
    610     virtual HRESULT STDMETHODCALLTYPE RemoveStream(
    611         DWORD dwStreamIndex) = 0;
    612 
    613     virtual HRESULT STDMETHODCALLTYPE Clone(
    614         IMFASFStreamPrioritization **ppIStreamPrioritization) = 0;
    615 
    616 };
    617 #ifdef __CRT_UUID_DECL
    618 __CRT_UUID_DECL(IMFASFStreamPrioritization, 0x699bdc27, 0xbbaf, 0x49ff, 0x8e,0x38, 0x9c,0x39,0xc9,0xb5,0xe0,0x88)
    619 #endif
    620 #else
    621 typedef struct IMFASFStreamPrioritizationVtbl {
    622     BEGIN_INTERFACE
    623 
    624     /*** IUnknown methods ***/
    625     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    626         IMFASFStreamPrioritization *This,
    627         REFIID riid,
    628         void **ppvObject);
    629 
    630     ULONG (STDMETHODCALLTYPE *AddRef)(
    631         IMFASFStreamPrioritization *This);
    632 
    633     ULONG (STDMETHODCALLTYPE *Release)(
    634         IMFASFStreamPrioritization *This);
    635 
    636     /*** IMFASFStreamPrioritization methods ***/
    637     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
    638         IMFASFStreamPrioritization *This,
    639         DWORD *pdwStreamCount);
    640 
    641     HRESULT (STDMETHODCALLTYPE *GetStream)(
    642         IMFASFStreamPrioritization *This,
    643         DWORD dwStreamIndex,
    644         WORD *pwStreamNumber,
    645         WORD *pwStreamFlags);
    646 
    647     HRESULT (STDMETHODCALLTYPE *AddStream)(
    648         IMFASFStreamPrioritization *This,
    649         WORD wStreamNumber,
    650         WORD wStreamFlags);
    651 
    652     HRESULT (STDMETHODCALLTYPE *RemoveStream)(
    653         IMFASFStreamPrioritization *This,
    654         DWORD dwStreamIndex);
    655 
    656     HRESULT (STDMETHODCALLTYPE *Clone)(
    657         IMFASFStreamPrioritization *This,
    658         IMFASFStreamPrioritization **ppIStreamPrioritization);
    659 
    660     END_INTERFACE
    661 } IMFASFStreamPrioritizationVtbl;
    662 
    663 interface IMFASFStreamPrioritization {
    664     CONST_VTBL IMFASFStreamPrioritizationVtbl* lpVtbl;
    665 };
    666 
    667 #ifdef COBJMACROS
    668 #ifndef WIDL_C_INLINE_WRAPPERS
    669 /*** IUnknown methods ***/
    670 #define IMFASFStreamPrioritization_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    671 #define IMFASFStreamPrioritization_AddRef(This) (This)->lpVtbl->AddRef(This)
    672 #define IMFASFStreamPrioritization_Release(This) (This)->lpVtbl->Release(This)
    673 /*** IMFASFStreamPrioritization methods ***/
    674 #define IMFASFStreamPrioritization_GetStreamCount(This,pdwStreamCount) (This)->lpVtbl->GetStreamCount(This,pdwStreamCount)
    675 #define IMFASFStreamPrioritization_GetStream(This,dwStreamIndex,pwStreamNumber,pwStreamFlags) (This)->lpVtbl->GetStream(This,dwStreamIndex,pwStreamNumber,pwStreamFlags)
    676 #define IMFASFStreamPrioritization_AddStream(This,wStreamNumber,wStreamFlags) (This)->lpVtbl->AddStream(This,wStreamNumber,wStreamFlags)
    677 #define IMFASFStreamPrioritization_RemoveStream(This,dwStreamIndex) (This)->lpVtbl->RemoveStream(This,dwStreamIndex)
    678 #define IMFASFStreamPrioritization_Clone(This,ppIStreamPrioritization) (This)->lpVtbl->Clone(This,ppIStreamPrioritization)
    679 #else
    680 /*** IUnknown methods ***/
    681 static inline HRESULT IMFASFStreamPrioritization_QueryInterface(IMFASFStreamPrioritization* This,REFIID riid,void **ppvObject) {
    682     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    683 }
    684 static inline ULONG IMFASFStreamPrioritization_AddRef(IMFASFStreamPrioritization* This) {
    685     return This->lpVtbl->AddRef(This);
    686 }
    687 static inline ULONG IMFASFStreamPrioritization_Release(IMFASFStreamPrioritization* This) {
    688     return This->lpVtbl->Release(This);
    689 }
    690 /*** IMFASFStreamPrioritization methods ***/
    691 static inline HRESULT IMFASFStreamPrioritization_GetStreamCount(IMFASFStreamPrioritization* This,DWORD *pdwStreamCount) {
    692     return This->lpVtbl->GetStreamCount(This,pdwStreamCount);
    693 }
    694 static inline HRESULT IMFASFStreamPrioritization_GetStream(IMFASFStreamPrioritization* This,DWORD dwStreamIndex,WORD *pwStreamNumber,WORD *pwStreamFlags) {
    695     return This->lpVtbl->GetStream(This,dwStreamIndex,pwStreamNumber,pwStreamFlags);
    696 }
    697 static inline HRESULT IMFASFStreamPrioritization_AddStream(IMFASFStreamPrioritization* This,WORD wStreamNumber,WORD wStreamFlags) {
    698     return This->lpVtbl->AddStream(This,wStreamNumber,wStreamFlags);
    699 }
    700 static inline HRESULT IMFASFStreamPrioritization_RemoveStream(IMFASFStreamPrioritization* This,DWORD dwStreamIndex) {
    701     return This->lpVtbl->RemoveStream(This,dwStreamIndex);
    702 }
    703 static inline HRESULT IMFASFStreamPrioritization_Clone(IMFASFStreamPrioritization* This,IMFASFStreamPrioritization **ppIStreamPrioritization) {
    704     return This->lpVtbl->Clone(This,ppIStreamPrioritization);
    705 }
    706 #endif
    707 #endif
    708 
    709 #endif
    710 
    711 
    712 #endif  /* __IMFASFStreamPrioritization_INTERFACE_DEFINED__ */
    713 
    714 /*****************************************************************************
    715  * IMFASFSplitter interface
    716  */
    717 #ifndef __IMFASFSplitter_INTERFACE_DEFINED__
    718 #define __IMFASFSplitter_INTERFACE_DEFINED__
    719 
    720 DEFINE_GUID(IID_IMFASFSplitter, 0x12558295, 0xe399, 0x11d5, 0xbc,0x2a, 0x00,0xb0,0xd0,0xf3,0xf4,0xab);
    721 #if defined(__cplusplus) && !defined(CINTERFACE)
    722 MIDL_INTERFACE("12558295-e399-11d5-bc2a-00b0d0f3f4ab")
    723 IMFASFSplitter : public IUnknown
    724 {
    725     virtual HRESULT STDMETHODCALLTYPE Initialize(
    726         IMFASFContentInfo *pIContentInfo) = 0;
    727 
    728     virtual HRESULT STDMETHODCALLTYPE SetFlags(
    729         DWORD dwFlags) = 0;
    730 
    731     virtual HRESULT STDMETHODCALLTYPE GetFlags(
    732         DWORD *pdwFlags) = 0;
    733 
    734     virtual HRESULT STDMETHODCALLTYPE SelectStreams(
    735         WORD *pwStreamNumbers,
    736         WORD wNumStreams) = 0;
    737 
    738     virtual HRESULT STDMETHODCALLTYPE GetSelectedStreams(
    739         WORD *pwStreamNumbers,
    740         WORD *pwNumStreams) = 0;
    741 
    742     virtual HRESULT STDMETHODCALLTYPE ParseData(
    743         IMFMediaBuffer *pIBuffer,
    744         DWORD cbBufferOffset,
    745         DWORD cbLength) = 0;
    746 
    747     virtual HRESULT STDMETHODCALLTYPE GetNextSample(
    748         DWORD *pdwStatusFlags,
    749         WORD *pwStreamNumber,
    750         IMFSample **ppISample) = 0;
    751 
    752     virtual HRESULT STDMETHODCALLTYPE Flush(
    753         ) = 0;
    754 
    755     virtual HRESULT STDMETHODCALLTYPE GetLastSendTime(
    756         DWORD *pdwLastSendTime) = 0;
    757 
    758 };
    759 #ifdef __CRT_UUID_DECL
    760 __CRT_UUID_DECL(IMFASFSplitter, 0x12558295, 0xe399, 0x11d5, 0xbc,0x2a, 0x00,0xb0,0xd0,0xf3,0xf4,0xab)
    761 #endif
    762 #else
    763 typedef struct IMFASFSplitterVtbl {
    764     BEGIN_INTERFACE
    765 
    766     /*** IUnknown methods ***/
    767     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    768         IMFASFSplitter *This,
    769         REFIID riid,
    770         void **ppvObject);
    771 
    772     ULONG (STDMETHODCALLTYPE *AddRef)(
    773         IMFASFSplitter *This);
    774 
    775     ULONG (STDMETHODCALLTYPE *Release)(
    776         IMFASFSplitter *This);
    777 
    778     /*** IMFASFSplitter methods ***/
    779     HRESULT (STDMETHODCALLTYPE *Initialize)(
    780         IMFASFSplitter *This,
    781         IMFASFContentInfo *pIContentInfo);
    782 
    783     HRESULT (STDMETHODCALLTYPE *SetFlags)(
    784         IMFASFSplitter *This,
    785         DWORD dwFlags);
    786 
    787     HRESULT (STDMETHODCALLTYPE *GetFlags)(
    788         IMFASFSplitter *This,
    789         DWORD *pdwFlags);
    790 
    791     HRESULT (STDMETHODCALLTYPE *SelectStreams)(
    792         IMFASFSplitter *This,
    793         WORD *pwStreamNumbers,
    794         WORD wNumStreams);
    795 
    796     HRESULT (STDMETHODCALLTYPE *GetSelectedStreams)(
    797         IMFASFSplitter *This,
    798         WORD *pwStreamNumbers,
    799         WORD *pwNumStreams);
    800 
    801     HRESULT (STDMETHODCALLTYPE *ParseData)(
    802         IMFASFSplitter *This,
    803         IMFMediaBuffer *pIBuffer,
    804         DWORD cbBufferOffset,
    805         DWORD cbLength);
    806 
    807     HRESULT (STDMETHODCALLTYPE *GetNextSample)(
    808         IMFASFSplitter *This,
    809         DWORD *pdwStatusFlags,
    810         WORD *pwStreamNumber,
    811         IMFSample **ppISample);
    812 
    813     HRESULT (STDMETHODCALLTYPE *Flush)(
    814         IMFASFSplitter *This);
    815 
    816     HRESULT (STDMETHODCALLTYPE *GetLastSendTime)(
    817         IMFASFSplitter *This,
    818         DWORD *pdwLastSendTime);
    819 
    820     END_INTERFACE
    821 } IMFASFSplitterVtbl;
    822 
    823 interface IMFASFSplitter {
    824     CONST_VTBL IMFASFSplitterVtbl* lpVtbl;
    825 };
    826 
    827 #ifdef COBJMACROS
    828 #ifndef WIDL_C_INLINE_WRAPPERS
    829 /*** IUnknown methods ***/
    830 #define IMFASFSplitter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    831 #define IMFASFSplitter_AddRef(This) (This)->lpVtbl->AddRef(This)
    832 #define IMFASFSplitter_Release(This) (This)->lpVtbl->Release(This)
    833 /*** IMFASFSplitter methods ***/
    834 #define IMFASFSplitter_Initialize(This,pIContentInfo) (This)->lpVtbl->Initialize(This,pIContentInfo)
    835 #define IMFASFSplitter_SetFlags(This,dwFlags) (This)->lpVtbl->SetFlags(This,dwFlags)
    836 #define IMFASFSplitter_GetFlags(This,pdwFlags) (This)->lpVtbl->GetFlags(This,pdwFlags)
    837 #define IMFASFSplitter_SelectStreams(This,pwStreamNumbers,wNumStreams) (This)->lpVtbl->SelectStreams(This,pwStreamNumbers,wNumStreams)
    838 #define IMFASFSplitter_GetSelectedStreams(This,pwStreamNumbers,pwNumStreams) (This)->lpVtbl->GetSelectedStreams(This,pwStreamNumbers,pwNumStreams)
    839 #define IMFASFSplitter_ParseData(This,pIBuffer,cbBufferOffset,cbLength) (This)->lpVtbl->ParseData(This,pIBuffer,cbBufferOffset,cbLength)
    840 #define IMFASFSplitter_GetNextSample(This,pdwStatusFlags,pwStreamNumber,ppISample) (This)->lpVtbl->GetNextSample(This,pdwStatusFlags,pwStreamNumber,ppISample)
    841 #define IMFASFSplitter_Flush(This) (This)->lpVtbl->Flush(This)
    842 #define IMFASFSplitter_GetLastSendTime(This,pdwLastSendTime) (This)->lpVtbl->GetLastSendTime(This,pdwLastSendTime)
    843 #else
    844 /*** IUnknown methods ***/
    845 static inline HRESULT IMFASFSplitter_QueryInterface(IMFASFSplitter* This,REFIID riid,void **ppvObject) {
    846     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    847 }
    848 static inline ULONG IMFASFSplitter_AddRef(IMFASFSplitter* This) {
    849     return This->lpVtbl->AddRef(This);
    850 }
    851 static inline ULONG IMFASFSplitter_Release(IMFASFSplitter* This) {
    852     return This->lpVtbl->Release(This);
    853 }
    854 /*** IMFASFSplitter methods ***/
    855 static inline HRESULT IMFASFSplitter_Initialize(IMFASFSplitter* This,IMFASFContentInfo *pIContentInfo) {
    856     return This->lpVtbl->Initialize(This,pIContentInfo);
    857 }
    858 static inline HRESULT IMFASFSplitter_SetFlags(IMFASFSplitter* This,DWORD dwFlags) {
    859     return This->lpVtbl->SetFlags(This,dwFlags);
    860 }
    861 static inline HRESULT IMFASFSplitter_GetFlags(IMFASFSplitter* This,DWORD *pdwFlags) {
    862     return This->lpVtbl->GetFlags(This,pdwFlags);
    863 }
    864 static inline HRESULT IMFASFSplitter_SelectStreams(IMFASFSplitter* This,WORD *pwStreamNumbers,WORD wNumStreams) {
    865     return This->lpVtbl->SelectStreams(This,pwStreamNumbers,wNumStreams);
    866 }
    867 static inline HRESULT IMFASFSplitter_GetSelectedStreams(IMFASFSplitter* This,WORD *pwStreamNumbers,WORD *pwNumStreams) {
    868     return This->lpVtbl->GetSelectedStreams(This,pwStreamNumbers,pwNumStreams);
    869 }
    870 static inline HRESULT IMFASFSplitter_ParseData(IMFASFSplitter* This,IMFMediaBuffer *pIBuffer,DWORD cbBufferOffset,DWORD cbLength) {
    871     return This->lpVtbl->ParseData(This,pIBuffer,cbBufferOffset,cbLength);
    872 }
    873 static inline HRESULT IMFASFSplitter_GetNextSample(IMFASFSplitter* This,DWORD *pdwStatusFlags,WORD *pwStreamNumber,IMFSample **ppISample) {
    874     return This->lpVtbl->GetNextSample(This,pdwStatusFlags,pwStreamNumber,ppISample);
    875 }
    876 static inline HRESULT IMFASFSplitter_Flush(IMFASFSplitter* This) {
    877     return This->lpVtbl->Flush(This);
    878 }
    879 static inline HRESULT IMFASFSplitter_GetLastSendTime(IMFASFSplitter* This,DWORD *pdwLastSendTime) {
    880     return This->lpVtbl->GetLastSendTime(This,pdwLastSendTime);
    881 }
    882 #endif
    883 #endif
    884 
    885 #endif
    886 
    887 
    888 #endif  /* __IMFASFSplitter_INTERFACE_DEFINED__ */
    889 
    890 /*****************************************************************************
    891  * IMFASFMultiplexer interface
    892  */
    893 #ifndef __IMFASFMultiplexer_INTERFACE_DEFINED__
    894 #define __IMFASFMultiplexer_INTERFACE_DEFINED__
    895 
    896 DEFINE_GUID(IID_IMFASFMultiplexer, 0x57bdd80a, 0x9b38, 0x4838, 0xb7,0x37, 0xc5,0x8f,0x67,0x0d,0x7d,0x4f);
    897 #if defined(__cplusplus) && !defined(CINTERFACE)
    898 MIDL_INTERFACE("57bdd80a-9b38-4838-b737-c58f670d7d4f")
    899 IMFASFMultiplexer : public IUnknown
    900 {
    901     virtual HRESULT STDMETHODCALLTYPE Initialize(
    902         IMFASFContentInfo *pIContentInfo) = 0;
    903 
    904     virtual HRESULT STDMETHODCALLTYPE SetFlags(
    905         DWORD dwFlags) = 0;
    906 
    907     virtual HRESULT STDMETHODCALLTYPE GetFlags(
    908         DWORD *pdwFlags) = 0;
    909 
    910     virtual HRESULT STDMETHODCALLTYPE ProcessSample(
    911         WORD wStreamNumber,
    912         IMFSample *pISample,
    913         LONGLONG hnsTimestampAdjust) = 0;
    914 
    915     virtual HRESULT STDMETHODCALLTYPE GetNextPacket(
    916         DWORD *pdwStatusFlags,
    917         IMFSample **ppIPacket) = 0;
    918 
    919     virtual HRESULT STDMETHODCALLTYPE Flush(
    920         ) = 0;
    921 
    922     virtual HRESULT STDMETHODCALLTYPE End(
    923         IMFASFContentInfo *pIContentInfo) = 0;
    924 
    925     virtual HRESULT STDMETHODCALLTYPE GetStatistics(
    926         WORD wStreamNumber,
    927         ASF_MUX_STATISTICS *pMuxStats) = 0;
    928 
    929     virtual HRESULT STDMETHODCALLTYPE SetSyncTolerance(
    930         DWORD msSyncTolerance) = 0;
    931 
    932 };
    933 #ifdef __CRT_UUID_DECL
    934 __CRT_UUID_DECL(IMFASFMultiplexer, 0x57bdd80a, 0x9b38, 0x4838, 0xb7,0x37, 0xc5,0x8f,0x67,0x0d,0x7d,0x4f)
    935 #endif
    936 #else
    937 typedef struct IMFASFMultiplexerVtbl {
    938     BEGIN_INTERFACE
    939 
    940     /*** IUnknown methods ***/
    941     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    942         IMFASFMultiplexer *This,
    943         REFIID riid,
    944         void **ppvObject);
    945 
    946     ULONG (STDMETHODCALLTYPE *AddRef)(
    947         IMFASFMultiplexer *This);
    948 
    949     ULONG (STDMETHODCALLTYPE *Release)(
    950         IMFASFMultiplexer *This);
    951 
    952     /*** IMFASFMultiplexer methods ***/
    953     HRESULT (STDMETHODCALLTYPE *Initialize)(
    954         IMFASFMultiplexer *This,
    955         IMFASFContentInfo *pIContentInfo);
    956 
    957     HRESULT (STDMETHODCALLTYPE *SetFlags)(
    958         IMFASFMultiplexer *This,
    959         DWORD dwFlags);
    960 
    961     HRESULT (STDMETHODCALLTYPE *GetFlags)(
    962         IMFASFMultiplexer *This,
    963         DWORD *pdwFlags);
    964 
    965     HRESULT (STDMETHODCALLTYPE *ProcessSample)(
    966         IMFASFMultiplexer *This,
    967         WORD wStreamNumber,
    968         IMFSample *pISample,
    969         LONGLONG hnsTimestampAdjust);
    970 
    971     HRESULT (STDMETHODCALLTYPE *GetNextPacket)(
    972         IMFASFMultiplexer *This,
    973         DWORD *pdwStatusFlags,
    974         IMFSample **ppIPacket);
    975 
    976     HRESULT (STDMETHODCALLTYPE *Flush)(
    977         IMFASFMultiplexer *This);
    978 
    979     HRESULT (STDMETHODCALLTYPE *End)(
    980         IMFASFMultiplexer *This,
    981         IMFASFContentInfo *pIContentInfo);
    982 
    983     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
    984         IMFASFMultiplexer *This,
    985         WORD wStreamNumber,
    986         ASF_MUX_STATISTICS *pMuxStats);
    987 
    988     HRESULT (STDMETHODCALLTYPE *SetSyncTolerance)(
    989         IMFASFMultiplexer *This,
    990         DWORD msSyncTolerance);
    991 
    992     END_INTERFACE
    993 } IMFASFMultiplexerVtbl;
    994 
    995 interface IMFASFMultiplexer {
    996     CONST_VTBL IMFASFMultiplexerVtbl* lpVtbl;
    997 };
    998 
    999 #ifdef COBJMACROS
   1000 #ifndef WIDL_C_INLINE_WRAPPERS
   1001 /*** IUnknown methods ***/
   1002 #define IMFASFMultiplexer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1003 #define IMFASFMultiplexer_AddRef(This) (This)->lpVtbl->AddRef(This)
   1004 #define IMFASFMultiplexer_Release(This) (This)->lpVtbl->Release(This)
   1005 /*** IMFASFMultiplexer methods ***/
   1006 #define IMFASFMultiplexer_Initialize(This,pIContentInfo) (This)->lpVtbl->Initialize(This,pIContentInfo)
   1007 #define IMFASFMultiplexer_SetFlags(This,dwFlags) (This)->lpVtbl->SetFlags(This,dwFlags)
   1008 #define IMFASFMultiplexer_GetFlags(This,pdwFlags) (This)->lpVtbl->GetFlags(This,pdwFlags)
   1009 #define IMFASFMultiplexer_ProcessSample(This,wStreamNumber,pISample,hnsTimestampAdjust) (This)->lpVtbl->ProcessSample(This,wStreamNumber,pISample,hnsTimestampAdjust)
   1010 #define IMFASFMultiplexer_GetNextPacket(This,pdwStatusFlags,ppIPacket) (This)->lpVtbl->GetNextPacket(This,pdwStatusFlags,ppIPacket)
   1011 #define IMFASFMultiplexer_Flush(This) (This)->lpVtbl->Flush(This)
   1012 #define IMFASFMultiplexer_End(This,pIContentInfo) (This)->lpVtbl->End(This,pIContentInfo)
   1013 #define IMFASFMultiplexer_GetStatistics(This,wStreamNumber,pMuxStats) (This)->lpVtbl->GetStatistics(This,wStreamNumber,pMuxStats)
   1014 #define IMFASFMultiplexer_SetSyncTolerance(This,msSyncTolerance) (This)->lpVtbl->SetSyncTolerance(This,msSyncTolerance)
   1015 #else
   1016 /*** IUnknown methods ***/
   1017 static inline HRESULT IMFASFMultiplexer_QueryInterface(IMFASFMultiplexer* This,REFIID riid,void **ppvObject) {
   1018     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1019 }
   1020 static inline ULONG IMFASFMultiplexer_AddRef(IMFASFMultiplexer* This) {
   1021     return This->lpVtbl->AddRef(This);
   1022 }
   1023 static inline ULONG IMFASFMultiplexer_Release(IMFASFMultiplexer* This) {
   1024     return This->lpVtbl->Release(This);
   1025 }
   1026 /*** IMFASFMultiplexer methods ***/
   1027 static inline HRESULT IMFASFMultiplexer_Initialize(IMFASFMultiplexer* This,IMFASFContentInfo *pIContentInfo) {
   1028     return This->lpVtbl->Initialize(This,pIContentInfo);
   1029 }
   1030 static inline HRESULT IMFASFMultiplexer_SetFlags(IMFASFMultiplexer* This,DWORD dwFlags) {
   1031     return This->lpVtbl->SetFlags(This,dwFlags);
   1032 }
   1033 static inline HRESULT IMFASFMultiplexer_GetFlags(IMFASFMultiplexer* This,DWORD *pdwFlags) {
   1034     return This->lpVtbl->GetFlags(This,pdwFlags);
   1035 }
   1036 static inline HRESULT IMFASFMultiplexer_ProcessSample(IMFASFMultiplexer* This,WORD wStreamNumber,IMFSample *pISample,LONGLONG hnsTimestampAdjust) {
   1037     return This->lpVtbl->ProcessSample(This,wStreamNumber,pISample,hnsTimestampAdjust);
   1038 }
   1039 static inline HRESULT IMFASFMultiplexer_GetNextPacket(IMFASFMultiplexer* This,DWORD *pdwStatusFlags,IMFSample **ppIPacket) {
   1040     return This->lpVtbl->GetNextPacket(This,pdwStatusFlags,ppIPacket);
   1041 }
   1042 static inline HRESULT IMFASFMultiplexer_Flush(IMFASFMultiplexer* This) {
   1043     return This->lpVtbl->Flush(This);
   1044 }
   1045 static inline HRESULT IMFASFMultiplexer_End(IMFASFMultiplexer* This,IMFASFContentInfo *pIContentInfo) {
   1046     return This->lpVtbl->End(This,pIContentInfo);
   1047 }
   1048 static inline HRESULT IMFASFMultiplexer_GetStatistics(IMFASFMultiplexer* This,WORD wStreamNumber,ASF_MUX_STATISTICS *pMuxStats) {
   1049     return This->lpVtbl->GetStatistics(This,wStreamNumber,pMuxStats);
   1050 }
   1051 static inline HRESULT IMFASFMultiplexer_SetSyncTolerance(IMFASFMultiplexer* This,DWORD msSyncTolerance) {
   1052     return This->lpVtbl->SetSyncTolerance(This,msSyncTolerance);
   1053 }
   1054 #endif
   1055 #endif
   1056 
   1057 #endif
   1058 
   1059 
   1060 #endif  /* __IMFASFMultiplexer_INTERFACE_DEFINED__ */
   1061 
   1062 /*****************************************************************************
   1063  * IMFASFIndexer interface
   1064  */
   1065 #ifndef __IMFASFIndexer_INTERFACE_DEFINED__
   1066 #define __IMFASFIndexer_INTERFACE_DEFINED__
   1067 
   1068 DEFINE_GUID(IID_IMFASFIndexer, 0x53590f48, 0xdc3b, 0x4297, 0x81,0x3f, 0x78,0x77,0x61,0xad,0x7b,0x3e);
   1069 #if defined(__cplusplus) && !defined(CINTERFACE)
   1070 MIDL_INTERFACE("53590f48-dc3b-4297-813f-787761ad7b3e")
   1071 IMFASFIndexer : public IUnknown
   1072 {
   1073     virtual HRESULT STDMETHODCALLTYPE SetFlags(
   1074         DWORD dwFlags) = 0;
   1075 
   1076     virtual HRESULT STDMETHODCALLTYPE GetFlags(
   1077         DWORD *pdwFlags) = 0;
   1078 
   1079     virtual HRESULT STDMETHODCALLTYPE Initialize(
   1080         IMFASFContentInfo *pIContentInfo) = 0;
   1081 
   1082     virtual HRESULT STDMETHODCALLTYPE GetIndexPosition(
   1083         IMFASFContentInfo *pIContentInfo,
   1084         QWORD *pcbIndexOffset) = 0;
   1085 
   1086     virtual HRESULT STDMETHODCALLTYPE SetIndexByteStreams(
   1087         IMFByteStream **ppIByteStreams,
   1088         DWORD cByteStreams) = 0;
   1089 
   1090     virtual HRESULT STDMETHODCALLTYPE GetIndexByteStreamCount(
   1091         DWORD *pcByteStreams) = 0;
   1092 
   1093     virtual HRESULT STDMETHODCALLTYPE GetIndexStatus(
   1094         ASF_INDEX_IDENTIFIER *pIndexIdentifier,
   1095         WINBOOL *pfIsIndexed,
   1096         BYTE *pbIndexDescriptor,
   1097         DWORD *pcbIndexDescriptor) = 0;
   1098 
   1099     virtual HRESULT STDMETHODCALLTYPE SetIndexStatus(
   1100         BYTE *pbIndexDescriptor,
   1101         DWORD cbIndexDescriptor,
   1102         WINBOOL fGenerateIndex) = 0;
   1103 
   1104     virtual HRESULT STDMETHODCALLTYPE GetSeekPositionForValue(
   1105         const PROPVARIANT *pvarValue,
   1106         ASF_INDEX_IDENTIFIER *pIndexIdentifier,
   1107         QWORD *pcbOffsetWithinData,
   1108         MFTIME *phnsApproxTime,
   1109         DWORD *pdwPayloadNumberOfStreamWithinPacket) = 0;
   1110 
   1111     virtual HRESULT STDMETHODCALLTYPE GenerateIndexEntries(
   1112         IMFSample *pIASFPacketSample) = 0;
   1113 
   1114     virtual HRESULT STDMETHODCALLTYPE CommitIndex(
   1115         IMFASFContentInfo *pIContentInfo) = 0;
   1116 
   1117     virtual HRESULT STDMETHODCALLTYPE GetIndexWriteSpace(
   1118         QWORD *pcbIndexWriteSpace) = 0;
   1119 
   1120     virtual HRESULT STDMETHODCALLTYPE GetCompletedIndex(
   1121         IMFMediaBuffer *pIIndexBuffer,
   1122         QWORD cbOffsetWithinIndex) = 0;
   1123 
   1124 };
   1125 #ifdef __CRT_UUID_DECL
   1126 __CRT_UUID_DECL(IMFASFIndexer, 0x53590f48, 0xdc3b, 0x4297, 0x81,0x3f, 0x78,0x77,0x61,0xad,0x7b,0x3e)
   1127 #endif
   1128 #else
   1129 typedef struct IMFASFIndexerVtbl {
   1130     BEGIN_INTERFACE
   1131 
   1132     /*** IUnknown methods ***/
   1133     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1134         IMFASFIndexer *This,
   1135         REFIID riid,
   1136         void **ppvObject);
   1137 
   1138     ULONG (STDMETHODCALLTYPE *AddRef)(
   1139         IMFASFIndexer *This);
   1140 
   1141     ULONG (STDMETHODCALLTYPE *Release)(
   1142         IMFASFIndexer *This);
   1143 
   1144     /*** IMFASFIndexer methods ***/
   1145     HRESULT (STDMETHODCALLTYPE *SetFlags)(
   1146         IMFASFIndexer *This,
   1147         DWORD dwFlags);
   1148 
   1149     HRESULT (STDMETHODCALLTYPE *GetFlags)(
   1150         IMFASFIndexer *This,
   1151         DWORD *pdwFlags);
   1152 
   1153     HRESULT (STDMETHODCALLTYPE *Initialize)(
   1154         IMFASFIndexer *This,
   1155         IMFASFContentInfo *pIContentInfo);
   1156 
   1157     HRESULT (STDMETHODCALLTYPE *GetIndexPosition)(
   1158         IMFASFIndexer *This,
   1159         IMFASFContentInfo *pIContentInfo,
   1160         QWORD *pcbIndexOffset);
   1161 
   1162     HRESULT (STDMETHODCALLTYPE *SetIndexByteStreams)(
   1163         IMFASFIndexer *This,
   1164         IMFByteStream **ppIByteStreams,
   1165         DWORD cByteStreams);
   1166 
   1167     HRESULT (STDMETHODCALLTYPE *GetIndexByteStreamCount)(
   1168         IMFASFIndexer *This,
   1169         DWORD *pcByteStreams);
   1170 
   1171     HRESULT (STDMETHODCALLTYPE *GetIndexStatus)(
   1172         IMFASFIndexer *This,
   1173         ASF_INDEX_IDENTIFIER *pIndexIdentifier,
   1174         WINBOOL *pfIsIndexed,
   1175         BYTE *pbIndexDescriptor,
   1176         DWORD *pcbIndexDescriptor);
   1177 
   1178     HRESULT (STDMETHODCALLTYPE *SetIndexStatus)(
   1179         IMFASFIndexer *This,
   1180         BYTE *pbIndexDescriptor,
   1181         DWORD cbIndexDescriptor,
   1182         WINBOOL fGenerateIndex);
   1183 
   1184     HRESULT (STDMETHODCALLTYPE *GetSeekPositionForValue)(
   1185         IMFASFIndexer *This,
   1186         const PROPVARIANT *pvarValue,
   1187         ASF_INDEX_IDENTIFIER *pIndexIdentifier,
   1188         QWORD *pcbOffsetWithinData,
   1189         MFTIME *phnsApproxTime,
   1190         DWORD *pdwPayloadNumberOfStreamWithinPacket);
   1191 
   1192     HRESULT (STDMETHODCALLTYPE *GenerateIndexEntries)(
   1193         IMFASFIndexer *This,
   1194         IMFSample *pIASFPacketSample);
   1195 
   1196     HRESULT (STDMETHODCALLTYPE *CommitIndex)(
   1197         IMFASFIndexer *This,
   1198         IMFASFContentInfo *pIContentInfo);
   1199 
   1200     HRESULT (STDMETHODCALLTYPE *GetIndexWriteSpace)(
   1201         IMFASFIndexer *This,
   1202         QWORD *pcbIndexWriteSpace);
   1203 
   1204     HRESULT (STDMETHODCALLTYPE *GetCompletedIndex)(
   1205         IMFASFIndexer *This,
   1206         IMFMediaBuffer *pIIndexBuffer,
   1207         QWORD cbOffsetWithinIndex);
   1208 
   1209     END_INTERFACE
   1210 } IMFASFIndexerVtbl;
   1211 
   1212 interface IMFASFIndexer {
   1213     CONST_VTBL IMFASFIndexerVtbl* lpVtbl;
   1214 };
   1215 
   1216 #ifdef COBJMACROS
   1217 #ifndef WIDL_C_INLINE_WRAPPERS
   1218 /*** IUnknown methods ***/
   1219 #define IMFASFIndexer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1220 #define IMFASFIndexer_AddRef(This) (This)->lpVtbl->AddRef(This)
   1221 #define IMFASFIndexer_Release(This) (This)->lpVtbl->Release(This)
   1222 /*** IMFASFIndexer methods ***/
   1223 #define IMFASFIndexer_SetFlags(This,dwFlags) (This)->lpVtbl->SetFlags(This,dwFlags)
   1224 #define IMFASFIndexer_GetFlags(This,pdwFlags) (This)->lpVtbl->GetFlags(This,pdwFlags)
   1225 #define IMFASFIndexer_Initialize(This,pIContentInfo) (This)->lpVtbl->Initialize(This,pIContentInfo)
   1226 #define IMFASFIndexer_GetIndexPosition(This,pIContentInfo,pcbIndexOffset) (This)->lpVtbl->GetIndexPosition(This,pIContentInfo,pcbIndexOffset)
   1227 #define IMFASFIndexer_SetIndexByteStreams(This,ppIByteStreams,cByteStreams) (This)->lpVtbl->SetIndexByteStreams(This,ppIByteStreams,cByteStreams)
   1228 #define IMFASFIndexer_GetIndexByteStreamCount(This,pcByteStreams) (This)->lpVtbl->GetIndexByteStreamCount(This,pcByteStreams)
   1229 #define IMFASFIndexer_GetIndexStatus(This,pIndexIdentifier,pfIsIndexed,pbIndexDescriptor,pcbIndexDescriptor) (This)->lpVtbl->GetIndexStatus(This,pIndexIdentifier,pfIsIndexed,pbIndexDescriptor,pcbIndexDescriptor)
   1230 #define IMFASFIndexer_SetIndexStatus(This,pbIndexDescriptor,cbIndexDescriptor,fGenerateIndex) (This)->lpVtbl->SetIndexStatus(This,pbIndexDescriptor,cbIndexDescriptor,fGenerateIndex)
   1231 #define IMFASFIndexer_GetSeekPositionForValue(This,pvarValue,pIndexIdentifier,pcbOffsetWithinData,phnsApproxTime,pdwPayloadNumberOfStreamWithinPacket) (This)->lpVtbl->GetSeekPositionForValue(This,pvarValue,pIndexIdentifier,pcbOffsetWithinData,phnsApproxTime,pdwPayloadNumberOfStreamWithinPacket)
   1232 #define IMFASFIndexer_GenerateIndexEntries(This,pIASFPacketSample) (This)->lpVtbl->GenerateIndexEntries(This,pIASFPacketSample)
   1233 #define IMFASFIndexer_CommitIndex(This,pIContentInfo) (This)->lpVtbl->CommitIndex(This,pIContentInfo)
   1234 #define IMFASFIndexer_GetIndexWriteSpace(This,pcbIndexWriteSpace) (This)->lpVtbl->GetIndexWriteSpace(This,pcbIndexWriteSpace)
   1235 #define IMFASFIndexer_GetCompletedIndex(This,pIIndexBuffer,cbOffsetWithinIndex) (This)->lpVtbl->GetCompletedIndex(This,pIIndexBuffer,cbOffsetWithinIndex)
   1236 #else
   1237 /*** IUnknown methods ***/
   1238 static inline HRESULT IMFASFIndexer_QueryInterface(IMFASFIndexer* This,REFIID riid,void **ppvObject) {
   1239     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1240 }
   1241 static inline ULONG IMFASFIndexer_AddRef(IMFASFIndexer* This) {
   1242     return This->lpVtbl->AddRef(This);
   1243 }
   1244 static inline ULONG IMFASFIndexer_Release(IMFASFIndexer* This) {
   1245     return This->lpVtbl->Release(This);
   1246 }
   1247 /*** IMFASFIndexer methods ***/
   1248 static inline HRESULT IMFASFIndexer_SetFlags(IMFASFIndexer* This,DWORD dwFlags) {
   1249     return This->lpVtbl->SetFlags(This,dwFlags);
   1250 }
   1251 static inline HRESULT IMFASFIndexer_GetFlags(IMFASFIndexer* This,DWORD *pdwFlags) {
   1252     return This->lpVtbl->GetFlags(This,pdwFlags);
   1253 }
   1254 static inline HRESULT IMFASFIndexer_Initialize(IMFASFIndexer* This,IMFASFContentInfo *pIContentInfo) {
   1255     return This->lpVtbl->Initialize(This,pIContentInfo);
   1256 }
   1257 static inline HRESULT IMFASFIndexer_GetIndexPosition(IMFASFIndexer* This,IMFASFContentInfo *pIContentInfo,QWORD *pcbIndexOffset) {
   1258     return This->lpVtbl->GetIndexPosition(This,pIContentInfo,pcbIndexOffset);
   1259 }
   1260 static inline HRESULT IMFASFIndexer_SetIndexByteStreams(IMFASFIndexer* This,IMFByteStream **ppIByteStreams,DWORD cByteStreams) {
   1261     return This->lpVtbl->SetIndexByteStreams(This,ppIByteStreams,cByteStreams);
   1262 }
   1263 static inline HRESULT IMFASFIndexer_GetIndexByteStreamCount(IMFASFIndexer* This,DWORD *pcByteStreams) {
   1264     return This->lpVtbl->GetIndexByteStreamCount(This,pcByteStreams);
   1265 }
   1266 static inline HRESULT IMFASFIndexer_GetIndexStatus(IMFASFIndexer* This,ASF_INDEX_IDENTIFIER *pIndexIdentifier,WINBOOL *pfIsIndexed,BYTE *pbIndexDescriptor,DWORD *pcbIndexDescriptor) {
   1267     return This->lpVtbl->GetIndexStatus(This,pIndexIdentifier,pfIsIndexed,pbIndexDescriptor,pcbIndexDescriptor);
   1268 }
   1269 static inline HRESULT IMFASFIndexer_SetIndexStatus(IMFASFIndexer* This,BYTE *pbIndexDescriptor,DWORD cbIndexDescriptor,WINBOOL fGenerateIndex) {
   1270     return This->lpVtbl->SetIndexStatus(This,pbIndexDescriptor,cbIndexDescriptor,fGenerateIndex);
   1271 }
   1272 static inline HRESULT IMFASFIndexer_GetSeekPositionForValue(IMFASFIndexer* This,const PROPVARIANT *pvarValue,ASF_INDEX_IDENTIFIER *pIndexIdentifier,QWORD *pcbOffsetWithinData,MFTIME *phnsApproxTime,DWORD *pdwPayloadNumberOfStreamWithinPacket) {
   1273     return This->lpVtbl->GetSeekPositionForValue(This,pvarValue,pIndexIdentifier,pcbOffsetWithinData,phnsApproxTime,pdwPayloadNumberOfStreamWithinPacket);
   1274 }
   1275 static inline HRESULT IMFASFIndexer_GenerateIndexEntries(IMFASFIndexer* This,IMFSample *pIASFPacketSample) {
   1276     return This->lpVtbl->GenerateIndexEntries(This,pIASFPacketSample);
   1277 }
   1278 static inline HRESULT IMFASFIndexer_CommitIndex(IMFASFIndexer* This,IMFASFContentInfo *pIContentInfo) {
   1279     return This->lpVtbl->CommitIndex(This,pIContentInfo);
   1280 }
   1281 static inline HRESULT IMFASFIndexer_GetIndexWriteSpace(IMFASFIndexer* This,QWORD *pcbIndexWriteSpace) {
   1282     return This->lpVtbl->GetIndexWriteSpace(This,pcbIndexWriteSpace);
   1283 }
   1284 static inline HRESULT IMFASFIndexer_GetCompletedIndex(IMFASFIndexer* This,IMFMediaBuffer *pIIndexBuffer,QWORD cbOffsetWithinIndex) {
   1285     return This->lpVtbl->GetCompletedIndex(This,pIIndexBuffer,cbOffsetWithinIndex);
   1286 }
   1287 #endif
   1288 #endif
   1289 
   1290 #endif
   1291 
   1292 
   1293 #endif  /* __IMFASFIndexer_INTERFACE_DEFINED__ */
   1294 
   1295 /*****************************************************************************
   1296  * IMFASFStreamSelector interface
   1297  */
   1298 #ifndef __IMFASFStreamSelector_INTERFACE_DEFINED__
   1299 #define __IMFASFStreamSelector_INTERFACE_DEFINED__
   1300 
   1301 DEFINE_GUID(IID_IMFASFStreamSelector, 0xd01bad4a, 0x4fa0, 0x4a60, 0x93,0x49, 0xc2,0x7e,0x62,0xda,0x9d,0x41);
   1302 #if defined(__cplusplus) && !defined(CINTERFACE)
   1303 MIDL_INTERFACE("d01bad4a-4fa0-4a60-9349-c27e62da9d41")
   1304 IMFASFStreamSelector : public IUnknown
   1305 {
   1306     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
   1307         DWORD *pcStreams) = 0;
   1308 
   1309     virtual HRESULT STDMETHODCALLTYPE GetOutputCount(
   1310         DWORD *pcOutputs) = 0;
   1311 
   1312     virtual HRESULT STDMETHODCALLTYPE GetOutputStreamCount(
   1313         DWORD dwOutputNum,
   1314         DWORD *pcStreams) = 0;
   1315 
   1316     virtual HRESULT STDMETHODCALLTYPE GetOutputStreamNumbers(
   1317         DWORD dwOutputNum,
   1318         WORD *rgwStreamNumbers) = 0;
   1319 
   1320     virtual HRESULT STDMETHODCALLTYPE GetOutputFromStream(
   1321         WORD wStreamNum,
   1322         DWORD *pdwOutput) = 0;
   1323 
   1324     virtual HRESULT STDMETHODCALLTYPE GetOutputOverride(
   1325         DWORD dwOutputNum,
   1326         ASF_SELECTION_STATUS *pSelection) = 0;
   1327 
   1328     virtual HRESULT STDMETHODCALLTYPE SetOutputOverride(
   1329         DWORD dwOutputNum,
   1330         ASF_SELECTION_STATUS Selection) = 0;
   1331 
   1332     virtual HRESULT STDMETHODCALLTYPE GetOutputMutexCount(
   1333         DWORD dwOutputNum,
   1334         DWORD *pcMutexes) = 0;
   1335 
   1336     virtual HRESULT STDMETHODCALLTYPE GetOutputMutex(
   1337         DWORD dwOutputNum,
   1338         DWORD dwMutexNum,
   1339         IUnknown **ppMutex) = 0;
   1340 
   1341     virtual HRESULT STDMETHODCALLTYPE SetOutputMutexSelection(
   1342         DWORD dwOutputNum,
   1343         DWORD dwMutexNum,
   1344         WORD wSelectedRecord) = 0;
   1345 
   1346     virtual HRESULT STDMETHODCALLTYPE GetBandwidthStepCount(
   1347         DWORD *pcStepCount) = 0;
   1348 
   1349     virtual HRESULT STDMETHODCALLTYPE GetBandwidthStep(
   1350         DWORD dwStepNum,
   1351         DWORD *pdwBitrate,
   1352         WORD *rgwStreamNumbers,
   1353         ASF_SELECTION_STATUS *rgSelections) = 0;
   1354 
   1355     virtual HRESULT STDMETHODCALLTYPE BitrateToStepNumber(
   1356         DWORD dwBitrate,
   1357         DWORD *pdwStepNum) = 0;
   1358 
   1359     virtual HRESULT STDMETHODCALLTYPE SetStreamSelectorFlags(
   1360         DWORD dwStreamSelectorFlags) = 0;
   1361 
   1362 };
   1363 #ifdef __CRT_UUID_DECL
   1364 __CRT_UUID_DECL(IMFASFStreamSelector, 0xd01bad4a, 0x4fa0, 0x4a60, 0x93,0x49, 0xc2,0x7e,0x62,0xda,0x9d,0x41)
   1365 #endif
   1366 #else
   1367 typedef struct IMFASFStreamSelectorVtbl {
   1368     BEGIN_INTERFACE
   1369 
   1370     /*** IUnknown methods ***/
   1371     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1372         IMFASFStreamSelector *This,
   1373         REFIID riid,
   1374         void **ppvObject);
   1375 
   1376     ULONG (STDMETHODCALLTYPE *AddRef)(
   1377         IMFASFStreamSelector *This);
   1378 
   1379     ULONG (STDMETHODCALLTYPE *Release)(
   1380         IMFASFStreamSelector *This);
   1381 
   1382     /*** IMFASFStreamSelector methods ***/
   1383     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
   1384         IMFASFStreamSelector *This,
   1385         DWORD *pcStreams);
   1386 
   1387     HRESULT (STDMETHODCALLTYPE *GetOutputCount)(
   1388         IMFASFStreamSelector *This,
   1389         DWORD *pcOutputs);
   1390 
   1391     HRESULT (STDMETHODCALLTYPE *GetOutputStreamCount)(
   1392         IMFASFStreamSelector *This,
   1393         DWORD dwOutputNum,
   1394         DWORD *pcStreams);
   1395 
   1396     HRESULT (STDMETHODCALLTYPE *GetOutputStreamNumbers)(
   1397         IMFASFStreamSelector *This,
   1398         DWORD dwOutputNum,
   1399         WORD *rgwStreamNumbers);
   1400 
   1401     HRESULT (STDMETHODCALLTYPE *GetOutputFromStream)(
   1402         IMFASFStreamSelector *This,
   1403         WORD wStreamNum,
   1404         DWORD *pdwOutput);
   1405 
   1406     HRESULT (STDMETHODCALLTYPE *GetOutputOverride)(
   1407         IMFASFStreamSelector *This,
   1408         DWORD dwOutputNum,
   1409         ASF_SELECTION_STATUS *pSelection);
   1410 
   1411     HRESULT (STDMETHODCALLTYPE *SetOutputOverride)(
   1412         IMFASFStreamSelector *This,
   1413         DWORD dwOutputNum,
   1414         ASF_SELECTION_STATUS Selection);
   1415 
   1416     HRESULT (STDMETHODCALLTYPE *GetOutputMutexCount)(
   1417         IMFASFStreamSelector *This,
   1418         DWORD dwOutputNum,
   1419         DWORD *pcMutexes);
   1420 
   1421     HRESULT (STDMETHODCALLTYPE *GetOutputMutex)(
   1422         IMFASFStreamSelector *This,
   1423         DWORD dwOutputNum,
   1424         DWORD dwMutexNum,
   1425         IUnknown **ppMutex);
   1426 
   1427     HRESULT (STDMETHODCALLTYPE *SetOutputMutexSelection)(
   1428         IMFASFStreamSelector *This,
   1429         DWORD dwOutputNum,
   1430         DWORD dwMutexNum,
   1431         WORD wSelectedRecord);
   1432 
   1433     HRESULT (STDMETHODCALLTYPE *GetBandwidthStepCount)(
   1434         IMFASFStreamSelector *This,
   1435         DWORD *pcStepCount);
   1436 
   1437     HRESULT (STDMETHODCALLTYPE *GetBandwidthStep)(
   1438         IMFASFStreamSelector *This,
   1439         DWORD dwStepNum,
   1440         DWORD *pdwBitrate,
   1441         WORD *rgwStreamNumbers,
   1442         ASF_SELECTION_STATUS *rgSelections);
   1443 
   1444     HRESULT (STDMETHODCALLTYPE *BitrateToStepNumber)(
   1445         IMFASFStreamSelector *This,
   1446         DWORD dwBitrate,
   1447         DWORD *pdwStepNum);
   1448 
   1449     HRESULT (STDMETHODCALLTYPE *SetStreamSelectorFlags)(
   1450         IMFASFStreamSelector *This,
   1451         DWORD dwStreamSelectorFlags);
   1452 
   1453     END_INTERFACE
   1454 } IMFASFStreamSelectorVtbl;
   1455 
   1456 interface IMFASFStreamSelector {
   1457     CONST_VTBL IMFASFStreamSelectorVtbl* lpVtbl;
   1458 };
   1459 
   1460 #ifdef COBJMACROS
   1461 #ifndef WIDL_C_INLINE_WRAPPERS
   1462 /*** IUnknown methods ***/
   1463 #define IMFASFStreamSelector_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1464 #define IMFASFStreamSelector_AddRef(This) (This)->lpVtbl->AddRef(This)
   1465 #define IMFASFStreamSelector_Release(This) (This)->lpVtbl->Release(This)
   1466 /*** IMFASFStreamSelector methods ***/
   1467 #define IMFASFStreamSelector_GetStreamCount(This,pcStreams) (This)->lpVtbl->GetStreamCount(This,pcStreams)
   1468 #define IMFASFStreamSelector_GetOutputCount(This,pcOutputs) (This)->lpVtbl->GetOutputCount(This,pcOutputs)
   1469 #define IMFASFStreamSelector_GetOutputStreamCount(This,dwOutputNum,pcStreams) (This)->lpVtbl->GetOutputStreamCount(This,dwOutputNum,pcStreams)
   1470 #define IMFASFStreamSelector_GetOutputStreamNumbers(This,dwOutputNum,rgwStreamNumbers) (This)->lpVtbl->GetOutputStreamNumbers(This,dwOutputNum,rgwStreamNumbers)
   1471 #define IMFASFStreamSelector_GetOutputFromStream(This,wStreamNum,pdwOutput) (This)->lpVtbl->GetOutputFromStream(This,wStreamNum,pdwOutput)
   1472 #define IMFASFStreamSelector_GetOutputOverride(This,dwOutputNum,pSelection) (This)->lpVtbl->GetOutputOverride(This,dwOutputNum,pSelection)
   1473 #define IMFASFStreamSelector_SetOutputOverride(This,dwOutputNum,Selection) (This)->lpVtbl->SetOutputOverride(This,dwOutputNum,Selection)
   1474 #define IMFASFStreamSelector_GetOutputMutexCount(This,dwOutputNum,pcMutexes) (This)->lpVtbl->GetOutputMutexCount(This,dwOutputNum,pcMutexes)
   1475 #define IMFASFStreamSelector_GetOutputMutex(This,dwOutputNum,dwMutexNum,ppMutex) (This)->lpVtbl->GetOutputMutex(This,dwOutputNum,dwMutexNum,ppMutex)
   1476 #define IMFASFStreamSelector_SetOutputMutexSelection(This,dwOutputNum,dwMutexNum,wSelectedRecord) (This)->lpVtbl->SetOutputMutexSelection(This,dwOutputNum,dwMutexNum,wSelectedRecord)
   1477 #define IMFASFStreamSelector_GetBandwidthStepCount(This,pcStepCount) (This)->lpVtbl->GetBandwidthStepCount(This,pcStepCount)
   1478 #define IMFASFStreamSelector_GetBandwidthStep(This,dwStepNum,pdwBitrate,rgwStreamNumbers,rgSelections) (This)->lpVtbl->GetBandwidthStep(This,dwStepNum,pdwBitrate,rgwStreamNumbers,rgSelections)
   1479 #define IMFASFStreamSelector_BitrateToStepNumber(This,dwBitrate,pdwStepNum) (This)->lpVtbl->BitrateToStepNumber(This,dwBitrate,pdwStepNum)
   1480 #define IMFASFStreamSelector_SetStreamSelectorFlags(This,dwStreamSelectorFlags) (This)->lpVtbl->SetStreamSelectorFlags(This,dwStreamSelectorFlags)
   1481 #else
   1482 /*** IUnknown methods ***/
   1483 static inline HRESULT IMFASFStreamSelector_QueryInterface(IMFASFStreamSelector* This,REFIID riid,void **ppvObject) {
   1484     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1485 }
   1486 static inline ULONG IMFASFStreamSelector_AddRef(IMFASFStreamSelector* This) {
   1487     return This->lpVtbl->AddRef(This);
   1488 }
   1489 static inline ULONG IMFASFStreamSelector_Release(IMFASFStreamSelector* This) {
   1490     return This->lpVtbl->Release(This);
   1491 }
   1492 /*** IMFASFStreamSelector methods ***/
   1493 static inline HRESULT IMFASFStreamSelector_GetStreamCount(IMFASFStreamSelector* This,DWORD *pcStreams) {
   1494     return This->lpVtbl->GetStreamCount(This,pcStreams);
   1495 }
   1496 static inline HRESULT IMFASFStreamSelector_GetOutputCount(IMFASFStreamSelector* This,DWORD *pcOutputs) {
   1497     return This->lpVtbl->GetOutputCount(This,pcOutputs);
   1498 }
   1499 static inline HRESULT IMFASFStreamSelector_GetOutputStreamCount(IMFASFStreamSelector* This,DWORD dwOutputNum,DWORD *pcStreams) {
   1500     return This->lpVtbl->GetOutputStreamCount(This,dwOutputNum,pcStreams);
   1501 }
   1502 static inline HRESULT IMFASFStreamSelector_GetOutputStreamNumbers(IMFASFStreamSelector* This,DWORD dwOutputNum,WORD *rgwStreamNumbers) {
   1503     return This->lpVtbl->GetOutputStreamNumbers(This,dwOutputNum,rgwStreamNumbers);
   1504 }
   1505 static inline HRESULT IMFASFStreamSelector_GetOutputFromStream(IMFASFStreamSelector* This,WORD wStreamNum,DWORD *pdwOutput) {
   1506     return This->lpVtbl->GetOutputFromStream(This,wStreamNum,pdwOutput);
   1507 }
   1508 static inline HRESULT IMFASFStreamSelector_GetOutputOverride(IMFASFStreamSelector* This,DWORD dwOutputNum,ASF_SELECTION_STATUS *pSelection) {
   1509     return This->lpVtbl->GetOutputOverride(This,dwOutputNum,pSelection);
   1510 }
   1511 static inline HRESULT IMFASFStreamSelector_SetOutputOverride(IMFASFStreamSelector* This,DWORD dwOutputNum,ASF_SELECTION_STATUS Selection) {
   1512     return This->lpVtbl->SetOutputOverride(This,dwOutputNum,Selection);
   1513 }
   1514 static inline HRESULT IMFASFStreamSelector_GetOutputMutexCount(IMFASFStreamSelector* This,DWORD dwOutputNum,DWORD *pcMutexes) {
   1515     return This->lpVtbl->GetOutputMutexCount(This,dwOutputNum,pcMutexes);
   1516 }
   1517 static inline HRESULT IMFASFStreamSelector_GetOutputMutex(IMFASFStreamSelector* This,DWORD dwOutputNum,DWORD dwMutexNum,IUnknown **ppMutex) {
   1518     return This->lpVtbl->GetOutputMutex(This,dwOutputNum,dwMutexNum,ppMutex);
   1519 }
   1520 static inline HRESULT IMFASFStreamSelector_SetOutputMutexSelection(IMFASFStreamSelector* This,DWORD dwOutputNum,DWORD dwMutexNum,WORD wSelectedRecord) {
   1521     return This->lpVtbl->SetOutputMutexSelection(This,dwOutputNum,dwMutexNum,wSelectedRecord);
   1522 }
   1523 static inline HRESULT IMFASFStreamSelector_GetBandwidthStepCount(IMFASFStreamSelector* This,DWORD *pcStepCount) {
   1524     return This->lpVtbl->GetBandwidthStepCount(This,pcStepCount);
   1525 }
   1526 static inline HRESULT IMFASFStreamSelector_GetBandwidthStep(IMFASFStreamSelector* This,DWORD dwStepNum,DWORD *pdwBitrate,WORD *rgwStreamNumbers,ASF_SELECTION_STATUS *rgSelections) {
   1527     return This->lpVtbl->GetBandwidthStep(This,dwStepNum,pdwBitrate,rgwStreamNumbers,rgSelections);
   1528 }
   1529 static inline HRESULT IMFASFStreamSelector_BitrateToStepNumber(IMFASFStreamSelector* This,DWORD dwBitrate,DWORD *pdwStepNum) {
   1530     return This->lpVtbl->BitrateToStepNumber(This,dwBitrate,pdwStepNum);
   1531 }
   1532 static inline HRESULT IMFASFStreamSelector_SetStreamSelectorFlags(IMFASFStreamSelector* This,DWORD dwStreamSelectorFlags) {
   1533     return This->lpVtbl->SetStreamSelectorFlags(This,dwStreamSelectorFlags);
   1534 }
   1535 #endif
   1536 #endif
   1537 
   1538 #endif
   1539 
   1540 
   1541 #endif  /* __IMFASFStreamSelector_INTERFACE_DEFINED__ */
   1542 
   1543 #if WINVER >= 0x0601
   1544 /*****************************************************************************
   1545  * IMFDRMNetHelper interface
   1546  */
   1547 #ifndef __IMFDRMNetHelper_INTERFACE_DEFINED__
   1548 #define __IMFDRMNetHelper_INTERFACE_DEFINED__
   1549 
   1550 DEFINE_GUID(IID_IMFDRMNetHelper, 0x3d1ff0ea, 0x679a, 0x4190, 0x8d,0x46, 0x7f,0xa6,0x9e,0x8c,0x7e,0x15);
   1551 #if defined(__cplusplus) && !defined(CINTERFACE)
   1552 MIDL_INTERFACE("3d1ff0ea-679a-4190-8d46-7fa69e8c7e15")
   1553 IMFDRMNetHelper : public IUnknown
   1554 {
   1555     virtual HRESULT STDMETHODCALLTYPE ProcessLicenseRequest(
   1556         BYTE *pLicenseRequest,
   1557         DWORD cbLicenseRequest,
   1558         BYTE **ppLicenseResponse,
   1559         DWORD *pcbLicenseResponse,
   1560         BSTR *pbstrKID) = 0;
   1561 
   1562     virtual HRESULT STDMETHODCALLTYPE GetChainedLicenseResponse(
   1563         BYTE **ppLicenseResponse,
   1564         DWORD *pcbLicenseResponse) = 0;
   1565 
   1566 };
   1567 #ifdef __CRT_UUID_DECL
   1568 __CRT_UUID_DECL(IMFDRMNetHelper, 0x3d1ff0ea, 0x679a, 0x4190, 0x8d,0x46, 0x7f,0xa6,0x9e,0x8c,0x7e,0x15)
   1569 #endif
   1570 #else
   1571 typedef struct IMFDRMNetHelperVtbl {
   1572     BEGIN_INTERFACE
   1573 
   1574     /*** IUnknown methods ***/
   1575     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1576         IMFDRMNetHelper *This,
   1577         REFIID riid,
   1578         void **ppvObject);
   1579 
   1580     ULONG (STDMETHODCALLTYPE *AddRef)(
   1581         IMFDRMNetHelper *This);
   1582 
   1583     ULONG (STDMETHODCALLTYPE *Release)(
   1584         IMFDRMNetHelper *This);
   1585 
   1586     /*** IMFDRMNetHelper methods ***/
   1587     HRESULT (STDMETHODCALLTYPE *ProcessLicenseRequest)(
   1588         IMFDRMNetHelper *This,
   1589         BYTE *pLicenseRequest,
   1590         DWORD cbLicenseRequest,
   1591         BYTE **ppLicenseResponse,
   1592         DWORD *pcbLicenseResponse,
   1593         BSTR *pbstrKID);
   1594 
   1595     HRESULT (STDMETHODCALLTYPE *GetChainedLicenseResponse)(
   1596         IMFDRMNetHelper *This,
   1597         BYTE **ppLicenseResponse,
   1598         DWORD *pcbLicenseResponse);
   1599 
   1600     END_INTERFACE
   1601 } IMFDRMNetHelperVtbl;
   1602 
   1603 interface IMFDRMNetHelper {
   1604     CONST_VTBL IMFDRMNetHelperVtbl* lpVtbl;
   1605 };
   1606 
   1607 #ifdef COBJMACROS
   1608 #ifndef WIDL_C_INLINE_WRAPPERS
   1609 /*** IUnknown methods ***/
   1610 #define IMFDRMNetHelper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1611 #define IMFDRMNetHelper_AddRef(This) (This)->lpVtbl->AddRef(This)
   1612 #define IMFDRMNetHelper_Release(This) (This)->lpVtbl->Release(This)
   1613 /*** IMFDRMNetHelper methods ***/
   1614 #define IMFDRMNetHelper_ProcessLicenseRequest(This,pLicenseRequest,cbLicenseRequest,ppLicenseResponse,pcbLicenseResponse,pbstrKID) (This)->lpVtbl->ProcessLicenseRequest(This,pLicenseRequest,cbLicenseRequest,ppLicenseResponse,pcbLicenseResponse,pbstrKID)
   1615 #define IMFDRMNetHelper_GetChainedLicenseResponse(This,ppLicenseResponse,pcbLicenseResponse) (This)->lpVtbl->GetChainedLicenseResponse(This,ppLicenseResponse,pcbLicenseResponse)
   1616 #else
   1617 /*** IUnknown methods ***/
   1618 static inline HRESULT IMFDRMNetHelper_QueryInterface(IMFDRMNetHelper* This,REFIID riid,void **ppvObject) {
   1619     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1620 }
   1621 static inline ULONG IMFDRMNetHelper_AddRef(IMFDRMNetHelper* This) {
   1622     return This->lpVtbl->AddRef(This);
   1623 }
   1624 static inline ULONG IMFDRMNetHelper_Release(IMFDRMNetHelper* This) {
   1625     return This->lpVtbl->Release(This);
   1626 }
   1627 /*** IMFDRMNetHelper methods ***/
   1628 static inline HRESULT IMFDRMNetHelper_ProcessLicenseRequest(IMFDRMNetHelper* This,BYTE *pLicenseRequest,DWORD cbLicenseRequest,BYTE **ppLicenseResponse,DWORD *pcbLicenseResponse,BSTR *pbstrKID) {
   1629     return This->lpVtbl->ProcessLicenseRequest(This,pLicenseRequest,cbLicenseRequest,ppLicenseResponse,pcbLicenseResponse,pbstrKID);
   1630 }
   1631 static inline HRESULT IMFDRMNetHelper_GetChainedLicenseResponse(IMFDRMNetHelper* This,BYTE **ppLicenseResponse,DWORD *pcbLicenseResponse) {
   1632     return This->lpVtbl->GetChainedLicenseResponse(This,ppLicenseResponse,pcbLicenseResponse);
   1633 }
   1634 #endif
   1635 #endif
   1636 
   1637 #endif
   1638 
   1639 
   1640 #endif  /* __IMFDRMNetHelper_INTERFACE_DEFINED__ */
   1641 
   1642 #endif
   1643 /*****************************************************************************
   1644  * IMFASFProfile interface
   1645  */
   1646 #ifndef __IMFASFProfile_INTERFACE_DEFINED__
   1647 #define __IMFASFProfile_INTERFACE_DEFINED__
   1648 
   1649 DEFINE_GUID(IID_IMFASFProfile, 0xd267bf6a, 0x028b, 0x4e0d, 0x90,0x3d, 0x43,0xf0,0xef,0x82,0xd0,0xd4);
   1650 #if defined(__cplusplus) && !defined(CINTERFACE)
   1651 MIDL_INTERFACE("d267bf6a-028b-4e0d-903d-43f0ef82d0d4")
   1652 IMFASFProfile : public IMFAttributes
   1653 {
   1654     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
   1655         DWORD *pcStreams) = 0;
   1656 
   1657     virtual HRESULT STDMETHODCALLTYPE GetStream(
   1658         DWORD dwStreamIndex,
   1659         WORD *pwStreamNumber,
   1660         IMFASFStreamConfig **ppIStream) = 0;
   1661 
   1662     virtual HRESULT STDMETHODCALLTYPE GetStreamByNumber(
   1663         WORD wStreamNumber,
   1664         IMFASFStreamConfig **ppIStream) = 0;
   1665 
   1666     virtual HRESULT STDMETHODCALLTYPE SetStream(
   1667         IMFASFStreamConfig *pIStream) = 0;
   1668 
   1669     virtual HRESULT STDMETHODCALLTYPE RemoveStream(
   1670         WORD wStreamNumber) = 0;
   1671 
   1672     virtual HRESULT STDMETHODCALLTYPE CreateStream(
   1673         IMFMediaType *pIMediaType,
   1674         IMFASFStreamConfig **ppIStream) = 0;
   1675 
   1676     virtual HRESULT STDMETHODCALLTYPE GetMutualExclusionCount(
   1677         DWORD *pcMutexs) = 0;
   1678 
   1679     virtual HRESULT STDMETHODCALLTYPE GetMutualExclusion(
   1680         DWORD dwMutexIndex,
   1681         IMFASFMutualExclusion **ppIMutex) = 0;
   1682 
   1683     virtual HRESULT STDMETHODCALLTYPE AddMutualExclusion(
   1684         IMFASFMutualExclusion *pIMutex) = 0;
   1685 
   1686     virtual HRESULT STDMETHODCALLTYPE RemoveMutualExclusion(
   1687         DWORD dwMutexIndex) = 0;
   1688 
   1689     virtual HRESULT STDMETHODCALLTYPE CreateMutualExclusion(
   1690         IMFASFMutualExclusion **ppIMutex) = 0;
   1691 
   1692     virtual HRESULT STDMETHODCALLTYPE GetStreamPrioritization(
   1693         IMFASFStreamPrioritization **ppIStreamPrioritization) = 0;
   1694 
   1695     virtual HRESULT STDMETHODCALLTYPE AddStreamPrioritization(
   1696         IMFASFStreamPrioritization *pIStreamPrioritization) = 0;
   1697 
   1698     virtual HRESULT STDMETHODCALLTYPE RemoveStreamPrioritization(
   1699         ) = 0;
   1700 
   1701     virtual HRESULT STDMETHODCALLTYPE CreateStreamPrioritization(
   1702         IMFASFStreamPrioritization **ppIStreamPrioritization) = 0;
   1703 
   1704     virtual HRESULT STDMETHODCALLTYPE Clone(
   1705         IMFASFProfile **ppIProfile) = 0;
   1706 
   1707 };
   1708 #ifdef __CRT_UUID_DECL
   1709 __CRT_UUID_DECL(IMFASFProfile, 0xd267bf6a, 0x028b, 0x4e0d, 0x90,0x3d, 0x43,0xf0,0xef,0x82,0xd0,0xd4)
   1710 #endif
   1711 #else
   1712 typedef struct IMFASFProfileVtbl {
   1713     BEGIN_INTERFACE
   1714 
   1715     /*** IUnknown methods ***/
   1716     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1717         IMFASFProfile *This,
   1718         REFIID riid,
   1719         void **ppvObject);
   1720 
   1721     ULONG (STDMETHODCALLTYPE *AddRef)(
   1722         IMFASFProfile *This);
   1723 
   1724     ULONG (STDMETHODCALLTYPE *Release)(
   1725         IMFASFProfile *This);
   1726 
   1727     /*** IMFAttributes methods ***/
   1728     HRESULT (STDMETHODCALLTYPE *GetItem)(
   1729         IMFASFProfile *This,
   1730         REFGUID guidKey,
   1731         PROPVARIANT *pValue);
   1732 
   1733     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   1734         IMFASFProfile *This,
   1735         REFGUID guidKey,
   1736         MF_ATTRIBUTE_TYPE *pType);
   1737 
   1738     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   1739         IMFASFProfile *This,
   1740         REFGUID guidKey,
   1741         REFPROPVARIANT Value,
   1742         WINBOOL *pbResult);
   1743 
   1744     HRESULT (STDMETHODCALLTYPE *Compare)(
   1745         IMFASFProfile *This,
   1746         IMFAttributes *pTheirs,
   1747         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   1748         WINBOOL *pbResult);
   1749 
   1750     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   1751         IMFASFProfile *This,
   1752         REFGUID guidKey,
   1753         UINT32 *punValue);
   1754 
   1755     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   1756         IMFASFProfile *This,
   1757         REFGUID guidKey,
   1758         UINT64 *punValue);
   1759 
   1760     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   1761         IMFASFProfile *This,
   1762         REFGUID guidKey,
   1763         double *pfValue);
   1764 
   1765     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   1766         IMFASFProfile *This,
   1767         REFGUID guidKey,
   1768         GUID *pguidValue);
   1769 
   1770     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   1771         IMFASFProfile *This,
   1772         REFGUID guidKey,
   1773         UINT32 *pcchLength);
   1774 
   1775     HRESULT (STDMETHODCALLTYPE *GetString)(
   1776         IMFASFProfile *This,
   1777         REFGUID guidKey,
   1778         LPWSTR pwszValue,
   1779         UINT32 cchBufSize,
   1780         UINT32 *pcchLength);
   1781 
   1782     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   1783         IMFASFProfile *This,
   1784         REFGUID guidKey,
   1785         LPWSTR *ppwszValue,
   1786         UINT32 *pcchLength);
   1787 
   1788     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   1789         IMFASFProfile *This,
   1790         REFGUID guidKey,
   1791         UINT32 *pcbBlobSize);
   1792 
   1793     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   1794         IMFASFProfile *This,
   1795         REFGUID guidKey,
   1796         UINT8 *pBuf,
   1797         UINT32 cbBufSize,
   1798         UINT32 *pcbBlobSize);
   1799 
   1800     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   1801         IMFASFProfile *This,
   1802         REFGUID guidKey,
   1803         UINT8 **ppBuf,
   1804         UINT32 *pcbSize);
   1805 
   1806     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   1807         IMFASFProfile *This,
   1808         REFGUID guidKey,
   1809         REFIID riid,
   1810         LPVOID *ppv);
   1811 
   1812     HRESULT (STDMETHODCALLTYPE *SetItem)(
   1813         IMFASFProfile *This,
   1814         REFGUID guidKey,
   1815         REFPROPVARIANT Value);
   1816 
   1817     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   1818         IMFASFProfile *This,
   1819         REFGUID guidKey);
   1820 
   1821     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   1822         IMFASFProfile *This);
   1823 
   1824     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   1825         IMFASFProfile *This,
   1826         REFGUID guidKey,
   1827         UINT32 unValue);
   1828 
   1829     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   1830         IMFASFProfile *This,
   1831         REFGUID guidKey,
   1832         UINT64 unValue);
   1833 
   1834     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   1835         IMFASFProfile *This,
   1836         REFGUID guidKey,
   1837         double fValue);
   1838 
   1839     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   1840         IMFASFProfile *This,
   1841         REFGUID guidKey,
   1842         REFGUID guidValue);
   1843 
   1844     HRESULT (STDMETHODCALLTYPE *SetString)(
   1845         IMFASFProfile *This,
   1846         REFGUID guidKey,
   1847         LPCWSTR wszValue);
   1848 
   1849     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   1850         IMFASFProfile *This,
   1851         REFGUID guidKey,
   1852         const UINT8 *pBuf,
   1853         UINT32 cbBufSize);
   1854 
   1855     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   1856         IMFASFProfile *This,
   1857         REFGUID guidKey,
   1858         IUnknown *pUnknown);
   1859 
   1860     HRESULT (STDMETHODCALLTYPE *LockStore)(
   1861         IMFASFProfile *This);
   1862 
   1863     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   1864         IMFASFProfile *This);
   1865 
   1866     HRESULT (STDMETHODCALLTYPE *GetCount)(
   1867         IMFASFProfile *This,
   1868         UINT32 *pcItems);
   1869 
   1870     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   1871         IMFASFProfile *This,
   1872         UINT32 unIndex,
   1873         GUID *pguidKey,
   1874         PROPVARIANT *pValue);
   1875 
   1876     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   1877         IMFASFProfile *This,
   1878         IMFAttributes *pDest);
   1879 
   1880     /*** IMFASFProfile methods ***/
   1881     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
   1882         IMFASFProfile *This,
   1883         DWORD *pcStreams);
   1884 
   1885     HRESULT (STDMETHODCALLTYPE *GetStream)(
   1886         IMFASFProfile *This,
   1887         DWORD dwStreamIndex,
   1888         WORD *pwStreamNumber,
   1889         IMFASFStreamConfig **ppIStream);
   1890 
   1891     HRESULT (STDMETHODCALLTYPE *GetStreamByNumber)(
   1892         IMFASFProfile *This,
   1893         WORD wStreamNumber,
   1894         IMFASFStreamConfig **ppIStream);
   1895 
   1896     HRESULT (STDMETHODCALLTYPE *SetStream)(
   1897         IMFASFProfile *This,
   1898         IMFASFStreamConfig *pIStream);
   1899 
   1900     HRESULT (STDMETHODCALLTYPE *RemoveStream)(
   1901         IMFASFProfile *This,
   1902         WORD wStreamNumber);
   1903 
   1904     HRESULT (STDMETHODCALLTYPE *CreateStream)(
   1905         IMFASFProfile *This,
   1906         IMFMediaType *pIMediaType,
   1907         IMFASFStreamConfig **ppIStream);
   1908 
   1909     HRESULT (STDMETHODCALLTYPE *GetMutualExclusionCount)(
   1910         IMFASFProfile *This,
   1911         DWORD *pcMutexs);
   1912 
   1913     HRESULT (STDMETHODCALLTYPE *GetMutualExclusion)(
   1914         IMFASFProfile *This,
   1915         DWORD dwMutexIndex,
   1916         IMFASFMutualExclusion **ppIMutex);
   1917 
   1918     HRESULT (STDMETHODCALLTYPE *AddMutualExclusion)(
   1919         IMFASFProfile *This,
   1920         IMFASFMutualExclusion *pIMutex);
   1921 
   1922     HRESULT (STDMETHODCALLTYPE *RemoveMutualExclusion)(
   1923         IMFASFProfile *This,
   1924         DWORD dwMutexIndex);
   1925 
   1926     HRESULT (STDMETHODCALLTYPE *CreateMutualExclusion)(
   1927         IMFASFProfile *This,
   1928         IMFASFMutualExclusion **ppIMutex);
   1929 
   1930     HRESULT (STDMETHODCALLTYPE *GetStreamPrioritization)(
   1931         IMFASFProfile *This,
   1932         IMFASFStreamPrioritization **ppIStreamPrioritization);
   1933 
   1934     HRESULT (STDMETHODCALLTYPE *AddStreamPrioritization)(
   1935         IMFASFProfile *This,
   1936         IMFASFStreamPrioritization *pIStreamPrioritization);
   1937 
   1938     HRESULT (STDMETHODCALLTYPE *RemoveStreamPrioritization)(
   1939         IMFASFProfile *This);
   1940 
   1941     HRESULT (STDMETHODCALLTYPE *CreateStreamPrioritization)(
   1942         IMFASFProfile *This,
   1943         IMFASFStreamPrioritization **ppIStreamPrioritization);
   1944 
   1945     HRESULT (STDMETHODCALLTYPE *Clone)(
   1946         IMFASFProfile *This,
   1947         IMFASFProfile **ppIProfile);
   1948 
   1949     END_INTERFACE
   1950 } IMFASFProfileVtbl;
   1951 
   1952 interface IMFASFProfile {
   1953     CONST_VTBL IMFASFProfileVtbl* lpVtbl;
   1954 };
   1955 
   1956 #ifdef COBJMACROS
   1957 #ifndef WIDL_C_INLINE_WRAPPERS
   1958 /*** IUnknown methods ***/
   1959 #define IMFASFProfile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1960 #define IMFASFProfile_AddRef(This) (This)->lpVtbl->AddRef(This)
   1961 #define IMFASFProfile_Release(This) (This)->lpVtbl->Release(This)
   1962 /*** IMFAttributes methods ***/
   1963 #define IMFASFProfile_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   1964 #define IMFASFProfile_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   1965 #define IMFASFProfile_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   1966 #define IMFASFProfile_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   1967 #define IMFASFProfile_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   1968 #define IMFASFProfile_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   1969 #define IMFASFProfile_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   1970 #define IMFASFProfile_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   1971 #define IMFASFProfile_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   1972 #define IMFASFProfile_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   1973 #define IMFASFProfile_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   1974 #define IMFASFProfile_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   1975 #define IMFASFProfile_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   1976 #define IMFASFProfile_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   1977 #define IMFASFProfile_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   1978 #define IMFASFProfile_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   1979 #define IMFASFProfile_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   1980 #define IMFASFProfile_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   1981 #define IMFASFProfile_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   1982 #define IMFASFProfile_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   1983 #define IMFASFProfile_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   1984 #define IMFASFProfile_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   1985 #define IMFASFProfile_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   1986 #define IMFASFProfile_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   1987 #define IMFASFProfile_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   1988 #define IMFASFProfile_LockStore(This) (This)->lpVtbl->LockStore(This)
   1989 #define IMFASFProfile_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   1990 #define IMFASFProfile_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   1991 #define IMFASFProfile_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   1992 #define IMFASFProfile_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   1993 /*** IMFASFProfile methods ***/
   1994 #define IMFASFProfile_GetStreamCount(This,pcStreams) (This)->lpVtbl->GetStreamCount(This,pcStreams)
   1995 #define IMFASFProfile_GetStream(This,dwStreamIndex,pwStreamNumber,ppIStream) (This)->lpVtbl->GetStream(This,dwStreamIndex,pwStreamNumber,ppIStream)
   1996 #define IMFASFProfile_GetStreamByNumber(This,wStreamNumber,ppIStream) (This)->lpVtbl->GetStreamByNumber(This,wStreamNumber,ppIStream)
   1997 #define IMFASFProfile_SetStream(This,pIStream) (This)->lpVtbl->SetStream(This,pIStream)
   1998 #define IMFASFProfile_RemoveStream(This,wStreamNumber) (This)->lpVtbl->RemoveStream(This,wStreamNumber)
   1999 #define IMFASFProfile_CreateStream(This,pIMediaType,ppIStream) (This)->lpVtbl->CreateStream(This,pIMediaType,ppIStream)
   2000 #define IMFASFProfile_GetMutualExclusionCount(This,pcMutexs) (This)->lpVtbl->GetMutualExclusionCount(This,pcMutexs)
   2001 #define IMFASFProfile_GetMutualExclusion(This,dwMutexIndex,ppIMutex) (This)->lpVtbl->GetMutualExclusion(This,dwMutexIndex,ppIMutex)
   2002 #define IMFASFProfile_AddMutualExclusion(This,pIMutex) (This)->lpVtbl->AddMutualExclusion(This,pIMutex)
   2003 #define IMFASFProfile_RemoveMutualExclusion(This,dwMutexIndex) (This)->lpVtbl->RemoveMutualExclusion(This,dwMutexIndex)
   2004 #define IMFASFProfile_CreateMutualExclusion(This,ppIMutex) (This)->lpVtbl->CreateMutualExclusion(This,ppIMutex)
   2005 #define IMFASFProfile_GetStreamPrioritization(This,ppIStreamPrioritization) (This)->lpVtbl->GetStreamPrioritization(This,ppIStreamPrioritization)
   2006 #define IMFASFProfile_AddStreamPrioritization(This,pIStreamPrioritization) (This)->lpVtbl->AddStreamPrioritization(This,pIStreamPrioritization)
   2007 #define IMFASFProfile_RemoveStreamPrioritization(This) (This)->lpVtbl->RemoveStreamPrioritization(This)
   2008 #define IMFASFProfile_CreateStreamPrioritization(This,ppIStreamPrioritization) (This)->lpVtbl->CreateStreamPrioritization(This,ppIStreamPrioritization)
   2009 #define IMFASFProfile_Clone(This,ppIProfile) (This)->lpVtbl->Clone(This,ppIProfile)
   2010 #else
   2011 /*** IUnknown methods ***/
   2012 static inline HRESULT IMFASFProfile_QueryInterface(IMFASFProfile* This,REFIID riid,void **ppvObject) {
   2013     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2014 }
   2015 static inline ULONG IMFASFProfile_AddRef(IMFASFProfile* This) {
   2016     return This->lpVtbl->AddRef(This);
   2017 }
   2018 static inline ULONG IMFASFProfile_Release(IMFASFProfile* This) {
   2019     return This->lpVtbl->Release(This);
   2020 }
   2021 /*** IMFAttributes methods ***/
   2022 static inline HRESULT IMFASFProfile_GetItem(IMFASFProfile* This,REFGUID guidKey,PROPVARIANT *pValue) {
   2023     return This->lpVtbl->GetItem(This,guidKey,pValue);
   2024 }
   2025 static inline HRESULT IMFASFProfile_GetItemType(IMFASFProfile* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   2026     return This->lpVtbl->GetItemType(This,guidKey,pType);
   2027 }
   2028 static inline HRESULT IMFASFProfile_CompareItem(IMFASFProfile* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   2029     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   2030 }
   2031 static inline HRESULT IMFASFProfile_Compare(IMFASFProfile* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   2032     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   2033 }
   2034 static inline HRESULT IMFASFProfile_GetUINT32(IMFASFProfile* This,REFGUID guidKey,UINT32 *punValue) {
   2035     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   2036 }
   2037 static inline HRESULT IMFASFProfile_GetUINT64(IMFASFProfile* This,REFGUID guidKey,UINT64 *punValue) {
   2038     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   2039 }
   2040 static inline HRESULT IMFASFProfile_GetDouble(IMFASFProfile* This,REFGUID guidKey,double *pfValue) {
   2041     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   2042 }
   2043 static inline HRESULT IMFASFProfile_GetGUID(IMFASFProfile* This,REFGUID guidKey,GUID *pguidValue) {
   2044     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   2045 }
   2046 static inline HRESULT IMFASFProfile_GetStringLength(IMFASFProfile* This,REFGUID guidKey,UINT32 *pcchLength) {
   2047     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   2048 }
   2049 static inline HRESULT IMFASFProfile_GetString(IMFASFProfile* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   2050     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   2051 }
   2052 static inline HRESULT IMFASFProfile_GetAllocatedString(IMFASFProfile* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   2053     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   2054 }
   2055 static inline HRESULT IMFASFProfile_GetBlobSize(IMFASFProfile* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   2056     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   2057 }
   2058 static inline HRESULT IMFASFProfile_GetBlob(IMFASFProfile* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   2059     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   2060 }
   2061 static inline HRESULT IMFASFProfile_GetAllocatedBlob(IMFASFProfile* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   2062     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   2063 }
   2064 static inline HRESULT IMFASFProfile_GetUnknown(IMFASFProfile* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   2065     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   2066 }
   2067 static inline HRESULT IMFASFProfile_SetItem(IMFASFProfile* This,REFGUID guidKey,REFPROPVARIANT Value) {
   2068     return This->lpVtbl->SetItem(This,guidKey,Value);
   2069 }
   2070 static inline HRESULT IMFASFProfile_DeleteItem(IMFASFProfile* This,REFGUID guidKey) {
   2071     return This->lpVtbl->DeleteItem(This,guidKey);
   2072 }
   2073 static inline HRESULT IMFASFProfile_DeleteAllItems(IMFASFProfile* This) {
   2074     return This->lpVtbl->DeleteAllItems(This);
   2075 }
   2076 static inline HRESULT IMFASFProfile_SetUINT32(IMFASFProfile* This,REFGUID guidKey,UINT32 unValue) {
   2077     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   2078 }
   2079 static inline HRESULT IMFASFProfile_SetUINT64(IMFASFProfile* This,REFGUID guidKey,UINT64 unValue) {
   2080     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   2081 }
   2082 static inline HRESULT IMFASFProfile_SetDouble(IMFASFProfile* This,REFGUID guidKey,double fValue) {
   2083     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   2084 }
   2085 static inline HRESULT IMFASFProfile_SetGUID(IMFASFProfile* This,REFGUID guidKey,REFGUID guidValue) {
   2086     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   2087 }
   2088 static inline HRESULT IMFASFProfile_SetString(IMFASFProfile* This,REFGUID guidKey,LPCWSTR wszValue) {
   2089     return This->lpVtbl->SetString(This,guidKey,wszValue);
   2090 }
   2091 static inline HRESULT IMFASFProfile_SetBlob(IMFASFProfile* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   2092     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   2093 }
   2094 static inline HRESULT IMFASFProfile_SetUnknown(IMFASFProfile* This,REFGUID guidKey,IUnknown *pUnknown) {
   2095     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   2096 }
   2097 static inline HRESULT IMFASFProfile_LockStore(IMFASFProfile* This) {
   2098     return This->lpVtbl->LockStore(This);
   2099 }
   2100 static inline HRESULT IMFASFProfile_UnlockStore(IMFASFProfile* This) {
   2101     return This->lpVtbl->UnlockStore(This);
   2102 }
   2103 static inline HRESULT IMFASFProfile_GetCount(IMFASFProfile* This,UINT32 *pcItems) {
   2104     return This->lpVtbl->GetCount(This,pcItems);
   2105 }
   2106 static inline HRESULT IMFASFProfile_GetItemByIndex(IMFASFProfile* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   2107     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   2108 }
   2109 static inline HRESULT IMFASFProfile_CopyAllItems(IMFASFProfile* This,IMFAttributes *pDest) {
   2110     return This->lpVtbl->CopyAllItems(This,pDest);
   2111 }
   2112 /*** IMFASFProfile methods ***/
   2113 static inline HRESULT IMFASFProfile_GetStreamCount(IMFASFProfile* This,DWORD *pcStreams) {
   2114     return This->lpVtbl->GetStreamCount(This,pcStreams);
   2115 }
   2116 static inline HRESULT IMFASFProfile_GetStream(IMFASFProfile* This,DWORD dwStreamIndex,WORD *pwStreamNumber,IMFASFStreamConfig **ppIStream) {
   2117     return This->lpVtbl->GetStream(This,dwStreamIndex,pwStreamNumber,ppIStream);
   2118 }
   2119 static inline HRESULT IMFASFProfile_GetStreamByNumber(IMFASFProfile* This,WORD wStreamNumber,IMFASFStreamConfig **ppIStream) {
   2120     return This->lpVtbl->GetStreamByNumber(This,wStreamNumber,ppIStream);
   2121 }
   2122 static inline HRESULT IMFASFProfile_SetStream(IMFASFProfile* This,IMFASFStreamConfig *pIStream) {
   2123     return This->lpVtbl->SetStream(This,pIStream);
   2124 }
   2125 static inline HRESULT IMFASFProfile_RemoveStream(IMFASFProfile* This,WORD wStreamNumber) {
   2126     return This->lpVtbl->RemoveStream(This,wStreamNumber);
   2127 }
   2128 static inline HRESULT IMFASFProfile_CreateStream(IMFASFProfile* This,IMFMediaType *pIMediaType,IMFASFStreamConfig **ppIStream) {
   2129     return This->lpVtbl->CreateStream(This,pIMediaType,ppIStream);
   2130 }
   2131 static inline HRESULT IMFASFProfile_GetMutualExclusionCount(IMFASFProfile* This,DWORD *pcMutexs) {
   2132     return This->lpVtbl->GetMutualExclusionCount(This,pcMutexs);
   2133 }
   2134 static inline HRESULT IMFASFProfile_GetMutualExclusion(IMFASFProfile* This,DWORD dwMutexIndex,IMFASFMutualExclusion **ppIMutex) {
   2135     return This->lpVtbl->GetMutualExclusion(This,dwMutexIndex,ppIMutex);
   2136 }
   2137 static inline HRESULT IMFASFProfile_AddMutualExclusion(IMFASFProfile* This,IMFASFMutualExclusion *pIMutex) {
   2138     return This->lpVtbl->AddMutualExclusion(This,pIMutex);
   2139 }
   2140 static inline HRESULT IMFASFProfile_RemoveMutualExclusion(IMFASFProfile* This,DWORD dwMutexIndex) {
   2141     return This->lpVtbl->RemoveMutualExclusion(This,dwMutexIndex);
   2142 }
   2143 static inline HRESULT IMFASFProfile_CreateMutualExclusion(IMFASFProfile* This,IMFASFMutualExclusion **ppIMutex) {
   2144     return This->lpVtbl->CreateMutualExclusion(This,ppIMutex);
   2145 }
   2146 static inline HRESULT IMFASFProfile_GetStreamPrioritization(IMFASFProfile* This,IMFASFStreamPrioritization **ppIStreamPrioritization) {
   2147     return This->lpVtbl->GetStreamPrioritization(This,ppIStreamPrioritization);
   2148 }
   2149 static inline HRESULT IMFASFProfile_AddStreamPrioritization(IMFASFProfile* This,IMFASFStreamPrioritization *pIStreamPrioritization) {
   2150     return This->lpVtbl->AddStreamPrioritization(This,pIStreamPrioritization);
   2151 }
   2152 static inline HRESULT IMFASFProfile_RemoveStreamPrioritization(IMFASFProfile* This) {
   2153     return This->lpVtbl->RemoveStreamPrioritization(This);
   2154 }
   2155 static inline HRESULT IMFASFProfile_CreateStreamPrioritization(IMFASFProfile* This,IMFASFStreamPrioritization **ppIStreamPrioritization) {
   2156     return This->lpVtbl->CreateStreamPrioritization(This,ppIStreamPrioritization);
   2157 }
   2158 static inline HRESULT IMFASFProfile_Clone(IMFASFProfile* This,IMFASFProfile **ppIProfile) {
   2159     return This->lpVtbl->Clone(This,ppIProfile);
   2160 }
   2161 #endif
   2162 #endif
   2163 
   2164 #endif
   2165 
   2166 
   2167 #endif  /* __IMFASFProfile_INTERFACE_DEFINED__ */
   2168 
   2169 /*****************************************************************************
   2170  * IMFASFStreamConfig interface
   2171  */
   2172 #ifndef __IMFASFStreamConfig_INTERFACE_DEFINED__
   2173 #define __IMFASFStreamConfig_INTERFACE_DEFINED__
   2174 
   2175 DEFINE_GUID(IID_IMFASFStreamConfig, 0x9e8ae8d2, 0xdbbd, 0x4200, 0x9a,0xca, 0x06,0xe6,0xdf,0x48,0x49,0x13);
   2176 #if defined(__cplusplus) && !defined(CINTERFACE)
   2177 MIDL_INTERFACE("9e8ae8d2-dbbd-4200-9aca-06e6df484913")
   2178 IMFASFStreamConfig : public IMFAttributes
   2179 {
   2180     virtual HRESULT STDMETHODCALLTYPE GetStreamType(
   2181         GUID *pguidStreamType) = 0;
   2182 
   2183     virtual WORD STDMETHODCALLTYPE GetStreamNumber(
   2184         ) = 0;
   2185 
   2186     virtual HRESULT STDMETHODCALLTYPE SetStreamNumber(
   2187         WORD wStreamNum) = 0;
   2188 
   2189     virtual HRESULT STDMETHODCALLTYPE GetMediaType(
   2190         IMFMediaType **ppIMediaType) = 0;
   2191 
   2192     virtual HRESULT STDMETHODCALLTYPE SetMediaType(
   2193         IMFMediaType *pIMediaType) = 0;
   2194 
   2195     virtual HRESULT STDMETHODCALLTYPE GetPayloadExtensionCount(
   2196         WORD *pcPayloadExtensions) = 0;
   2197 
   2198     virtual HRESULT STDMETHODCALLTYPE GetPayloadExtension(
   2199         WORD wPayloadExtensionNumber,
   2200         GUID *pguidExtensionSystemID,
   2201         WORD *pcbExtensionDataSize,
   2202         BYTE *pbExtensionSystemInfo,
   2203         DWORD *pcbExtensionSystemInfo) = 0;
   2204 
   2205     virtual HRESULT STDMETHODCALLTYPE AddPayloadExtension(
   2206         GUID guidExtensionSystemID,
   2207         WORD cbExtensionDataSize,
   2208         BYTE *pbExtensionSystemInfo,
   2209         DWORD cbExtensionSystemInfo) = 0;
   2210 
   2211     virtual HRESULT STDMETHODCALLTYPE RemoveAllPayloadExtensions(
   2212         ) = 0;
   2213 
   2214     virtual HRESULT STDMETHODCALLTYPE Clone(
   2215         IMFASFStreamConfig **ppIStreamConfig) = 0;
   2216 
   2217 };
   2218 #ifdef __CRT_UUID_DECL
   2219 __CRT_UUID_DECL(IMFASFStreamConfig, 0x9e8ae8d2, 0xdbbd, 0x4200, 0x9a,0xca, 0x06,0xe6,0xdf,0x48,0x49,0x13)
   2220 #endif
   2221 #else
   2222 typedef struct IMFASFStreamConfigVtbl {
   2223     BEGIN_INTERFACE
   2224 
   2225     /*** IUnknown methods ***/
   2226     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2227         IMFASFStreamConfig *This,
   2228         REFIID riid,
   2229         void **ppvObject);
   2230 
   2231     ULONG (STDMETHODCALLTYPE *AddRef)(
   2232         IMFASFStreamConfig *This);
   2233 
   2234     ULONG (STDMETHODCALLTYPE *Release)(
   2235         IMFASFStreamConfig *This);
   2236 
   2237     /*** IMFAttributes methods ***/
   2238     HRESULT (STDMETHODCALLTYPE *GetItem)(
   2239         IMFASFStreamConfig *This,
   2240         REFGUID guidKey,
   2241         PROPVARIANT *pValue);
   2242 
   2243     HRESULT (STDMETHODCALLTYPE *GetItemType)(
   2244         IMFASFStreamConfig *This,
   2245         REFGUID guidKey,
   2246         MF_ATTRIBUTE_TYPE *pType);
   2247 
   2248     HRESULT (STDMETHODCALLTYPE *CompareItem)(
   2249         IMFASFStreamConfig *This,
   2250         REFGUID guidKey,
   2251         REFPROPVARIANT Value,
   2252         WINBOOL *pbResult);
   2253 
   2254     HRESULT (STDMETHODCALLTYPE *Compare)(
   2255         IMFASFStreamConfig *This,
   2256         IMFAttributes *pTheirs,
   2257         MF_ATTRIBUTES_MATCH_TYPE MatchType,
   2258         WINBOOL *pbResult);
   2259 
   2260     HRESULT (STDMETHODCALLTYPE *GetUINT32)(
   2261         IMFASFStreamConfig *This,
   2262         REFGUID guidKey,
   2263         UINT32 *punValue);
   2264 
   2265     HRESULT (STDMETHODCALLTYPE *GetUINT64)(
   2266         IMFASFStreamConfig *This,
   2267         REFGUID guidKey,
   2268         UINT64 *punValue);
   2269 
   2270     HRESULT (STDMETHODCALLTYPE *GetDouble)(
   2271         IMFASFStreamConfig *This,
   2272         REFGUID guidKey,
   2273         double *pfValue);
   2274 
   2275     HRESULT (STDMETHODCALLTYPE *GetGUID)(
   2276         IMFASFStreamConfig *This,
   2277         REFGUID guidKey,
   2278         GUID *pguidValue);
   2279 
   2280     HRESULT (STDMETHODCALLTYPE *GetStringLength)(
   2281         IMFASFStreamConfig *This,
   2282         REFGUID guidKey,
   2283         UINT32 *pcchLength);
   2284 
   2285     HRESULT (STDMETHODCALLTYPE *GetString)(
   2286         IMFASFStreamConfig *This,
   2287         REFGUID guidKey,
   2288         LPWSTR pwszValue,
   2289         UINT32 cchBufSize,
   2290         UINT32 *pcchLength);
   2291 
   2292     HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
   2293         IMFASFStreamConfig *This,
   2294         REFGUID guidKey,
   2295         LPWSTR *ppwszValue,
   2296         UINT32 *pcchLength);
   2297 
   2298     HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
   2299         IMFASFStreamConfig *This,
   2300         REFGUID guidKey,
   2301         UINT32 *pcbBlobSize);
   2302 
   2303     HRESULT (STDMETHODCALLTYPE *GetBlob)(
   2304         IMFASFStreamConfig *This,
   2305         REFGUID guidKey,
   2306         UINT8 *pBuf,
   2307         UINT32 cbBufSize,
   2308         UINT32 *pcbBlobSize);
   2309 
   2310     HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
   2311         IMFASFStreamConfig *This,
   2312         REFGUID guidKey,
   2313         UINT8 **ppBuf,
   2314         UINT32 *pcbSize);
   2315 
   2316     HRESULT (STDMETHODCALLTYPE *GetUnknown)(
   2317         IMFASFStreamConfig *This,
   2318         REFGUID guidKey,
   2319         REFIID riid,
   2320         LPVOID *ppv);
   2321 
   2322     HRESULT (STDMETHODCALLTYPE *SetItem)(
   2323         IMFASFStreamConfig *This,
   2324         REFGUID guidKey,
   2325         REFPROPVARIANT Value);
   2326 
   2327     HRESULT (STDMETHODCALLTYPE *DeleteItem)(
   2328         IMFASFStreamConfig *This,
   2329         REFGUID guidKey);
   2330 
   2331     HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
   2332         IMFASFStreamConfig *This);
   2333 
   2334     HRESULT (STDMETHODCALLTYPE *SetUINT32)(
   2335         IMFASFStreamConfig *This,
   2336         REFGUID guidKey,
   2337         UINT32 unValue);
   2338 
   2339     HRESULT (STDMETHODCALLTYPE *SetUINT64)(
   2340         IMFASFStreamConfig *This,
   2341         REFGUID guidKey,
   2342         UINT64 unValue);
   2343 
   2344     HRESULT (STDMETHODCALLTYPE *SetDouble)(
   2345         IMFASFStreamConfig *This,
   2346         REFGUID guidKey,
   2347         double fValue);
   2348 
   2349     HRESULT (STDMETHODCALLTYPE *SetGUID)(
   2350         IMFASFStreamConfig *This,
   2351         REFGUID guidKey,
   2352         REFGUID guidValue);
   2353 
   2354     HRESULT (STDMETHODCALLTYPE *SetString)(
   2355         IMFASFStreamConfig *This,
   2356         REFGUID guidKey,
   2357         LPCWSTR wszValue);
   2358 
   2359     HRESULT (STDMETHODCALLTYPE *SetBlob)(
   2360         IMFASFStreamConfig *This,
   2361         REFGUID guidKey,
   2362         const UINT8 *pBuf,
   2363         UINT32 cbBufSize);
   2364 
   2365     HRESULT (STDMETHODCALLTYPE *SetUnknown)(
   2366         IMFASFStreamConfig *This,
   2367         REFGUID guidKey,
   2368         IUnknown *pUnknown);
   2369 
   2370     HRESULT (STDMETHODCALLTYPE *LockStore)(
   2371         IMFASFStreamConfig *This);
   2372 
   2373     HRESULT (STDMETHODCALLTYPE *UnlockStore)(
   2374         IMFASFStreamConfig *This);
   2375 
   2376     HRESULT (STDMETHODCALLTYPE *GetCount)(
   2377         IMFASFStreamConfig *This,
   2378         UINT32 *pcItems);
   2379 
   2380     HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
   2381         IMFASFStreamConfig *This,
   2382         UINT32 unIndex,
   2383         GUID *pguidKey,
   2384         PROPVARIANT *pValue);
   2385 
   2386     HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
   2387         IMFASFStreamConfig *This,
   2388         IMFAttributes *pDest);
   2389 
   2390     /*** IMFASFStreamConfig methods ***/
   2391     HRESULT (STDMETHODCALLTYPE *GetStreamType)(
   2392         IMFASFStreamConfig *This,
   2393         GUID *pguidStreamType);
   2394 
   2395     WORD (STDMETHODCALLTYPE *GetStreamNumber)(
   2396         IMFASFStreamConfig *This);
   2397 
   2398     HRESULT (STDMETHODCALLTYPE *SetStreamNumber)(
   2399         IMFASFStreamConfig *This,
   2400         WORD wStreamNum);
   2401 
   2402     HRESULT (STDMETHODCALLTYPE *GetMediaType)(
   2403         IMFASFStreamConfig *This,
   2404         IMFMediaType **ppIMediaType);
   2405 
   2406     HRESULT (STDMETHODCALLTYPE *SetMediaType)(
   2407         IMFASFStreamConfig *This,
   2408         IMFMediaType *pIMediaType);
   2409 
   2410     HRESULT (STDMETHODCALLTYPE *GetPayloadExtensionCount)(
   2411         IMFASFStreamConfig *This,
   2412         WORD *pcPayloadExtensions);
   2413 
   2414     HRESULT (STDMETHODCALLTYPE *GetPayloadExtension)(
   2415         IMFASFStreamConfig *This,
   2416         WORD wPayloadExtensionNumber,
   2417         GUID *pguidExtensionSystemID,
   2418         WORD *pcbExtensionDataSize,
   2419         BYTE *pbExtensionSystemInfo,
   2420         DWORD *pcbExtensionSystemInfo);
   2421 
   2422     HRESULT (STDMETHODCALLTYPE *AddPayloadExtension)(
   2423         IMFASFStreamConfig *This,
   2424         GUID guidExtensionSystemID,
   2425         WORD cbExtensionDataSize,
   2426         BYTE *pbExtensionSystemInfo,
   2427         DWORD cbExtensionSystemInfo);
   2428 
   2429     HRESULT (STDMETHODCALLTYPE *RemoveAllPayloadExtensions)(
   2430         IMFASFStreamConfig *This);
   2431 
   2432     HRESULT (STDMETHODCALLTYPE *Clone)(
   2433         IMFASFStreamConfig *This,
   2434         IMFASFStreamConfig **ppIStreamConfig);
   2435 
   2436     END_INTERFACE
   2437 } IMFASFStreamConfigVtbl;
   2438 
   2439 interface IMFASFStreamConfig {
   2440     CONST_VTBL IMFASFStreamConfigVtbl* lpVtbl;
   2441 };
   2442 
   2443 #ifdef COBJMACROS
   2444 #ifndef WIDL_C_INLINE_WRAPPERS
   2445 /*** IUnknown methods ***/
   2446 #define IMFASFStreamConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2447 #define IMFASFStreamConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
   2448 #define IMFASFStreamConfig_Release(This) (This)->lpVtbl->Release(This)
   2449 /*** IMFAttributes methods ***/
   2450 #define IMFASFStreamConfig_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
   2451 #define IMFASFStreamConfig_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
   2452 #define IMFASFStreamConfig_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
   2453 #define IMFASFStreamConfig_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
   2454 #define IMFASFStreamConfig_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
   2455 #define IMFASFStreamConfig_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
   2456 #define IMFASFStreamConfig_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
   2457 #define IMFASFStreamConfig_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
   2458 #define IMFASFStreamConfig_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
   2459 #define IMFASFStreamConfig_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
   2460 #define IMFASFStreamConfig_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
   2461 #define IMFASFStreamConfig_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
   2462 #define IMFASFStreamConfig_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
   2463 #define IMFASFStreamConfig_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
   2464 #define IMFASFStreamConfig_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
   2465 #define IMFASFStreamConfig_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
   2466 #define IMFASFStreamConfig_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
   2467 #define IMFASFStreamConfig_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
   2468 #define IMFASFStreamConfig_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
   2469 #define IMFASFStreamConfig_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
   2470 #define IMFASFStreamConfig_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
   2471 #define IMFASFStreamConfig_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
   2472 #define IMFASFStreamConfig_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
   2473 #define IMFASFStreamConfig_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
   2474 #define IMFASFStreamConfig_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
   2475 #define IMFASFStreamConfig_LockStore(This) (This)->lpVtbl->LockStore(This)
   2476 #define IMFASFStreamConfig_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
   2477 #define IMFASFStreamConfig_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
   2478 #define IMFASFStreamConfig_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
   2479 #define IMFASFStreamConfig_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
   2480 /*** IMFASFStreamConfig methods ***/
   2481 #define IMFASFStreamConfig_GetStreamType(This,pguidStreamType) (This)->lpVtbl->GetStreamType(This,pguidStreamType)
   2482 #define IMFASFStreamConfig_GetStreamNumber(This) (This)->lpVtbl->GetStreamNumber(This)
   2483 #define IMFASFStreamConfig_SetStreamNumber(This,wStreamNum) (This)->lpVtbl->SetStreamNumber(This,wStreamNum)
   2484 #define IMFASFStreamConfig_GetMediaType(This,ppIMediaType) (This)->lpVtbl->GetMediaType(This,ppIMediaType)
   2485 #define IMFASFStreamConfig_SetMediaType(This,pIMediaType) (This)->lpVtbl->SetMediaType(This,pIMediaType)
   2486 #define IMFASFStreamConfig_GetPayloadExtensionCount(This,pcPayloadExtensions) (This)->lpVtbl->GetPayloadExtensionCount(This,pcPayloadExtensions)
   2487 #define IMFASFStreamConfig_GetPayloadExtension(This,wPayloadExtensionNumber,pguidExtensionSystemID,pcbExtensionDataSize,pbExtensionSystemInfo,pcbExtensionSystemInfo) (This)->lpVtbl->GetPayloadExtension(This,wPayloadExtensionNumber,pguidExtensionSystemID,pcbExtensionDataSize,pbExtensionSystemInfo,pcbExtensionSystemInfo)
   2488 #define IMFASFStreamConfig_AddPayloadExtension(This,guidExtensionSystemID,cbExtensionDataSize,pbExtensionSystemInfo,cbExtensionSystemInfo) (This)->lpVtbl->AddPayloadExtension(This,guidExtensionSystemID,cbExtensionDataSize,pbExtensionSystemInfo,cbExtensionSystemInfo)
   2489 #define IMFASFStreamConfig_RemoveAllPayloadExtensions(This) (This)->lpVtbl->RemoveAllPayloadExtensions(This)
   2490 #define IMFASFStreamConfig_Clone(This,ppIStreamConfig) (This)->lpVtbl->Clone(This,ppIStreamConfig)
   2491 #else
   2492 /*** IUnknown methods ***/
   2493 static inline HRESULT IMFASFStreamConfig_QueryInterface(IMFASFStreamConfig* This,REFIID riid,void **ppvObject) {
   2494     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2495 }
   2496 static inline ULONG IMFASFStreamConfig_AddRef(IMFASFStreamConfig* This) {
   2497     return This->lpVtbl->AddRef(This);
   2498 }
   2499 static inline ULONG IMFASFStreamConfig_Release(IMFASFStreamConfig* This) {
   2500     return This->lpVtbl->Release(This);
   2501 }
   2502 /*** IMFAttributes methods ***/
   2503 static inline HRESULT IMFASFStreamConfig_GetItem(IMFASFStreamConfig* This,REFGUID guidKey,PROPVARIANT *pValue) {
   2504     return This->lpVtbl->GetItem(This,guidKey,pValue);
   2505 }
   2506 static inline HRESULT IMFASFStreamConfig_GetItemType(IMFASFStreamConfig* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
   2507     return This->lpVtbl->GetItemType(This,guidKey,pType);
   2508 }
   2509 static inline HRESULT IMFASFStreamConfig_CompareItem(IMFASFStreamConfig* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
   2510     return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
   2511 }
   2512 static inline HRESULT IMFASFStreamConfig_Compare(IMFASFStreamConfig* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
   2513     return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
   2514 }
   2515 static inline HRESULT IMFASFStreamConfig_GetUINT32(IMFASFStreamConfig* This,REFGUID guidKey,UINT32 *punValue) {
   2516     return This->lpVtbl->GetUINT32(This,guidKey,punValue);
   2517 }
   2518 static inline HRESULT IMFASFStreamConfig_GetUINT64(IMFASFStreamConfig* This,REFGUID guidKey,UINT64 *punValue) {
   2519     return This->lpVtbl->GetUINT64(This,guidKey,punValue);
   2520 }
   2521 static inline HRESULT IMFASFStreamConfig_GetDouble(IMFASFStreamConfig* This,REFGUID guidKey,double *pfValue) {
   2522     return This->lpVtbl->GetDouble(This,guidKey,pfValue);
   2523 }
   2524 static inline HRESULT IMFASFStreamConfig_GetGUID(IMFASFStreamConfig* This,REFGUID guidKey,GUID *pguidValue) {
   2525     return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
   2526 }
   2527 static inline HRESULT IMFASFStreamConfig_GetStringLength(IMFASFStreamConfig* This,REFGUID guidKey,UINT32 *pcchLength) {
   2528     return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
   2529 }
   2530 static inline HRESULT IMFASFStreamConfig_GetString(IMFASFStreamConfig* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
   2531     return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
   2532 }
   2533 static inline HRESULT IMFASFStreamConfig_GetAllocatedString(IMFASFStreamConfig* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
   2534     return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
   2535 }
   2536 static inline HRESULT IMFASFStreamConfig_GetBlobSize(IMFASFStreamConfig* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
   2537     return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
   2538 }
   2539 static inline HRESULT IMFASFStreamConfig_GetBlob(IMFASFStreamConfig* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
   2540     return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
   2541 }
   2542 static inline HRESULT IMFASFStreamConfig_GetAllocatedBlob(IMFASFStreamConfig* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
   2543     return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
   2544 }
   2545 static inline HRESULT IMFASFStreamConfig_GetUnknown(IMFASFStreamConfig* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
   2546     return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
   2547 }
   2548 static inline HRESULT IMFASFStreamConfig_SetItem(IMFASFStreamConfig* This,REFGUID guidKey,REFPROPVARIANT Value) {
   2549     return This->lpVtbl->SetItem(This,guidKey,Value);
   2550 }
   2551 static inline HRESULT IMFASFStreamConfig_DeleteItem(IMFASFStreamConfig* This,REFGUID guidKey) {
   2552     return This->lpVtbl->DeleteItem(This,guidKey);
   2553 }
   2554 static inline HRESULT IMFASFStreamConfig_DeleteAllItems(IMFASFStreamConfig* This) {
   2555     return This->lpVtbl->DeleteAllItems(This);
   2556 }
   2557 static inline HRESULT IMFASFStreamConfig_SetUINT32(IMFASFStreamConfig* This,REFGUID guidKey,UINT32 unValue) {
   2558     return This->lpVtbl->SetUINT32(This,guidKey,unValue);
   2559 }
   2560 static inline HRESULT IMFASFStreamConfig_SetUINT64(IMFASFStreamConfig* This,REFGUID guidKey,UINT64 unValue) {
   2561     return This->lpVtbl->SetUINT64(This,guidKey,unValue);
   2562 }
   2563 static inline HRESULT IMFASFStreamConfig_SetDouble(IMFASFStreamConfig* This,REFGUID guidKey,double fValue) {
   2564     return This->lpVtbl->SetDouble(This,guidKey,fValue);
   2565 }
   2566 static inline HRESULT IMFASFStreamConfig_SetGUID(IMFASFStreamConfig* This,REFGUID guidKey,REFGUID guidValue) {
   2567     return This->lpVtbl->SetGUID(This,guidKey,guidValue);
   2568 }
   2569 static inline HRESULT IMFASFStreamConfig_SetString(IMFASFStreamConfig* This,REFGUID guidKey,LPCWSTR wszValue) {
   2570     return This->lpVtbl->SetString(This,guidKey,wszValue);
   2571 }
   2572 static inline HRESULT IMFASFStreamConfig_SetBlob(IMFASFStreamConfig* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
   2573     return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
   2574 }
   2575 static inline HRESULT IMFASFStreamConfig_SetUnknown(IMFASFStreamConfig* This,REFGUID guidKey,IUnknown *pUnknown) {
   2576     return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
   2577 }
   2578 static inline HRESULT IMFASFStreamConfig_LockStore(IMFASFStreamConfig* This) {
   2579     return This->lpVtbl->LockStore(This);
   2580 }
   2581 static inline HRESULT IMFASFStreamConfig_UnlockStore(IMFASFStreamConfig* This) {
   2582     return This->lpVtbl->UnlockStore(This);
   2583 }
   2584 static inline HRESULT IMFASFStreamConfig_GetCount(IMFASFStreamConfig* This,UINT32 *pcItems) {
   2585     return This->lpVtbl->GetCount(This,pcItems);
   2586 }
   2587 static inline HRESULT IMFASFStreamConfig_GetItemByIndex(IMFASFStreamConfig* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
   2588     return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
   2589 }
   2590 static inline HRESULT IMFASFStreamConfig_CopyAllItems(IMFASFStreamConfig* This,IMFAttributes *pDest) {
   2591     return This->lpVtbl->CopyAllItems(This,pDest);
   2592 }
   2593 /*** IMFASFStreamConfig methods ***/
   2594 static inline HRESULT IMFASFStreamConfig_GetStreamType(IMFASFStreamConfig* This,GUID *pguidStreamType) {
   2595     return This->lpVtbl->GetStreamType(This,pguidStreamType);
   2596 }
   2597 static inline WORD IMFASFStreamConfig_GetStreamNumber(IMFASFStreamConfig* This) {
   2598     return This->lpVtbl->GetStreamNumber(This);
   2599 }
   2600 static inline HRESULT IMFASFStreamConfig_SetStreamNumber(IMFASFStreamConfig* This,WORD wStreamNum) {
   2601     return This->lpVtbl->SetStreamNumber(This,wStreamNum);
   2602 }
   2603 static inline HRESULT IMFASFStreamConfig_GetMediaType(IMFASFStreamConfig* This,IMFMediaType **ppIMediaType) {
   2604     return This->lpVtbl->GetMediaType(This,ppIMediaType);
   2605 }
   2606 static inline HRESULT IMFASFStreamConfig_SetMediaType(IMFASFStreamConfig* This,IMFMediaType *pIMediaType) {
   2607     return This->lpVtbl->SetMediaType(This,pIMediaType);
   2608 }
   2609 static inline HRESULT IMFASFStreamConfig_GetPayloadExtensionCount(IMFASFStreamConfig* This,WORD *pcPayloadExtensions) {
   2610     return This->lpVtbl->GetPayloadExtensionCount(This,pcPayloadExtensions);
   2611 }
   2612 static inline HRESULT IMFASFStreamConfig_GetPayloadExtension(IMFASFStreamConfig* This,WORD wPayloadExtensionNumber,GUID *pguidExtensionSystemID,WORD *pcbExtensionDataSize,BYTE *pbExtensionSystemInfo,DWORD *pcbExtensionSystemInfo) {
   2613     return This->lpVtbl->GetPayloadExtension(This,wPayloadExtensionNumber,pguidExtensionSystemID,pcbExtensionDataSize,pbExtensionSystemInfo,pcbExtensionSystemInfo);
   2614 }
   2615 static inline HRESULT IMFASFStreamConfig_AddPayloadExtension(IMFASFStreamConfig* This,GUID guidExtensionSystemID,WORD cbExtensionDataSize,BYTE *pbExtensionSystemInfo,DWORD cbExtensionSystemInfo) {
   2616     return This->lpVtbl->AddPayloadExtension(This,guidExtensionSystemID,cbExtensionDataSize,pbExtensionSystemInfo,cbExtensionSystemInfo);
   2617 }
   2618 static inline HRESULT IMFASFStreamConfig_RemoveAllPayloadExtensions(IMFASFStreamConfig* This) {
   2619     return This->lpVtbl->RemoveAllPayloadExtensions(This);
   2620 }
   2621 static inline HRESULT IMFASFStreamConfig_Clone(IMFASFStreamConfig* This,IMFASFStreamConfig **ppIStreamConfig) {
   2622     return This->lpVtbl->Clone(This,ppIStreamConfig);
   2623 }
   2624 #endif
   2625 #endif
   2626 
   2627 #endif
   2628 
   2629 
   2630 #endif  /* __IMFASFStreamConfig_INTERFACE_DEFINED__ */
   2631 
   2632 
   2633 EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_ASFMEDIASINK_BASE_SENDTIME = { { 0xcddcbc82, 0x3411, 0x4119, 0x91, 0x35, 0x84, 0x23, 0xc4, 0x1b, 0x39, 0x57}, 3  };
   2634 EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE = { { 0xcddcbc82, 0x3411, 0x4119, 0x91, 0x35, 0x84, 0x23, 0xc4, 0x1b, 0x39, 0x57}, 4  };
   2635 EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_ASFMEDIASINK_DRMACTION = { { 0xa1db6f6c, 0x1d0a, 0x4cb6, 0x82, 0x54, 0xcb, 0x36, 0xbe, 0xed, 0xbc, 0x48}, 5  };
   2636 EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET = { { 0xa2f152fb, 0x8ad9, 0x4a11, 0xb3, 0x45, 0x2c, 0xe2, 0xfa, 0xd8, 0x72, 0x3d}, 1  };
   2637 
   2638 STDAPI MFCreateASFContentInfo(IMFASFContentInfo **ppIContentInfo);
   2639 STDAPI MFCreateASFIndexer(IMFASFIndexer **ppIIndexer);
   2640 STDAPI MFCreateASFIndexerByteStream(IMFByteStream *pIContentByteStream, QWORD cbIndexStartOffset, IMFByteStream **pIIndexByteStream);
   2641 STDAPI MFCreateASFMediaSink(IMFByteStream *pIByteStream, IMFMediaSink **ppIMediaSink);
   2642 STDAPI MFCreateASFMediaSinkActivate(LPCWSTR pwszFileName, IMFASFContentInfo *pContentInfo, IMFActivate **ppIActivate);
   2643 STDAPI MFCreateASFMultiplexer(IMFASFMultiplexer **ppIMultiplexer);
   2644 STDAPI MFCreateASFProfile(IMFASFProfile **ppIProfile);
   2645 STDAPI MFCreateASFProfileFromPresentationDescriptor(IMFPresentationDescriptor  *pIPD, IMFASFProfile **ppIProfile);
   2646 STDAPI MFCreateASFSplitter(IMFASFSplitter **ppISplitter);
   2647 STDAPI MFCreateASFStreamingMediaSink(IMFByteStream *pIByteStream, IMFMediaSink **ppIMediaSink);
   2648 STDAPI MFCreateASFStreamingMediaSinkActivate(IMFActivate *pByteStreamActivate, IMFASFContentInfo *pContentInfo, IMFActivate **ppIActivate);
   2649 STDAPI MFCreateASFStreamSelector(IMFASFProfile *pIASFProfile, IMFASFStreamSelector **ppSelector);
   2650 STDAPI MFCreatePresentationDescriptorFromASFProfile(IMFASFProfile *pIProfile, IMFPresentationDescriptor **ppIPD);
   2651 HRESULT STDMETHODCALLTYPE MFCreateWMVEncoderActivate(IMFMediaType *pMediaType, IPropertyStore *pEncodingConfigurationProperties, IMFActivate **ppActivate);
   2652 HRESULT STDMETHODCALLTYPE MFCreateWMAEncoderActivate(IMFMediaType *pMediaType, IPropertyStore *pEncodingConfigurationProperties, IMFActivate **ppActivate);
   2653 #endif
   2654 /* Begin additional prototypes for all interfaces */
   2655 
   2656 ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
   2657 unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
   2658 unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
   2659 void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
   2660 
   2661 /* End additional prototypes */
   2662 
   2663 #ifdef __cplusplus
   2664 }
   2665 #endif
   2666 
   2667 #endif /* __wmcontainer_h__ */