comparison 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
comparison
equal deleted inserted replaced
2760:034925441d67 2761:5e808c3a55a8
586 case STREAM_TYPE_VIDEO_VC1: 586 case STREAM_TYPE_VIDEO_VC1:
587 case STREAM_TYPE_AUDIO_AAC: 587 case STREAM_TYPE_AUDIO_AAC:
588 case STREAM_TYPE_AUDIO_AC3: 588 case STREAM_TYPE_AUDIO_AC3:
589 case STREAM_TYPE_AUDIO_DTS: 589 case STREAM_TYPE_AUDIO_DTS:
590 case STREAM_TYPE_SUBTITLE_DVB: 590 case STREAM_TYPE_SUBTITLE_DVB:
591 if(ts->pids[pid]){ 591 if(ts->pids[pid] && ts->pids[pid]->type == MPEGTS_PES){
592 assert(ts->pids[pid]->type == MPEGTS_PES);
593 pes= ts->pids[pid]->u.pes_filter.opaque; 592 pes= ts->pids[pid]->u.pes_filter.opaque;
594 st= pes->st; 593 st= pes->st;
595 }else{ 594 }else{
595 if (ts->pids[pid]) mpegts_close_filter(ts, ts->pids[pid]); //wrongly added sdt filter probably
596 pes = add_pes_stream(ts, pid, pcr_pid, stream_type); 596 pes = add_pes_stream(ts, pid, pcr_pid, stream_type);
597 if (pes) 597 if (pes)
598 st = new_pes_av_stream(pes, 0); 598 st = new_pes_av_stream(pes, 0);
599 } 599 }
600 add_pid_to_pmt(ts, h->id, pid); 600 add_pid_to_pmt(ts, h->id, pid);