

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0555 */
/* Compiler settings for dsattrib.idl:
    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __dsattrib_h__
#define __dsattrib_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __IAttributeSet_FWD_DEFINED__
#define __IAttributeSet_FWD_DEFINED__
typedef interface IAttributeSet IAttributeSet;
#endif 	/* __IAttributeSet_FWD_DEFINED__ */


#ifndef __IAttributeGet_FWD_DEFINED__
#define __IAttributeGet_FWD_DEFINED__
typedef interface IAttributeGet IAttributeGet;
#endif 	/* __IAttributeGet_FWD_DEFINED__ */


/* header files for imported files */
#include "unknwn.h"
#include "objidl.h"
#include "strmif.h"

#ifdef __cplusplus
extern "C"{
#endif 


/* interface __MIDL_itf_dsattrib_0000_0000 */
/* [local] */ 





extern RPC_IF_HANDLE __MIDL_itf_dsattrib_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_dsattrib_0000_0000_v0_0_s_ifspec;

#ifndef __IAttributeSet_INTERFACE_DEFINED__
#define __IAttributeSet_INTERFACE_DEFINED__

/* interface IAttributeSet */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IAttributeSet;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("583ec3cc-4960-4857-982b-41a33ea0a006")
    IAttributeSet : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetAttrib( 
            /* [in] */ GUID guidAttribute,
            /* [in] */ __RPC__in BYTE *pbAttribute,
            /* [in] */ DWORD dwAttributeLength) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IAttributeSetVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IAttributeSet * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IAttributeSet * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IAttributeSet * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetAttrib )( 
            __RPC__in IAttributeSet * This,
            /* [in] */ GUID guidAttribute,
            /* [in] */ __RPC__in BYTE *pbAttribute,
            /* [in] */ DWORD dwAttributeLength);
        
        END_INTERFACE
    } IAttributeSetVtbl;

    interface IAttributeSet
    {
        CONST_VTBL struct IAttributeSetVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IAttributeSet_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IAttributeSet_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IAttributeSet_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IAttributeSet_SetAttrib(This,guidAttribute,pbAttribute,dwAttributeLength)	\
    ( (This)->lpVtbl -> SetAttrib(This,guidAttribute,pbAttribute,dwAttributeLength) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IAttributeSet_INTERFACE_DEFINED__ */


#ifndef __IAttributeGet_INTERFACE_DEFINED__
#define __IAttributeGet_INTERFACE_DEFINED__

/* interface IAttributeGet */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IAttributeGet;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("52dbd1ec-e48f-4528-9232-f442a68f0ae1")
    IAttributeGet : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetCount( 
            /* [out] */ __RPC__out LONG *plCount) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttribIndexed( 
            /* [in] */ LONG lIndex,
            /* [out] */ __RPC__out GUID *pguidAttribute,
            /* [out][in] */ __RPC__inout BYTE *pbAttribute,
            /* [out][in] */ __RPC__inout DWORD *pdwAttributeLength) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttrib( 
            /* [in] */ GUID guidAttribute,
            /* [out][in] */ __RPC__inout BYTE *pbAttribute,
            /* [out][in] */ __RPC__inout DWORD *pdwAttributeLength) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IAttributeGetVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IAttributeGet * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IAttributeGet * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IAttributeGet * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
            __RPC__in IAttributeGet * This,
            /* [out] */ __RPC__out LONG *plCount);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttribIndexed )( 
            __RPC__in IAttributeGet * This,
            /* [in] */ LONG lIndex,
            /* [out] */ __RPC__out GUID *pguidAttribute,
            /* [out][in] */ __RPC__inout BYTE *pbAttribute,
            /* [out][in] */ __RPC__inout DWORD *pdwAttributeLength);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttrib )( 
            __RPC__in IAttributeGet * This,
            /* [in] */ GUID guidAttribute,
            /* [out][in] */ __RPC__inout BYTE *pbAttribute,
            /* [out][in] */ __RPC__inout DWORD *pdwAttributeLength);
        
        END_INTERFACE
    } IAttributeGetVtbl;

    interface IAttributeGet
    {
        CONST_VTBL struct IAttributeGetVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IAttributeGet_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IAttributeGet_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IAttributeGet_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IAttributeGet_GetCount(This,plCount)	\
    ( (This)->lpVtbl -> GetCount(This,plCount) ) 

#define IAttributeGet_GetAttribIndexed(This,lIndex,pguidAttribute,pbAttribute,pdwAttributeLength)	\
    ( (This)->lpVtbl -> GetAttribIndexed(This,lIndex,pguidAttribute,pbAttribute,pdwAttributeLength) ) 

#define IAttributeGet_GetAttrib(This,guidAttribute,pbAttribute,pdwAttributeLength)	\
    ( (This)->lpVtbl -> GetAttrib(This,guidAttribute,pbAttribute,pdwAttributeLength) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IAttributeGet_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_dsattrib_0000_0002 */
/* [local] */ 

// ------------------------------------------------------
// GUID: DSATTRIB_UDCRTag
// ------------------------------------------------------
typedef struct _UDCR_TAG {
    BYTE        bVersion ;
    BYTE        KID [24 + 1] ;
    ULONGLONG   ullBaseCounter ;
    ULONGLONG   ullBaseCounterRange ;
    BOOL        fScrambled ;
    BYTE        bStreamMark ;
    DWORD       dwReserved1 ;
    DWORD       dwReserved2 ;
} UDCR_TAG ;
// ------------------------------------------------------
// GUID: DSATTRIB_PicSampleSeq
// ------------------------------------------------------
// Older defines with mnemonics specific to MPEG-2 video:
#define SAMPLE_SEQ_SEQUENCE_HEADER      1
#define SAMPLE_SEQ_GOP_HEADER           2
#define SAMPLE_SEQ_PICTURE_HEADER       3
// Latest defines with mnemonics generic to MPEG-2 and H.264 video:
#define SAMPLE_SEQ_SEQUENCE_START       SAMPLE_SEQ_SEQUENCE_HEADER
#define SAMPLE_SEQ_SEEK_POINT           SAMPLE_SEQ_GOP_HEADER
#define SAMPLE_SEQ_FRAME_START          SAMPLE_SEQ_PICTURE_HEADER
// Older defines with mnemonics specific to MPEG-2 video:
#define SAMPLE_SEQ_CONTENT_UNKNOWN      0
#define SAMPLE_SEQ_CONTENT_I_FRAME      1
#define SAMPLE_SEQ_CONTENT_P_FRAME      2
#define SAMPLE_SEQ_CONTENT_B_FRAME      3
// Latest defines with mnemonics generic to MPEG-2 and H.264 video:
#define SAMPLE_SEQ_CONTENT_STANDALONE_FRAME      SAMPLE_SEQ_CONTENT_I_FRAME
#define SAMPLE_SEQ_CONTENT_REF_FRAME             SAMPLE_SEQ_CONTENT_P_FRAME
#define SAMPLE_SEQ_CONTENT_NONREF_FRAME          SAMPLE_SEQ_CONTENT_B_FRAME
typedef struct _PIC_SEQ_SAMPLE {
    DWORD
      Content   : 3,    //  SAMPLE_CONTENT_*
      Start     : 1,    //  '1' if the sample is a PictureSampleSequence start
      FrameRate : 4,    //  see below (h.262, table 6-4)
      InvalidVA  : 1,   //  0 normally. 1 if VA attempted but failed
      Reserved   : 19,  //  reserved; shall have value 0
      Version   : 4 ;   //  1 [0 means InvalidVA defaults to 0]
} PIC_SEQ_SAMPLE, *PPIC_SEQ_SAMPLE ;
//      Frame Rate
//          (see h.262, table 6-4)
//
//          0000    reserved (ignore field value)
//          0001    23.976
//          0010    24
//          0011    25
//          0100    29.97
//          0101    30
//          0110    50
//          0111    59.94
//          1000    60
typedef struct _SAMPLE_SEQ_OFFSET {
    DWORD
      Type      : 4,       //  SAMPLE_SEQ_*; 0 means not used
      Offset    : 20,      //  downstream byte offset; 0xfffff means > 2^20-1
      Reserved  : 8 ;      //  reserved; o
} SAMPLE_SEQ_OFFSET ;
#define OFFSET_MARKER_COUNT(attr_len)   \
    ((attr_len - sizeof (PIC_SEQ_SAMPLE)) / sizeof (SAMPLE_SEQ_OFFSET))
#define PIC_SEQ_SAMPLE_ATTR_LEN(cOffsets)   (sizeof (PIC_SEQ_SAMPLE) + (cOffsets) * sizeof (SAMPLE_SEQ_OFFSET))
// ------------------------------------------------------
// GUID: DSATTRIB_OptionalVideoAttributes
// ------------------------------------------------------

typedef enum VA_VIDEO_FORMAT
{
    // Original video format known:

    VA_VIDEO_COMPONENT = 0,
    VA_VIDEO_PAL = 1,
    VA_VIDEO_NTSC = 2,
    VA_VIDEO_SECAM = 3,
    VA_VIDEO_MAC = 4,

    // Original video format not known:

    VA_VIDEO_UNSPECIFIED = 5

    // The MPEG-2 video and H.264 specs reserve values
    // 6 and 7 for future use. 
} VA_VIDEO_FORMAT;

typedef enum VA_COLOR_PRIMARIES
{
    // 0 is reserved by both H.264 and MPEG-2 video

    VA_PRIMARIES_ITU_R_BT_709 = 1,

    // Use this value if the color primaries system is not
    // known or non-standard:

    VA_PRIMARIES_UNSPECIFIED = 2, 

    // 3 is reserved by both H.264 and MPEG-2 video

    VA_PRIMARIES_ITU_R_BT_470_SYSTEM_M = 4,
    VA_PRIMARIES_ITU_R_BT_470_SYSTEM_B_G = 5,
    VA_PRIMARIES_SMPTE_170M = 6,
    VA_PRIMARIES_SMPTE_240M = 7,
    VA_PRIMARIES_H264_GENERIC_FILM = 8

    //  Values in the range 9 to 255 are reserved by H.264. Values in 
    // the range 8 to 255 are reserved by MPEG-2 video
} VA_COLOR_PRIMARIES;

typedef enum VA_TRANSFER_CHARACTERISTICS
{
    // The value 0 is reserved by both MPEG-2 video and H.264

    VA_TRANSFER_CHARACTERISTICS_ITU_R_BT_709 = 1,

    // Use the value below of the transfer characteristics
    // are unknown or non-standard:

    VA_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2, 

    // The value 3 is reserved by both MPEG-2 video and H.264

    VA_TRANSFER_CHARACTERISTICS_ITU_R_BT_470_SYSTEM_M = 4,
    VA_TRANSFER_CHARACTERISTICS_ITU_R_BT_470_SYSTEM_B_G = 5,
    VA_TRANSFER_CHARACTERISTICS_SMPTE_170M = 6,
    VA_TRANSFER_CHARACTERISTICS_SMPTE_240M = 7,
    VA_TRANSFER_CHARACTERISTICS_LINEAR = 8,
    VA_TRANSFER_CHARACTERISTICS_H264_LOG_100_TO_1 = 9,
    VA_TRANSFER_CHARACTERISTICS_H264_LOG_316_TO_1 = 10

    // The values 11 to 255 are reserved by H.264. The values
    // 9 to 255 are reserved by MPEG-2 video.
} VA_TRANSFER_CHARACTERISTICS;

typedef enum VA_MATRIX_COEFFICIENTS
{
    VA_MATRIX_COEFF_H264_RGB = 0,
    VA_MATRIX_COEFF_ITU_R_BT_709 = 1,

    // Use the value below if the matrix coefficients are
    // unknown or non-standard:

    VA_MATRIX_COEFF_UNSPECIFIED = 2,

    // The value 3 is reserved by both MPEG-2 video and H.264

    VA_MATRIX_COEFF_FCC = 4,
    VA_MATRIX_COEFF_ITU_R_BT_470_SYSTEM_B_G = 5,
    VA_MATRIX_COEFF_SMPTE_170M = 6,
    VA_MATRIX_COEFF_SMPTE_240M = 7,
    VA_MATRIX_COEFF_H264_YCgCo = 8

    // The values 9 to 255 are reserved by H.264. The values 8 to 255
    // are reserved by MPEG-2 video.
} VA_MATRIX_COEFFICIENTS;

typedef struct VA_OPTIONAL_VIDEO_PROPERTIES
{
    WORD					dwPictureHeight ;
    WORD		 			dwPictureWidth ;
    WORD					dwAspectRatioX ;
    WORD					dwAspectRatioY ;
    VA_VIDEO_FORMAT			VAVideoFormat;
    VA_COLOR_PRIMARIES 		VAColorPrimaries;
    VA_TRANSFER_CHARACTERISTICS VATransferCharacteristics;
    VA_MATRIX_COEFFICIENTS 	VAMatrixCoefficients;
}  VA_OPTIONAL_VIDEO_PROPERTIES;
// ------------------------------------------------------
// GUID: DSATTRIB_TRANSPORT_PROPERTIES
// ------------------------------------------------------
typedef struct _TRANSPORT_PROPERTIES {
    ULONG               PID ;
    REFERENCE_TIME      PCR ;
    union {
        struct _Others {
            LONGLONG 
                TransportScramblingControl : 8 ,
                Reserved : 56 ;
        } Others ;
        LONGLONG Value ;
    } Fields ;
} TRANSPORT_PROPERTIES ;
// ------------------------------------------------------
// GUID: DSATTRIB_PBDATAG_ATTRIBUTE
// ------------------------------------------------------
typedef struct _PBDA_TAG_ATTRIBUTE {
    GUID                TableUUId ;
    BYTE                TableId ;
    WORD                VersionNo ;
    DWORD               TableDataSize ;
    BYTE                TableData [1] ;
} PBDA_TAG_ATTRIBUTE ;
// ------------------------------------------------------
// GUID: DSATTRIB_CAPTURE_STREAMTIME
// ------------------------------------------------------
typedef struct _CAPTURE_STREAMTIME {
    REFERENCE_TIME      StreamTime ;
} CAPTURE_STREAMTIME ;
// ------------------------------------------------------
// GUID: DSATTRIB_DSHOW_STREAM_DESC
// ------------------------------------------------------
typedef struct _DSHOW_STREAM_DESC {
    DWORD   VersionNo ;
    DWORD   StreamId ;
    BOOL    Default ;
    BOOL    Creation ;
    DWORD   Reserved ;
} DSHOW_STREAM_DESC ;
// ------------------------------------------------------
// GUID: DSATTRIB_SAMPLE_LIVE_STREAM_TIME
// ------------------------------------------------------
typedef struct _SAMPLE_LIVE_STREAM_TIME{
    ULONGLONG qwStreamTime;
    ULONGLONG qwLiveTime;
}SAMPLE_LIVE_STREAM_TIME ;


extern RPC_IF_HANDLE __MIDL_itf_dsattrib_0000_0002_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_dsattrib_0000_0002_v0_0_s_ifspec;

/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif



