Every clients are now using either the vlc_input_es_out priv_control
callback or they fallback to the es_out_t implementation if not filled.
Moving the call to vlc_input_es_out will allow removing the private
control from the es_out_t callback interface.
Every clients are now using either the vlc_input_es_out priv_control
callback or they fallback to the es_out_t implementation if not filled.
Moving the call to vlc_input_es_out will allow removing the private
control from the es_out_t callback interface.
Every clients are now using either the vlc_input_es_out priv_control
callback or they fallback to the es_out_t implementation if not filled.
Moving the call to vlc_input_es_out will allow removing the private
control from the es_out_t callback interface.
input_EsOutTimeshiftNew() is now receiving a vlc_input_es_out instance
to initialize the next hop in the es_out_t chain, so we can use this
internally. This will allow calling the vlc_input_es_out private control
instead of the es_out_t one.
Now that every input es_out_t implementations are inheriting
vlc_input_es_out and every locations in the input are storing
vlc_input_es_out directly, we can forward the downclass to the
es_out_timeshift vlc_input_es_out implementation so that it can forward
the private controls to the next vlc_input_es_out.
Thanks to the compability macros, we didn't need to modify the client
code, and now that every clients are using vlc_input_es_out, we can
downcast directly when needed.
input_EsOutSourceNew() is now receiving a vlc_input_es_out instance to
initialize the next hop in the es_out_t chain, so we can use this
internally. This will allow calling the vlc_input_es_out private control
instead of the es_out_t one.
Now that every input es_out_t implementations are inheriting
vlc_input_es_out and every locations in the input are storing
vlc_input_es_out directly, we can forward the downclass to the
es_out_source vlc_input_es_out implementation so that it can forward the
private controls to the next vlc_input_es_out.
Make input_source_t store a vlc_input_es_out directly instead of an
es_out_t. Indeed, an input_source_t is always linked to an es_out_t
which is able to execute private controls for the playback.
Now that the es_out is an instance of vlc_input_es_out, we want to use
the new interface as much as possible. The es_out private callbacks will
handle both types so the transition can be partial in this commit to
keep it minial aand mostly change the stored variables and the other calls.
This commit provides temporary compatibility macros to be able to change
the type used for the first parameter in each of the clients of the
private control API.
They will be removed in later commits.
Now that every clients are inheriting vlc_input_es_out, we can output a
vlc_input_es_out object to the core input directly.
For now, the input still upcasts to es_out_t to avoid modifying the
whole file in this commit.
The structure will replace the previous priv_control that was
implemented mostly by input-specific es_out, and will allow to implement
more controls through operations instead, when suited.
The upper class was used everywhere, leading to the pointer being
downcasted at the beginning of every function. By using the downcast
class everywhere, we don't introduce explicit downcast in most places.
This commit also reduces the usage of the es_out_t type as parameter,
which will be moved to another downclass in follow-up MR.
The upper class was used everywhere, leading to the pointer being
downcasted at the beginning of every function. By using the downcast
class everywhere, we don't introduce explicit downcast in most places.
This commit also reduces the usage of the es_out_t type as parameter,
which will be moved to another downclass in follow-up MR.
es_out_sys_t is the name used in es_out.c for the main es_out. By
providing a dedicated name, we gain more clarity and better integration
with tooling.
es_out_sys_t is the name used in es_out.c for the main es_out. By
providing a dedicated name, we gain more clarity and better integration
with tooling.
Input item parsing depends on other components and exposes its own new
objects so separate it from the main input.c file to ease compilation
with tests.
If the display filling mode of the video changed, the video placement has changed as well.
Display modules don't actually care about the aspect ratio, just where they're supposed to stretch the video.
If the zoom of the video changed, the video placement has changed as well.
Display modules don't actually care about the aspect ratio, just where they're supposed to stretch the video.
This will prevent to send updates after the last discontinuity (when the output
is deleted) from other ES sources.
This could happen with a high CPU load:
timer: update: source: audio/0, ts: 197001 npt: 1
timer: update: source: audio/0, ts: 198001 npt: 1
timer: update: source: audio/0, ts: 199001 npt: 1
timer: discontinuity: source: input
timer: discontinuity: source: audio/0
timer: update: source: video/0, ts: 191660 npt: 1
timer: discontinuity: source: video/0
Refs #26609
It's also checked when the rendered region is placed, but it's better if we check
before rendering to identify if the initialization is missing from the text rendering or
the text source.
It's positioned at the center of the display by default as the PIP doesn't set any
alignment or set the absolute flag.
It was the value set by the calloc before 4f0d7e7731.
And share the same lock instance.
timing.first_pts is now only valid when using timing_report
(stream->timing struct should not be used when using time_get)