#define SRATE_LONGTEXT ""
#define LNB_LOF1_TEXT N_("Antenna lnb_lof1 (kHz)")
-#define LNB_LOF1_LONGTEXT ""
+#define LNB_LOF1_LONGTEXT N_("Low Band Local Osc Freq in kHz usually 9.75GHz")
#define LNB_LOF2_TEXT N_("Antenna lnb_lof2 (kHz)")
-#define LNB_LOF2_LONGTEXT ""
+#define LNB_LOF2_LONGTEXT N_("High Band Local Osc Freq in kHz usually 10.6GHz")
#define LNB_SLOF_TEXT N_("Antenna lnb_slof (kHz)")
-#define LNB_SLOF_LONGTEXT ""
+#define LNB_SLOF_LONGTEXT N_( \
+ "Low Noise Block switch freq in kHz usually 11.7GHz")
/* Cable */
#define MODULATION_TEXT N_("Modulation type")
/* DVB-S (satellite) */
# if defined(WIN32) || defined(WINCE)
add_integer( "dvb-azimuth", 0, NULL, AZIMUTH_TEXT, AZIMUTH_LONGTEXT,
- VLC_FALSE );
+ VLC_TRUE );
add_integer( "dvb-elevation", 0, NULL, ELEVATION_TEXT,
- ELEVATION_LONGTEXT, VLC_FALSE );
+ ELEVATION_LONGTEXT, VLC_TRUE );
add_integer( "dvb-longitude", 0, NULL, LONGITUDE_TEXT,
- LONGITUDE_LONGTEXT, VLC_FALSE );
+ LONGITUDE_LONGTEXT, VLC_TRUE );
add_string( "dvb-polarisation", NULL, NULL, POLARISATION_TEXT,
- POLARISATION_LONGTEXT, VLC_FALSE );
+ POLARISATION_LONGTEXT, VLC_TRUE );
change_string_list( ppsz_polar_list, ppsz_polar_text, 0 );
/* Note: Polaristion H = voltage 18; V = voltage 13; */
# else
HIGH_VOLTAGE_LONGTEXT, VLC_TRUE );
add_integer( "dvb-tone", -1, NULL, TONE_TEXT, TONE_LONGTEXT,
VLC_TRUE );
- add_integer( "dvb-lnb-lof1", 0, NULL, LNB_LOF1_TEXT,
- LNB_LOF1_LONGTEXT, VLC_TRUE );
- add_integer( "dvb-lnb-lof2", 0, NULL, LNB_LOF2_TEXT,
- LNB_LOF2_LONGTEXT, VLC_TRUE );
- add_integer( "dvb-lnb-slof", 0, NULL, LNB_SLOF_TEXT,
- LNB_SLOF_LONGTEXT, VLC_TRUE );
# endif
+ add_integer( "dvb-lnb-lof1", 0, NULL, LNB_LOF1_TEXT,
+ LNB_LOF1_LONGTEXT, VLC_TRUE );
+ add_integer( "dvb-lnb-lof2", 0, NULL, LNB_LOF2_TEXT,
+ LNB_LOF2_LONGTEXT, VLC_TRUE );
+ add_integer( "dvb-lnb-slof", 0, NULL, LNB_SLOF_TEXT,
+ LNB_SLOF_LONGTEXT, VLC_TRUE );
+
add_integer( "dvb-fec", 9, NULL, FEC_TEXT, FEC_LONGTEXT, VLC_TRUE );
add_integer( "dvb-srate", 27500000, NULL, SRATE_TEXT, SRATE_LONGTEXT,
VLC_FALSE );
access_t *p_access = (access_t*)p_this;
access_sys_t *p_sys;
const char* psz_module = "dvb";
- const int i_param_count = 9;
+ const int i_param_count = 12;
const char* psz_param[] = { "frequency", "bandwidth",
"srate", "azimuth", "elevation", "longitude", "polarisation",
- "modulation", "caching" };
+ "modulation", "caching", "lnb-lof1", "lnb-lof2", "lnb-slof" };
const int i_type[] = { VLC_VAR_INTEGER, VLC_VAR_INTEGER,
VLC_VAR_INTEGER, VLC_VAR_INTEGER, VLC_VAR_INTEGER, VLC_VAR_INTEGER,
- VLC_VAR_STRING, VLC_VAR_INTEGER, VLC_VAR_INTEGER };
+ VLC_VAR_STRING, VLC_VAR_INTEGER, VLC_VAR_INTEGER, VLC_VAR_INTEGER,
+ VLC_VAR_INTEGER, VLC_VAR_INTEGER };
char psz_full_name[128];
int i_ret;
class IComponentTypes;
class IDVBCLocator;
class IDVBSLocator;
+class IDVBSTuningSpace;
class IDVBTLocator;
class IDVBTuneRequest;
+class IDVBTuningSpace;
+class IDVBTuningSpace2;
class IEnumComponents;
class IEnumComponentTypes;
class IEnumTuningSpaces;
StatusUnavailable,
} ComponentStatus;
+typedef enum DVBSystemType
+{\r
+ DVB_Cable,\r
+ DVB_Terrestrial,\r
+ DVB_Satellite,\r
+} DVBSystemType;
+
typedef enum FECMethod
{
BDA_FEC_METHOD_NOT_SET = -1,
BDA_POLARISATION_MAX = 5
} 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
+} SpectralInversion;
+
typedef enum TransmissionMode
{
BDA_XMIT_MODE_NOT_SET = -1,
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
+ virtual HRESULT __stdcall get_SpectralInversion(
+ SpectralInversion* p_spectral_inv )=0;\r
+ virtual HRESULT __stdcall put_SpectralInversion(
+ SpectralInversion spectral_inv )=0;\r
+};
+
class ITuningSpaceContainer : public IDispatch
{
public:
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;
public:
IDVBTuneRequest* p_dvbs_tune_request;
IDVBSLocator* p_dvbs_locator;
- localComPtr(): p_dvbs_tune_request(NULL), p_dvbs_locator(NULL) {};
+ IDVBSTuningSpace* p_dvbs_tuning_space;
+ localComPtr(): p_dvbs_tune_request(NULL), p_dvbs_locator(NULL),
+ p_dvbs_tuning_space(NULL) {};
~localComPtr()
{
+ if( p_dvbs_tuning_space )
+ p_dvbs_tuning_space->Release();
if( p_dvbs_tune_request )
p_dvbs_tune_request->Release();
if( p_dvbs_locator )
}
} l;
long l_frequency, l_symbolrate, l_azimuth, l_elevation, l_longitude;
+ long l_lnb_lof1, l_lnb_lof2, l_lnb_slof;
char* psz_polarisation;
Polarisation i_polar;
VARIANT_BOOL b_west;
l_frequency = l_symbolrate = l_azimuth = l_elevation = l_longitude = -1;
+ l_lnb_lof1 = l_lnb_lof2 = l_lnb_slof = -1;
l_frequency = var_GetInteger( p_access, "dvb-frequency" );
l_symbolrate = var_GetInteger( p_access, "dvb-srate" );
l_azimuth = var_GetInteger( p_access, "dvb-azimuth" );
l_elevation = var_GetInteger( p_access, "dvb-elevation" );
l_longitude = var_GetInteger( p_access, "dvb-longitude" );
+ l_lnb_lof1 = var_GetInteger( p_access, "dvb-lnb-lof1" );
+ l_lnb_lof2 = var_GetInteger( p_access, "dvb-lnb-lof2" );
+ l_lnb_slof = var_GetInteger( p_access, "dvb-lnb-slof" );
psz_polarisation = var_GetString( p_access, "dvb-polarisation" );
b_west = ( l_longitude < 0 ) ? TRUE : FALSE;
return VLC_EGENERIC;
}
+ hr = p_tuning_space->QueryInterface( IID_IDVBSTuningSpace,
+ (void**)&l.p_dvbs_tuning_space );
+ if( FAILED( hr ) )
+ {
+ msg_Warn( p_access, "SubmitDVBSTuneRequest: "\
+ "Cannot QI for IDVBSTuningSpace: hr=0x%8lx", hr );
+ return VLC_EGENERIC;
+ }
+
hr = S_OK;
if( l_frequency > 0 )
hr = l.p_dvbs_locator->put_CarrierFrequency( l_frequency );
hr = l.p_dvbs_locator->put_WestPosition( b_west );
if( SUCCEEDED( hr ) && i_polar != BDA_POLARISATION_NOT_SET )
hr = l.p_dvbs_locator->put_SignalPolarisation( i_polar );
+ if( SUCCEEDED( hr ) && l_lnb_lof1 > 0 )
+ hr = l.p_dvbs_tuning_space->put_LowOscillator( l_lnb_lof1 );
+ if( SUCCEEDED( hr ) && l_lnb_lof2 > 0 )
+ hr = l.p_dvbs_tuning_space->put_HighOscillator( l_lnb_lof2 );
+ if( SUCCEEDED( hr ) && l_lnb_slof > 0 )
+ hr = l.p_dvbs_tuning_space->put_HighOscillator( l_lnb_slof );
if( FAILED( hr ) )
{
msg_Warn( p_access, "SubmitDVBSTuneRequest: "\