master
   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__
  23typedef interface IMFASFContentInfo IMFASFContentInfo;
  24#ifdef __cplusplus
  25interface IMFASFContentInfo;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IMFASFMutualExclusion_FWD_DEFINED__
  30#define __IMFASFMutualExclusion_FWD_DEFINED__
  31typedef interface IMFASFMutualExclusion IMFASFMutualExclusion;
  32#ifdef __cplusplus
  33interface IMFASFMutualExclusion;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IMFASFStreamPrioritization_FWD_DEFINED__
  38#define __IMFASFStreamPrioritization_FWD_DEFINED__
  39typedef interface IMFASFStreamPrioritization IMFASFStreamPrioritization;
  40#ifdef __cplusplus
  41interface IMFASFStreamPrioritization;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IMFASFSplitter_FWD_DEFINED__
  46#define __IMFASFSplitter_FWD_DEFINED__
  47typedef interface IMFASFSplitter IMFASFSplitter;
  48#ifdef __cplusplus
  49interface IMFASFSplitter;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IMFASFMultiplexer_FWD_DEFINED__
  54#define __IMFASFMultiplexer_FWD_DEFINED__
  55typedef interface IMFASFMultiplexer IMFASFMultiplexer;
  56#ifdef __cplusplus
  57interface IMFASFMultiplexer;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IMFASFIndexer_FWD_DEFINED__
  62#define __IMFASFIndexer_FWD_DEFINED__
  63typedef interface IMFASFIndexer IMFASFIndexer;
  64#ifdef __cplusplus
  65interface IMFASFIndexer;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IMFASFStreamSelector_FWD_DEFINED__
  70#define __IMFASFStreamSelector_FWD_DEFINED__
  71typedef interface IMFASFStreamSelector IMFASFStreamSelector;
  72#ifdef __cplusplus
  73interface IMFASFStreamSelector;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IMFDRMNetHelper_FWD_DEFINED__
  78#define __IMFDRMNetHelper_FWD_DEFINED__
  79typedef interface IMFDRMNetHelper IMFDRMNetHelper;
  80#ifdef __cplusplus
  81interface IMFDRMNetHelper;
  82#endif /* __cplusplus */
  83#endif
  84
  85#ifndef __IMFASFProfile_FWD_DEFINED__
  86#define __IMFASFProfile_FWD_DEFINED__
  87typedef interface IMFASFProfile IMFASFProfile;
  88#ifdef __cplusplus
  89interface IMFASFProfile;
  90#endif /* __cplusplus */
  91#endif
  92
  93#ifndef __IMFASFStreamConfig_FWD_DEFINED__
  94#define __IMFASFStreamConfig_FWD_DEFINED__
  95typedef interface IMFASFStreamConfig IMFASFStreamConfig;
  96#ifdef __cplusplus
  97interface IMFASFStreamConfig;
  98#endif /* __cplusplus */
  99#endif
 100
 101/* Headers for imported files */
 102
 103#include <mfidl.h>
 104
 105#ifdef __cplusplus
 106extern "C" {
 107#endif
 108
 109#include <winapifamily.h>
 110
 111#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 112
 113EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_FILE_ID, 0x3de649b4, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
 114EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_CREATION_TIME, 0x3de649b6, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
 115EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_FLAGS, 0x3de649bb, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
 116EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_MAX_PACKET_SIZE, 0x3de649bd, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
 117EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_MAX_BITRATE, 0x3de649be, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
 118EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_MIN_PACKET_SIZE, 0x3de649bc, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
 119EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_PACKETS, 0x3de649b7, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
 120EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_PLAY_DURATION, 0x3de649b8, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
 121EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_PREROLL, 0x3de649ba, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
 122EXTERN_GUID(MF_PD_ASF_FILEPROPERTIES_SEND_DURATION, 0x3de649b9, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
 123EXTERN_GUID(CLSID_WMDRMSystemID, 0x8948BB22, 0x11BD, 0x4796, 0x93, 0xE3, 0x97, 0x4D, 0x1B, 0x57, 0x56, 0x78);
 124EXTERN_GUID(MF_PD_ASF_CONTENTENCRYPTION_KEYID, 0x8520fe3e, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
 125EXTERN_GUID(MF_PD_ASF_CONTENTENCRYPTION_LICENSE_URL, 0x8520fe40, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
 126EXTERN_GUID(MF_PD_ASF_CONTENTENCRYPTION_SECRET_DATA, 0x8520fe3f, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
 127EXTERN_GUID(MF_PD_ASF_CONTENTENCRYPTION_TYPE, 0x8520fe3d, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
 128EXTERN_GUID(MF_PD_ASF_CONTENTENCRYPTIONEX_ENCRYPTION_DATA, 0x62508be5, 0xecdf, 0x4924, 0xa3, 0x59, 0x72, 0xba, 0xb3, 0x39, 0x7b, 0x9d);
 129EXTERN_GUID(MF_PD_ASF_LANGLIST, 0xf23de43c, 0x9977, 0x460d, 0xa6, 0xec, 0x32, 0x93, 0x7f, 0x16, 0xf, 0x7d);
 130EXTERN_GUID(MF_PD_ASF_MARKER, 0x5134330e, 0x83a6, 0x475e, 0xa9, 0xd5, 0x4f, 0xb8, 0x75, 0xfb, 0x2e, 0x31);
 131EXTERN_GUID(MF_PD_ASF_SCRIPT, 0xe29cd0d7, 0xd602, 0x4923, 0xa7, 0xfe, 0x73, 0xfd, 0x97, 0xec, 0xc6, 0x50);
 132EXTERN_GUID(MF_PD_ASF_CODECLIST, 0xe4bb3509, 0xc18d, 0x4df1, 0xbb, 0x99, 0x7a, 0x36, 0xb3, 0xcc, 0x41, 0x19);
 133EXTERN_GUID(MF_PD_ASF_METADATA_IS_VBR, 0x5fc6947a, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
 134EXTERN_GUID(MF_PD_ASF_METADATA_V8_VBRPEAK, 0x5fc6947b, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
 135EXTERN_GUID(MF_PD_ASF_METADATA_V8_BUFFERAVERAGE, 0x5fc6947c, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
 136EXTERN_GUID(MF_PD_ASF_METADATA_LEAKY_BUCKET_PAIRS, 0x5fc6947d, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
 137EXTERN_GUID(MF_PD_ASF_DATA_START_OFFSET, 0xe7d5b3e7, 0x1f29, 0x45d3, 0x88, 0x22, 0x3e, 0x78, 0xfa, 0xe2, 0x72, 0xed);
 138EXTERN_GUID(MF_PD_ASF_DATA_LENGTH, 0xe7d5b3e8, 0x1f29, 0x45d3, 0x88, 0x22, 0x3e, 0x78, 0xfa, 0xe2, 0x72, 0xed);
 139EXTERN_GUID(MF_SD_ASF_EXTSTRMPROP_LANGUAGE_ID_INDEX, 0x48f8a522, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
 140EXTERN_GUID(MF_SD_ASF_EXTSTRMPROP_AVG_DATA_BITRATE, 0x48f8a523, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
 141EXTERN_GUID(MF_SD_ASF_EXTSTRMPROP_AVG_BUFFERSIZE, 0x48f8a524, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
 142EXTERN_GUID(MF_SD_ASF_EXTSTRMPROP_MAX_DATA_BITRATE, 0x48f8a525, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
 143EXTERN_GUID(MF_SD_ASF_EXTSTRMPROP_MAX_BUFFERSIZE, 0x48f8a526, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
 144EXTERN_GUID(MF_SD_ASF_STREAMBITRATES_BITRATE, 0xa8e182ed, 0xafc8, 0x43d0, 0xb0, 0xd1, 0xf6, 0x5b, 0xad, 0x9d, 0xa5, 0x58);
 145EXTERN_GUID(MF_SD_ASF_METADATA_DEVICE_CONFORMANCE_TEMPLATE, 0x245e929d, 0xc44e, 0x4f7e, 0xbb, 0x3c, 0x77, 0xd4, 0xdf, 0xd2, 0x7f, 0x8a);
 146EXTERN_GUID(MF_PD_ASF_INFO_HAS_AUDIO, 0x80e62295, 0x2296, 0x4a44, 0xb3, 0x1c, 0xd1, 0x3, 0xc6, 0xfe, 0xd2, 0x3c);
 147EXTERN_GUID(MF_PD_ASF_INFO_HAS_VIDEO, 0x80e62296, 0x2296, 0x4a44, 0xb3, 0x1c, 0xd1, 0x3, 0xc6, 0xfe, 0xd2, 0x3c);
 148EXTERN_GUID(MF_PD_ASF_INFO_HAS_NON_AUDIO_VIDEO, 0x80e62297, 0x2296, 0x4a44, 0xb3, 0x1c, 0xd1, 0x3, 0xc6, 0xfe, 0xd2, 0x3c);
 149#if WINVER >= 0x0601
 150EXTERN_GUID(MFASFINDEXER_TYPE_TIMECODE, 0x49815231, 0x6bad, 0x44fd, 0x81, 0xa, 0x3f, 0x60, 0x98, 0x4e, 0xc7, 0xfd);
 151EXTERN_GUID(MF_PD_ASF_LANGLIST_LEGACYORDER, 0xf23de43d, 0x9977, 0x460d, 0xa6, 0xec, 0x32, 0x93, 0x7f, 0x16, 0xf, 0x7d);
 152#endif
 153
 154EXTERN_GUID(MFASFMutexType_Bitrate, 0x72178C2C, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
 155EXTERN_GUID(MFASFMutexType_Language, 0x72178C2B, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
 156EXTERN_GUID(MFASFMutexType_Presentation, 0x72178C2D, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
 157EXTERN_GUID(MFASFMutexType_Unknown, 0x72178C2E, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
 158EXTERN_GUID(MFASFSampleExtension_ContentType, 0xd590dc20, 0x07bc, 0x436c, 0x9c, 0xf7, 0xf3, 0xbb, 0xfb, 0xf1, 0xa4, 0xdc);
 159EXTERN_GUID(MFASFSampleExtension_Encryption_SampleID, 0x6698B84E, 0x0AFA, 0x4330, 0xAE, 0xB2, 0x1C, 0x0A, 0x98, 0xD7, 0xA4, 0x4D);
 160EXTERN_GUID(MFASFSampleExtension_Encryption_KeyID, 0x76376591,  0x795f,  0x4da1, 0x86, 0xed, 0x9d, 0x46, 0xec, 0xa1, 0x09, 0xa9);
 161EXTERN_GUID(MFASFSampleExtension_FileName, 0xe165ec0e, 0x19ed, 0x45d7, 0xb4, 0xa7, 0x25, 0xcb, 0xd1, 0xe2, 0x8e, 0x9b);
 162EXTERN_GUID(MFASFSampleExtension_OutputCleanPoint, 0xf72a3c6f, 0x6eb4, 0x4ebc, 0xb1, 0x92, 0x9, 0xad, 0x97, 0x59, 0xe8, 0x28);
 163EXTERN_GUID(MFASFSampleExtension_PixelAspectRatio, 0x1b1ee554, 0xf9ea, 0x4bc8, 0x82, 0x1a, 0x37, 0x6b, 0x74, 0xe4, 0xc4, 0xb8);
 164EXTERN_GUID(MFASFSampleExtension_SampleDuration, 0xc6bd9450, 0x867f, 0x4907, 0x83, 0xa3, 0xc7, 0x79, 0x21, 0xb7, 0x33, 0xad);
 165EXTERN_GUID(MFASFSampleExtension_SMPTE, 0x399595ec, 0x8667, 0x4e2d, 0x8f, 0xdb, 0x98, 0x81, 0x4c, 0xe7, 0x6c, 0x1e);
 166EXTERN_GUID(MFASFSPLITTER_PACKET_BOUNDARY, 0xfe584a05, 0xe8d6, 0x42e3, 0xb1, 0x76, 0xf1, 0x21, 0x17, 0x5, 0xfb, 0x6f);
 167EXTERN_GUID(MF_ASFPROFILE_MINPACKETSIZE, 0x22587626, 0x47de, 0x4168, 0x87, 0xf5, 0xb5, 0xaa, 0x9b, 0x12, 0xa8, 0xf0);
 168EXTERN_GUID(MF_ASFPROFILE_MAXPACKETSIZE, 0x22587627, 0x47de, 0x4168, 0x87, 0xf5, 0xb5, 0xaa, 0x9b, 0x12, 0xa8, 0xf0);
 169EXTERN_GUID(MF_ASFSTREAMCONFIG_LEAKYBUCKET1, 0xc69b5901, 0xea1a, 0x4c9b, 0xb6, 0x92, 0xe2, 0xa0, 0xd2, 0x9a, 0x8a, 0xdd);
 170EXTERN_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__
 173typedef interface IMFASFProfile IMFASFProfile;
 174#ifdef __cplusplus
 175interface IMFASFProfile;
 176#endif /* __cplusplus */
 177#endif
 178
 179#ifndef __IMFASFStreamConfig_FWD_DEFINED__
 180#define __IMFASFStreamConfig_FWD_DEFINED__
 181typedef interface IMFASFStreamConfig IMFASFStreamConfig;
 182#ifdef __cplusplus
 183interface IMFASFStreamConfig;
 184#endif /* __cplusplus */
 185#endif
 186
 187#ifndef __IMFASFMutualExclusion_FWD_DEFINED__
 188#define __IMFASFMutualExclusion_FWD_DEFINED__
 189typedef interface IMFASFMutualExclusion IMFASFMutualExclusion;
 190#ifdef __cplusplus
 191interface IMFASFMutualExclusion;
 192#endif /* __cplusplus */
 193#endif
 194
 195#ifndef __IMFASFStreamPrioritization_FWD_DEFINED__
 196#define __IMFASFStreamPrioritization_FWD_DEFINED__
 197typedef interface IMFASFStreamPrioritization IMFASFStreamPrioritization;
 198#ifdef __cplusplus
 199interface 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
 216typedef enum MFASF_SPLITTERFLAGS {
 217    MFASF_SPLITTER_REVERSE = 0x1,
 218    MFASF_SPLITTER_WMDRM = 0x2
 219} MFASF_SPLITTERFLAGS;
 220typedef enum ASF_STATUSFLAGS {
 221    ASF_STATUSFLAGS_INCOMPLETE = 0x1
 222} ASF_STATUSFLAGS;
 223typedef enum MFASF_MULTIPLEXERFLAGS {
 224    MFASF_MULTIPLEXER_AUTOADJUST_BITRATE = 0x1
 225} MFASF_MULTIPLEXERFLAGS;
 226typedef 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;
 231typedef enum MFASF_STREAMSELECTORFLAGS {
 232    MFASF_STREAMSELECTOR_DISABLE_THINNING = 0x1,
 233    MFASF_STREAMSELECTOR_USE_AVERAGE_BITRATE = 0x2
 234} MFASF_STREAMSELECTOR_FLAGS;
 235typedef enum ASF_SELECTION_STATUS {
 236    ASF_STATUS_NOTSELECTED = 0,
 237    ASF_STATUS_CLEANPOINTSONLY = 1,
 238    ASF_STATUS_ALLDATAUNITS = 2
 239} ASF_SELECTION_STATUS;
 240typedef 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
 248typedef struct ASF_MUX_STATISTICS {
 249    DWORD cFramesWritten;
 250    DWORD cFramesDropped;
 251} ASF_MUX_STATISTICS;
 252typedef struct _ASF_INDEX_IDENTIFIER {
 253    GUID guidIndexType;
 254    WORD wStreamNumber;
 255} ASF_INDEX_IDENTIFIER;
 256typedef 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
 269DEFINE_GUID(IID_IMFASFContentInfo, 0xb1dca5cd, 0xd5da, 0x4451, 0x8e,0x9e, 0xdb,0x5c,0x59,0x91,0x4e,0xad);
 270#if defined(__cplusplus) && !defined(CINTERFACE)
 271MIDL_INTERFACE("b1dca5cd-d5da-4451-8e9e-db5c59914ead")
 272IMFASFContentInfo : 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
 304typedef 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
 355interface 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 ***/
 375static inline HRESULT IMFASFContentInfo_QueryInterface(IMFASFContentInfo* This,REFIID riid,void **ppvObject) {
 376    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 377}
 378static inline ULONG IMFASFContentInfo_AddRef(IMFASFContentInfo* This) {
 379    return This->lpVtbl->AddRef(This);
 380}
 381static inline ULONG IMFASFContentInfo_Release(IMFASFContentInfo* This) {
 382    return This->lpVtbl->Release(This);
 383}
 384/*** IMFASFContentInfo methods ***/
 385static inline HRESULT IMFASFContentInfo_GetHeaderSize(IMFASFContentInfo* This,IMFMediaBuffer *pIStartOfContent,QWORD *cbHeaderSize) {
 386    return This->lpVtbl->GetHeaderSize(This,pIStartOfContent,cbHeaderSize);
 387}
 388static inline HRESULT IMFASFContentInfo_ParseHeader(IMFASFContentInfo* This,IMFMediaBuffer *pIHeaderBuffer,QWORD cbOffsetWithinHeader) {
 389    return This->lpVtbl->ParseHeader(This,pIHeaderBuffer,cbOffsetWithinHeader);
 390}
 391static inline HRESULT IMFASFContentInfo_GenerateHeader(IMFASFContentInfo* This,IMFMediaBuffer *pIHeader,DWORD *pcbHeader) {
 392    return This->lpVtbl->GenerateHeader(This,pIHeader,pcbHeader);
 393}
 394static inline HRESULT IMFASFContentInfo_GetProfile(IMFASFContentInfo* This,IMFASFProfile **ppIProfile) {
 395    return This->lpVtbl->GetProfile(This,ppIProfile);
 396}
 397static inline HRESULT IMFASFContentInfo_SetProfile(IMFASFContentInfo* This,IMFASFProfile *pIProfile) {
 398    return This->lpVtbl->SetProfile(This,pIProfile);
 399}
 400static inline HRESULT IMFASFContentInfo_GeneratePresentationDescriptor(IMFASFContentInfo* This,IMFPresentationDescriptor **ppIPresentationDescriptor) {
 401    return This->lpVtbl->GeneratePresentationDescriptor(This,ppIPresentationDescriptor);
 402}
 403static 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
 420DEFINE_GUID(IID_IMFASFMutualExclusion, 0x12558291, 0xe399, 0x11d5, 0xbc,0x2a, 0x00,0xb0,0xd0,0xf3,0xf4,0xab);
 421#if defined(__cplusplus) && !defined(CINTERFACE)
 422MIDL_INTERFACE("12558291-e399-11d5-bc2a-00b0d0f3f4ab")
 423IMFASFMutualExclusion : 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
 461typedef 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
 520interface 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 ***/
 542static inline HRESULT IMFASFMutualExclusion_QueryInterface(IMFASFMutualExclusion* This,REFIID riid,void **ppvObject) {
 543    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 544}
 545static inline ULONG IMFASFMutualExclusion_AddRef(IMFASFMutualExclusion* This) {
 546    return This->lpVtbl->AddRef(This);
 547}
 548static inline ULONG IMFASFMutualExclusion_Release(IMFASFMutualExclusion* This) {
 549    return This->lpVtbl->Release(This);
 550}
 551/*** IMFASFMutualExclusion methods ***/
 552static inline HRESULT IMFASFMutualExclusion_GetType(IMFASFMutualExclusion* This,GUID *pguidType) {
 553    return This->lpVtbl->GetType(This,pguidType);
 554}
 555static inline HRESULT IMFASFMutualExclusion_SetType(IMFASFMutualExclusion* This,REFGUID guidType) {
 556    return This->lpVtbl->SetType(This,guidType);
 557}
 558static inline HRESULT IMFASFMutualExclusion_GetRecordCount(IMFASFMutualExclusion* This,DWORD *pdwRecordCount) {
 559    return This->lpVtbl->GetRecordCount(This,pdwRecordCount);
 560}
 561static inline HRESULT IMFASFMutualExclusion_GetStreamsForRecord(IMFASFMutualExclusion* This,DWORD dwRecordNumber,WORD *pwStreamNumArray,DWORD *pcStreams) {
 562    return This->lpVtbl->GetStreamsForRecord(This,dwRecordNumber,pwStreamNumArray,pcStreams);
 563}
 564static inline HRESULT IMFASFMutualExclusion_AddStreamForRecord(IMFASFMutualExclusion* This,DWORD dwRecordNumber,WORD wStreamNumber) {
 565    return This->lpVtbl->AddStreamForRecord(This,dwRecordNumber,wStreamNumber);
 566}
 567static inline HRESULT IMFASFMutualExclusion_RemoveStreamFromRecord(IMFASFMutualExclusion* This,DWORD dwRecordNumber,WORD wStreamNumber) {
 568    return This->lpVtbl->RemoveStreamFromRecord(This,dwRecordNumber,wStreamNumber);
 569}
 570static inline HRESULT IMFASFMutualExclusion_RemoveRecord(IMFASFMutualExclusion* This,DWORD dwRecordNumber) {
 571    return This->lpVtbl->RemoveRecord(This,dwRecordNumber);
 572}
 573static inline HRESULT IMFASFMutualExclusion_AddRecord(IMFASFMutualExclusion* This,DWORD *pdwRecordNumber) {
 574    return This->lpVtbl->AddRecord(This,pdwRecordNumber);
 575}
 576static 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
 593DEFINE_GUID(IID_IMFASFStreamPrioritization, 0x699bdc27, 0xbbaf, 0x49ff, 0x8e,0x38, 0x9c,0x39,0xc9,0xb5,0xe0,0x88);
 594#if defined(__cplusplus) && !defined(CINTERFACE)
 595MIDL_INTERFACE("699bdc27-bbaf-49ff-8e38-9c39c9b5e088")
 596IMFASFStreamPrioritization : 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
 621typedef 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
 663interface 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 ***/
 681static inline HRESULT IMFASFStreamPrioritization_QueryInterface(IMFASFStreamPrioritization* This,REFIID riid,void **ppvObject) {
 682    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 683}
 684static inline ULONG IMFASFStreamPrioritization_AddRef(IMFASFStreamPrioritization* This) {
 685    return This->lpVtbl->AddRef(This);
 686}
 687static inline ULONG IMFASFStreamPrioritization_Release(IMFASFStreamPrioritization* This) {
 688    return This->lpVtbl->Release(This);
 689}
 690/*** IMFASFStreamPrioritization methods ***/
 691static inline HRESULT IMFASFStreamPrioritization_GetStreamCount(IMFASFStreamPrioritization* This,DWORD *pdwStreamCount) {
 692    return This->lpVtbl->GetStreamCount(This,pdwStreamCount);
 693}
 694static inline HRESULT IMFASFStreamPrioritization_GetStream(IMFASFStreamPrioritization* This,DWORD dwStreamIndex,WORD *pwStreamNumber,WORD *pwStreamFlags) {
 695    return This->lpVtbl->GetStream(This,dwStreamIndex,pwStreamNumber,pwStreamFlags);
 696}
 697static inline HRESULT IMFASFStreamPrioritization_AddStream(IMFASFStreamPrioritization* This,WORD wStreamNumber,WORD wStreamFlags) {
 698    return This->lpVtbl->AddStream(This,wStreamNumber,wStreamFlags);
 699}
 700static inline HRESULT IMFASFStreamPrioritization_RemoveStream(IMFASFStreamPrioritization* This,DWORD dwStreamIndex) {
 701    return This->lpVtbl->RemoveStream(This,dwStreamIndex);
 702}
 703static 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
 720DEFINE_GUID(IID_IMFASFSplitter, 0x12558295, 0xe399, 0x11d5, 0xbc,0x2a, 0x00,0xb0,0xd0,0xf3,0xf4,0xab);
 721#if defined(__cplusplus) && !defined(CINTERFACE)
 722MIDL_INTERFACE("12558295-e399-11d5-bc2a-00b0d0f3f4ab")
 723IMFASFSplitter : 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
 763typedef 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
 823interface 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 ***/
 845static inline HRESULT IMFASFSplitter_QueryInterface(IMFASFSplitter* This,REFIID riid,void **ppvObject) {
 846    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 847}
 848static inline ULONG IMFASFSplitter_AddRef(IMFASFSplitter* This) {
 849    return This->lpVtbl->AddRef(This);
 850}
 851static inline ULONG IMFASFSplitter_Release(IMFASFSplitter* This) {
 852    return This->lpVtbl->Release(This);
 853}
 854/*** IMFASFSplitter methods ***/
 855static inline HRESULT IMFASFSplitter_Initialize(IMFASFSplitter* This,IMFASFContentInfo *pIContentInfo) {
 856    return This->lpVtbl->Initialize(This,pIContentInfo);
 857}
 858static inline HRESULT IMFASFSplitter_SetFlags(IMFASFSplitter* This,DWORD dwFlags) {
 859    return This->lpVtbl->SetFlags(This,dwFlags);
 860}
 861static inline HRESULT IMFASFSplitter_GetFlags(IMFASFSplitter* This,DWORD *pdwFlags) {
 862    return This->lpVtbl->GetFlags(This,pdwFlags);
 863}
 864static inline HRESULT IMFASFSplitter_SelectStreams(IMFASFSplitter* This,WORD *pwStreamNumbers,WORD wNumStreams) {
 865    return This->lpVtbl->SelectStreams(This,pwStreamNumbers,wNumStreams);
 866}
 867static inline HRESULT IMFASFSplitter_GetSelectedStreams(IMFASFSplitter* This,WORD *pwStreamNumbers,WORD *pwNumStreams) {
 868    return This->lpVtbl->GetSelectedStreams(This,pwStreamNumbers,pwNumStreams);
 869}
 870static inline HRESULT IMFASFSplitter_ParseData(IMFASFSplitter* This,IMFMediaBuffer *pIBuffer,DWORD cbBufferOffset,DWORD cbLength) {
 871    return This->lpVtbl->ParseData(This,pIBuffer,cbBufferOffset,cbLength);
 872}
 873static inline HRESULT IMFASFSplitter_GetNextSample(IMFASFSplitter* This,DWORD *pdwStatusFlags,WORD *pwStreamNumber,IMFSample **ppISample) {
 874    return This->lpVtbl->GetNextSample(This,pdwStatusFlags,pwStreamNumber,ppISample);
 875}
 876static inline HRESULT IMFASFSplitter_Flush(IMFASFSplitter* This) {
 877    return This->lpVtbl->Flush(This);
 878}
 879static 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
 896DEFINE_GUID(IID_IMFASFMultiplexer, 0x57bdd80a, 0x9b38, 0x4838, 0xb7,0x37, 0xc5,0x8f,0x67,0x0d,0x7d,0x4f);
 897#if defined(__cplusplus) && !defined(CINTERFACE)
 898MIDL_INTERFACE("57bdd80a-9b38-4838-b737-c58f670d7d4f")
 899IMFASFMultiplexer : 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
 937typedef 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
 995interface 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 ***/
1017static inline HRESULT IMFASFMultiplexer_QueryInterface(IMFASFMultiplexer* This,REFIID riid,void **ppvObject) {
1018    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1019}
1020static inline ULONG IMFASFMultiplexer_AddRef(IMFASFMultiplexer* This) {
1021    return This->lpVtbl->AddRef(This);
1022}
1023static inline ULONG IMFASFMultiplexer_Release(IMFASFMultiplexer* This) {
1024    return This->lpVtbl->Release(This);
1025}
1026/*** IMFASFMultiplexer methods ***/
1027static inline HRESULT IMFASFMultiplexer_Initialize(IMFASFMultiplexer* This,IMFASFContentInfo *pIContentInfo) {
1028    return This->lpVtbl->Initialize(This,pIContentInfo);
1029}
1030static inline HRESULT IMFASFMultiplexer_SetFlags(IMFASFMultiplexer* This,DWORD dwFlags) {
1031    return This->lpVtbl->SetFlags(This,dwFlags);
1032}
1033static inline HRESULT IMFASFMultiplexer_GetFlags(IMFASFMultiplexer* This,DWORD *pdwFlags) {
1034    return This->lpVtbl->GetFlags(This,pdwFlags);
1035}
1036static inline HRESULT IMFASFMultiplexer_ProcessSample(IMFASFMultiplexer* This,WORD wStreamNumber,IMFSample *pISample,LONGLONG hnsTimestampAdjust) {
1037    return This->lpVtbl->ProcessSample(This,wStreamNumber,pISample,hnsTimestampAdjust);
1038}
1039static inline HRESULT IMFASFMultiplexer_GetNextPacket(IMFASFMultiplexer* This,DWORD *pdwStatusFlags,IMFSample **ppIPacket) {
1040    return This->lpVtbl->GetNextPacket(This,pdwStatusFlags,ppIPacket);
1041}
1042static inline HRESULT IMFASFMultiplexer_Flush(IMFASFMultiplexer* This) {
1043    return This->lpVtbl->Flush(This);
1044}
1045static inline HRESULT IMFASFMultiplexer_End(IMFASFMultiplexer* This,IMFASFContentInfo *pIContentInfo) {
1046    return This->lpVtbl->End(This,pIContentInfo);
1047}
1048static inline HRESULT IMFASFMultiplexer_GetStatistics(IMFASFMultiplexer* This,WORD wStreamNumber,ASF_MUX_STATISTICS *pMuxStats) {
1049    return This->lpVtbl->GetStatistics(This,wStreamNumber,pMuxStats);
1050}
1051static 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
1068DEFINE_GUID(IID_IMFASFIndexer, 0x53590f48, 0xdc3b, 0x4297, 0x81,0x3f, 0x78,0x77,0x61,0xad,0x7b,0x3e);
1069#if defined(__cplusplus) && !defined(CINTERFACE)
1070MIDL_INTERFACE("53590f48-dc3b-4297-813f-787761ad7b3e")
1071IMFASFIndexer : 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
1129typedef 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
1212interface 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 ***/
1238static inline HRESULT IMFASFIndexer_QueryInterface(IMFASFIndexer* This,REFIID riid,void **ppvObject) {
1239    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1240}
1241static inline ULONG IMFASFIndexer_AddRef(IMFASFIndexer* This) {
1242    return This->lpVtbl->AddRef(This);
1243}
1244static inline ULONG IMFASFIndexer_Release(IMFASFIndexer* This) {
1245    return This->lpVtbl->Release(This);
1246}
1247/*** IMFASFIndexer methods ***/
1248static inline HRESULT IMFASFIndexer_SetFlags(IMFASFIndexer* This,DWORD dwFlags) {
1249    return This->lpVtbl->SetFlags(This,dwFlags);
1250}
1251static inline HRESULT IMFASFIndexer_GetFlags(IMFASFIndexer* This,DWORD *pdwFlags) {
1252    return This->lpVtbl->GetFlags(This,pdwFlags);
1253}
1254static inline HRESULT IMFASFIndexer_Initialize(IMFASFIndexer* This,IMFASFContentInfo *pIContentInfo) {
1255    return This->lpVtbl->Initialize(This,pIContentInfo);
1256}
1257static inline HRESULT IMFASFIndexer_GetIndexPosition(IMFASFIndexer* This,IMFASFContentInfo *pIContentInfo,QWORD *pcbIndexOffset) {
1258    return This->lpVtbl->GetIndexPosition(This,pIContentInfo,pcbIndexOffset);
1259}
1260static inline HRESULT IMFASFIndexer_SetIndexByteStreams(IMFASFIndexer* This,IMFByteStream **ppIByteStreams,DWORD cByteStreams) {
1261    return This->lpVtbl->SetIndexByteStreams(This,ppIByteStreams,cByteStreams);
1262}
1263static inline HRESULT IMFASFIndexer_GetIndexByteStreamCount(IMFASFIndexer* This,DWORD *pcByteStreams) {
1264    return This->lpVtbl->GetIndexByteStreamCount(This,pcByteStreams);
1265}
1266static 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}
1269static inline HRESULT IMFASFIndexer_SetIndexStatus(IMFASFIndexer* This,BYTE *pbIndexDescriptor,DWORD cbIndexDescriptor,WINBOOL fGenerateIndex) {
1270    return This->lpVtbl->SetIndexStatus(This,pbIndexDescriptor,cbIndexDescriptor,fGenerateIndex);
1271}
1272static 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}
1275static inline HRESULT IMFASFIndexer_GenerateIndexEntries(IMFASFIndexer* This,IMFSample *pIASFPacketSample) {
1276    return This->lpVtbl->GenerateIndexEntries(This,pIASFPacketSample);
1277}
1278static inline HRESULT IMFASFIndexer_CommitIndex(IMFASFIndexer* This,IMFASFContentInfo *pIContentInfo) {
1279    return This->lpVtbl->CommitIndex(This,pIContentInfo);
1280}
1281static inline HRESULT IMFASFIndexer_GetIndexWriteSpace(IMFASFIndexer* This,QWORD *pcbIndexWriteSpace) {
1282    return This->lpVtbl->GetIndexWriteSpace(This,pcbIndexWriteSpace);
1283}
1284static 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
1301DEFINE_GUID(IID_IMFASFStreamSelector, 0xd01bad4a, 0x4fa0, 0x4a60, 0x93,0x49, 0xc2,0x7e,0x62,0xda,0x9d,0x41);
1302#if defined(__cplusplus) && !defined(CINTERFACE)
1303MIDL_INTERFACE("d01bad4a-4fa0-4a60-9349-c27e62da9d41")
1304IMFASFStreamSelector : 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
1367typedef 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
1456interface 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 ***/
1483static inline HRESULT IMFASFStreamSelector_QueryInterface(IMFASFStreamSelector* This,REFIID riid,void **ppvObject) {
1484    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1485}
1486static inline ULONG IMFASFStreamSelector_AddRef(IMFASFStreamSelector* This) {
1487    return This->lpVtbl->AddRef(This);
1488}
1489static inline ULONG IMFASFStreamSelector_Release(IMFASFStreamSelector* This) {
1490    return This->lpVtbl->Release(This);
1491}
1492/*** IMFASFStreamSelector methods ***/
1493static inline HRESULT IMFASFStreamSelector_GetStreamCount(IMFASFStreamSelector* This,DWORD *pcStreams) {
1494    return This->lpVtbl->GetStreamCount(This,pcStreams);
1495}
1496static inline HRESULT IMFASFStreamSelector_GetOutputCount(IMFASFStreamSelector* This,DWORD *pcOutputs) {
1497    return This->lpVtbl->GetOutputCount(This,pcOutputs);
1498}
1499static inline HRESULT IMFASFStreamSelector_GetOutputStreamCount(IMFASFStreamSelector* This,DWORD dwOutputNum,DWORD *pcStreams) {
1500    return This->lpVtbl->GetOutputStreamCount(This,dwOutputNum,pcStreams);
1501}
1502static inline HRESULT IMFASFStreamSelector_GetOutputStreamNumbers(IMFASFStreamSelector* This,DWORD dwOutputNum,WORD *rgwStreamNumbers) {
1503    return This->lpVtbl->GetOutputStreamNumbers(This,dwOutputNum,rgwStreamNumbers);
1504}
1505static inline HRESULT IMFASFStreamSelector_GetOutputFromStream(IMFASFStreamSelector* This,WORD wStreamNum,DWORD *pdwOutput) {
1506    return This->lpVtbl->GetOutputFromStream(This,wStreamNum,pdwOutput);
1507}
1508static inline HRESULT IMFASFStreamSelector_GetOutputOverride(IMFASFStreamSelector* This,DWORD dwOutputNum,ASF_SELECTION_STATUS *pSelection) {
1509    return This->lpVtbl->GetOutputOverride(This,dwOutputNum,pSelection);
1510}
1511static inline HRESULT IMFASFStreamSelector_SetOutputOverride(IMFASFStreamSelector* This,DWORD dwOutputNum,ASF_SELECTION_STATUS Selection) {
1512    return This->lpVtbl->SetOutputOverride(This,dwOutputNum,Selection);
1513}
1514static inline HRESULT IMFASFStreamSelector_GetOutputMutexCount(IMFASFStreamSelector* This,DWORD dwOutputNum,DWORD *pcMutexes) {
1515    return This->lpVtbl->GetOutputMutexCount(This,dwOutputNum,pcMutexes);
1516}
1517static inline HRESULT IMFASFStreamSelector_GetOutputMutex(IMFASFStreamSelector* This,DWORD dwOutputNum,DWORD dwMutexNum,IUnknown **ppMutex) {
1518    return This->lpVtbl->GetOutputMutex(This,dwOutputNum,dwMutexNum,ppMutex);
1519}
1520static inline HRESULT IMFASFStreamSelector_SetOutputMutexSelection(IMFASFStreamSelector* This,DWORD dwOutputNum,DWORD dwMutexNum,WORD wSelectedRecord) {
1521    return This->lpVtbl->SetOutputMutexSelection(This,dwOutputNum,dwMutexNum,wSelectedRecord);
1522}
1523static inline HRESULT IMFASFStreamSelector_GetBandwidthStepCount(IMFASFStreamSelector* This,DWORD *pcStepCount) {
1524    return This->lpVtbl->GetBandwidthStepCount(This,pcStepCount);
1525}
1526static 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}
1529static inline HRESULT IMFASFStreamSelector_BitrateToStepNumber(IMFASFStreamSelector* This,DWORD dwBitrate,DWORD *pdwStepNum) {
1530    return This->lpVtbl->BitrateToStepNumber(This,dwBitrate,pdwStepNum);
1531}
1532static 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
1550DEFINE_GUID(IID_IMFDRMNetHelper, 0x3d1ff0ea, 0x679a, 0x4190, 0x8d,0x46, 0x7f,0xa6,0x9e,0x8c,0x7e,0x15);
1551#if defined(__cplusplus) && !defined(CINTERFACE)
1552MIDL_INTERFACE("3d1ff0ea-679a-4190-8d46-7fa69e8c7e15")
1553IMFDRMNetHelper : 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
1571typedef 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
1603interface 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 ***/
1618static inline HRESULT IMFDRMNetHelper_QueryInterface(IMFDRMNetHelper* This,REFIID riid,void **ppvObject) {
1619    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1620}
1621static inline ULONG IMFDRMNetHelper_AddRef(IMFDRMNetHelper* This) {
1622    return This->lpVtbl->AddRef(This);
1623}
1624static inline ULONG IMFDRMNetHelper_Release(IMFDRMNetHelper* This) {
1625    return This->lpVtbl->Release(This);
1626}
1627/*** IMFDRMNetHelper methods ***/
1628static 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}
1631static 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
1649DEFINE_GUID(IID_IMFASFProfile, 0xd267bf6a, 0x028b, 0x4e0d, 0x90,0x3d, 0x43,0xf0,0xef,0x82,0xd0,0xd4);
1650#if defined(__cplusplus) && !defined(CINTERFACE)
1651MIDL_INTERFACE("d267bf6a-028b-4e0d-903d-43f0ef82d0d4")
1652IMFASFProfile : 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
1712typedef 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
1952interface 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 ***/
2012static inline HRESULT IMFASFProfile_QueryInterface(IMFASFProfile* This,REFIID riid,void **ppvObject) {
2013    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2014}
2015static inline ULONG IMFASFProfile_AddRef(IMFASFProfile* This) {
2016    return This->lpVtbl->AddRef(This);
2017}
2018static inline ULONG IMFASFProfile_Release(IMFASFProfile* This) {
2019    return This->lpVtbl->Release(This);
2020}
2021/*** IMFAttributes methods ***/
2022static inline HRESULT IMFASFProfile_GetItem(IMFASFProfile* This,REFGUID guidKey,PROPVARIANT *pValue) {
2023    return This->lpVtbl->GetItem(This,guidKey,pValue);
2024}
2025static inline HRESULT IMFASFProfile_GetItemType(IMFASFProfile* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
2026    return This->lpVtbl->GetItemType(This,guidKey,pType);
2027}
2028static inline HRESULT IMFASFProfile_CompareItem(IMFASFProfile* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
2029    return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
2030}
2031static 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}
2034static inline HRESULT IMFASFProfile_GetUINT32(IMFASFProfile* This,REFGUID guidKey,UINT32 *punValue) {
2035    return This->lpVtbl->GetUINT32(This,guidKey,punValue);
2036}
2037static inline HRESULT IMFASFProfile_GetUINT64(IMFASFProfile* This,REFGUID guidKey,UINT64 *punValue) {
2038    return This->lpVtbl->GetUINT64(This,guidKey,punValue);
2039}
2040static inline HRESULT IMFASFProfile_GetDouble(IMFASFProfile* This,REFGUID guidKey,double *pfValue) {
2041    return This->lpVtbl->GetDouble(This,guidKey,pfValue);
2042}
2043static inline HRESULT IMFASFProfile_GetGUID(IMFASFProfile* This,REFGUID guidKey,GUID *pguidValue) {
2044    return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
2045}
2046static inline HRESULT IMFASFProfile_GetStringLength(IMFASFProfile* This,REFGUID guidKey,UINT32 *pcchLength) {
2047    return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
2048}
2049static 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}
2052static inline HRESULT IMFASFProfile_GetAllocatedString(IMFASFProfile* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
2053    return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
2054}
2055static inline HRESULT IMFASFProfile_GetBlobSize(IMFASFProfile* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
2056    return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
2057}
2058static 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}
2061static inline HRESULT IMFASFProfile_GetAllocatedBlob(IMFASFProfile* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
2062    return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
2063}
2064static inline HRESULT IMFASFProfile_GetUnknown(IMFASFProfile* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
2065    return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
2066}
2067static inline HRESULT IMFASFProfile_SetItem(IMFASFProfile* This,REFGUID guidKey,REFPROPVARIANT Value) {
2068    return This->lpVtbl->SetItem(This,guidKey,Value);
2069}
2070static inline HRESULT IMFASFProfile_DeleteItem(IMFASFProfile* This,REFGUID guidKey) {
2071    return This->lpVtbl->DeleteItem(This,guidKey);
2072}
2073static inline HRESULT IMFASFProfile_DeleteAllItems(IMFASFProfile* This) {
2074    return This->lpVtbl->DeleteAllItems(This);
2075}
2076static inline HRESULT IMFASFProfile_SetUINT32(IMFASFProfile* This,REFGUID guidKey,UINT32 unValue) {
2077    return This->lpVtbl->SetUINT32(This,guidKey,unValue);
2078}
2079static inline HRESULT IMFASFProfile_SetUINT64(IMFASFProfile* This,REFGUID guidKey,UINT64 unValue) {
2080    return This->lpVtbl->SetUINT64(This,guidKey,unValue);
2081}
2082static inline HRESULT IMFASFProfile_SetDouble(IMFASFProfile* This,REFGUID guidKey,double fValue) {
2083    return This->lpVtbl->SetDouble(This,guidKey,fValue);
2084}
2085static inline HRESULT IMFASFProfile_SetGUID(IMFASFProfile* This,REFGUID guidKey,REFGUID guidValue) {
2086    return This->lpVtbl->SetGUID(This,guidKey,guidValue);
2087}
2088static inline HRESULT IMFASFProfile_SetString(IMFASFProfile* This,REFGUID guidKey,LPCWSTR wszValue) {
2089    return This->lpVtbl->SetString(This,guidKey,wszValue);
2090}
2091static inline HRESULT IMFASFProfile_SetBlob(IMFASFProfile* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
2092    return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
2093}
2094static inline HRESULT IMFASFProfile_SetUnknown(IMFASFProfile* This,REFGUID guidKey,IUnknown *pUnknown) {
2095    return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
2096}
2097static inline HRESULT IMFASFProfile_LockStore(IMFASFProfile* This) {
2098    return This->lpVtbl->LockStore(This);
2099}
2100static inline HRESULT IMFASFProfile_UnlockStore(IMFASFProfile* This) {
2101    return This->lpVtbl->UnlockStore(This);
2102}
2103static inline HRESULT IMFASFProfile_GetCount(IMFASFProfile* This,UINT32 *pcItems) {
2104    return This->lpVtbl->GetCount(This,pcItems);
2105}
2106static inline HRESULT IMFASFProfile_GetItemByIndex(IMFASFProfile* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
2107    return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
2108}
2109static inline HRESULT IMFASFProfile_CopyAllItems(IMFASFProfile* This,IMFAttributes *pDest) {
2110    return This->lpVtbl->CopyAllItems(This,pDest);
2111}
2112/*** IMFASFProfile methods ***/
2113static inline HRESULT IMFASFProfile_GetStreamCount(IMFASFProfile* This,DWORD *pcStreams) {
2114    return This->lpVtbl->GetStreamCount(This,pcStreams);
2115}
2116static inline HRESULT IMFASFProfile_GetStream(IMFASFProfile* This,DWORD dwStreamIndex,WORD *pwStreamNumber,IMFASFStreamConfig **ppIStream) {
2117    return This->lpVtbl->GetStream(This,dwStreamIndex,pwStreamNumber,ppIStream);
2118}
2119static inline HRESULT IMFASFProfile_GetStreamByNumber(IMFASFProfile* This,WORD wStreamNumber,IMFASFStreamConfig **ppIStream) {
2120    return This->lpVtbl->GetStreamByNumber(This,wStreamNumber,ppIStream);
2121}
2122static inline HRESULT IMFASFProfile_SetStream(IMFASFProfile* This,IMFASFStreamConfig *pIStream) {
2123    return This->lpVtbl->SetStream(This,pIStream);
2124}
2125static inline HRESULT IMFASFProfile_RemoveStream(IMFASFProfile* This,WORD wStreamNumber) {
2126    return This->lpVtbl->RemoveStream(This,wStreamNumber);
2127}
2128static inline HRESULT IMFASFProfile_CreateStream(IMFASFProfile* This,IMFMediaType *pIMediaType,IMFASFStreamConfig **ppIStream) {
2129    return This->lpVtbl->CreateStream(This,pIMediaType,ppIStream);
2130}
2131static inline HRESULT IMFASFProfile_GetMutualExclusionCount(IMFASFProfile* This,DWORD *pcMutexs) {
2132    return This->lpVtbl->GetMutualExclusionCount(This,pcMutexs);
2133}
2134static inline HRESULT IMFASFProfile_GetMutualExclusion(IMFASFProfile* This,DWORD dwMutexIndex,IMFASFMutualExclusion **ppIMutex) {
2135    return This->lpVtbl->GetMutualExclusion(This,dwMutexIndex,ppIMutex);
2136}
2137static inline HRESULT IMFASFProfile_AddMutualExclusion(IMFASFProfile* This,IMFASFMutualExclusion *pIMutex) {
2138    return This->lpVtbl->AddMutualExclusion(This,pIMutex);
2139}
2140static inline HRESULT IMFASFProfile_RemoveMutualExclusion(IMFASFProfile* This,DWORD dwMutexIndex) {
2141    return This->lpVtbl->RemoveMutualExclusion(This,dwMutexIndex);
2142}
2143static inline HRESULT IMFASFProfile_CreateMutualExclusion(IMFASFProfile* This,IMFASFMutualExclusion **ppIMutex) {
2144    return This->lpVtbl->CreateMutualExclusion(This,ppIMutex);
2145}
2146static inline HRESULT IMFASFProfile_GetStreamPrioritization(IMFASFProfile* This,IMFASFStreamPrioritization **ppIStreamPrioritization) {
2147    return This->lpVtbl->GetStreamPrioritization(This,ppIStreamPrioritization);
2148}
2149static inline HRESULT IMFASFProfile_AddStreamPrioritization(IMFASFProfile* This,IMFASFStreamPrioritization *pIStreamPrioritization) {
2150    return This->lpVtbl->AddStreamPrioritization(This,pIStreamPrioritization);
2151}
2152static inline HRESULT IMFASFProfile_RemoveStreamPrioritization(IMFASFProfile* This) {
2153    return This->lpVtbl->RemoveStreamPrioritization(This);
2154}
2155static inline HRESULT IMFASFProfile_CreateStreamPrioritization(IMFASFProfile* This,IMFASFStreamPrioritization **ppIStreamPrioritization) {
2156    return This->lpVtbl->CreateStreamPrioritization(This,ppIStreamPrioritization);
2157}
2158static 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
2175DEFINE_GUID(IID_IMFASFStreamConfig, 0x9e8ae8d2, 0xdbbd, 0x4200, 0x9a,0xca, 0x06,0xe6,0xdf,0x48,0x49,0x13);
2176#if defined(__cplusplus) && !defined(CINTERFACE)
2177MIDL_INTERFACE("9e8ae8d2-dbbd-4200-9aca-06e6df484913")
2178IMFASFStreamConfig : 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
2222typedef 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
2439interface 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 ***/
2493static inline HRESULT IMFASFStreamConfig_QueryInterface(IMFASFStreamConfig* This,REFIID riid,void **ppvObject) {
2494    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2495}
2496static inline ULONG IMFASFStreamConfig_AddRef(IMFASFStreamConfig* This) {
2497    return This->lpVtbl->AddRef(This);
2498}
2499static inline ULONG IMFASFStreamConfig_Release(IMFASFStreamConfig* This) {
2500    return This->lpVtbl->Release(This);
2501}
2502/*** IMFAttributes methods ***/
2503static inline HRESULT IMFASFStreamConfig_GetItem(IMFASFStreamConfig* This,REFGUID guidKey,PROPVARIANT *pValue) {
2504    return This->lpVtbl->GetItem(This,guidKey,pValue);
2505}
2506static inline HRESULT IMFASFStreamConfig_GetItemType(IMFASFStreamConfig* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
2507    return This->lpVtbl->GetItemType(This,guidKey,pType);
2508}
2509static inline HRESULT IMFASFStreamConfig_CompareItem(IMFASFStreamConfig* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
2510    return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
2511}
2512static 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}
2515static inline HRESULT IMFASFStreamConfig_GetUINT32(IMFASFStreamConfig* This,REFGUID guidKey,UINT32 *punValue) {
2516    return This->lpVtbl->GetUINT32(This,guidKey,punValue);
2517}
2518static inline HRESULT IMFASFStreamConfig_GetUINT64(IMFASFStreamConfig* This,REFGUID guidKey,UINT64 *punValue) {
2519    return This->lpVtbl->GetUINT64(This,guidKey,punValue);
2520}
2521static inline HRESULT IMFASFStreamConfig_GetDouble(IMFASFStreamConfig* This,REFGUID guidKey,double *pfValue) {
2522    return This->lpVtbl->GetDouble(This,guidKey,pfValue);
2523}
2524static inline HRESULT IMFASFStreamConfig_GetGUID(IMFASFStreamConfig* This,REFGUID guidKey,GUID *pguidValue) {
2525    return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
2526}
2527static inline HRESULT IMFASFStreamConfig_GetStringLength(IMFASFStreamConfig* This,REFGUID guidKey,UINT32 *pcchLength) {
2528    return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
2529}
2530static 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}
2533static inline HRESULT IMFASFStreamConfig_GetAllocatedString(IMFASFStreamConfig* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
2534    return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
2535}
2536static inline HRESULT IMFASFStreamConfig_GetBlobSize(IMFASFStreamConfig* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
2537    return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
2538}
2539static 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}
2542static inline HRESULT IMFASFStreamConfig_GetAllocatedBlob(IMFASFStreamConfig* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
2543    return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
2544}
2545static inline HRESULT IMFASFStreamConfig_GetUnknown(IMFASFStreamConfig* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
2546    return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
2547}
2548static inline HRESULT IMFASFStreamConfig_SetItem(IMFASFStreamConfig* This,REFGUID guidKey,REFPROPVARIANT Value) {
2549    return This->lpVtbl->SetItem(This,guidKey,Value);
2550}
2551static inline HRESULT IMFASFStreamConfig_DeleteItem(IMFASFStreamConfig* This,REFGUID guidKey) {
2552    return This->lpVtbl->DeleteItem(This,guidKey);
2553}
2554static inline HRESULT IMFASFStreamConfig_DeleteAllItems(IMFASFStreamConfig* This) {
2555    return This->lpVtbl->DeleteAllItems(This);
2556}
2557static inline HRESULT IMFASFStreamConfig_SetUINT32(IMFASFStreamConfig* This,REFGUID guidKey,UINT32 unValue) {
2558    return This->lpVtbl->SetUINT32(This,guidKey,unValue);
2559}
2560static inline HRESULT IMFASFStreamConfig_SetUINT64(IMFASFStreamConfig* This,REFGUID guidKey,UINT64 unValue) {
2561    return This->lpVtbl->SetUINT64(This,guidKey,unValue);
2562}
2563static inline HRESULT IMFASFStreamConfig_SetDouble(IMFASFStreamConfig* This,REFGUID guidKey,double fValue) {
2564    return This->lpVtbl->SetDouble(This,guidKey,fValue);
2565}
2566static inline HRESULT IMFASFStreamConfig_SetGUID(IMFASFStreamConfig* This,REFGUID guidKey,REFGUID guidValue) {
2567    return This->lpVtbl->SetGUID(This,guidKey,guidValue);
2568}
2569static inline HRESULT IMFASFStreamConfig_SetString(IMFASFStreamConfig* This,REFGUID guidKey,LPCWSTR wszValue) {
2570    return This->lpVtbl->SetString(This,guidKey,wszValue);
2571}
2572static inline HRESULT IMFASFStreamConfig_SetBlob(IMFASFStreamConfig* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
2573    return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
2574}
2575static inline HRESULT IMFASFStreamConfig_SetUnknown(IMFASFStreamConfig* This,REFGUID guidKey,IUnknown *pUnknown) {
2576    return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
2577}
2578static inline HRESULT IMFASFStreamConfig_LockStore(IMFASFStreamConfig* This) {
2579    return This->lpVtbl->LockStore(This);
2580}
2581static inline HRESULT IMFASFStreamConfig_UnlockStore(IMFASFStreamConfig* This) {
2582    return This->lpVtbl->UnlockStore(This);
2583}
2584static inline HRESULT IMFASFStreamConfig_GetCount(IMFASFStreamConfig* This,UINT32 *pcItems) {
2585    return This->lpVtbl->GetCount(This,pcItems);
2586}
2587static inline HRESULT IMFASFStreamConfig_GetItemByIndex(IMFASFStreamConfig* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
2588    return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
2589}
2590static inline HRESULT IMFASFStreamConfig_CopyAllItems(IMFASFStreamConfig* This,IMFAttributes *pDest) {
2591    return This->lpVtbl->CopyAllItems(This,pDest);
2592}
2593/*** IMFASFStreamConfig methods ***/
2594static inline HRESULT IMFASFStreamConfig_GetStreamType(IMFASFStreamConfig* This,GUID *pguidStreamType) {
2595    return This->lpVtbl->GetStreamType(This,pguidStreamType);
2596}
2597static inline WORD IMFASFStreamConfig_GetStreamNumber(IMFASFStreamConfig* This) {
2598    return This->lpVtbl->GetStreamNumber(This);
2599}
2600static inline HRESULT IMFASFStreamConfig_SetStreamNumber(IMFASFStreamConfig* This,WORD wStreamNum) {
2601    return This->lpVtbl->SetStreamNumber(This,wStreamNum);
2602}
2603static inline HRESULT IMFASFStreamConfig_GetMediaType(IMFASFStreamConfig* This,IMFMediaType **ppIMediaType) {
2604    return This->lpVtbl->GetMediaType(This,ppIMediaType);
2605}
2606static inline HRESULT IMFASFStreamConfig_SetMediaType(IMFASFStreamConfig* This,IMFMediaType *pIMediaType) {
2607    return This->lpVtbl->SetMediaType(This,pIMediaType);
2608}
2609static inline HRESULT IMFASFStreamConfig_GetPayloadExtensionCount(IMFASFStreamConfig* This,WORD *pcPayloadExtensions) {
2610    return This->lpVtbl->GetPayloadExtensionCount(This,pcPayloadExtensions);
2611}
2612static 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}
2615static 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}
2618static inline HRESULT IMFASFStreamConfig_RemoveAllPayloadExtensions(IMFASFStreamConfig* This) {
2619    return This->lpVtbl->RemoveAllPayloadExtensions(This);
2620}
2621static 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
2633EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_ASFMEDIASINK_BASE_SENDTIME = { { 0xcddcbc82, 0x3411, 0x4119, 0x91, 0x35, 0x84, 0x23, 0xc4, 0x1b, 0x39, 0x57}, 3  };
2634EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE = { { 0xcddcbc82, 0x3411, 0x4119, 0x91, 0x35, 0x84, 0x23, 0xc4, 0x1b, 0x39, 0x57}, 4  };
2635EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_ASFMEDIASINK_DRMACTION = { { 0xa1db6f6c, 0x1d0a, 0x4cb6, 0x82, 0x54, 0xcb, 0x36, 0xbe, 0xed, 0xbc, 0x48}, 5  };
2636EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET = { { 0xa2f152fb, 0x8ad9, 0x4a11, 0xb3, 0x45, 0x2c, 0xe2, 0xfa, 0xd8, 0x72, 0x3d}, 1  };
2637
2638STDAPI MFCreateASFContentInfo(IMFASFContentInfo **ppIContentInfo);
2639STDAPI MFCreateASFIndexer(IMFASFIndexer **ppIIndexer);
2640STDAPI MFCreateASFIndexerByteStream(IMFByteStream *pIContentByteStream, QWORD cbIndexStartOffset, IMFByteStream **pIIndexByteStream);
2641STDAPI MFCreateASFMediaSink(IMFByteStream *pIByteStream, IMFMediaSink **ppIMediaSink);
2642STDAPI MFCreateASFMediaSinkActivate(LPCWSTR pwszFileName, IMFASFContentInfo *pContentInfo, IMFActivate **ppIActivate);
2643STDAPI MFCreateASFMultiplexer(IMFASFMultiplexer **ppIMultiplexer);
2644STDAPI MFCreateASFProfile(IMFASFProfile **ppIProfile);
2645STDAPI MFCreateASFProfileFromPresentationDescriptor(IMFPresentationDescriptor  *pIPD, IMFASFProfile **ppIProfile);
2646STDAPI MFCreateASFSplitter(IMFASFSplitter **ppISplitter);
2647STDAPI MFCreateASFStreamingMediaSink(IMFByteStream *pIByteStream, IMFMediaSink **ppIMediaSink);
2648STDAPI MFCreateASFStreamingMediaSinkActivate(IMFActivate *pByteStreamActivate, IMFASFContentInfo *pContentInfo, IMFActivate **ppIActivate);
2649STDAPI MFCreateASFStreamSelector(IMFASFProfile *pIASFProfile, IMFASFStreamSelector **ppSelector);
2650STDAPI MFCreatePresentationDescriptorFromASFProfile(IMFASFProfile *pIProfile, IMFPresentationDescriptor **ppIPD);
2651HRESULT STDMETHODCALLTYPE MFCreateWMVEncoderActivate(IMFMediaType *pMediaType, IPropertyStore *pEncodingConfigurationProperties, IMFActivate **ppActivate);
2652HRESULT STDMETHODCALLTYPE MFCreateWMAEncoderActivate(IMFMediaType *pMediaType, IPropertyStore *pEncodingConfigurationProperties, IMFActivate **ppActivate);
2653#endif
2654/* Begin additional prototypes for all interfaces */
2655
2656ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
2657unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
2658unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
2659void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
2660
2661/* End additional prototypes */
2662
2663#ifdef __cplusplus
2664}
2665#endif
2666
2667#endif /* __wmcontainer_h__ */