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

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


 /* File created by MIDL compiler version 6.00.0357 */
/* Compiler settings for mpeg2data.idl:
    Oicf, W1, Zp8, env=Win32 (32b run)
    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(  )


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#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 __mpeg2data_h__
#define __mpeg2data_h__

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

/* Forward Declarations */ 

#ifndef __IMpeg2Data_FWD_DEFINED__
#define __IMpeg2Data_FWD_DEFINED__
typedef interface IMpeg2Data IMpeg2Data;
#endif 	/* __IMpeg2Data_FWD_DEFINED__ */


#ifndef __ISectionList_FWD_DEFINED__
#define __ISectionList_FWD_DEFINED__
typedef interface ISectionList ISectionList;
#endif 	/* __ISectionList_FWD_DEFINED__ */


#ifndef __IMpeg2Stream_FWD_DEFINED__
#define __IMpeg2Stream_FWD_DEFINED__
typedef interface IMpeg2Stream IMpeg2Stream;
#endif 	/* __IMpeg2Stream_FWD_DEFINED__ */


#ifndef __SectionList_FWD_DEFINED__
#define __SectionList_FWD_DEFINED__

#ifdef __cplusplus
typedef class SectionList SectionList;
#else
typedef struct SectionList SectionList;
#endif /* __cplusplus */

#endif 	/* __SectionList_FWD_DEFINED__ */


#ifndef __Mpeg2Stream_FWD_DEFINED__
#define __Mpeg2Stream_FWD_DEFINED__

#ifdef __cplusplus
typedef class Mpeg2Stream Mpeg2Stream;
#else
typedef struct Mpeg2Stream Mpeg2Stream;
#endif /* __cplusplus */

#endif 	/* __Mpeg2Stream_FWD_DEFINED__ */


#ifndef __Mpeg2Data_FWD_DEFINED__
#define __Mpeg2Data_FWD_DEFINED__

#ifdef __cplusplus
typedef class Mpeg2Data Mpeg2Data;
#else
typedef struct Mpeg2Data Mpeg2Data;
#endif /* __cplusplus */

#endif 	/* __Mpeg2Data_FWD_DEFINED__ */


/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"
#include "bdaiface.h"

#ifdef __cplusplus
extern "C"{
#endif 

void * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void * ); 

/* interface __MIDL_itf_mpeg2data_0000 */
/* [local] */ 


#pragma pack(push)

#pragma pack(1)


#define MPEG_PAT_PID                0x0000
#define MPEG_PAT_TID                0x00
#define MPEG_CAT_PID                0x0001
#define MPEG_CAT_TID                0x01
#define MPEG_PMT_TID                0x02
#define MPEG_TSDT_PID               0x0002
#define MPEG_TSDT_TID               0x03
#define ATSC_MGT_PID                0x1FFB
#define ATSC_MGT_TID                0xC7
#define ATSC_VCT_PID                0x1FFB
#define ATSC_VCT_TERR_TID           0xC8
#define ATSC_VCT_CABL_TID           0xC9
#define ATSC_RRT_PID                0x1FFB
#define ATSC_RRT_TID                0xCA
#define ATSC_EIT_TID                0xCB
#define ATSC_ETT_TID                0xCC
#define ATSC_STT_PID                0x1FFB
#define ATSC_STT_TID                0xCD
#define ATSC_PIT_TID                0xD0
#define DVB_NIT_PID                 0x0010
#define DVB_NIT_ACTUAL_TID          0x40
#define DVB_NIT_OTHER_TID           0x41
#define DVB_SDT_PID                 0x0011
#define DVB_SDT_ACTUAL_TID          0x42
#define DVB_SDT_OTHER_TID           0x46
#define DVB_BAT_PID                 0x0011
#define DVB_BAT_TID                 0x4A
#define DVB_EIT_PID                 0x0012
#define DVB_EIT_ACTUAL_TID          0x4E
#define DVB_EIT_OTHER_TID           0x4F
#define DVB_RST_PID                 0x0013
#define DVB_RST_TID                 0x71
#define DVB_TDT_PID                 0x0014
#define DVB_TDT_TID                 0x70
#define DVB_ST_PID_16               0x0010
#define DVB_ST_PID_17               0x0011
#define DVB_ST_PID_18               0x0012
#define DVB_ST_PID_19               0x0013
#define DVB_ST_PID_20               0x0014
#define DVB_ST_TID                  0x72
#define DVB_TOT_PID                 0x0014
#define DVB_TOT_TID                 0x73
#define DVB_DIT_PID                 0x001E
#define DVB_DIT_TID                 0x7E
#define DVB_SIT_PID                 0x001F
#define DVB_SIT_TID                 0x7F
#define ISDB_DCT_PID                0x0017
#define ISDB_DCT_TID                0xC0
#define ISDB_LIT_PID                0x0020
#define ISDB_LIT_TID                0xD0
#define ISDB_ERT_PID                0x0021
#define ISDB_ERT_TID                0xD1
#define ISDB_ITT_TID                0xD2
#define ISDB_DLT_TID                0xC1
#define ISDB_PCAT_PID               0x0022
#define ISDB_PCAT_TID               0xC2
#define ISDB_SDTT_PID               0x0023
#define ISDB_SDTT_TID               0xC3
class DECLSPEC_UUID("DBAF6C1B-B6A4-4898-AE65-204F0D9509A1") Mpeg2DataLib;


extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0000_v0_0_s_ifspec;


#ifndef __Mpeg2DataLib_LIBRARY_DEFINED__
#define __Mpeg2DataLib_LIBRARY_DEFINED__

/* library Mpeg2DataLib */
/* [version][uuid] */ 

#pragma once

#pragma pack(push)

#pragma pack(1)
typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0001
    {
    WORD Bits;
    } 	PID_BITS_MIDL;

typedef /* [public][public][public][public][public][public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0002
    {
    WORD Bits;
    } 	MPEG_HEADER_BITS_MIDL;

typedef /* [public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0003
    {
    BYTE Bits;
    } 	MPEG_HEADER_VERSION_BITS_MIDL;


#pragma pack(pop)
typedef WORD PID;

typedef BYTE TID;

typedef UINT ClientKey;

typedef /* [public] */ 
enum __MIDL___MIDL_itf_mpeg2data_0000_0004
    {	MPEG_SECTION_IS_NEXT	= 0,
	MPEG_SECTION_IS_CURRENT	= 1
    } 	MPEG_CURRENT_NEXT_BIT;

typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0005
    {
    WORD wTidExt;
    WORD wCount;
    } 	TID_EXTENSION;

typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0005 *PTID_EXTENSION;

typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0006
    {
    TID TableId;
    union 
        {
        MPEG_HEADER_BITS_MIDL S;
        WORD W;
        } 	Header;
    BYTE SectionData[ 1 ];
    } 	SECTION;

typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0006 *PSECTION;

typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0008
    {
    TID TableId;
    union 
        {
        MPEG_HEADER_BITS_MIDL S;
        WORD W;
        } 	Header;
    WORD TableIdExtension;
    union 
        {
        MPEG_HEADER_VERSION_BITS_MIDL S;
        BYTE B;
        } 	Version;
    BYTE SectionNumber;
    BYTE LastSectionNumber;
    BYTE RemainingData[ 1 ];
    } 	LONG_SECTION;

typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0008 *PLONG_SECTION;

typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0011
    {
    TID TableId;
    union 
        {
        MPEG_HEADER_BITS_MIDL S;
        WORD W;
        } 	Header;
    WORD TableIdExtension;
    union 
        {
        MPEG_HEADER_VERSION_BITS_MIDL S;
        BYTE B;
        } 	Version;
    BYTE SectionNumber;
    BYTE LastSectionNumber;
    BYTE ProtocolDiscriminator;
    BYTE DsmccType;
    WORD MessageId;
    DWORD TransactionId;
    BYTE Reserved;
    BYTE AdaptationLength;
    WORD MessageLength;
    BYTE RemainingData[ 1 ];
    } 	DSMCC_SECTION;

typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0011 *PDSMCC_SECTION;

typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0014
    {
    DWORD dwLength;
    PSECTION pSection;
    } 	MPEG_RQST_PACKET;

typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0014 *PMPEG_RQST_PACKET;

typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0015
    {
    WORD wPacketCount;
    PMPEG_RQST_PACKET PacketList[ 1 ];
    } 	MPEG_PACKET_LIST;

typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0015 *PMPEG_PACKET_LIST;

typedef /* [public][public][public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0016
    {
    BOOL fSpecifyProtocol;
    BYTE Protocol;
    BOOL fSpecifyType;
    BYTE Type;
    BOOL fSpecifyMessageId;
    WORD MessageId;
    BOOL fSpecifyTransactionId;
    BOOL fUseTrxIdMessageIdMask;
    DWORD TransactionId;
    BOOL fSpecifyModuleVersion;
    BYTE ModuleVersion;
    BOOL fSpecifyBlockNumber;
    WORD BlockNumber;
    BOOL fGetModuleCall;
    WORD NumberOfBlocksInModule;
    } 	DSMCC_FILTER_OPTIONS;

typedef /* [public][public][public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0017
    {
    BOOL fSpecifyEtmId;
    DWORD EtmId;
    } 	ATSC_FILTER_OPTIONS;

typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0018
    {
    BYTE bVersionNumber;
    WORD wFilterSize;
    BOOL fUseRawFilteringBits;
    BYTE Filter[ 16 ];
    BYTE Mask[ 16 ];
    BOOL fSpecifyTableIdExtension;
    WORD TableIdExtension;
    BOOL fSpecifyVersion;
    BYTE Version;
    BOOL fSpecifySectionNumber;
    BYTE SectionNumber;
    BOOL fSpecifyCurrentNext;
    BOOL fNext;
    BOOL fSpecifyDsmccOptions;
    DSMCC_FILTER_OPTIONS Dsmcc;
    BOOL fSpecifyAtscOptions;
    ATSC_FILTER_OPTIONS Atsc;
    } 	MPEG2_FILTER;

typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0018 *PMPEG2_FILTER;

#define MPEG2_FILTER_VERSION_1_SIZE  124
typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0019
    {
    HRESULT hr;
    DWORD dwDataBufferSize;
    DWORD dwSizeOfDataRead;
    BYTE *pDataBuffer;
    } 	MPEG_STREAM_BUFFER;

typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0019 *PMPEG_STREAM_BUFFER;

typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0020
    {
    BYTE Hours;
    BYTE Minutes;
    BYTE Seconds;
    } 	MPEG_TIME;

typedef MPEG_TIME MPEG_DURATION;

typedef /* [public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0021
    {
    BYTE Date;
    BYTE Month;
    WORD Year;
    } 	MPEG_DATE;

typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0022
    {
    MPEG_DATE D;
    MPEG_TIME T;
    } 	MPEG_DATE_AND_TIME;

typedef /* [public][public][public][public][public][public][public] */ 
enum __MIDL___MIDL_itf_mpeg2data_0000_0023
    {	MPEG_CONTEXT_BCS_DEMUX	= 0,
	MPEG_CONTEXT_WINSOCK	= MPEG_CONTEXT_BCS_DEMUX + 1
    } 	MPEG_CONTEXT_TYPE;

typedef /* [public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0024
    {
    DWORD AVMGraphId;
    } 	MPEG_BCS_DEMUX;

typedef /* [public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0025
    {
    DWORD AVMGraphId;
    } 	MPEG_WINSOCK;

typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0026
    {
    MPEG_CONTEXT_TYPE Type;
    union 
        {
        MPEG_BCS_DEMUX Demux;
        MPEG_WINSOCK Winsock;
        } 	U;
    } 	MPEG_CONTEXT;

typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0026 *PMPEG_CONTEXT;

typedef /* [public][public][public][public][public] */ 
enum __MIDL___MIDL_itf_mpeg2data_0000_0028
    {	MPEG_RQST_UNKNOWN	= 0,
	MPEG_RQST_GET_SECTION	= MPEG_RQST_UNKNOWN + 1,
	MPEG_RQST_GET_SECTION_ASYNC	= MPEG_RQST_GET_SECTION + 1,
	MPEG_RQST_GET_TABLE	= MPEG_RQST_GET_SECTION_ASYNC + 1,
	MPEG_RQST_GET_TABLE_ASYNC	= MPEG_RQST_GET_TABLE + 1,
	MPEG_RQST_GET_SECTIONS_STREAM	= MPEG_RQST_GET_TABLE_ASYNC + 1,
	MPEG_RQST_GET_PES_STREAM	= MPEG_RQST_GET_SECTIONS_STREAM + 1,
	MPEG_RQST_GET_TS_STREAM	= MPEG_RQST_GET_PES_STREAM + 1,
	MPEG_RQST_START_MPE_STREAM	= MPEG_RQST_GET_TS_STREAM + 1
    } 	MPEG_REQUEST_TYPE;

typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0029
    {
    MPEG_REQUEST_TYPE Type;
    MPEG_CONTEXT Context;
    PID Pid;
    TID TableId;
    MPEG2_FILTER Filter;
    DWORD Flags;
    } 	MPEG_SERVICE_REQUEST;

typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0029 *PMPEG_SERVICE_REQUEST;

typedef /* [public] */ struct __MIDL___MIDL_itf_mpeg2data_0000_0030
    {
    DWORD IPAddress;
    WORD Port;
    } 	MPEG_SERVICE_RESPONSE;

typedef struct __MIDL___MIDL_itf_mpeg2data_0000_0030 *PMPEG_SERVICE_RESPONSE;

typedef struct _DSMCC_ELEMENT
    {
    PID pid;
    BYTE bComponentTag;
    DWORD dwCarouselId;
    DWORD dwTransactionId;
    struct _DSMCC_ELEMENT *pNext;
    } 	DSMCC_ELEMENT;

typedef struct _DSMCC_ELEMENT *PDSMCC_ELEMENT;

typedef struct _MPE_ELEMENT
    {
    PID pid;
    BYTE bComponentTag;
    struct _MPE_ELEMENT *pNext;
    } 	MPE_ELEMENT;

typedef struct _MPE_ELEMENT *PMPE_ELEMENT;

typedef struct _MPEG_STREAM_FILTER
    {
    WORD wPidValue;
    DWORD dwFilterSize;
    BOOL fCrcEnabled;
    BYTE rgchFilter[ 16 ];
    BYTE rgchMask[ 16 ];
    } 	MPEG_STREAM_FILTER;


EXTERN_C const IID LIBID_Mpeg2DataLib;

#ifndef __IMpeg2Data_INTERFACE_DEFINED__
#define __IMpeg2Data_INTERFACE_DEFINED__

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


