]> git.sesse.net Git - vlc/blobdiff - modules/access/bda/bdadefs.h
Use var_InheritString for --decklink-video-connection.
[vlc] / modules / access / bda / bdadefs.h
index 3d9632999e0534d13ac96a68d99d1de6ea463d20..931326c4d56de5accda710f327dcdce4f054f9bf 100644 (file)
@@ -3,7 +3,7 @@
  *****************************************************************************
  * Copyright (C) 2007 the VideoLAN team
  *
- * Author: Ken Self <kens@campoz.fslife.co.uk>
+ * Author: Ken Self <kenself(at)optusnet(dot)com(dot)au>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
+class IDigitalCableTuneRequest;
+class IDigitalCableLocator;
 class IATSCChannelTuneRequest;
 class IATSCLocator;
+class IBDA_DeviceControl;
+class IBDA_FrequencyFilter;
+class IBDA_SignalStatistics;
+class IBDA_Topology;
 class IChannelTuneRequest;
 class IComponent;
 class IComponents;
@@ -46,6 +52,14 @@ class ITuneRequest;
 class ITuningSpace;
 class ITuningSpaceContainer;
 class ITuningSpaces;
+class IMpeg2Data;
+class IGuideData;
+class IGuideDataEvent;
+class ISectionList;
+class IEnumTuneRequests;
+class IEnumGuideDataProperties;
+class IGuideDataProperty;
+class IMpeg2Stream;
 
 typedef enum BinaryConvolutionCodeRate
 {
@@ -80,10 +94,10 @@ typedef enum ComponentStatus
 } ComponentStatus;
 
 typedef enum DVBSystemType
-{\r
-    DVB_Cable,\r
-    DVB_Terrestrial,\r
-    DVB_Satellite,\r
+{
+    DVB_Cable,
+    DVB_Terrestrial,
+    DVB_Satellite,
 } DVBSystemType;
 
 typedef enum FECMethod
@@ -161,13 +175,13 @@ typedef enum Polarisation
 } Polarisation;
 
 typedef enum SpectralInversion
-{\r
-    BDA_SPECTRAL_INVERSION_NOT_SET = -1,\r
-    BDA_SPECTRAL_INVERSION_NOT_DEFINED = 0,\r
-    BDA_SPECTRAL_INVERSION_AUTOMATIC = 1,\r
-    BDA_SPECTRAL_INVERSION_NORMAL,\r
-    BDA_SPECTRAL_INVERSION_INVERTED,\r
-    BDA_SPECTRAL_INVERSION_MAX\r
+{
+    BDA_SPECTRAL_INVERSION_NOT_SET = -1,
+    BDA_SPECTRAL_INVERSION_NOT_DEFINED = 0,
+    BDA_SPECTRAL_INVERSION_AUTOMATIC = 1,
+    BDA_SPECTRAL_INVERSION_NORMAL,
+    BDA_SPECTRAL_INVERSION_INVERTED,
+    BDA_SPECTRAL_INVERSION_MAX
 } SpectralInversion;
 
 typedef enum TransmissionMode
@@ -179,6 +193,27 @@ typedef enum TransmissionMode
     BDA_XMIT_MODE_MAX,
 } TransmissionMode;
 
+typedef struct _BDANODE_DESCRIPTOR
+{
+    ULONG               ulBdaNodeType;
+    GUID                guidFunction;
+    GUID                guidName;
+} BDANODE_DESCRIPTOR, *PBDANODE_DESCRIPTOR;
+
+typedef struct _BDA_TEMPLATE_CONNECTION
+{
+    ULONG   FromNodeType;
+    ULONG   FromNodePinType;
+    ULONG   ToNodeType;
+    ULONG   ToNodePinType;
+} BDA_TEMPLATE_CONNECTION, *PBDA_TEMPLATE_CONNECTION;
+
+typedef struct _BDA_TEMPLATE_PIN_JOINT
+{
+    ULONG   uliTemplateConnection;
+    ULONG   ulcInstancesMax;
+} BDA_TEMPLATE_PIN_JOINT, *PBDA_TEMPLATE_PIN_JOINT;
+
 class IComponent : public IDispatch
 {
 public:
@@ -284,7 +319,8 @@ public:
     virtual HRESULT __stdcall get_TuningSpace(
         ITuningSpace** p_p_tuning_space )=0;
     virtual HRESULT __stdcall put_TuningSpace( ITuningSpace* p_tuning_space )=0;
-    virtual HRESULT __stdcall EnumTuningSpaces( IEnumTuningSpaces** p_p_enum )=0;
+    virtual HRESULT __stdcall EnumTuningSpaces(
+       IEnumTuningSpaces** p_p_enum )=0;
     virtual HRESULT __stdcall get_TuneRequest(
         ITuneRequest** p_p_tune_request )=0;
     virtual HRESULT __stdcall put_TuneRequest( ITuneRequest* p_tune_request )=0;
@@ -357,6 +393,15 @@ public:
     virtual HRESULT __stdcall put_MinorChannel( long l_minor_channel )=0;
 };
 
+class IDigitalCableTuneRequest : public IATSCChannelTuneRequest
+{
+public:
+    virtual HRESULT __stdcall get_MajorChannel( long* pl_major_channel )=0;
+    virtual HRESULT __stdcall put_MajorChannel( long l_major_channel )=0;
+    virtual HRESULT __stdcall get_SourceID( long* pl_source_id )=0;
+    virtual HRESULT __stdcall put_SourceID( long l_source_id )=0;
+};
+
 class IDVBTuneRequest : public ITuneRequest
 {
 public:
@@ -401,6 +446,18 @@ public:
     virtual HRESULT __stdcall put_TSID( long l_tsid )=0;
 };
 
+class IATSCLocator2 : public IATSCLocator
+{
+public:
+    virtual HRESULT __stdcall get_ProgramNumber( long* pl_prog_number )=0;
+    virtual HRESULT __stdcall put_ProgramNumber( long l_prog_number )=0;
+};
+
+class IDigitalCableLocator : public IATSCLocator2
+{
+public:
+};
+
 class IDVBCLocator : public ILocator
 {
 public:
@@ -473,35 +530,35 @@ public:
     virtual HRESULT __stdcall Clone( ITuningSpace** p_p_tuning_space )=0;
 };
 
-class IDVBTuningSpace : public ITuningSpace\r
-{\r
-public:\r
-    virtual HRESULT __stdcall get_SystemType( DVBSystemType* p_sys_type )=0;\r
-    virtual HRESULT __stdcall put_SystemType( DVBSystemType sys_type )=0;\r
-};\r
-
-class IDVBTuningSpace2 : public IDVBTuningSpace\r
-{\r
-public:\r
-    virtual HRESULT __stdcall get_NetworkID( long* p_l_network_id )=0;\r
-    virtual HRESULT __stdcall put_NetworkID( long l_network_id )=0;\r
-};
-\r
-class IDVBSTuningSpace : public IDVBTuningSpace2\r
-{\r
-public:\r
-    virtual HRESULT __stdcall get_LowOscillator( long* p_l_low_osc )=0;\r
-    virtual HRESULT __stdcall put_LowOscillator( long l_low_osc )=0;\r
-    virtual HRESULT __stdcall get_HighOscillator( long* p_l_high_osc )=0;\r
-    virtual HRESULT __stdcall put_HighOscillator( long l_high_osc )=0;\r
-    virtual HRESULT __stdcall get_LNBSwitch( long* p_l_lnb_switch )=0;\r
-    virtual HRESULT __stdcall put_LNBSwitch( long l_lnb_switch )=0;\r
-    virtual HRESULT __stdcall get_InputRange( BSTR* p_bstr_input_range )=0;\r
-    virtual HRESULT __stdcall put_InputRange( BSTR bstr_input_range )=0;\r
+class IDVBTuningSpace : public ITuningSpace
+{
+public:
+    virtual HRESULT __stdcall get_SystemType( DVBSystemType* p_sys_type )=0;
+    virtual HRESULT __stdcall put_SystemType( DVBSystemType sys_type )=0;
+};
+
+class IDVBTuningSpace2 : public IDVBTuningSpace
+{
+public:
+    virtual HRESULT __stdcall get_NetworkID( long* p_l_network_id )=0;
+    virtual HRESULT __stdcall put_NetworkID( long l_network_id )=0;
+};
+
+class IDVBSTuningSpace : public IDVBTuningSpace2
+{
+public:
+    virtual HRESULT __stdcall get_LowOscillator( long* p_l_low_osc )=0;
+    virtual HRESULT __stdcall put_LowOscillator( long l_low_osc )=0;
+    virtual HRESULT __stdcall get_HighOscillator( long* p_l_high_osc )=0;
+    virtual HRESULT __stdcall put_HighOscillator( long l_high_osc )=0;
+    virtual HRESULT __stdcall get_LNBSwitch( long* p_l_lnb_switch )=0;
+    virtual HRESULT __stdcall put_LNBSwitch( long l_lnb_switch )=0;
+    virtual HRESULT __stdcall get_InputRange( BSTR* p_bstr_input_range )=0;
+    virtual HRESULT __stdcall put_InputRange( BSTR bstr_input_range )=0;
     virtual HRESULT __stdcall get_SpectralInversion(
-        SpectralInversion* p_spectral_inv )=0;\r
+        SpectralInversion* p_spectral_inv )=0;
     virtual HRESULT __stdcall put_SpectralInversion(
-        SpectralInversion spectral_inv )=0;\r
+        SpectralInversion spectral_inv )=0;
 };
 
 class ITuningSpaceContainer : public IDispatch
@@ -541,52 +598,430 @@ public:
         IEnumTuningSpaces** p_p_enum )=0;
 };
 
+class IBDA_DeviceControl : public IUnknown
+{
+public:
+    virtual HRESULT __stdcall StartChanges( void )=0;
+    virtual HRESULT __stdcall CheckChanges( void )=0;
+    virtual HRESULT __stdcall CommitChanges( void )=0;
+    virtual HRESULT __stdcall GetChangeState( ULONG *pState )=0;
+};
+
+class IBDA_FrequencyFilter : public IUnknown
+{
+public:
+    virtual HRESULT __stdcall put_Autotune( ULONG ulTransponder )=0;
+    virtual HRESULT __stdcall get_Autotune( ULONG *pulTransponder )=0;
+    virtual HRESULT __stdcall put_Frequency( ULONG ulFrequency )=0;
+    virtual HRESULT __stdcall get_Frequency( ULONG *pulFrequency )=0;
+    virtual HRESULT __stdcall put_Polarity( Polarisation Polarity )=0;
+    virtual HRESULT __stdcall get_Polarity( Polarisation *pPolarity )=0;
+    virtual HRESULT __stdcall put_Range( ULONG ulRange )=0;
+    virtual HRESULT __stdcall get_Range( ULONG *pulRange )=0;
+    virtual HRESULT __stdcall put_Bandwidth( ULONG ulBandwidth )=0;
+    virtual HRESULT __stdcall get_Bandwidth( ULONG *pulBandwidth )=0;
+    virtual HRESULT __stdcall put_FrequencyMultiplier( ULONG ulMultiplier )=0;
+    virtual HRESULT __stdcall get_FrequencyMultiplier(
+        ULONG *pulMultiplier )=0;
+};
+
+class IBDA_SignalStatistics : public IUnknown
+{
+public:
+    virtual HRESULT __stdcall put_SignalStrength( LONG lDbStrength )=0;
+    virtual HRESULT __stdcall get_SignalStrength( LONG *plDbStrength )=0;
+    virtual HRESULT __stdcall put_SignalQuality( LONG lPercentQuality )=0;
+    virtual HRESULT __stdcall get_SignalQuality( LONG *plPercentQuality )=0;
+    virtual HRESULT __stdcall put_SignalPresent( BOOLEAN fPresent )=0;
+    virtual HRESULT __stdcall get_SignalPresent( BOOLEAN *pfPresent )=0;
+    virtual HRESULT __stdcall put_SignalLocked( BOOLEAN fLocked )=0;
+    virtual HRESULT __stdcall get_SignalLocked( BOOLEAN *pfLocked )=0;
+    virtual HRESULT __stdcall put_SampleTime( LONG lmsSampleTime )=0;
+    virtual HRESULT __stdcall get_SampleTime( LONG *plmsSampleTime )=0;
+};
+
+class IBDA_Topology : public IUnknown
+{
+public:
+    virtual HRESULT __stdcall GetNodeTypes( ULONG *pulcNodeTypes,
+        ULONG ulcNodeTypesMax, ULONG rgulNodeTypes[] )=0;
+    virtual HRESULT __stdcall GetNodeDescriptors( ULONG *ulcNodeDescriptors,
+        ULONG ulcNodeDescriptorsMax,
+        BDANODE_DESCRIPTOR rgNodeDescriptors[] )=0;
+    virtual HRESULT __stdcall GetNodeInterfaces( ULONG ulNodeType,
+        ULONG *pulcInterfaces, ULONG ulcInterfacesMax,
+        GUID rgguidInterfaces[] )=0;
+    virtual HRESULT __stdcall GetPinTypes( ULONG *pulcPinTypes,
+        ULONG ulcPinTypesMax, ULONG rgulPinTypes[] )=0;
+    virtual HRESULT __stdcall GetTemplateConnections( ULONG *pulcConnections,
+        ULONG ulcConnectionsMax, BDA_TEMPLATE_CONNECTION rgConnections[] )=0;
+    virtual HRESULT __stdcall CreatePin( ULONG ulPinType, ULONG *pulPinId )=0;
+    virtual HRESULT __stdcall DeletePin( ULONG ulPinId )=0;
+    virtual HRESULT __stdcall SetMediaType( ULONG ulPinId,
+       AM_MEDIA_TYPE *pMediaType )=0;
+    virtual HRESULT __stdcall SetMedium( ULONG ulPinId,
+       REGPINMEDIUM *pMedium )=0;
+    virtual HRESULT __stdcall CreateTopology( ULONG ulInputPinId,
+       ULONG ulOutputPinId )=0;
+    virtual HRESULT __stdcall GetControlNode( ULONG ulInputPinId,
+        ULONG ulOutputPinId, ULONG ulNodeType, IUnknown **ppControlNode )=0;
+};
+
+typedef struct _MPEG_HEADER_BITS_MIDL
+{
+    WORD Bits;
+} MPEG_HEADER_BITS_MIDL;
+
+typedef struct _MPEG_HEADER_VERSION_BITS_MIDL
+{
+    BYTE Bits;
+} MPEG_HEADER_VERSION_BITS_MIDL;
+
+typedef WORD PID;
+
+typedef BYTE TID;
+
+typedef struct _SECTION
+{
+    TID TableId;
+    union
+    {
+        MPEG_HEADER_BITS_MIDL S;
+        WORD W;
+    } Header;
+    BYTE SectionData[ 1 ];
+} SECTION, *PSECTION;
+
+typedef struct _LONG_SECTION
+{
+    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 _MPEG_BCS_DEMUX
+{
+    DWORD AVMGraphId;
+} MPEG_BCS_DEMUX;
+
+typedef struct _MPEG_WINSOC
+{
+    DWORD AVMGraphId;
+} MPEG_WINSOCK;
+
+typedef enum
+{
+    MPEG_CONTEXT_BCS_DEMUX = 0,
+    MPEG_CONTEXT_WINSOCK = MPEG_CONTEXT_BCS_DEMUX + 1
+} MPEG_CONTEXT_TYPE;
+
+typedef struct _MPEG_RQST_PACKET
+{
+    DWORD dwLength;
+    PSECTION pSection;
+} MPEG_RQST_PACKET, *PMPEG_RQST_PACKET;
+
+typedef struct _MPEG_PACKET_LIST
+{
+    WORD wPacketCount;
+    PMPEG_RQST_PACKET PacketList[ 1 ];
+} MPEG_PACKET_LIST, *PMPEG_PACKET_LIST;
+
+typedef struct _DSMCC_FILTER_OPTIONS
+{
+    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 struct _ATSC_FILTER_OPTIONS
+{
+    BOOL fSpecifyEtmId;
+    DWORD EtmId;
+} ATSC_FILTER_OPTIONS;
+
+typedef struct _MPEG_STREAM_BUFFER
+{
+    HRESULT hr;
+    DWORD dwDataBufferSize;
+    DWORD dwSizeOfDataRead;
+    BYTE *pDataBuffer;
+} MPEG_STREAM_BUFFER, *PMPEG_STREAM_BUFFER;
+
+typedef struct _MPEG_CONTEXT
+{
+    MPEG_CONTEXT_TYPE Type;
+    union
+    {
+        MPEG_BCS_DEMUX Demux;
+        MPEG_WINSOCK Winsock;
+    } U;
+} MPEG_CONTEXT, *PMPEG_CONTEXT;
+
+typedef enum
+{
+   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 struct _MPEG2_FILTER
+{
+    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, *PMPEG2_FILTER;
+
+typedef struct _MPEG_HEADER_BITS
+{
+    WORD SectionLength          : 12;
+    WORD Reserved               :  2;
+    WORD PrivateIndicator       :  1;
+    WORD SectionSyntaxIndicator :  1;
+} MPEG_HEADER_BITS, *PMPEG_HEADER_BITS;
+
+typedef struct _MPEG_HEADER_VERSION_BITS
+{
+    BYTE CurrentNextIndicator : 1;
+    BYTE VersionNumber        : 5;
+    BYTE Reserved             : 2;
+} MPEG_HEADER_VERSION_BITS, *PMPEG_HEADER_VERSION_BITS;
+
+class IMpeg2Data : public IUnknown
+{
+public:
+    virtual HRESULT __stdcall GetSection( PID pid, TID tid,
+        PMPEG2_FILTER pFilter, DWORD dwTimeout,
+        ISectionList **ppSectionList )=0;
+    virtual HRESULT __stdcall GetTable( PID pid, TID tid, PMPEG2_FILTER pFilter,
+        DWORD dwTimeout, ISectionList **ppSectionList )=0;
+    virtual HRESULT __stdcall GetStreamOfSections( PID pid, TID tid,
+        PMPEG2_FILTER pFilter, HANDLE hDataReadyEvent,
+        IMpeg2Stream **ppMpegStream )=0;
+};
+
+class IGuideData : public IUnknown
+{
+public:
+    virtual HRESULT __stdcall GetServices(
+        IEnumTuneRequests **ppEnumTuneRequestslass )=0;
+    virtual HRESULT __stdcall GetServiceProperties(
+        ITuneRequest *pTuneRequest,
+        IEnumGuideDataProperties **ppEnumProperties )=0;
+    virtual HRESULT __stdcall GetGuideProgramIDs(
+        IEnumVARIANT **pEnumPrograms )=0;
+    virtual HRESULT __stdcall GetProgramProperties(
+        VARIANT varProgramDescriptionID,
+        IEnumGuideDataProperties **ppEnumProperties )=0;
+    virtual HRESULT __stdcall GetScheduleEntryIDs(
+        IEnumVARIANT **pEnumScheduleEntries )=0;
+    virtual HRESULT __stdcall GetScheduleEntryProperties(
+        VARIANT varScheduleEntryDescriptionID,
+        IEnumGuideDataProperties **ppEnumProperties )=0;
+};
+
+class IGuideDataEvent : public IUnknown
+{
+public:
+    virtual HRESULT __stdcall GuideDataAcquired( void )=0;
+    virtual HRESULT __stdcall ProgramChanged(
+        VARIANT varProgramDescriptionID )=0;
+    virtual HRESULT __stdcall ServiceChanged(
+        VARIANT varServiceDescriptionID )=0;
+    virtual HRESULT __stdcall ScheduleEntryChanged(
+        VARIANT varScheduleEntryDescriptionID )=0;
+    virtual HRESULT __stdcall ProgramDeleted(
+        VARIANT varProgramDescriptionID )=0;
+    virtual HRESULT __stdcall ServiceDeleted(
+        VARIANT varServiceDescriptionID )=0;
+    virtual HRESULT __stdcall ScheduleDeleted(
+            VARIANT varScheduleEntryDescriptionID )=0;
+};
+
+class IGuideDataProperty : public IUnknown
+{
+public:
+    virtual  HRESULT __stdcall get_Name( BSTR *pbstrName )=0;
+    virtual  HRESULT __stdcall get_Language( long *idLang )=0;
+    virtual  HRESULT __stdcall get_Value( VARIANT *pvar )=0;
+};
+
+class IMpeg2Stream : public IUnknown
+{
+public:
+    virtual HRESULT __stdcall Initialize( MPEG_REQUEST_TYPE requestType,
+        IMpeg2Data *pMpeg2Data, PMPEG_CONTEXT pContext, PID pid, TID tid,
+        PMPEG2_FILTER pFilter, HANDLE hDataReadyEvent )=0;
+    virtual HRESULT __stdcall SupplyDataBuffer(
+        PMPEG_STREAM_BUFFER pStreamBuffer )=0;
+};
+
+class ISectionList : public IUnknown
+{
+public:
+    virtual HRESULT __stdcall Initialize( MPEG_REQUEST_TYPE requestType,
+        IMpeg2Data *pMpeg2Data, PMPEG_CONTEXT pContext, PID pid, TID tid,
+        PMPEG2_FILTER pFilter, DWORD timeout, HANDLE hDoneEvent )=0;
+    virtual HRESULT __stdcall InitializeWithRawSections(
+        PMPEG_PACKET_LIST pmplSections )=0;
+    virtual HRESULT __stdcall CancelPendingRequest( void )=0;
+    virtual HRESULT __stdcall GetNumberOfSections( WORD *pCount )=0;
+    virtual HRESULT __stdcall GetSectionData( WORD sectionNumber,
+        DWORD *pdwRawPacketLength, PSECTION *ppSection )=0;
+    virtual HRESULT __stdcall GetProgramIdentifier( PID *pPid )=0;
+    virtual HRESULT __stdcall GetTableIdentifier( TID *pTableId )=0;
+};
+
+class IEnumGuideDataProperties : public IUnknown
+{
+public:
+    virtual HRESULT __stdcall Next( unsigned long celt,
+        IGuideDataProperty **ppprop, unsigned long *pcelt )=0;
+    virtual HRESULT __stdcall Skip( unsigned long celt )=0;
+    virtual HRESULT __stdcall Reset( void )=0;
+    virtual HRESULT __stdcall Clone( IEnumGuideDataProperties **ppenum )=0;
+};
+
+class IEnumTuneRequests : public IUnknown
+{
+public:
+    virtual HRESULT __stdcall Next( unsigned long celt, ITuneRequest **ppprop,
+        unsigned long *pcelt )=0;
+    virtual HRESULT __stdcall Skip( unsigned long celt )=0;
+    virtual HRESULT __stdcall Reset( void )=0;
+    virtual HRESULT __stdcall Clone( IEnumTuneRequests **ppenum )=0;
+};
+
 extern "C" {
-extern const GUID CLSID_ATSCLocator;
-extern const GUID CLSID_ATSCNetworkProvider;
-extern const GUID CLSID_DVBCLocator;
-extern const GUID CLSID_DVBCNetworkProvider;
-extern const GUID CLSID_DVBSLocator;
-extern const GUID CLSID_DVBSNetworkProvider;
-extern const GUID CLSID_DVBSTuningSpace;
-extern const GUID CLSID_DVBTLocator;
-extern const GUID CLSID_DVBTNetworkProvider;
-extern const GUID CLSID_FilterGraph;
-extern const GUID CLSID_InfTee;
-extern const GUID CLSID_MPEG2Demultiplexer;
-extern const GUID CLSID_NullRenderer;
-extern const GUID CLSID_SampleGrabber;
-extern const GUID CLSID_SystemDeviceEnum;
-extern const GUID CLSID_SystemTuningSpaces;
-
-extern const GUID IID_IATSCChannelTuneRequest;
-extern const GUID IID_IATSCLocator;
-extern const GUID IID_IBaseFilter;
-extern const GUID IID_ICreateDevEnum;
-extern const GUID IID_IDVBTLocator;
-extern const GUID IID_IDVBCLocator;
-extern const GUID IID_IDVBSLocator;
-extern const GUID IID_IDVBSTuningSpace;
-extern const GUID IID_IDVBTuneRequest;
-extern const GUID IID_IDVBTuningSpace;
-extern const GUID IID_IDVBTuningSpace2;
-extern const GUID IID_IGraphBuilder;
-extern const GUID IID_IMediaControl;
-extern const GUID IID_IMpeg2Demultiplexer;
-extern const GUID IID_ISampleGrabber;
-extern const GUID IID_IScanningTuner;
-extern const GUID IID_ITuner;
-extern const GUID IID_ITuningSpace;
-extern const GUID IID_ITuningSpaceContainer;
+/* Following GUIDs are for the new windows 7 interfaces  */
+/* windows 7 universal provider applies to all networks */
+const CLSID CLSID_NetworkProvider =
+    {0xB2F3A67C,0x29DA,0x4C78,{0x88,0x31,0x09,0x1E,0xD5,0x09,0xA4,0x75}};
+
+/* Win 7 - Digital Cable - North America Clear QAM */
+const CLSID CLSID_DigitalCableTuningSpace =
+    {0xD9BB4CEE,0xB87A,0x47F1,{0xAC,0xF1,0xB0,0x8D,0x9C,0x78,0x13,0xFC}};
+const CLSID CLSID_DigitalCableLocator =
+    {0x03C06416,0xD127,0x407A,{0xAB,0x4C,0xFD,0xD2,0x79,0xAB,0xBE,0x5D}};
+const CLSID CLSID_DigitalCableNetworkType =
+    {0x143827AB,0xF77B,0x498d,{0x81,0xCA,0x5A,0x00,0x7A,0xEC,0x28,0xBF}};
+const IID IID_IDigitalCableTuneRequest =
+    {0xBAD7753B,0x6B37,0x4810,{0xAE,0x57,0x3C,0xE0,0xC4,0xA9,0xE6,0xCB}};
+const IID IID_IDigitalCableLocator =
+    {0x48F66A11,0x171A,0x419A,{0x95,0x25,0xBE,0xEE,0xCD,0x51,0x58,0x4C}};
+
+extern const CLSID CLSID_ATSCLocator;
+extern const CLSID CLSID_ATSCNetworkProvider;
+extern const CLSID CLSID_ATSCTuningSpace;
+extern const CLSID CLSID_DVBCLocator;
+extern const CLSID CLSID_DVBCNetworkProvider;
+extern const CLSID CLSID_DVBSLocator;
+extern const CLSID CLSID_DVBSNetworkProvider;
+extern const CLSID CLSID_DVBSTuningSpace;
+extern const CLSID CLSID_DVBTuningSpace;
+extern const CLSID CLSID_DVBTLocator;
+extern const CLSID CLSID_DVBTNetworkProvider;
+extern const CLSID CLSID_FilterGraph;
+extern const CLSID CLSID_InfTee;
+extern const CLSID CLSID_MPEG2Demultiplexer;
+extern const CLSID CLSID_NullRenderer;
+extern const CLSID CLSID_SampleGrabber;
+extern const CLSID CLSID_SystemDeviceEnum;
+extern const CLSID CLSID_SystemTuningSpaces;
+
+extern const IID IID_IATSCChannelTuneRequest;
+extern const IID IID_IATSCLocator;
+extern const IID IID_IBaseFilter;
+extern const IID IID_IBDA_DeviceControl;
+extern const IID IID_IBDA_FrequencyFilter;
+extern const IID IID_IBDA_SignalStatistics;
+/* Following symbol does not exist in library
+extern const IID IID_IBDA_Topology; */
+const IID IID_IBDA_Topology =
+    {0x79B56888,0x7FEA,0x4690,{0xB4,0x5D,0x38,0xFD,0x3C,0x78,0x49,0xBE}};
+extern const IID IID_ICreateDevEnum;
+extern const IID IID_IDVBTLocator;
+extern const IID IID_IDVBCLocator;
+extern const IID IID_IDVBSLocator;
+extern const IID IID_IDVBSTuningSpace;
+extern const IID IID_IDVBTuneRequest;
+extern const IID IID_IDVBTuningSpace;
+extern const IID IID_IDVBTuningSpace2;
+extern const IID IID_IGraphBuilder;
+extern const IID IID_IMediaControl;
+extern const IID IID_IMpeg2Demultiplexer;
+extern const IID IID_ISampleGrabber;
+extern const IID IID_IScanningTuner;
+extern const IID IID_ITuner;
+extern const IID IID_ITuningSpace;
+extern const IID IID_ITuningSpaceContainer;
+/* Following symbol does not exist in library
+extern const IID IID_IMpeg2Data; */
+const IID IID_IMpeg2Data =
+    {0x9B396D40,0xF380,0x4e3c,{0xA5,0x14,0x1A,0x82,0xBF,0x6E,0xBF,0xE6}};
+extern const IID IID_IGuideData;
+extern const IID IID_ISectionList;
+extern const IID IID_IEnumTuneRequests;
+extern const IID IID_IEnumGuideDataProperties;
+extern const IID IID_IGuideDataProperty;
+extern const IID IID_IMpeg2Stream;
+extern const IID IID_IGuideDataEvent;
 
 extern const GUID MEDIATYPE_MPEG2_SECTIONS;
 extern const GUID MEDIASUBTYPE_None;
 extern const GUID FORMAT_None;
 
-const GUID KSCATEGORY_BDA_TRANSPORT_INFORMATION =\r
-    {0xa2e3074f,0x6c3d,0x11d3,{0xb6,0x53,0x00,0xc0,0x4f,0x79,0x49,0x8e}};\r
-const GUID KSCATEGORY_BDA_RECEIVER_COMPONENT    =\r
-    {0xFD0A5AF4,0xB41D,0x11d2,{0x9c,0x95,0x00,0xc0,0x4f,0x79,0x71,0xe0}};\r
-const GUID KSCATEGORY_BDA_NETWORK_TUNER         =\r
+const GUID KSCATEGORY_BDA_TRANSPORT_INFORMATION =
+    {0xa2e3074f,0x6c3d,0x11d3,{0xb6,0x53,0x00,0xc0,0x4f,0x79,0x49,0x8e}};
+const GUID KSCATEGORY_BDA_RECEIVER_COMPONENT    =
+    {0xFD0A5AF4,0xB41D,0x11d2,{0x9c,0x95,0x00,0xc0,0x4f,0x79,0x71,0xe0}};
+const GUID KSCATEGORY_BDA_NETWORK_TUNER         =
     {0x71985f48,0x1ca1,0x11d3,{0x9c,0xc8,0x00,0xc0,0x4f,0x79,0x71,0xe0}};
+const GUID KSDATAFORMAT_SUBTYPE_BDA_MPEG2_TRANSPORT =
+    {0xF4AEB342,0x0329,0x4fdd,{0xA8,0xFD,0x4A,0xFF,0x49,0x26,0xC9,0x78}};
+
 };