📄 wmsdkidl.h
字号:
typedef DWORD WMT_CODEC_INFO_TYPE;
#define WMT_CODECINFO_AUDIO 0
#define WMT_CODECINFO_VIDEO 1
#define WMT_CODECINFO_UNKNOWN 0xffffffff
enum __MIDL___MIDL_itf_wmsdkidl_0000_0004
{ WM_DM_NOTINTERLACED = 0,
WM_DM_DEINTERLACE_NORMAL = 1,
WM_DM_DEINTERLACE_HALFSIZE = 2,
WM_DM_DEINTERLACE_HALFSIZEDOUBLERATE = 3,
WM_DM_DEINTERLACE_INVERSETELECINE = 4,
WM_DM_DEINTERLACE_VERTICALHALFSIZEDOUBLERATE = 5
} ;
enum __MIDL___MIDL_itf_wmsdkidl_0000_0005
{ WM_DM_IT_DISABLE_COHERENT_MODE = 0,
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_TOP = 1,
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_TOP = 2,
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_TOP = 3,
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_TOP = 4,
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_TOP = 5,
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_BOTTOM = 6,
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_BOTTOM = 7,
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_BOTTOM = 8,
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_BOTTOM = 9,
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_BOTTOM = 10
} ;
typedef
enum tagWMT_OFFSET_FORMAT
{ WMT_OFFSET_FORMAT_100NS = 0,
WMT_OFFSET_FORMAT_FRAME_NUMBERS = WMT_OFFSET_FORMAT_100NS + 1,
WMT_OFFSET_FORMAT_PLAYLIST_OFFSET = WMT_OFFSET_FORMAT_FRAME_NUMBERS + 1,
WMT_OFFSET_FORMAT_TIMECODE = WMT_OFFSET_FORMAT_PLAYLIST_OFFSET + 1
} WMT_OFFSET_FORMAT;
typedef
enum tagWMT_INDEXER_TYPE
{ WMT_IT_PRESENTATION_TIME = 0,
WMT_IT_FRAME_NUMBERS = WMT_IT_PRESENTATION_TIME + 1,
WMT_IT_TIMECODE = WMT_IT_FRAME_NUMBERS + 1
} WMT_INDEXER_TYPE;
typedef
enum tagWMT_INDEX_TYPE
{ WMT_IT_NEAREST_DATA_UNIT = 1,
WMT_IT_NEAREST_OBJECT = WMT_IT_NEAREST_DATA_UNIT + 1,
WMT_IT_NEAREST_CLEAN_POINT = WMT_IT_NEAREST_OBJECT + 1
} WMT_INDEX_TYPE;
typedef
enum tagWMT_FILESINK_MODE
{ WMT_FM_SINGLE_BUFFERS = 0x1,
WMT_FM_FILESINK_DATA_UNITS = 0x2,
WMT_FM_FILESINK_UNBUFFERED = 0x4
} WMT_FILESINK_MODE;
typedef
enum tagWMT_MUSICSPEECH_CLASS_MODE
{ WMT_MS_CLASS_MUSIC = 0,
WMT_MS_CLASS_SPEECH = 1,
WMT_MS_CLASS_MIXED = 2
} WMT_MUSICSPEECH_CLASS_MODE;
typedef
enum tagWMT_WATERMARK_ENTRY_TYPE
{ WMT_WMETYPE_AUDIO = 1,
WMT_WMETYPE_VIDEO = 2
} WMT_WATERMARK_ENTRY_TYPE;
enum __MIDL___MIDL_itf_wmsdkidl_0000_0006
{ WM_PLAYBACK_DRC_HIGH = 0,
WM_PLAYBACK_DRC_MEDIUM = WM_PLAYBACK_DRC_HIGH + 1,
WM_PLAYBACK_DRC_LOW = WM_PLAYBACK_DRC_MEDIUM + 1
} ;
enum __MIDL___MIDL_itf_wmsdkidl_0000_0007
{ WMT_TIMECODE_FRAMERATE_30 = 0,
WMT_TIMECODE_FRAMERATE_30DROP = WMT_TIMECODE_FRAMERATE_30 + 1,
WMT_TIMECODE_FRAMERATE_25 = WMT_TIMECODE_FRAMERATE_30DROP + 1,
WMT_TIMECODE_FRAMERATE_24 = WMT_TIMECODE_FRAMERATE_25 + 1
} ;
typedef
enum WMT_CREDENTIAL_FLAGS
{ WMT_CREDENTIAL_SAVE = 0x1,
WMT_CREDENTIAL_DONT_CACHE = 0x2,
WMT_CREDENTIAL_CLEAR_TEXT = 0x4,
WMT_CREDENTIAL_PROXY = 0x8,
WMT_CREDENTIAL_ENCRYPT = 0x10
} WMT_CREDENTIAL_FLAGS;
typedef
enum WM_AETYPE
{ WM_AETYPE_INCLUDE = 0x69,
WM_AETYPE_EXCLUDE = 0x65
} WM_AETYPE;
#pragma pack(push)
#pragma pack(2)
typedef struct _WMStreamPrioritizationRecord
{
WORD wStreamNumber;
BOOL fMandatory;
} WM_STREAM_PRIORITY_RECORD;
#pragma pack(pop)
typedef struct _WMWriterStatistics
{
QWORD qwSampleCount;
QWORD qwByteCount;
QWORD qwDroppedSampleCount;
QWORD qwDroppedByteCount;
DWORD dwCurrentBitrate;
DWORD dwAverageBitrate;
DWORD dwExpectedBitrate;
DWORD dwCurrentSampleRate;
DWORD dwAverageSampleRate;
DWORD dwExpectedSampleRate;
} WM_WRITER_STATISTICS;
typedef struct _WMWriterStatisticsEx
{
DWORD dwBitratePlusOverhead;
DWORD dwCurrentSampleDropRateInQueue;
DWORD dwCurrentSampleDropRateInCodec;
DWORD dwCurrentSampleDropRateInMultiplexer;
DWORD dwTotalSampleDropsInQueue;
DWORD dwTotalSampleDropsInCodec;
DWORD dwTotalSampleDropsInMultiplexer;
} WM_WRITER_STATISTICS_EX;
typedef struct _WMReaderStatistics
{
DWORD cbSize;
DWORD dwBandwidth;
DWORD cPacketsReceived;
DWORD cPacketsRecovered;
DWORD cPacketsLost;
WORD wQuality;
} WM_READER_STATISTICS;
typedef struct _WMReaderClientInfo
{
DWORD cbSize;
WCHAR *wszLang;
WCHAR *wszBrowserUserAgent;
WCHAR *wszBrowserWebPage;
QWORD qwReserved;
LPARAM *pReserved;
WCHAR *wszHostExe;
QWORD qwHostVersion;
WCHAR *wszPlayerUserAgent;
} WM_READER_CLIENTINFO;
typedef struct _WMClientProperties
{
DWORD dwIPAddress;
DWORD dwPort;
} WM_CLIENT_PROPERTIES;
typedef struct _WMClientPropertiesEx
{
DWORD cbSize;
LPCWSTR pwszIPAddress;
LPCWSTR pwszPort;
LPCWSTR pwszDNSName;
} WM_CLIENT_PROPERTIES_EX;
typedef struct _WMPortNumberRange
{
WORD wPortBegin;
WORD wPortEnd;
} WM_PORT_NUMBER_RANGE;
typedef struct _WMT_BUFFER_SEGMENT
{
INSSBuffer *pBuffer;
DWORD cbOffset;
DWORD cbLength;
} WMT_BUFFER_SEGMENT;
typedef struct _WMT_PAYLOAD_FRAGMENT
{
DWORD dwPayloadIndex;
WMT_BUFFER_SEGMENT segmentData;
} WMT_PAYLOAD_FRAGMENT;
typedef struct _WMT_FILESINK_DATA_UNIT
{
WMT_BUFFER_SEGMENT packetHeaderBuffer;
DWORD cPayloads;
WMT_BUFFER_SEGMENT *pPayloadHeaderBuffers;
DWORD cPayloadDataFragments;
WMT_PAYLOAD_FRAGMENT *pPayloadDataFragments;
} WMT_FILESINK_DATA_UNIT;
typedef struct _WMT_WEBSTREAM_FORMAT
{
WORD cbSize;
WORD cbSampleHeaderFixedData;
WORD wVersion;
WORD wReserved;
} WMT_WEBSTREAM_FORMAT;
typedef struct _WMT_WEBSTREAM_SAMPLE_HEADER
{
WORD cbLength;
WORD wPart;
WORD cTotalParts;
WORD wSampleType;
WCHAR wszURL[ 1 ];
} WMT_WEBSTREAM_SAMPLE_HEADER;
typedef struct _WMAddressAccessEntry
{
DWORD dwIPAddress;
DWORD dwMask;
} WM_ADDRESS_ACCESSENTRY;
#pragma pack(push)
#pragma pack(1)
typedef struct _WMPicture
{
LPWSTR pwszMIMEType;
BYTE bPictureType;
LPWSTR pwszDescription;
DWORD dwDataLen;
BYTE *pbData;
} WM_PICTURE;
typedef struct _WMSynchronisedLyrics
{
BYTE bTimeStampFormat;
BYTE bContentType;
LPWSTR pwszContentDescriptor;
DWORD dwLyricsLen;
BYTE *pbLyrics;
} WM_SYNCHRONISED_LYRICS;
typedef struct _WMUserWebURL
{
LPWSTR pwszDescription;
LPWSTR pwszURL;
} WM_USER_WEB_URL;
typedef struct _WMUserText
{
LPWSTR pwszDescription;
LPWSTR pwszText;
} WM_USER_TEXT;
typedef struct _WMLeakyBucketPair
{
DWORD dwBitrate;
DWORD msBufferWindow;
} WM_LEAKY_BUCKET_PAIR;
#pragma pack(pop)
typedef struct _WM_LICENSE_STATE_DATA
{
DWORD dwSize;
DWORD dwNumStates;
DRM_LICENSE_STATE_DATA stateData[ 1 ];
} WM_LICENSE_STATE_DATA;
typedef struct __WMT_WATERMARK_ENTRY
{
WMT_WATERMARK_ENTRY_TYPE wmetType;
CLSID clsid;
UINT cbDisplayName;
LPWSTR pwszDisplayName;
} WMT_WATERMARK_ENTRY;
#define WMT_VIDEOIMAGE_SAMPLE_INPUT_FRAME 1 // sample has input frame
#define WMT_VIDEOIMAGE_SAMPLE_OUTPUT_FRAME 2 // sample produces output frame
#define WMT_VIDEOIMAGE_SAMPLE_USES_CURRENT_INPUT_FRAME 4
#define WMT_VIDEOIMAGE_SAMPLE_USES_PREVIOUS_INPUT_FRAME 8
#define WMT_VIDEOIMAGE_SAMPLE_MOTION 1 // acef used (includes resizing)
#define WMT_VIDEOIMAGE_SAMPLE_ROTATION 2 // bd also used (not valid without acef)
#define WMT_VIDEOIMAGE_SAMPLE_BLENDING 4 // BlendCoef1 used
#define WMT_VIDEOIMAGE_SAMPLE_ADV_BLENDING 8 // BlendCoef2 also used (not valid without BlendCoef1)
#define WMT_VIDEOIMAGE_INTEGER_DENOMINATOR 65536L
#define WMT_VIDEOIMAGE_MAGIC_NUMBER 0x1d4a45f2
typedef struct __WMT_VIDEOIMAGE_SAMPLE
{
DWORD dwMagic;
ULONG cbStruct;
DWORD dwControlFlags;
DWORD dwInputFlagsCur;
LONG lCurMotionXtoX;
LONG lCurMotionYtoX;
LONG lCurMotionXoffset;
LONG lCurMotionXtoY;
LONG lCurMotionYtoY;
LONG lCurMotionYoffset;
LONG lCurBlendCoef1;
LONG lCurBlendCoef2;
DWORD dwInputFlagsPrev;
LONG lPrevMotionXtoX;
LONG lPrevMotionYtoX;
LONG lPrevMotionXoffset;
LONG lPrevMotionXtoY;
LONG lPrevMotionYtoY;
LONG lPrevMotionYoffset;
LONG lPrevBlendCoef1;
LONG lPrevBlendCoef2;
} WMT_VIDEOIMAGE_SAMPLE;
typedef struct _WMMediaType
{
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
/* [size_is] */ BYTE *pbFormat;
} WM_MEDIA_TYPE;
typedef struct tagWMVIDEOINFOHEADER
{
//
// The bit we really want to use.
//
RECT rcSource;
//
// Where the video should go.
//
RECT rcTarget;
//
// Approximate bit data rate.
//
DWORD dwBitRate;
//
// Bit error rate for this stream.
//
DWORD dwBitErrorRate;
//
// Average time per frame (100ns units).
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -