]> git.sesse.net Git - vlc/blobdiff - modules/access/dvb/scan.c
DVB scan: re-enable the old plugin
[vlc] / modules / access / dvb / scan.c
index f5e3028f4060bb26c3fbb32dccf008ec2f4ec5a4..ebccff1a825052295b49051e303e009bde49f049 100644 (file)
@@ -148,15 +148,15 @@ static void scan_service_Delete( scan_service_t *p_srv )
     free( p_srv );
 }
 
-static int decode_BCD( uint32_t input, uint32_t *output )
+static uint32_t decode_BCD( uint32_t input )
 {
-    *output = 0;
+    uint32_t output = 0;
     for( short index=28; index >= 0 ; index -= 4 )
     {
-        *output *= 10;
-        *output += ((input >> index) & 0x0f);
+        output *= 10;
+        output += ((input >> index) & 0x0f);
     };
-    return VLC_SUCCESS;
+    return output;
 }
 
 static int scan_service_type( int service_type )
@@ -248,7 +248,7 @@ static int ScanDvbSNextFast( scan_t *p_scan, scan_configuration_t *p_cfg, double
         DIR *p_dir;
 
         char *psz_dir = NULL;
-        char *data_dir = config_GetDataDir( p_scan->p_obj );
+        char *data_dir = config_GetDataDir();
 
         if( asprintf( &psz_dir, "%s" DIR_SEP "dvb" DIR_SEP "dvb-s", data_dir ) == -1 )
             psz_dir = NULL;
@@ -308,7 +308,7 @@ static int ScanDvbSNextFast( scan_t *p_scan, scan_configuration_t *p_cfg, double
             int res;
             do
             {
-                if ( ( res = fscanf( f, "%c %d %c %d %s\n",
+                if ( ( res = fscanf( f, "%c %d %c %d %2s\n",
                             &type,
                             &p_transponders[*pi_count].i_frequency,
                             &p_transponders[*pi_count].c_polarization,
@@ -524,7 +524,8 @@ static int ScanDvbCNext( scan_t *p_scan, scan_configuration_t *p_cfg, double *pf
             p_cfg->i_symbolrate = p_scan->pp_service[i]->cfg.i_symbolrate;
             p_cfg->i_modulation = p_scan->pp_service[i]->cfg.i_modulation;
             p_scan->i_index = i+1;
-            msg_Dbg( p_scan->p_obj, "iterating to freq: %u, symbolrate %u, modulation %u index %d/%d",
+            msg_Dbg( p_scan->p_obj, "iterating to freq: %u, symbolrate %u, "
+                     "modulation %u index %"PRId64"/%d",
                      p_cfg->i_frequency, p_cfg->i_symbolrate, p_cfg->i_modulation, p_scan->i_index, p_scan->i_service );
             *pf_pos = (double)i/p_scan->i_service;
             return VLC_SUCCESS;
@@ -581,7 +582,10 @@ static int ScanDvbCNext( scan_t *p_scan, scan_configuration_t *p_cfg, double *pf
 
             /* if we rotated modulations, rotate symbolrate */
             if( b_rotate )
-               p_scan->parameter.i_symbolrate = (++p_scan->parameter.i_symbolrate % num_symbols );
+            {
+                p_scan->parameter.i_symbolrate++;
+                p_scan->parameter.i_symbolrate %= num_symbols;
+            }
             p_cfg->i_symbolrate = 1000 * (symbolrates[ p_scan->parameter.i_symbolrate ] );
             msg_Dbg( p_scan->p_obj, "symbolrate %d", p_cfg->i_symbolrate );
             if( p_scan->parameter.i_symbolrate )
@@ -846,7 +850,7 @@ static void NITCallBack( scan_session_t *p_session, dvbpsi_nit_t *p_nit )
         uint32_t i_private_data_id = 0;
         dvbpsi_descriptor_t *p_dsc;
         scan_configuration_t *p_cfg = malloc(sizeof(*p_cfg));
-        if(!p_cfg) return VLC_ENOMEM;
+        if(!p_cfg) return;
         memset(p_cfg,0,sizeof(*p_cfg));
         for( p_dsc = p_ts->p_first_descriptor; p_dsc != NULL; p_dsc = p_dsc->p_next )
         {
@@ -890,13 +894,9 @@ static void NITCallBack( scan_session_t *p_session, dvbpsi_nit_t *p_nit )
                 dvbpsi_cable_deliv_sys_dr_t *p_t = dvbpsi_DecodeCableDelivSysDr( p_dsc );
                 msg_Dbg( p_obj, "       * Cable delivery system");
 
-                if( decode_BCD( p_t->i_frequency, &p_cfg->i_frequency ) < 0 )
-                    return;
-                p_cfg->i_frequency *= 100;
+                p_cfg->i_frequency =  decode_BCD( p_t->i_frequency ) * 100;
                 msg_Dbg( p_obj, "           * frequency %d", p_cfg->i_frequency );
-                if( decode_BCD( p_t->i_symbol_rate, &p_cfg->i_symbolrate ) < 0 )
-                    return;
-                p_cfg->i_symbolrate *= 100;
+                p_cfg->i_symbolrate =  decode_BCD( p_t->i_symbol_rate ) * 100;
                 msg_Dbg( p_obj, "           * symbolrate %u", p_cfg->i_symbolrate );
                 p_cfg->i_modulation = (8 << p_t->i_modulation);
                 msg_Dbg( p_obj, "           * modulation %u", p_cfg->i_modulation );