libvlc_SetExitHandler should be used instead (from bin and test). This
function was confusing as the playlist used by the interface was not
controllable by the LibVLC API.
libvlc_InternalAddIntf should be used instead (from bin and test). This
function was confusing as the playlist used by the interface was not
controllable by the LibVLC API.
libvlc_InternalPlay() should be used instead (from bin and test). This
function was confusing as the started playlist was not controllable by
the LibVLC API.
For users of libvlc with manual DLL loading (especially languages not
compatible with C that have to recode the access to the libvlc DLL) it is
important to know the ABI version of the DLL, in case of API/ABI changes the
wrapper need to be updated and know when the provided DLL package matches or
not. This is especially critical for VLC 4.0 which has not changed version in
4 years and yet the libvlc API keeps changing.
This is similar to the versions of libavcodec/libavformat/etc. When the API is
changed the version values should be updated as well, and hopefully documented
as well.
One should avoid loading the DLL of a mismatching libvlc major ABI version.
Since it's likely to not be usable in the end, it's better not to load it at
all.
This should also be backported to VLC 3.0.
Any LibVLC users could request a timer from the player. This Media Player
timer has its own event API since:
- It is only used to receive time update points:
- The timer is not locked by the player lock. Indeed the player lock can be
too "slow" (it can be recursive, it is used by the playlist, and is it held
when sending all events). So it's not a good idea to hold this lock for
every frame/sample updates.
- The minimum delay between each updates can be configured: it avoids to flood
the UI when playing a media file with very high fps or very low audio sample
size.
The libvlc_media_player_time_point struct is used by timer update
callbacks. This public struct hold all the informations to interpolate a
time at a given date. It can be done with the
libvlc_media_player_time_point_interpolate() helper. That way, it is
now possible to get the last player time without holding any locks.
There is only one type of timer (for now):
libvlc_media_player_watch_time(): update are sent only when a frame or a
sample is outputted. Users of this timer should take into account that
the delay between each updates is not regular and can be up to 1seconds
(depending of the input). In that case, they should use their own timer
(from their mainloop) and use
libvlc_media_player_time_point_interpolate() to get the last time.
There's no reason for an app to mix its error messages with ours.
Applications that may have used this will fail to link so will quickly notice
the change.
This function does not work with MMDevice and PulseAudio, and does not
support hot-plug. To enumerate devices, the newer function
libvlc_audio_output_device_enum() ought to be used, which also works
with MMDevice and PulseAudio, and track audio device events.
No amount of documentational warnings will save developers from using
this broken function. It is better to remove it now that there is the
opportunity to do so in the form of the LibVLC 4.0 binary compatibility
break.
This new function can be used to retrieve the mtime, ctime, atime and
size properties. More properties can be added in the future without
modifying this function.
Co-authored-by: LE QUEC Nicolas <Nicolas.Le_Quec@bordeaux-inp.fr>
Fixes#25747
Add events, selection, and list API.
Like the for the media track list, this API use an opaque structure
libvlc_player_programlist_t to iterate through all programs. This avoid
the usage of *** from a public API.
More than one users reported that they would prefer having a new function to
unselect. Furthermore, having a type and a track of the same type as arguments
feels confusing.
The libvlc_media_player_update_tracklist() design was not straight-forward and
was not easy to use on some languages. For example, vlcpp will expose a vector
of tracks instead of a tracklist, so requiring a tracklist pointer to select
multiple tracks adds a lot of complexity (returning a vector and keeping a
pointer to the tracklist).
As decided by the VLC TC.
- 4 in favor: David, Denis, Hugo, Thomas
- 1 against: Rémi
cf. discussion here https://mailman.videolan.org/pipermail/vlc-devel/2019-May/124752.html
This reverts commit fa0d74966e.
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Signed-off-by: David Fuhrmann <dfuhrmann@videolan.org>
Signed-off-by: Denis Charmet <typx@videolan.org>