diff mpegts.c @ 2761:5e808c3a55a8 libavformat

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.
author heydowns
date Sat, 17 Nov 2007 03:14:43 +0000
parents 38639f62f23f
children d52c718e83f9
line wrap: on
line diff
--- a/mpegts.c	Fri Nov 16 13:13:53 2007 +0000
+++ b/mpegts.c	Sat Nov 17 03:14:43 2007 +0000
@@ -588,11 +588,11 @@
         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);