mpegts: only reopen pmt_cb filter if its different from the previous.
Fixes Ticket2632 Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit b009267910df10c004b5f340a090d45da29089a0)
This commit is contained in:
parent
139005452d
commit
cbbfdcf9ee
@ -1579,12 +1579,18 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
|
|||||||
if (sid == 0x0000) {
|
if (sid == 0x0000) {
|
||||||
/* NIT info */
|
/* NIT info */
|
||||||
} else {
|
} else {
|
||||||
|
MpegTSFilter *fil = ts->pids[pmt_pid];
|
||||||
program = av_new_program(ts->stream, sid);
|
program = av_new_program(ts->stream, sid);
|
||||||
program->program_num = sid;
|
program->program_num = sid;
|
||||||
program->pmt_pid = pmt_pid;
|
program->pmt_pid = pmt_pid;
|
||||||
if (ts->pids[pmt_pid])
|
if (fil)
|
||||||
mpegts_close_filter(ts, ts->pids[pmt_pid]);
|
if ( fil->type != MPEGTS_SECTION
|
||||||
mpegts_open_section_filter(ts, pmt_pid, pmt_cb, ts, 1);
|
|| fil->pid != pmt_pid
|
||||||
|
|| fil->u.section_filter.section_cb != pmt_cb)
|
||||||
|
mpegts_close_filter(ts, ts->pids[pmt_pid]);
|
||||||
|
|
||||||
|
if (!ts->pids[pmt_pid])
|
||||||
|
mpegts_open_section_filter(ts, pmt_pid, pmt_cb, ts, 1);
|
||||||
add_pat_entry(ts, sid);
|
add_pat_entry(ts, sid);
|
||||||
add_pid_to_pmt(ts, sid, 0); //add pat pid to program
|
add_pid_to_pmt(ts, sid, 0); //add pat pid to program
|
||||||
add_pid_to_pmt(ts, sid, pmt_pid);
|
add_pid_to_pmt(ts, sid, pmt_pid);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user