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

Daniel Amm da2424 at t-online.de
Mon Dec 14 23:43:13 CET 2015


> > On Mon, Dec 14, 2015, at 08:03 PM, Daniel Amm wrote:
> > > 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,
> > 
> > Ooops, you're right. I was thinking that these events were only added in
> > libvlc 3.
> > Do we need a check for libvlc 2.2.2 instead?
> > 
> 
> libvlcpp assumes a libvlc version >= 2.2, so there's no need for a check
> here.
> 
> Regards,

Ok, I have sent the corrected patch. But now, libvlcpp assumes libvlc
version >= 2.2.2, because the events were added in libvlc version 2.2.2,
right?



More information about the vlc-devel mailing list