[vlc-devel] [PATCH 00/17] clock: add back the input (PCR) source
Thomas Guillem
thomas at gllm.fr
Mon Feb 15 10:14:55 UTC 2021
Hello,
Branch available here:
https://code.videolan.org/tguillem/vlc/-/merge_requests/8 (comments on
gitlab are welcome too)
This patch set restore the VLC 3.0 clock behavior when using
--clock-master=1.
The option 1 was for MONOTONIC, it's now used for INPUT.
This option can be used by advanced users that want to use the INPUT as
the master and have all ES adapting their pace to the input (by
resampling, dropping frames, displaying faster...).
When there is no master ES (so no audio enabled), the default master
source will now be the INPUT source. Therefore, the VIDEO ES will adapt
its pace to the input. Favoring VIDEO or input in that case can be
discussed. We can still add another option in --clock-master to always
have an output as the master (and avoid modifying the output to adapt to
the input).
The input_clock.c that receive PCR points from the demuxer will now be a
client of the new vlc_main_clock_t API. It will be considered as master
vlc_clock_t, like the active audio ES.
Next input/clock patch set to follow:
- Fix normal_time handling: only implemented for the ts (and wrongly),
pass it directly from the demux to the clocks to the player (and not
passing by the input_thread_t)
- Fix input discontinuities handling. When the clock is reset from the
input (in case of discontinuities), outputs ES can't convert their
"reset" pts anymore. To address this issue, keep the last clock
reference when it is reset from the input. This past reference will
be kept until all outputs acknowledge (by calling vlc_clock_Reset()
on their side). This will allow output ES to continue outputting
frames while the input is reset.
Best regards,
Thomas
Thomas Guillem (17):
player: timer: don't use negative length
clock: allow to return VLC_TICK_INVALID from convert calls
vout: spu: don't return empty arrays
vout: spu: handle when the vlc_clock is reset
vout: handle when the vlc_clock is reset
aout: handle when the vlc_clock is reset
clock: add vlc_clock_main_CreateInput()
es_out: use the input_clock as a master source of vlc_clock
clock: remove monotonic fallback
clock: remove vlc_clock_main_SetFirstPcr
clock: remove vlc_clock_main_SetInputDejitter
clock: remove vlc_clock_main_Reset
input: send input clock points to the player
player/timer: rename best_source to master_source
player/timer: rename last_ts to last_video_ts
core: rename clock source option
player: timer: send more update points during startup
src/audio_output/dec.c | 13 +-
src/clock/clock.c | 205 ++++++++++------------------
src/clock/clock.h | 33 +++--
src/clock/input_clock.c | 31 ++++-
src/clock/input_clock.h | 6 +-
src/input/es_out.c | 78 +++++++----
src/input/event.h | 4 +-
src/input/input_internal.h | 1 -
src/libvlc-module.c | 4 +-
src/player/input.c | 7 +-
src/player/player.h | 14 +-
src/player/timer.c | 188 ++++++++++++++-----------
src/video_output/video_output.c | 47 +++++--
src/video_output/vout_subpictures.c | 27 +++-
test/src/player/player.c | 31 +----
15 files changed, 376 insertions(+), 313 deletions(-)
--
2.30.0
More information about the vlc-devel
mailing list