mirror of https://github.com/UMSKT/xpmgr.git
307 lines
12 KiB
Plaintext
307 lines
12 KiB
Plaintext
|
|
import "unknwn.idl" ;
|
|
import "wtypes.idl" ;
|
|
import "objidl.idl";
|
|
import "strmif.idl" ;
|
|
|
|
// ============================================================================
|
|
// interfaces
|
|
|
|
interface IAttributeSet ;
|
|
interface IAttributeGet ;
|
|
|
|
/*++
|
|
============================================================================
|
|
============================================================================
|
|
sample attribute interfaces
|
|
--*/
|
|
|
|
[
|
|
object,
|
|
uuid(583ec3cc-4960-4857-982b-41a33ea0a006),
|
|
pointer_default(unique)
|
|
]
|
|
interface IAttributeSet : IUnknown
|
|
{
|
|
HRESULT
|
|
SetAttrib (
|
|
[in] GUID guidAttribute,
|
|
[in] BYTE * pbAttribute,
|
|
[in] DWORD dwAttributeLength
|
|
) ;
|
|
} ;
|
|
|
|
[
|
|
object,
|
|
uuid(52dbd1ec-e48f-4528-9232-f442a68f0ae1),
|
|
pointer_default(unique)
|
|
]
|
|
interface IAttributeGet : IUnknown
|
|
{
|
|
HRESULT
|
|
GetCount (
|
|
[out] LONG * plCount
|
|
) ;
|
|
|
|
HRESULT
|
|
GetAttribIndexed (
|
|
[in] LONG lIndex, // 0-based
|
|
[out] GUID * pguidAttribute,
|
|
[in, out] BYTE * pbAttribute,
|
|
[in, out] DWORD * pdwAttributeLength
|
|
) ;
|
|
|
|
HRESULT
|
|
GetAttrib (
|
|
[in] GUID guidAttribute,
|
|
[in, out] BYTE * pbAttribute,
|
|
[in, out] DWORD * pdwAttributeLength
|
|
) ;
|
|
} ;
|
|
|
|
/*++
|
|
============================================================================
|
|
============================================================================
|
|
well-known attributes
|
|
--*/
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UDCR attribute
|
|
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("// GUID: DSATTRIB_UDCRTag")
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
|
|
cpp_quote ("typedef struct _UDCR_TAG {")
|
|
cpp_quote (" BYTE bVersion ;")
|
|
cpp_quote (" BYTE KID [24 + 1] ;")
|
|
cpp_quote (" ULONGLONG ullBaseCounter ;")
|
|
cpp_quote (" ULONGLONG ullBaseCounterRange ;")
|
|
cpp_quote (" BOOL fScrambled ;")
|
|
cpp_quote (" BYTE bStreamMark ;")
|
|
cpp_quote (" DWORD dwReserved1 ;")
|
|
cpp_quote (" DWORD dwReserved2 ;")
|
|
cpp_quote ("} UDCR_TAG ;")
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// mpeg2 video analysis attribute
|
|
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("// GUID: DSATTRIB_PicSampleSeq")
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
|
|
cpp_quote ("// Older defines with mnemonics specific to MPEG-2 video:")
|
|
cpp_quote ("#define SAMPLE_SEQ_SEQUENCE_HEADER 1")
|
|
cpp_quote ("#define SAMPLE_SEQ_GOP_HEADER 2")
|
|
cpp_quote ("#define SAMPLE_SEQ_PICTURE_HEADER 3")
|
|
|
|
cpp_quote ("// Latest defines with mnemonics generic to MPEG-2 and H.264 video:")
|
|
cpp_quote ("#define SAMPLE_SEQ_SEQUENCE_START SAMPLE_SEQ_SEQUENCE_HEADER")
|
|
cpp_quote ("#define SAMPLE_SEQ_SEEK_POINT SAMPLE_SEQ_GOP_HEADER")
|
|
cpp_quote ("#define SAMPLE_SEQ_FRAME_START SAMPLE_SEQ_PICTURE_HEADER")
|
|
|
|
cpp_quote ("// Older defines with mnemonics specific to MPEG-2 video:")
|
|
cpp_quote ("#define SAMPLE_SEQ_CONTENT_UNKNOWN 0")
|
|
cpp_quote ("#define SAMPLE_SEQ_CONTENT_I_FRAME 1")
|
|
cpp_quote ("#define SAMPLE_SEQ_CONTENT_P_FRAME 2")
|
|
cpp_quote ("#define SAMPLE_SEQ_CONTENT_B_FRAME 3")
|
|
|
|
cpp_quote ("// Latest defines with mnemonics generic to MPEG-2 and H.264 video:")
|
|
cpp_quote ("#define SAMPLE_SEQ_CONTENT_STANDALONE_FRAME SAMPLE_SEQ_CONTENT_I_FRAME")
|
|
cpp_quote ("#define SAMPLE_SEQ_CONTENT_REF_FRAME SAMPLE_SEQ_CONTENT_P_FRAME")
|
|
cpp_quote ("#define SAMPLE_SEQ_CONTENT_NONREF_FRAME SAMPLE_SEQ_CONTENT_B_FRAME")
|
|
|
|
cpp_quote ("typedef struct _PIC_SEQ_SAMPLE {")
|
|
cpp_quote (" DWORD")
|
|
cpp_quote (" Content : 3, // SAMPLE_CONTENT_*")
|
|
cpp_quote (" Start : 1, // '1' if the sample is a PictureSampleSequence start")
|
|
cpp_quote (" FrameRate : 4, // see below (h.262, table 6-4)")
|
|
cpp_quote (" InvalidVA : 1, // 0 normally. 1 if VA attempted but failed")
|
|
cpp_quote (" Reserved : 19, // reserved; shall have value 0")
|
|
cpp_quote (" Version : 4 ; // 1 [0 means InvalidVA defaults to 0]")
|
|
cpp_quote ("} PIC_SEQ_SAMPLE, *PPIC_SEQ_SAMPLE ;")
|
|
|
|
cpp_quote ("// Frame Rate")
|
|
cpp_quote ("// (see h.262, table 6-4)")
|
|
cpp_quote ("//")
|
|
cpp_quote ("// 0000 reserved (ignore field value)")
|
|
cpp_quote ("// 0001 23.976")
|
|
cpp_quote ("// 0010 24")
|
|
cpp_quote ("// 0011 25")
|
|
cpp_quote ("// 0100 29.97")
|
|
cpp_quote ("// 0101 30")
|
|
cpp_quote ("// 0110 50")
|
|
cpp_quote ("// 0111 59.94")
|
|
cpp_quote ("// 1000 60")
|
|
|
|
cpp_quote ("typedef struct _SAMPLE_SEQ_OFFSET {")
|
|
cpp_quote (" DWORD")
|
|
cpp_quote (" Type : 4, // SAMPLE_SEQ_*; 0 means not used")
|
|
cpp_quote (" Offset : 20, // downstream byte offset; 0xfffff means > 2^20-1")
|
|
cpp_quote (" Reserved : 8 ; // reserved; o")
|
|
cpp_quote ("} SAMPLE_SEQ_OFFSET ;")
|
|
|
|
cpp_quote ("#define OFFSET_MARKER_COUNT(attr_len) \\")
|
|
cpp_quote (" ((attr_len - sizeof (PIC_SEQ_SAMPLE)) / sizeof (SAMPLE_SEQ_OFFSET))")
|
|
|
|
cpp_quote ("#define PIC_SEQ_SAMPLE_ATTR_LEN(cOffsets) (sizeof (PIC_SEQ_SAMPLE) + (cOffsets) * sizeof (SAMPLE_SEQ_OFFSET))")
|
|
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("// GUID: DSATTRIB_OptionalVideoAttributes")
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("")
|
|
cpp_quote ("typedef enum VA_VIDEO_FORMAT")
|
|
cpp_quote ("{")
|
|
cpp_quote (" // Original video format known:")
|
|
cpp_quote ("")
|
|
cpp_quote (" VA_VIDEO_COMPONENT = 0,")
|
|
cpp_quote (" VA_VIDEO_PAL = 1,")
|
|
cpp_quote (" VA_VIDEO_NTSC = 2,")
|
|
cpp_quote (" VA_VIDEO_SECAM = 3,")
|
|
cpp_quote (" VA_VIDEO_MAC = 4,")
|
|
cpp_quote ("")
|
|
cpp_quote (" // Original video format not known:")
|
|
cpp_quote ("")
|
|
cpp_quote (" VA_VIDEO_UNSPECIFIED = 5")
|
|
cpp_quote ("")
|
|
cpp_quote (" // The MPEG-2 video and H.264 specs reserve values")
|
|
cpp_quote (" // 6 and 7 for future use. ")
|
|
cpp_quote ("} VA_VIDEO_FORMAT;")
|
|
cpp_quote ("")
|
|
cpp_quote ("typedef enum VA_COLOR_PRIMARIES")
|
|
cpp_quote ("{")
|
|
cpp_quote (" // 0 is reserved by both H.264 and MPEG-2 video")
|
|
cpp_quote ("")
|
|
cpp_quote (" VA_PRIMARIES_ITU_R_BT_709 = 1,")
|
|
cpp_quote ("")
|
|
cpp_quote (" // Use this value if the color primaries system is not")
|
|
cpp_quote (" // known or non-standard:")
|
|
cpp_quote ("")
|
|
cpp_quote (" VA_PRIMARIES_UNSPECIFIED = 2, ")
|
|
cpp_quote ("")
|
|
cpp_quote (" // 3 is reserved by both H.264 and MPEG-2 video")
|
|
cpp_quote ("")
|
|
cpp_quote (" VA_PRIMARIES_ITU_R_BT_470_SYSTEM_M = 4,")
|
|
cpp_quote (" VA_PRIMARIES_ITU_R_BT_470_SYSTEM_B_G = 5,")
|
|
cpp_quote (" VA_PRIMARIES_SMPTE_170M = 6,")
|
|
cpp_quote (" VA_PRIMARIES_SMPTE_240M = 7,")
|
|
cpp_quote (" VA_PRIMARIES_H264_GENERIC_FILM = 8")
|
|
cpp_quote ("")
|
|
cpp_quote (" // Values in the range 9 to 255 are reserved by H.264. Values in ")
|
|
cpp_quote (" // the range 8 to 255 are reserved by MPEG-2 video")
|
|
cpp_quote ("} VA_COLOR_PRIMARIES;")
|
|
cpp_quote ("")
|
|
cpp_quote ("typedef enum VA_TRANSFER_CHARACTERISTICS")
|
|
cpp_quote ("{")
|
|
cpp_quote (" // The value 0 is reserved by both MPEG-2 video and H.264")
|
|
cpp_quote ("")
|
|
cpp_quote (" VA_TRANSFER_CHARACTERISTICS_ITU_R_BT_709 = 1,")
|
|
cpp_quote ("")
|
|
cpp_quote (" // Use the value below of the transfer characteristics")
|
|
cpp_quote (" // are unknown or non-standard:")
|
|
cpp_quote ("")
|
|
cpp_quote (" VA_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2, ")
|
|
cpp_quote ("")
|
|
cpp_quote (" // The value 3 is reserved by both MPEG-2 video and H.264")
|
|
cpp_quote ("")
|
|
cpp_quote (" VA_TRANSFER_CHARACTERISTICS_ITU_R_BT_470_SYSTEM_M = 4,")
|
|
cpp_quote (" VA_TRANSFER_CHARACTERISTICS_ITU_R_BT_470_SYSTEM_B_G = 5,")
|
|
cpp_quote (" VA_TRANSFER_CHARACTERISTICS_SMPTE_170M = 6,")
|
|
cpp_quote (" VA_TRANSFER_CHARACTERISTICS_SMPTE_240M = 7,")
|
|
cpp_quote (" VA_TRANSFER_CHARACTERISTICS_LINEAR = 8,")
|
|
cpp_quote (" VA_TRANSFER_CHARACTERISTICS_H264_LOG_100_TO_1 = 9,")
|
|
cpp_quote (" VA_TRANSFER_CHARACTERISTICS_H264_LOG_316_TO_1 = 10")
|
|
cpp_quote ("")
|
|
cpp_quote (" // The values 11 to 255 are reserved by H.264. The values")
|
|
cpp_quote (" // 9 to 255 are reserved by MPEG-2 video.")
|
|
cpp_quote ("} VA_TRANSFER_CHARACTERISTICS;")
|
|
cpp_quote ("")
|
|
cpp_quote ("typedef enum VA_MATRIX_COEFFICIENTS")
|
|
cpp_quote ("{")
|
|
cpp_quote (" VA_MATRIX_COEFF_H264_RGB = 0,")
|
|
cpp_quote (" VA_MATRIX_COEFF_ITU_R_BT_709 = 1,")
|
|
cpp_quote ("")
|
|
cpp_quote (" // Use the value below if the matrix coefficients are")
|
|
cpp_quote (" // unknown or non-standard:")
|
|
cpp_quote ("")
|
|
cpp_quote (" VA_MATRIX_COEFF_UNSPECIFIED = 2,")
|
|
cpp_quote ("")
|
|
cpp_quote (" // The value 3 is reserved by both MPEG-2 video and H.264")
|
|
cpp_quote ("")
|
|
cpp_quote (" VA_MATRIX_COEFF_FCC = 4,")
|
|
cpp_quote (" VA_MATRIX_COEFF_ITU_R_BT_470_SYSTEM_B_G = 5,")
|
|
cpp_quote (" VA_MATRIX_COEFF_SMPTE_170M = 6,")
|
|
cpp_quote (" VA_MATRIX_COEFF_SMPTE_240M = 7,")
|
|
cpp_quote (" VA_MATRIX_COEFF_H264_YCgCo = 8")
|
|
cpp_quote ("")
|
|
cpp_quote (" // The values 9 to 255 are reserved by H.264. The values 8 to 255")
|
|
cpp_quote (" // are reserved by MPEG-2 video.")
|
|
cpp_quote ("} VA_MATRIX_COEFFICIENTS;")
|
|
cpp_quote ("")
|
|
cpp_quote ("typedef struct VA_OPTIONAL_VIDEO_PROPERTIES")
|
|
cpp_quote ("{")
|
|
cpp_quote (" WORD dwPictureHeight ;")
|
|
cpp_quote (" WORD dwPictureWidth ;")
|
|
cpp_quote (" WORD dwAspectRatioX ;")
|
|
cpp_quote (" WORD dwAspectRatioY ;")
|
|
cpp_quote (" VA_VIDEO_FORMAT VAVideoFormat;")
|
|
cpp_quote (" VA_COLOR_PRIMARIES VAColorPrimaries;")
|
|
cpp_quote (" VA_TRANSFER_CHARACTERISTICS VATransferCharacteristics;")
|
|
cpp_quote (" VA_MATRIX_COEFFICIENTS VAMatrixCoefficients;")
|
|
cpp_quote ("} VA_OPTIONAL_VIDEO_PROPERTIES;")
|
|
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("// GUID: DSATTRIB_TRANSPORT_PROPERTIES")
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("typedef struct _TRANSPORT_PROPERTIES {")
|
|
cpp_quote (" ULONG PID ;")
|
|
cpp_quote (" REFERENCE_TIME PCR ;")
|
|
cpp_quote (" union {")
|
|
cpp_quote (" struct _Others {")
|
|
cpp_quote (" LONGLONG ")
|
|
cpp_quote (" TransportScramblingControl : 8 ,")
|
|
cpp_quote (" Reserved : 56 ;")
|
|
cpp_quote (" } Others ;")
|
|
cpp_quote (" LONGLONG Value ;")
|
|
cpp_quote (" } Fields ;")
|
|
cpp_quote ("} TRANSPORT_PROPERTIES ;")
|
|
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("// GUID: DSATTRIB_PBDATAG_ATTRIBUTE")
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("typedef struct _PBDA_TAG_ATTRIBUTE {")
|
|
cpp_quote (" GUID TableUUId ;")
|
|
cpp_quote (" BYTE TableId ;")
|
|
cpp_quote (" WORD VersionNo ;")
|
|
cpp_quote (" DWORD TableDataSize ;")
|
|
cpp_quote (" BYTE TableData [1] ;")
|
|
cpp_quote ("} PBDA_TAG_ATTRIBUTE ;")
|
|
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("// GUID: DSATTRIB_CAPTURE_STREAMTIME")
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("typedef struct _CAPTURE_STREAMTIME {")
|
|
cpp_quote (" REFERENCE_TIME StreamTime ;")
|
|
cpp_quote ("} CAPTURE_STREAMTIME ;")
|
|
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("// GUID: DSATTRIB_DSHOW_STREAM_DESC")
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("typedef struct _DSHOW_STREAM_DESC {")
|
|
cpp_quote (" DWORD VersionNo ;")
|
|
cpp_quote (" DWORD StreamId ;")
|
|
cpp_quote (" BOOL Default ;")
|
|
cpp_quote (" BOOL Creation ;")
|
|
cpp_quote (" DWORD Reserved ;")
|
|
cpp_quote ("} DSHOW_STREAM_DESC ;")
|
|
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("// GUID: DSATTRIB_SAMPLE_LIVE_STREAM_TIME")
|
|
cpp_quote ("// ------------------------------------------------------")
|
|
cpp_quote ("typedef struct _SAMPLE_LIVE_STREAM_TIME{")
|
|
cpp_quote (" ULONGLONG qwStreamTime;")
|
|
cpp_quote (" ULONGLONG qwLiveTime;")
|
|
cpp_quote ("}SAMPLE_LIVE_STREAM_TIME ;")
|
|
|
|
|