[SCM] libav/experimental: When new streams are detected, look for old filters and close them out. This avoids crashes seen when legitimate streams are found on PID 0x11 instead of DVB SDT. Fixes regression detailed in Roundup issue 138.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:09:35 UTC 2013


The following commit has been merged in the experimental branch:
commit 28af284cfb44cb198c1b1c01e61c90b10fd9e395
Author: Jeff Downs <heydowns at borg.com>
Date:   Sat Nov 17 03:14:43 2007 +0000

    When new streams are detected, look for old filters and close them out.
    This avoids crashes seen when legitimate streams are found on PID 0x11 instead
    of DVB SDT.
    Fixes regression detailed in Roundup issue 138.
    
    Originally committed as revision 11050 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 9554c5a..9c60081 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -588,11 +588,11 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
         case STREAM_TYPE_AUDIO_AC3:
         case STREAM_TYPE_AUDIO_DTS:
         case STREAM_TYPE_SUBTITLE_DVB:
-            if(ts->pids[pid]){
-                assert(ts->pids[pid]->type == MPEGTS_PES);
+            if(ts->pids[pid] && ts->pids[pid]->type == MPEGTS_PES){
                 pes= ts->pids[pid]->u.pes_filter.opaque;
                 st= pes->st;
             }else{
+                if (ts->pids[pid]) mpegts_close_filter(ts, ts->pids[pid]); //wrongly added sdt filter probably
                 pes = add_pes_stream(ts, pid, pcr_pid, stream_type);
                 if (pes)
                     st = new_pes_av_stream(pes, 0);

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list