xpmgr/BuildTools/Include/dsattrib.idl

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 ;")