@ -105,7 +105,6 @@ struct MpegTSContext {
/******************************************/
/* private mpegts data */
/* scan context */
MpegTSFilter * sdt_filter ;
/** number of PMTs in the last PAT seen */
int nb_services ;
/** list of PMTs in the last PAT seen */
@ -708,17 +707,12 @@ static void sdt_cb(void *opaque, const uint8_t *section, int section_len)
}
p = desc_list_end ;
}
ts - > stop_parse = 1 ;
/* remove filter */
mpegts_close_filter ( ts , ts - > sdt_filter ) ;
ts - > sdt_filter = NULL ;
}
/* scan services in a transport stream by looking at the SDT */
static void mpegts_scan_sdt ( MpegTSContext * ts )
{
ts - > sdt_filter = mpegts_open_section_filter ( ts , SDT_PID ,
mpegts_open_section_filter ( ts , SDT_PID ,
sdt_cb , ts , 1 ) ;
}
@ -1218,18 +1212,7 @@ static int mpegts_read_header(AVFormatContext *s,
url_fseek ( pb , pos , SEEK_SET ) ;
mpegts_scan_sdt ( ts ) ;
handle_packets ( ts , s - > probesize ) ;
if ( ts - > nb_services < = 0 ) {
/* no SDT found, we try to look at the PAT */
/* First remove the SDT filters from each PID */
int i ;
for ( i = 0 ; i < NB_PID_MAX ; i + + ) {
if ( ts - > pids [ i ] )
mpegts_close_filter ( ts , ts - > pids [ i ] ) ;
}
url_fseek ( pb , pos , SEEK_SET ) ;
mpegts_scan_pat ( ts ) ;
handle_packets ( ts , s - > probesize ) ;