EXTERN_C const IID IID_IMpeg2Data;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("9B396D40-F380-4e3c-A514-1A82BF6EBFE6")
    IMpeg2Data : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetSection( 
            /* [in] */ PID pid,
            /* [in] */ TID tid,
            /* [in] */ PMPEG2_FILTER pFilter,
            /* [in] */ DWORD dwTimeout,
            /* [out] */ ISectionList **ppSectionList) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTable( 
            /* [in] */ PID pid,
            /* [in] */ TID tid,
            /* [in] */ PMPEG2_FILTER pFilter,
            /* [in] */ DWORD dwTimeout,
            /* [out] */ ISectionList **ppSectionList) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetStreamOfSections( 
            /* [in] */ PID pid,
            /* [in] */ TID tid,
            /* [in] */ PMPEG2_FILTER pFilter,
            /* [in] */ HANDLE hDataReadyEvent,
            /* [out] */ IMpeg2Stream **ppMpegStream) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMpeg2DataVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMpeg2Data * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMpeg2Data * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMpeg2Data * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetSection )( 
            IMpeg2Data * This,
            /* [in] */ PID pid,
            /* [in] */ TID tid,
            /* [in] */ PMPEG2_FILTER pFilter,
            /* [in] */ DWORD dwTimeout,
            /* [out] */ ISectionList **ppSectionList);
        
        HRESULT ( STDMETHODCALLTYPE *GetTable )( 
            IMpeg2Data * This,
            /* [in] */ PID pid,
            /* [in] */ TID tid,
            /* [in] */ PMPEG2_FILTER pFilter,
            /* [in] */ DWORD dwTimeout,
            /* [out] */ ISectionList **ppSectionList);
        
        HRESULT ( STDMETHODCALLTYPE *GetStreamOfSections )( 
            IMpeg2Data * This,
            /* [in] */ PID pid,
            /* [in] */ TID tid,
            /* [in] */ PMPEG2_FILTER pFilter,
            /* [in] */ HANDLE hDataReadyEvent,
            /* [out] */ IMpeg2Stream **ppMpegStream);
        
        END_INTERFACE
    } IMpeg2DataVtbl;

    interface IMpeg2Data
    {
        CONST_VTBL struct IMpeg2DataVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#define IMpeg2Data_GetSection(This,pid,tid,pFilter,dwTimeout,ppSectionList)	\
    (This)->lpVtbl -> GetSection(This,pid,tid,pFilter,dwTimeout,ppSectionList)

#define IMpeg2Data_GetTable(This,pid,tid,pFilter,dwTimeout,ppSectionList)	\
    (This)->lpVtbl -> GetTable(This,pid,tid,pFilter,dwTimeout,ppSectionList)

#define IMpeg2Data_GetStreamOfSections(This,pid,tid,pFilter,hDataReadyEvent,ppMpegStream)	\
    (This)->lpVtbl -> GetStreamOfSections(This,pid,tid,pFilter,hDataReadyEvent,ppMpegStream)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IMpeg2Data_GetSection_Proxy( 
    IMpeg2Data * This,
    /* [in] */ PID pid,
    /* [in] */ TID tid,
    /* [in] */ PMPEG2_FILTER pFilter,
    /* [in] */ DWORD dwTimeout,
    /* [out] */ ISectionList **ppSectionList);


void __RPC_STUB IMpeg2Data_GetSection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IMpeg2Data_GetTable_Proxy( 
    IMpeg2Data * This,
    /* [in] */ PID pid,
    /* [in] */ TID tid,
    /* [in] */ PMPEG2_FILTER pFilter,
    /* [in] */ DWORD dwTimeout,
    /* [out] */ ISectionList **ppSectionList);


void __RPC_STUB IMpeg2Data_GetTable_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IMpeg2Data_GetStreamOfSections_Proxy( 
    IMpeg2Data * This,
    /* [in] */ PID pid,
    /* [in] */ TID tid,
    /* [in] */ PMPEG2_FILTER pFilter,
    /* [in] */ HANDLE hDataReadyEvent,
    /* [out] */ IMpeg2Stream **ppMpegStream);


void __RPC_STUB IMpeg2Data_GetStreamOfSections_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IMpeg2Data_INTERFACE_DEFINED__ */


#ifndef __ISectionList_INTERFACE_DEFINED__
#define __ISectionList_INTERFACE_DEFINED__

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


EXTERN_C const IID IID_ISectionList;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("AFEC1EB5-2A64-46c6-BF4B-AE3CCB6AFDB0")
    ISectionList : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ MPEG_REQUEST_TYPE requestType,
            /* [in] */ IMpeg2Data *pMpeg2Data,
            /* [in] */ PMPEG_CONTEXT pContext,
            /* [in] */ PID pid,
            /* [in] */ TID tid,
            /* [in] */ PMPEG2_FILTER pFilter,
            /* [in] */ DWORD timeout,
            /* [in] */ HANDLE hDoneEvent) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE InitializeWithRawSections( 
            /* [in] */ PMPEG_PACKET_LIST pmplSections) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CancelPendingRequest( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNumberOfSections( 
            /* [out] */ WORD *pCount) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSectionData( 
            /* [in] */ WORD sectionNumber,
            /* [out] */ DWORD *pdwRawPacketLength,
            /* [out] */ PSECTION *ppSection) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetProgramIdentifier( 
            PID *pPid) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTableIdentifier( 
            TID *pTableId) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISectionListVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ISectionList * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ISectionList * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ISectionList * This);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            ISectionList * This,
            /* [in] */ MPEG_REQUEST_TYPE requestType,
            /* [in] */ IMpeg2Data *pMpeg2Data,
            /* [in] */ PMPEG_CONTEXT pContext,
            /* [in] */ PID pid,
            /* [in] */ TID tid,
            /* [in] */ PMPEG2_FILTER pFilter,
            /* [in] */ DWORD timeout,
            /* [in] */ HANDLE hDoneEvent);
        
        HRESULT ( STDMETHODCALLTYPE *InitializeWithRawSections )( 
            ISectionList * This,
            /* [in] */ PMPEG_PACKET_LIST pmplSections);
        
        HRESULT ( STDMETHODCALLTYPE *CancelPendingRequest )( 
            ISectionList * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetNumberOfSections )( 
            ISectionList * This,
            /* [out] */ WORD *pCount);
        
        HRESULT ( STDMETHODCALLTYPE *GetSectionData )( 
            ISectionList * This,
            /* [in] */ WORD sectionNumber,
            /* [out] */ DWORD *pdwRawPacketLength,
            /* [out] */ PSECTION *ppSection);
        
        HRESULT ( STDMETHODCALLTYPE *GetProgramIdentifier )( 
            ISectionList * This,
            PID *pPid);
        
        HRESULT ( STDMETHODCALLTYPE *GetTableIdentifier )( 
            ISectionList * This,
            TID *pTableId);
        
        END_INTERFACE
    } ISectionListVtbl;

    interface ISectionList
    {
        CONST_VTBL struct ISectionListVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#define ISectionList_Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,timeout,hDoneEvent)	\
    (This)->lpVtbl -> Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,timeout,hDoneEvent)

