In TS demuxer, create the AVStream during pmt parsing if the pes stream does not
authorStephen D'Angelo <SDAngelo@evertz.com>
Thu, 25 Nov 2010 00:55:02 +0000 (00:55 +0000)
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>
Thu, 25 Nov 2010 00:55:02 +0000 (00:55 +0000)
yet have it, this can happen if the pes stream contain data but no pes header
has been encoutered yet.
Patch by Stephen D'Angelo, SDAngelo at evertz dot com.

Originally committed as revision 25823 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/mpegts.c

index 78c9d2f..3c61d8b 100644 (file)
@@ -974,6 +974,8 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
         /* now create ffmpeg stream */
         if (ts->pids[pid] && ts->pids[pid]->type == MPEGTS_PES) {
             pes = ts->pids[pid]->u.pes_filter.opaque;
         /* now create ffmpeg stream */
         if (ts->pids[pid] && ts->pids[pid]->type == MPEGTS_PES) {
             pes = ts->pids[pid]->u.pes_filter.opaque;
+            if (!pes->st)
+                pes->st = av_new_stream(pes->stream, pes->pid);
             st = pes->st;
         } else {
             if (ts->pids[pid]) mpegts_close_filter(ts, ts->pids[pid]); //wrongly added sdt filter probably
             st = pes->st;
         } else {
             if (ts->pids[pid]) mpegts_close_filter(ts, ts->pids[pid]); //wrongly added sdt filter probably