Browse Source

do not perform SDT scan at the begin (this avoids a timeconsuming search for

optional info) instead fill SDT info in and update it as we stumble across it

Originally committed as revision 9201 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Michael Niedermayer 18 years ago
parent
commit
37dfd6333d
1 changed files with 1 additions and 18 deletions
  1. +1
    -18
      libavformat/mpegts.c

+ 1
- 18
libavformat/mpegts.c View File

@@ -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);


Loading…
Cancel
Save