#define ISectionList_InitializeWithRawSections(This,pmplSections)	\
    (This)->lpVtbl -> InitializeWithRawSections(This,pmplSections)

#define ISectionList_CancelPendingRequest(This)	\
    (This)->lpVtbl -> CancelPendingRequest(This)

#define ISectionList_GetNumberOfSections(This,pCount)	\
    (This)->lpVtbl -> GetNumberOfSections(This,pCount)

#define ISectionList_GetSectionData(This,sectionNumber,pdwRawPacketLength,ppSection)	\
    (This)->lpVtbl -> GetSectionData(This,sectionNumber,pdwRawPacketLength,ppSection)

#define ISectionList_GetProgramIdentifier(This,pPid)	\
    (This)->lpVtbl -> GetProgramIdentifier(This,pPid)

#define ISectionList_GetTableIdentifier(This,pTableId)	\
    (This)->lpVtbl -> GetTableIdentifier(This,pTableId)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE ISectionList_Initialize_Proxy( 
    ISectionList * This,
    /* [in] */ MPEG_REQUEST_TYPE requestType,
    /* [in] */ IMpeg2Data *pMpeg2Data,
    /* [in] */ PMPEG_CONTEXT pContext,
    /* [in] */ PID pid,
    /* [in] */ TID tid,
    /* [in] */ PMPEG2_FILTER pFilter,
    /* [in] */ DWORD timeout,
    /* [in] */ HANDLE hDoneEvent);


void __RPC_STUB ISectionList_Initialize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE ISectionList_InitializeWithRawSections_Proxy( 
    ISectionList * This,
    /* [in] */ PMPEG_PACKET_LIST pmplSections);


void __RPC_STUB ISectionList_InitializeWithRawSections_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE ISectionList_CancelPendingRequest_Proxy( 
    ISectionList * This);


void __RPC_STUB ISectionList_CancelPendingRequest_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE ISectionList_GetNumberOfSections_Proxy( 
    ISectionList * This,
    /* [out] */ WORD *pCount);


void __RPC_STUB ISectionList_GetNumberOfSections_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE ISectionList_GetSectionData_Proxy( 
    ISectionList * This,
    /* [in] */ WORD sectionNumber,
    /* [out] */ DWORD *pdwRawPacketLength,
    /* [out] */ PSECTION *ppSection);


void __RPC_STUB ISectionList_GetSectionData_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE ISectionList_GetProgramIdentifier_Proxy( 
    ISectionList * This,
    PID *pPid);


void __RPC_STUB ISectionList_GetProgramIdentifier_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE ISectionList_GetTableIdentifier_Proxy( 
    ISectionList * This,
    TID *pTableId);


