[vlc-devel] [PATCH 1/2] libvlc: add media_player metadata listener API
Romain Vimont
rom1v at videolabs.io
Tue Jan 19 09:16:19 UTC 2021
On Mon, Jan 18, 2021 at 05:32:14PM +0100, Thomas Guillem wrote:
> For now, it is only used for propagating loudness measurements.
> ---
> include/vlc/libvlc_media_player.h | 133 ++++++++++++++++++++++++++++++
> lib/libvlc.sym | 2 +
> lib/media_player.c | 103 +++++++++++++++++++++++
> 3 files changed, 238 insertions(+)
>
> diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
> index 8dd85d16049..a0398883c88 100644
> --- a/include/vlc/libvlc_media_player.h
> +++ b/include/vlc/libvlc_media_player.h
> @@ -2608,6 +2608,139 @@ LIBVLC_API int libvlc_media_player_set_role(libvlc_media_player_t *p_mi,
>
> /** @} audio */
>
> +/** \defgroup libvlc_media_player_metadata_cbs LibVLC media player metadata callbacks
> + * @{
> + */
> +
> +/**
> + * Media player metadata listener opaque structure.
> + *
> + * This opaque structure is returned by
> + * libvlc_media_player_add_metadata_listener() and can be used to remove the
> + * listener via libvlc_media_player_remove_metadata_listener().
> + */
> +typedef struct libvlc_media_player_metadata_listener_id
> + libvlc_media_player_metadata_listener_id;
> +
> +/**
> + * Audio loudness measurement
> + */
> +struct libvlc_audio_loudness
> +{
> + /** Momentary loudness (last 400 ms), in LUFS */
> + double loudness_momentary;
> + /** Short term loudness (last 3seconds), in LUFS */
> + double loudness_shortterm;
> + /** Integrated loudness (global), in LUFS */
> + double loudness_integrated;
> + /** Loudness range, in LU */
> + double loudness_range;
> + /** True Peak, in dBTP */
> + double truepeak;
> +};
> +
> +/**
> + * Player metadata option
> + */
> +enum libvlc_media_player_metadata_option
> +{
> + /**
> + * Ask for momentary loudness measurement
> + *
> + * Very low CPU usage.
> + * @see libvlc_media_player_metadata_cbs.on_momentary_loudness_changed
> + */
> + LIBVLC_MEDIA_PLAYER_METADATA_LOUDNESS_MOMENTARY,
> +
> + /**
> + * Ask for all loudness measurements
> + *
> + * High CPU usage.
> + * @see libvlc_media_player_metadata_cbs.on_loudness_changed
> + */
> + LIBVLC_MEDIA_PLAYER_METADATA_LOUDNESS_FULL,
> +};
> +
> +/**
> + * Player metadata callbacks
> + *
> + * Can be registered with libvlc_media_player_add_metadata_listener().
> + *
> + * @warning To avoid deadlocks, users should never call libvlc_media_player_t
> + * functions from these callbacks.
> + */
> +union libvlc_media_player_metadata_cbs
I would prefer two different listener types than an union (it
complexifies the API IMO).
Regards
More information about the vlc-devel
mailing list