Skip to content

Commit 8602e32

Browse files
quariumcmassiot
authored andcommitted
upipe_ts_demux: use conformance for maximum PCR interval
Use conformance to set a minimal value for the maximum PCR interval. So configuring a maximum PCR interval to 0 use the conformance to set the maximum PCR interval. The default value for maximum PCR interval (1s) is above any conformance value.
1 parent 05d41b0 commit 8602e32

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

lib/upipe-ts/upipe_ts_demux.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1949,13 +1949,22 @@ static void upipe_ts_demux_program_handle_pcr(struct upipe *upipe,
19491949
{
19501950
struct upipe_ts_demux_program *upipe_ts_demux_program =
19511951
upipe_ts_demux_program_from_upipe(upipe);
1952+
struct upipe_ts_demux *demux = upipe_ts_demux_from_program_mgr(
1953+
upipe_ts_demux_program_to_upipe(upipe_ts_demux_program)->mgr);
19521954
upipe_verbose_va(upipe, "read PCR %"PRIu64, pcr_orig);
19531955

1956+
uint64_t max_pcr_interval = MAX_PCR_INTERVAL_ISO;
1957+
if (demux->conformance == UPIPE_TS_CONFORMANCE_DVB)
1958+
max_pcr_interval = MAX_PCR_INTERVAL_DVB;
1959+
1960+
if (upipe_ts_demux_program->max_pcr_interval > max_pcr_interval)
1961+
max_pcr_interval = upipe_ts_demux_program->max_pcr_interval;
1962+
19541963
/* handle 2^33 wrap-arounds */
19551964
uint64_t delta =
19561965
(TS_CLOCK_MAX + pcr_orig -
19571966
(upipe_ts_demux_program->last_pcr % TS_CLOCK_MAX)) % TS_CLOCK_MAX;
1958-
if (delta <= upipe_ts_demux_program->max_pcr_interval)
1967+
if (delta <= max_pcr_interval)
19591968
upipe_ts_demux_program->last_pcr += delta;
19601969
else {
19611970
upipe_warn_va(upipe, "PCR discontinuity %"PRIu64, delta);

0 commit comments

Comments
 (0)