avformat/mpegts: never discard PAT pid

PID 0 was removed from the pid list when then PMT was parsed, it is better
to explictly avoid it from being discarded instead of keeing it in the list of
every program.

Signed-off-by: Marton Balint <cus@passwd.hu>
pull/371/head
Marton Balint 4 years ago
parent 9298e8eb61
commit 5ea37923a8
  1. 4
      libavformat/mpegts.c

@ -380,6 +380,9 @@ static int discard_pid(MpegTSContext *ts, unsigned int pid)
int used = 0, discarded = 0; int used = 0, discarded = 0;
struct Program *p; struct Program *p;
if (pid == PAT_PID)
return 0;
/* If none of the programs have .discard=AVDISCARD_ALL then there's /* If none of the programs have .discard=AVDISCARD_ALL then there's
* no way we have to discard this packet */ * no way we have to discard this packet */
for (k = 0; k < ts->stream->nb_programs; k++) for (k = 0; k < ts->stream->nb_programs; k++)
@ -2543,7 +2546,6 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
if (!ts->pids[pmt_pid]) if (!ts->pids[pmt_pid])
mpegts_open_section_filter(ts, pmt_pid, pmt_cb, ts, 1); 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, pmt_pid); add_pid_to_pmt(ts, sid, pmt_pid);
} }
} }

Loading…
Cancel
Save