changeset 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 034925441d67
children 137eec75e3df
files mpegts.c
diffstat 1 files changed, 2 insertions(+), 2 deletions(-) [+]
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);