[vlc-devel] [PATCH] Add mappings for some new libvlc events

Hugo Beauzée-Luyssen hugo at beauzee.fr
Mon Dec 14 18:26:45 CET 2015


On 12/14/2015 05:59 PM, Daniel Amm wrote:
> ---
>   vlcpp/EventManager.hpp | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 72 insertions(+)
>
> diff --git a/vlcpp/EventManager.hpp b/vlcpp/EventManager.hpp
> index f15ea46..15ff377 100644
> --- a/vlcpp/EventManager.hpp
> +++ b/vlcpp/EventManager.hpp
> @@ -700,6 +700,78 @@ class MediaPlayerEventManager : public EventManager
>                   (*callback)( e->u.media_player_es_changed.i_type, e->u.media_player_es_changed.i_id );
>               });
>           }
> +
> +        /**
> +         * \brief onCorked Registers an event called when the playback is paused automatically for a higher priority audio stream
> +         * \param f A std::function<void(void)> (or an equivalent Callable type)
> +         */
> +        template <typename Func>
> +        RegisteredEvent onCorked( Func&& f )
> +        {
> +            return handle( libvlc_MediaPlayerCorked, std::forward<Func>( f ) );
> +        }
> +
> +        /**
> +         * \brief onUncorked Registers an event called when the playback is unpaused automatically after a higher priority audio stream ends
> +         * \param f A std::function<void(void)> (or an equivalent Callable type)
> +         */
> +        template <typename Func>
> +        RegisteredEvent onUncorked( Func&& f )
> +        {
> +            return handle( libvlc_MediaPlayerUncorked, std::forward<Func>( f ) );
> +        }
> +
> +        /**
> +         * \brief onMuted Registers an event called when the audio is muted
> +         * \param f A std::function<void(void)> (or an equivalent Callable type)
> +         */
> +        template <typename Func>
> +        RegisteredEvent onMuted( Func&& f )
> +        {
> +            return handle( libvlc_MediaPlayerMuted, std::forward<Func>( f ) );
> +        }
> +
> +        /**
> +         * \brief onUnmuted Registers an event called when the audio is unmuted
> +         * \param f A std::function<void(void)> (or an equivalent Callable type)
> +         */
> +        template <typename Func>
> +        RegisteredEvent onUnmuted( Func&& f )
> +        {
> +            return handle( libvlc_MediaPlayerUnmuted, std::forward<Func>( f ) );
> +        }
> +
> +        /**
> +         * \brief onAudioVolume Registers an event called when the current audio volume changes
> +         * \param f A std::function<void(float)> (or an equivalent Callable type)
> +         *          The provided float is the new current audio volume percentage.
> +         */
> +        template <typename Func>
> +        RegisteredEvent onAudioVolume( Func&& f )
> +        {
> +            EXPECT_SIGNATURE(void(float));
> +            return handle( libvlc_MediaPlayerAudioVolume, std::forward<Func>( f ), [](const libvlc_event_t* e, void* data)
> +            {
> +                auto callback = static_cast<DecayPtr<Func>>( data );
> +                (*callback)( e->u.media_player_audio_volume.volume );
> +            });
> +        }
> +
> +        /**
> +         * \brief onAudioDevice Registers an event called when the current audio output device changes
> +         * \param f A std::function<void(std::string)> (or an equivalent Callable type)
> +         *          The provided string is the new current volume.
> +         */
> +        template <typename Func>
> +        RegisteredEvent onAudioDevice( Func&& f )
> +        {
> +            EXPECT_SIGNATURE(void(std::string));
> +            return handle( libvlc_MediaPlayerAudioDevice, std::forward<Func>( f ), [](const libvlc_event_t* e, void* data)
> +            {
> +                auto callback = static_cast<DecayPtr<Func>>( data );
> +                (*callback)( e->u.media_player_audio_device.device );
> +            });
> +        }
>   #endif
>   };
>
>
Hi,

If I'm not mistaking, libvlc 2.2 also has corked/uncorked, mute/unmute & 
volume changed events.
You should move the wrappers for those out of the #if 
LIBVLC_VERSION_INT... scope.
Audio device is 3.0 only indeed.

LGTM otherwise :)

Regards,


More information about the vlc-devel mailing list