vlc | branch: master | Rafaël Carré <[email protected]> | Fri Feb 10 02:13:05 2012 -0500| [7406b9de8d062bb6e2d669638deb0ca42dee5ed0] | committer: Rafaël Carré
TS Mux: simplify mux pmt parsing > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7406b9de8d062bb6e2d669638deb0ca42dee5ed0 --- modules/mux/mpeg/ts.c | 54 +++++++++++++++++------------------------------- 1 files changed, 19 insertions(+), 35 deletions(-) diff --git a/modules/mux/mpeg/ts.c b/modules/mux/mpeg/ts.c index 1c60c8c..b32df47 100644 --- a/modules/mux/mpeg/ts.c +++ b/modules/mux/mpeg/ts.c @@ -524,51 +524,35 @@ static int Open( vlc_object_t *p_this ) This would mean 0x451, 0x200, 0x28a, 0x240 would fall under one pmt (program), 0x450,0x201,0x28b,0x241 would fall under another */ char *muxpmt = var_GetNonEmptyString(p_mux, SOUT_CFG_PREFIX "muxpmt"); - if( muxpmt ) + for (char *psz = muxpmt; psz; ) { char *psz_next; - char *psz = muxpmt; - uint16_t i_pid; - psz_next = psz; + uint16_t i_pid = strtoul( psz, &psz_next, 0 ); + psz = *psz_next ? &psz_next[1] : NULL; - while( psz != NULL ) + if ( i_pid == 0 ) { - i_pid = strtoul( psz, &psz_next, 0 ); - - if ( psz_next[0] != '\0' ) - psz = &psz_next[1]; - if ( i_pid == 0 ) + if ( ++p_sys->i_num_pmt > MAX_PMT ) { - p_sys->i_num_pmt++; - if ( p_sys->i_num_pmt > MAX_PMT ) - { - msg_Err( p_mux, - "Number of PMTs greater than compiled maximum (%d)", MAX_PMT ); - p_sys->i_num_pmt = MAX_PMT; - } + msg_Err( p_mux, "Number of PMTs > %d)", MAX_PMT ); + p_sys->i_num_pmt = MAX_PMT; } - else + } + else + { + p_sys->pmtmap[p_sys->i_pmtslots].i_pid = i_pid; + p_sys->pmtmap[p_sys->i_pmtslots].i_prog = p_sys->i_num_pmt - 1; + if ( ++p_sys->i_pmtslots > MAX_PMT_PID ) { - p_sys->pmtmap[p_sys->i_pmtslots].i_pid = i_pid; - p_sys->pmtmap[p_sys->i_pmtslots].i_prog = p_sys->i_num_pmt - 1; - p_sys->i_pmtslots++; - if ( p_sys->i_pmtslots > MAX_PMT_PID ) - { - msg_Err( p_mux, - "Number of pids in PMT greater than compiled maximum (%d)", - MAX_PMT_PID ); - p_sys->i_pmtslots = MAX_PMT_PID; - } + msg_Err( p_mux, "Number of pids in PMT > %d", MAX_PMT_PID ); + p_sys->i_pmtslots = MAX_PMT_PID; } - - /* Now sort according to pids for fast search later on */ - qsort( (void *)p_sys->pmtmap, p_sys->i_pmtslots, - sizeof(pmt_map_t), pmtcompare ); - if ( !*psz_next ) - psz = NULL; } - free(muxpmt); } + /* Now sort according to pids for fast search later on */ + qsort( (void *)p_sys->pmtmap, p_sys->i_pmtslots, + sizeof(pmt_map_t), pmtcompare ); + free(muxpmt); unsigned short subi[3]; vlc_rand_bytes(subi, sizeof(subi)); _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
