If the decoder is valid for holding, then it is also valid for setting
a VLC object variable or adding a VLC object variable callback.
Otherwise, loading the decoder pointer or accessing the decoder is
undefined.
Either way, holding then releasing serves no purpose.
Note: input_GetEsObjects() should probably be removed in favor of the
new VBI input controls; but those are not currently exposed to input
managers.
We now change the slave demux rate according to the requested subtitle fps and
the main demuxer fps.
Example: Video is 24fps but the subtitle is 26fps. In that case, we want to
slow down the subtitle demuxer. Setting "sub-fps" to 26 will change the rate
of the subtitle demuxer to 0.92.
This will be used by the future player to select VBI page or transparency and
get notified when they change. These new controls need the vlc_es_id_t of the
teletext track, that will be known by the player. This will replace the hackish
function: input_GetEsObjects() that is only used by QT in order to control
teletext.
This event was not used. The aout is unique and created by the playlist (and by
vlc_player in the future), we don't need to send any events for its
creation/deletion.
Add the vlc_es_id_t structure representing an ES track ID.
This new struct will be used to select/unselect/restart tracks.
Users will receive this new struct from input thread event callbacks. They will
be able to hold/release it (and use it even after the track is terminated by
the es_out).
ES Tracks will still be selectable via their i_id (for TS cases) and legacy
track selection via "video-es"/"audio-es"/"spu-es" is still functional.
ES tracks of the input item will now keep the same fmt.i_id than the demuxer
one.
The fmt of the ES events will now keep the decoder codec. The original codec
from the demuxer is still available via fmt.i_original_fourcc.
Move the void *user_data parameter at the end of the function. For consistency,
since most opaque pointers are passed at the end of functions in the VLC code
base.
Subitems do not belong to an input item: they are created only to fire
an event, then destroyed immediately. Thus, the detection of subitems is
more related to a specific preparsing task than to the item itself.
Therefore, notify the detection of subitems on the input thread, so that
we could eventually remove the vlc_InputItemSubItemTreeAdded event on
the input item.
Some input event structs contain enums, whose values can be accessed
globally in C, but need a qualified access in C++. Since these enums are
defined inside unamed union and structs, there was no way to use them
from C++ code.
To avoid the problem, declare named structs for every event type
requiring more than one field.