input: es: only keep main source PCR values
As we can now differentiate between the SET_PCR callers.
Merge request reports
Activity
added MRStatus::Reviewable label
added MRStatus::Acceptable label and removed MRStatus::Reviewable label
requested review from @fcartegnie
This is forcing what was done in some demuxers to be done for all secondary demuxers, and that's very wrong AFAICT.
For instance if you have video capture primary and audio capture secondary (or vice versa) it's entire possible that the secondary is behind the primary, and thus needs PCR control. It's also possible that due to non-multiple packetisation times, neither is purely ahead of the other, and we really need to compute a synthetic PCR (minimum of all PCRs).
What we tried to fix with this MR was the fact that it was possible to receive PCR lower than the previous one.
The core (input.c) will first demux the master source, it will send PCR updates and maybe blocks with a pts always higher than the last PCR.
The core will then demux slaves source until it reach the last PCR sent by the master (via DEMUX_GET_TIME/DEMUX_SET_NEXT_DEMUX_TIME).
In that common case, the slave will likely send PCR lower than the master ones.
Another goal for this MR is the support of PCR for sout streams. If we send PCR to sout modules, they need a way to identify (only identify, not deference) the source of the PCR. The few hacks in subtitles demuxers prevent that since you won't receive PCR for slave subtitles.
Maybe we can remove those hacks in subtitles demuxers but add a new option/control/mode that will ask the core to not trust the PCR they send (for input_clock_Update).
Edited by Thomas Guillem
added MRStatus::InReview label and removed MRStatus::Acceptable label
added MRStatus::Stale label and removed MRStatus::InReview label
mentioned in merge request !1394 (merged)
changed milestone to %4.0