vlc | branch: master | Francois Cartegnie <[email protected]> | Mon May 2 22:06:07 2016 +0200| [daef6b278c07b0363ff3b6cc6baa7ed0c8cee060] | committer: Francois Cartegnie
access: dvb: change broken nit delivery workaround NIT still has usable information (vchannels) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=daef6b278c07b0363ff3b6cc6baa7ed0c8cee060 --- modules/access/dvb/scan.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/modules/access/dvb/scan.c b/modules/access/dvb/scan.c index a5a2c05..eb6bdca 100644 --- a/modules/access/dvb/scan.c +++ b/modules/access/dvb/scan.c @@ -122,7 +122,6 @@ struct scan_t uint64_t i_index; scan_parameter_t parameter; int64_t i_time_start; - bool b_ignore_nit; /* ignored or broken nit configurations */ size_t i_multiplex_toscan; @@ -411,7 +410,6 @@ scan_t *scan_New( vlc_object_t *p_obj, const scan_parameter_t *p_parameter, scan_parameter_Init( &p_scan->parameter ); scan_parameter_Copy( p_parameter, &p_scan->parameter ); p_scan->i_time_start = mdate(); - p_scan->b_ignore_nit = false; p_scan->p_scanlist = NULL; p_scan->i_scanlist = 0; @@ -763,7 +761,7 @@ static int Scan_GetNextTunerConfig( scan_t *p_scan, scan_tuner_config_t *p_cfg, if( !b_using_scanlist && /* Stop frequency scanning if we found a NIT */ - ( p_scan->i_multiplex == 0 || p_scan->b_ignore_nit || + ( p_scan->i_multiplex == 0 || p_scan->pp_multiplex[0]->i_nit_version == UINT8_MAX ) ) { @@ -1253,14 +1251,20 @@ static void ParseNIT( vlc_object_t *p_obj, scan_t *p_scan, } } - if ( !scan_tuner_config_Validate( &tscfg ) ) + scan_multiplex_t *p_mplex = scan_FindMultiplex( p_scan, p_ts->i_ts_id ); + if( p_mplex == NULL && scan_tuner_config_Validate( &tscfg ) ) { - if( p_nit->i_table_id == NIT_CURRENT_NETWORK_TABLE_ID ) - p_scan->b_ignore_nit = true; - continue; + p_mplex = scan_multiplex_New( &tscfg, p_ts->i_ts_id ); + if( likely(p_mplex) ) + { + if ( unlikely(!scan_AddMultiplex( p_scan, p_mplex )) ) + { + scan_multiplex_Delete( p_mplex ); + p_mplex = NULL; + } + } } - scan_multiplex_t *p_mplex = scan_FindOrCreateMultiplex( p_scan, p_ts->i_ts_id, &tscfg ); if( unlikely(!p_mplex) ) continue; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