void __RPC_STUB ISectionList_GetTableIdentifier_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ISectionList_INTERFACE_DEFINED__ */


#ifndef __IMpeg2Stream_INTERFACE_DEFINED__
#define __IMpeg2Stream_INTERFACE_DEFINED__

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


EXTERN_C const IID IID_IMpeg2Stream;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("400CC286-32A0-4ce4-9041-39571125A635")
    IMpeg2Stream : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ MPEG_REQUEST_TYPE requestType,
            /* [in] */ IMpeg2Data *pMpeg2Data,
            /* [in] */ PMPEG_CONTEXT pContext,
            /* [in] */ PID pid,
            /* [in] */ TID tid,
            /* [in] */ PMPEG2_FILTER pFilter,
            /* [in] */ HANDLE hDataReadyEvent) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SupplyDataBuffer( 
            /* [in] */ PMPEG_STREAM_BUFFER pStreamBuffer) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMpeg2StreamVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMpeg2Stream * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMpeg2Stream * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMpeg2Stream * This);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IMpeg2Stream * This,
            /* [in] */ MPEG_REQUEST_TYPE requestType,
            /* [in] */ IMpeg2Data *pMpeg2Data,
            /* [in] */ PMPEG_CONTEXT pContext,
            /* [in] */ PID pid,
            /* [in] */ TID tid,
            /* [in] */ PMPEG2_FILTER pFilter,
            /* [in] */ HANDLE hDataReadyEvent);
        
        HRESULT ( STDMETHODCALLTYPE *SupplyDataBuffer )( 
            IMpeg2Stream * This,
            /* [in] */ PMPEG_STREAM_BUFFER pStreamBuffer);
        
        END_INTERFACE
    } IMpeg2StreamVtbl;

    interface IMpeg2Stream
    {
        CONST_VTBL struct IMpeg2StreamVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


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

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

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


#define IMpeg2Stream_Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,hDataReadyEvent)	\
    (This)->lpVtbl -> Initialize(This,requestType,pMpeg2Data,pContext,pid,tid,pFilter,hDataReadyEvent)

#define IMpeg2Stream_SupplyDataBuffer(This,pStreamBuffer)	\
    (This)->lpVtbl -> SupplyDataBuffer(This,pStreamBuffer)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IMpeg2Stream_Initialize_Proxy( 
    IMpeg2Stream * This,
    /* [in] */ MPEG_REQUEST_TYPE requestType,
    /* [in] */ IMpeg2Data *pMpeg2Data,
    /* [in] */ PMPEG_CONTEXT pContext,
    /* [in] */ PID pid,
    /* [in] */ TID tid,
    /* [in] */ PMPEG2_FILTER pFilter,
    /* [in] */ HANDLE hDataReadyEvent);


void __RPC_STUB IMpeg2Stream_Initialize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IMpeg2Stream_SupplyDataBuffer_Proxy( 
    IMpeg2Stream * This,
    /* [in] */ PMPEG_STREAM_BUFFER pStreamBuffer);


void __RPC_STUB IMpeg2Stream_SupplyDataBuffer_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IMpeg2Stream_INTERFACE_DEFINED__ */


EXTERN_C const CLSID CLSID_SectionList;

#ifdef __cplusplus

class DECLSPEC_UUID("73DA5D04-4347-45d3-A9DC-FAE9DDBE558D")
SectionList;
#endif

EXTERN_C const CLSID CLSID_Mpeg2Stream;

#ifdef __cplusplus

class DECLSPEC_UUID("F91D96C7-8509-4d0b-AB26-A0DD10904BB7")
Mpeg2Stream;
#endif

EXTERN_C const CLSID CLSID_Mpeg2Data;

#ifdef __cplusplus

class DECLSPEC_UUID("C666E115-BB62-4027-A113-82D643FE2D99")
Mpeg2Data;
#endif
#endif /* __Mpeg2DataLib_LIBRARY_DEFINED__ */

/* interface __MIDL_itf_mpeg2data_0432 */
/* [local] */ 


#pragma pack(pop)


extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0432_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_mpeg2data_0432_v0_0_s_ifspec;

/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif