Commit f036b8a5 authored by John Freed's avatar John Freed Committed by Jean-Baptiste Kempf

dtv: rewrite of bdagraph to be tuner-based

Close #5785 and #6394
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 872d8f2f
...@@ -48,6 +48,7 @@ class ISampleGrabber; ...@@ -48,6 +48,7 @@ class ISampleGrabber;
class ISampleGrabberCB; class ISampleGrabberCB;
class IScanningTuner; class IScanningTuner;
class ITuner; class ITuner;
class ITunerCap;
class ITuneRequest; class ITuneRequest;
class ITuningSpace; class ITuningSpace;
class ITuningSpaceContainer; class ITuningSpaceContainer;
...@@ -313,6 +314,19 @@ public: ...@@ -313,6 +314,19 @@ public:
virtual HRESULT __stdcall Clone( IEnumTuningSpaces** p_p_enum )=0; virtual HRESULT __stdcall Clone( IEnumTuningSpaces** p_p_enum )=0;
}; };
class ITunerCap : public IUnknown
{
public:
virtual HRESULT __stdcall get_AuxInputCount( ULONG* pulCompositeCount,
ULONG* pulSvideoCount )=0;
virtual HRESULT __stdcall get_SupportedNetworkTypes(
ULONG ulcNetworkTypesMax, ULONG* pulcNetworkTypes,
GUID* pguidNetworkTypes )=0;
virtual HRESULT __stdcall get_SupportedVideoFormats(
ULONG* pulAMTunerModeType, ULONG* pulAnalogVideoStandard )=0;
};
class ITuner : public IUnknown class ITuner : public IUnknown
{ {
public: public:
...@@ -664,7 +678,7 @@ public: ...@@ -664,7 +678,7 @@ public:
virtual HRESULT __stdcall CreateTopology( ULONG ulInputPinId, virtual HRESULT __stdcall CreateTopology( ULONG ulInputPinId,
ULONG ulOutputPinId )=0; ULONG ulOutputPinId )=0;
virtual HRESULT __stdcall GetControlNode( ULONG ulInputPinId, virtual HRESULT __stdcall GetControlNode( ULONG ulInputPinId,
ULONG ulOutputPinId, ULONG ulNodeType, IUnknown **ppControlNode )=0; ULONG ulOutputPinId, ULONG ulNodeType, IUnknown **ppControlNode )=0;
}; };
typedef struct _MPEG_HEADER_BITS_MIDL typedef struct _MPEG_HEADER_BITS_MIDL
...@@ -955,6 +969,8 @@ const IID IID_IDigitalCableLocator = ...@@ -955,6 +969,8 @@ const IID IID_IDigitalCableLocator =
{0x48F66A11,0x171A,0x419A,{0x95,0x25,0xBE,0xEE,0xCD,0x51,0x58,0x4C}}; {0x48F66A11,0x171A,0x419A,{0x95,0x25,0xBE,0xEE,0xCD,0x51,0x58,0x4C}};
/* KSCATEGORY_BDA */ /* KSCATEGORY_BDA */
const GUID KSCATEGORY_BDA_NETWORK_PROVIDER =
{0x71985F4B,0x1CA1,0x11d3,{0x9C,0xC8,0x00,0xC0,0x4F,0x79,0x71,0xE0}};
const GUID KSCATEGORY_BDA_TRANSPORT_INFORMATION = const GUID KSCATEGORY_BDA_TRANSPORT_INFORMATION =
{0xa2e3074f,0x6c3d,0x11d3,{0xb6,0x53,0x00,0xc0,0x4f,0x79,0x49,0x8e}}; {0xa2e3074f,0x6c3d,0x11d3,{0xb6,0x53,0x00,0xc0,0x4f,0x79,0x49,0x8e}};
const GUID KSCATEGORY_BDA_RECEIVER_COMPONENT = const GUID KSCATEGORY_BDA_RECEIVER_COMPONENT =
...@@ -1007,6 +1023,10 @@ extern const IID IID_IMpeg2Demultiplexer; ...@@ -1007,6 +1023,10 @@ extern const IID IID_IMpeg2Demultiplexer;
extern const IID IID_ISampleGrabber; extern const IID IID_ISampleGrabber;
extern const IID IID_IScanningTuner; extern const IID IID_IScanningTuner;
extern const IID IID_ITuner; extern const IID IID_ITuner;
/* Following symbol does not exist in library
extern const IID IID_ITunerCap; */
const IID IID_ITunerCap =
{0xE60DFA45,0x8D56,0x4e65,{0xA8,0xAB,0xD6,0xBE,0x94,0x12,0xC2,0x49}};
extern const IID IID_ITuningSpace; extern const IID IID_ITuningSpace;
extern const IID IID_ITuningSpaceContainer; extern const IID IID_ITuningSpaceContainer;
/* Following symbol does not exist in library /* Following symbol does not exist in library
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -66,6 +66,10 @@ public: ...@@ -66,6 +66,10 @@ public:
/* */ /* */
int SubmitTuneRequest(void); int SubmitTuneRequest(void);
unsigned EnumSystems(void);
int SetInversion(int);
float GetSignalStrength(void);
float GetSignalNoiseRatio(void);
int SetCQAM(long); int SetCQAM(long);
int SetATSC(long); int SetATSC(long);
...@@ -87,8 +91,10 @@ private: ...@@ -87,8 +91,10 @@ private:
STDMETHODIMP BufferCB( double d_time, BYTE* p_buffer, long l_buffer_len ); STDMETHODIMP BufferCB( double d_time, BYTE* p_buffer, long l_buffer_len );
vlc_object_t *p_access; vlc_object_t *p_access;
CLSID guid_network_type; CLSID guid_network_type; /* network type in use */
long l_tuner_used; /* Index of the Tuning Device */ long l_tuner_used; /* Index of the Tuning Device in use */
unsigned systems; /* bitmask of all tuners' network types */
/* registration number for the RunningObjectTable */ /* registration number for the RunningObjectTable */
DWORD d_graph_register; DWORD d_graph_register;
...@@ -96,25 +102,39 @@ private: ...@@ -96,25 +102,39 @@ private:
IMediaControl* p_media_control; IMediaControl* p_media_control;
IGraphBuilder* p_filter_graph; IGraphBuilder* p_filter_graph;
ITuningSpace* p_tuning_space; ITuningSpaceContainer* p_tuning_space_container;
ITuneRequest* p_tune_request; ITuningSpace* p_tuning_space;
ITuneRequest* p_tune_request;
IDVBTuningSpace* p_dvb_tuning_space;
IDVBSTuningSpace* p_dvbs_tuning_space;
#if 0
IDigitalCableTuningSpace* p_cqam_tuning_space;
IATSCTuningSpace* p_atsc_tuning_space;
#endif
ICreateDevEnum* p_system_dev_enum; ICreateDevEnum* p_system_dev_enum;
IBaseFilter* p_network_provider; IBaseFilter* p_network_provider;
IScanningTuner* p_scanning_tuner;
IBaseFilter* p_tuner_device; IBaseFilter* p_tuner_device;
IBaseFilter* p_capture_device; IBaseFilter* p_capture_device;
IBaseFilter* p_sample_grabber; IBaseFilter* p_sample_grabber;
IBaseFilter* p_mpeg_demux; IBaseFilter* p_mpeg_demux;
IBaseFilter* p_transport_info; IBaseFilter* p_transport_info;
IScanningTuner* p_scanning_tuner;
ISampleGrabber* p_grabber; ISampleGrabber* p_grabber;
HRESULT CreateTuneRequest( ); HRESULT SetUpTuner( REFCLSID guid_this_network_type );
HRESULT GetNextNetworkType( CLSID* guid_this_network_type );
HRESULT Build( ); HRESULT Build( );
HRESULT Check( REFCLSID guid_this_network_type );
HRESULT GetFilterName( IBaseFilter* p_filter, char** psz_bstr_name );
HRESULT GetPinName( IPin* p_pin, char** psz_bstr_name );
unsigned GetSystem( REFCLSID clsid );
HRESULT ListFilters( REFCLSID this_clsid );
HRESULT FindFilter( REFCLSID clsid, long* i_moniker_used, HRESULT FindFilter( REFCLSID clsid, long* i_moniker_used,
IBaseFilter* p_upstream, IBaseFilter** p_p_downstream ); IBaseFilter* p_upstream, IBaseFilter** p_p_downstream);
HRESULT Connect( IBaseFilter* p_filter_upstream, HRESULT Connect( IBaseFilter* p_filter_upstream,
IBaseFilter* p_filter_downstream ); IBaseFilter* p_filter_downstream);
HRESULT Start( ); HRESULT Start( );
HRESULT Destroy( ); HRESULT Destroy( );
HRESULT Register( ); HRESULT Register( );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment