mirror of https://git.ffmpeg.org/ffmpeg.git
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
This commit is contained in:
parent
e240f898ff
commit
28af284cfb
|
@ -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_AC3:
|
||||||
case STREAM_TYPE_AUDIO_DTS:
|
case STREAM_TYPE_AUDIO_DTS:
|
||||||
case STREAM_TYPE_SUBTITLE_DVB:
|
case STREAM_TYPE_SUBTITLE_DVB:
|
||||||
if(ts->pids[pid]){
|
if(ts->pids[pid] && ts->pids[pid]->type == MPEGTS_PES){
|
||||||
assert(ts->pids[pid]->type == MPEGTS_PES);
|
|
||||||
pes= ts->pids[pid]->u.pes_filter.opaque;
|
pes= ts->pids[pid]->u.pes_filter.opaque;
|
||||||
st= pes->st;
|
st= pes->st;
|
||||||
}else{
|
}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);
|
pes = add_pes_stream(ts, pid, pcr_pid, stream_type);
|
||||||
if (pes)
|
if (pes)
|
||||||
st = new_pes_av_stream(pes, 0);
|
st = new_pes_av_stream(pes, 0);
|
||||||
|
|
Loading…
Reference in New Issue