Mercurial > libavformat.hg
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); |