Adding the close callback in the object v-table instead of relying on
the module to do so.
This remove module dependency from the stream output object. From now
on, it will be possible to allocate and set-up stream outputs
programmatically without having to declare a module.
This is useful in scenario where a very contextual stream output filter
implementation is needed and we don't want to expose a module that the
user can manipulate. A good example of that is the current
`chromecast-proxy` submodule which inherit from it's parent internals
and drop data until the first I-Frame.
This approach of delegating object deletion to the v-table is already
taken by most modern module types.
It is now less likely to happen.
It's better to do nothing if it happens since the writing is already
paced via the callback and pa_stream_writable_size().
Keep a fifo block in the module and send blocks to pulse via the
write_callback.
Pulse is now uncorked sooner (on the first play), silence is sent via
the data callback to reach for the start date.
This fixes overflow when sending more then 5 seconds of audio.
This function interpolate the last timing. This will be used to rework
the draining and when switching to data callback.
An alternative is to use vlc_pa_get_latency() directly with the
PA_STREAM_INTERPOLATE_TIMING flag but timings can go in the past when
using this flag.
Since fe415420f3 the palette set in the local
format is not set on the output region format.
The palette of the region is created in subpicture_region_New() and the
same pointer is used between the region format and the picture format.
It's not used anymore.
As the doc suggests it was provided for convenience and was originally not
handling text-based regions at all. Is it supposed to take care of the
subpicture_region_t::p_private data copying it doesn't know about ?
It is rare to need this feature on regions. In bluray it was likely done
because the same region couldn't be in 2 different containers at the same time.
The picture inside our internal regions is refcounted, so it will stay alive
even if the internal region is deleted.
This will make things a bit faster and use less memory.
A slave clock can register events that are sent from the master clock.
For now, there is only one event: discontinuity.
For now, the discontinuity event is only sent when updating the first
point.
Refs #27025
Skip the long scenarios since the video convert/update can take some
time (on a 24h scale).
Only the normal scenario is checking if video play dates are correct.
Other scenarios will fail. Video rendering is enabled anyway in most
scenarios so that it can used to visualize video timestamps with a
output tracer.