/*****************************************************************************
* bda.c : BDA access module for vlc
*****************************************************************************
- * Copyright (C) 2007 the VideoLAN team
+ * Copyright (C) 2007-2009 the VideoLAN team
*
* Author: Ken Self <kenself(at)optusnet(dot)com(dot)au>
*
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "bda.h"
+
#include <vlc_plugin.h>
+
/*****************************************************************************
* Access: local prototypes
*****************************************************************************/
add_integer( "dvb-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT,
CACHING_LONGTEXT, true )
+ change_safe()
add_integer( "dvb-frequency", 0, NULL, FREQ_TEXT, FREQ_LONGTEXT,
false )
+ change_safe()
# if defined(WIN32) || defined(WINCE)
add_string( "dvb-network-name", NULL, NULL, NAME_TEXT, NAME_LONGTEXT,
true )
/* dvb-device refers to a frontend within an adapter */
add_integer( "dvb-device", 0, NULL, DEVICE_TEXT, DEVICE_LONGTEXT,
true )
- add_bool( "dvb-probe", 1, NULL, PROBE_TEXT, PROBE_LONGTEXT, true )
- add_bool( "dvb-budget-mode", 0, NULL, BUDGET_TEXT, BUDGET_LONGTEXT,
+ add_bool( "dvb-probe", true, NULL, PROBE_TEXT, PROBE_LONGTEXT, true )
+ add_bool( "dvb-budget-mode", false, NULL, BUDGET_TEXT, BUDGET_LONGTEXT,
true )
# endif
/* DVB-S (satellite) */
add_integer( "dvb-inversion", 2, NULL, INVERSION_TEXT,
INVERSION_LONGTEXT, true )
- change_integer_list( i_inversion_list, ppsz_inversion_text, NULL );
+ change_integer_list( i_inversion_list, ppsz_inversion_text, NULL )
# if defined(WIN32) || defined(WINCE)
add_string( "dvb-polarisation", NULL, NULL, POLARISATION_TEXT,
POLARISATION_LONGTEXT, false )
- change_string_list( ppsz_polar_list, ppsz_polar_text, 0 );
+ change_string_list( ppsz_polar_list, ppsz_polar_text, 0 )
/* Note: Polaristion H = voltage 18; V = voltage 13; */
add_integer( "dvb-network-id", 0, NULL, NETID_TEXT, NETID_LONGTEXT,
true )
true )
add_integer( "dvb-voltage", 13, NULL, VOLTAGE_TEXT, VOLTAGE_LONGTEXT,
true )
- add_bool( "dvb-high-voltage", 0, NULL, HIGH_VOLTAGE_TEXT,
+ add_bool( "dvb-high-voltage", false, NULL, HIGH_VOLTAGE_TEXT,
HIGH_VOLTAGE_LONGTEXT, true )
add_integer( "dvb-tone", -1, NULL, TONE_TEXT, TONE_LONGTEXT,
true )
/* DVB-C (cable) */
add_integer( "dvb-modulation", -1, NULL, MODULATION_TEXT,
MODULATION_LONGTEXT, true )
- change_integer_list( i_mod_list, ppsz_mod_text, NULL );
+ change_integer_list( i_mod_list, ppsz_mod_text, NULL )
/* ATSC */
add_integer( "dvb-major-channel", 0, NULL, MAJOR_CHANNEL_TEXT,
/* DVB-T (terrestrial) */
add_integer( "dvb-code-rate-hp", -1, NULL, CODE_RATE_HP_TEXT,
CODE_RATE_HP_LONGTEXT, true )
- change_integer_list( i_hp_fec_list, ppsz_hp_fec_text, NULL );
+ change_integer_list( i_hp_fec_list, ppsz_hp_fec_text, NULL )
add_integer( "dvb-code-rate-lp", -1, NULL, CODE_RATE_LP_TEXT,
CODE_RATE_LP_LONGTEXT, true )
- change_integer_list( i_lp_fec_list, ppsz_lp_fec_text, NULL );
+ change_integer_list( i_lp_fec_list, ppsz_lp_fec_text, NULL )
add_integer( "dvb-bandwidth", 0, NULL, BANDWIDTH_TEXT, BANDWIDTH_LONGTEXT,
false )
- change_integer_list( i_band_list, ppsz_band_text, NULL );
+ change_integer_list( i_band_list, ppsz_band_text, NULL )
+ change_safe()
add_integer( "dvb-guard", -1, NULL, GUARD_TEXT, GUARD_LONGTEXT, true )
- change_integer_list( i_guard_list, ppsz_guard_text, NULL );
+ change_integer_list( i_guard_list, ppsz_guard_text, NULL )
add_integer( "dvb-transmission", -1, NULL, TRANSMISSION_TEXT,
TRANSMISSION_LONGTEXT, true )
- change_integer_list( i_transmission_list, ppsz_transmission_text, NULL );
+ change_integer_list( i_transmission_list, ppsz_transmission_text, NULL )
add_integer( "dvb-hierarchy", -1, NULL, HIERARCHY_TEXT, HIERARCHY_LONGTEXT,
true )
- change_integer_list( i_hierarchy_list, ppsz_hierarchy_text, NULL );
+ change_integer_list( i_hierarchy_list, ppsz_hierarchy_text, NULL )
set_capability( "access", 0 )
add_shortcut( "dvb" ) /* Generic name */
for( int i = 0; i < i_param_count; i++ )
{
- snprintf( psz_full_name, 128, "%s-%s\0", psz_module,
+ snprintf( psz_full_name, 128, "%s-%s", psz_module,
psz_param[i] );
var_Create( p_access, psz_full_name, i_type[i] | VLC_VAR_DOINHERIT );
}
{
i_ret = dvb_SubmitATSCTuneRequest( p_access );
}
+ if( !strcmp( p_access->psz_access, "dvb" ) )
+ {
+ /* Try to auto detect */
+ if( i_ret )
+ i_ret = dvb_SubmitDVBSTuneRequest( p_access );
+ if( i_ret )
+ i_ret = dvb_SubmitDVBCTuneRequest( p_access );
+ if( i_ret )
+ i_ret = dvb_SubmitDVBTTuneRequest( p_access );
+ if( i_ret )
+ i_ret = dvb_SubmitATSCTuneRequest( p_access );
+ }
- if( i_ret != VLC_SUCCESS )
+ if( !i_ret )
+ {
+ free( p_access->psz_demux );
+ p_access->psz_demux = strdup( "ts" );
+ }
+ else
+ {
msg_Warn( p_access, "DVB_Open: Unsupported Network %s",
- p_access->psz_access);
+ p_access->psz_access);
+ }
return i_ret;
}
v_value.psz_string = strdup( psz_value );
if( i_type[i_this_param] == VLC_VAR_INTEGER )
v_value.i_int = atol( psz_value );
- snprintf( psz_full_name, 128, "%s-%s\0", psz_module,
+ snprintf( psz_full_name, 128, "%s-%s", psz_module,
psz_param[i_this_param] );
var_Set( p_access, psz_full_name, v_value );
dvb_deleteBDAGraph( p_access );
- vlc_mutex_destroy( &p_sys->lock );
- vlc_cond_destroy( &p_sys->wait );
-
free( p_sys );
}
static int Control( access_t *p_access, int i_query, va_list args )
{
bool *pb_bool, b_bool;
- int *pi_int, i_int;
+ int i_int;
int64_t *pi_64;
switch( i_query )
break;
case ACCESS_GET_PTS_DELAY: /* 5 */
pi_64 = (int64_t*)va_arg( args, int64_t * );
- *pi_64 = var_GetInteger( p_access, "dvb-caching" ) * 1000;
+ *pi_64 = (int64_t)var_GetInteger( p_access, "dvb-caching" ) * 1000;
break;
/* */
case ACCESS_GET_TITLE_INFO: /* 6 */
b_bool = (bool)va_arg( args, int );
break;
case ACCESS_SET_PRIVATE_ID_CA: /* 12 -From Demux */
- break;
+ return VLC_EGENERIC;
default:
msg_Warn( p_access,
"DVB_Control: Unimplemented query in control %d", i_query );
*****************************************************************************/
static block_t *Block( access_t *p_access )
{
- block_t *p_block;
- long l_buffer_len;
-
- if( !vlc_object_alive (p_access) )
- return NULL;
-
- l_buffer_len = dvb_GetBufferSize( p_access );
- if( l_buffer_len < 0 )
- {
- p_access->info.b_eof = true;
- return NULL;
- }
-
- p_block = block_New( p_access, l_buffer_len );
- if( dvb_ReadBuffer( p_access, &l_buffer_len, p_block->p_buffer ) < 0 )
- {
- p_access->info.b_eof = true;
- return NULL;
- }
-
- return p_block;
+ return dvb_Pop( p_access );
}