Kaydet (Commit) 4f36924f authored tarafından Minh Ngo's avatar Minh Ngo Kaydeden (comit) Michael Meeks

Playback loop

Change-Id: I18c544dadb553e7e173e9e377a337aa2b7eecb60
üst 2a6b3cb7
...@@ -34,7 +34,7 @@ namespace ...@@ -34,7 +34,7 @@ namespace
{ {
void EventHandler( const libvlc_event_t *evemt, void *pData ) void EventHandler( const libvlc_event_t *evemt, void *pData )
{ {
switch (evemt->type) switch ( evemt->type )
{ {
case libvlc_MediaPlayerPaused: case libvlc_MediaPlayerPaused:
osl::Condition *condition = static_cast<osl::Condition*>( pData ); osl::Condition *condition = static_cast<osl::Condition*>( pData );
...@@ -53,7 +53,7 @@ namespace ...@@ -53,7 +53,7 @@ namespace
libvlc_event_attach( manager, libvlc_MediaPlayerPaused, EventHandler, &condition ); libvlc_event_attach( manager, libvlc_MediaPlayerPaused, EventHandler, &condition );
libvlc_audio_set_mute( player, true ); libvlc_audio_set_mute( player, true );
if (libvlc_media_player_play( player ) == -1) if ( libvlc_media_player_play( player ) == -1 )
{ {
std::cerr << "Couldn't play" << std::endl; std::cerr << "Couldn't play" << std::endl;
} }
......
...@@ -42,6 +42,7 @@ VLCPlayer::VLCPlayer( const rtl::OUString& url ) ...@@ -42,6 +42,7 @@ VLCPlayer::VLCPlayer( const rtl::OUString& url )
, mMedia( InitMedia( url, mInstance ), libvlc_media_release ) , mMedia( InitMedia( url, mInstance ), libvlc_media_release )
, mPlayer( libvlc_media_player_new_from_media( mMedia.get() ), libvlc_media_player_release ) , mPlayer( libvlc_media_player_new_from_media( mMedia.get() ), libvlc_media_player_release )
, mUrl( url ) , mUrl( url )
, mPlaybackLoop( false )
{ {
} }
...@@ -98,13 +99,38 @@ double SAL_CALL VLCPlayer::getRate() ...@@ -98,13 +99,38 @@ double SAL_CALL VLCPlayer::getRate()
return libvlc_media_player_get_rate( mPlayer.get() ); return libvlc_media_player_get_rate( mPlayer.get() );
} }
namespace
{
void EventHandler( const libvlc_event_t *evemt, void *pData )
{
switch (evemt->type)
{
case libvlc_MediaPlayerEndReached:
boost::shared_ptr<libvlc_media_player_t> player = *static_cast< boost::shared_ptr<libvlc_media_player_t>* >( pData );
libvlc_media_player_stop( player.get() );
libvlc_media_player_play( player.get() )
break;
}
}
}
void SAL_CALL VLCPlayer::setPlaybackLoop( ::sal_Bool bSet ) void SAL_CALL VLCPlayer::setPlaybackLoop( ::sal_Bool bSet )
{ {
::osl::MutexGuard aGuard(m_aMutex);
mPlaybackLoop = bSet;
libvlc_event_manager_t *manager = libvlc_media_player_event_manager( mPlayer.get() );
if ( bSet )
libvlc_event_attach( manager, libvlc_MediaPlayerEndReached, EventHandler, &mPlayer );
else
libvlc_event_detach( manager, libvlc_MediaPlayerEndReached, EventHandler, &mPlayer );
} }
::sal_Bool SAL_CALL VLCPlayer::isPlaybackLoop() ::sal_Bool SAL_CALL VLCPlayer::isPlaybackLoop()
{ {
return false; ::osl::MutexGuard aGuard(m_aMutex);
return mPlaybackLoop;
} }
void SAL_CALL VLCPlayer::setVolumeDB( ::sal_Int16 nDB ) void SAL_CALL VLCPlayer::setVolumeDB( ::sal_Int16 nDB )
...@@ -210,4 +236,4 @@ uno::Reference< css::media::XFrameGrabber > SAL_CALL VLCPlayer::createFrameGrabb ...@@ -210,4 +236,4 @@ uno::Reference< css::media::XFrameGrabber > SAL_CALL VLCPlayer::createFrameGrabb
} }
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
...@@ -41,6 +41,7 @@ class VLCPlayer : public ::cppu::BaseMutex, ...@@ -41,6 +41,7 @@ class VLCPlayer : public ::cppu::BaseMutex,
boost::shared_ptr<libvlc_media_t> mMedia; boost::shared_ptr<libvlc_media_t> mMedia;
boost::shared_ptr<libvlc_media_player_t> mPlayer; boost::shared_ptr<libvlc_media_player_t> mPlayer;
const rtl::OUString mUrl; const rtl::OUString mUrl;
bool mPlaybackLoop;
public: public:
VLCPlayer( const rtl::OUString& url ); VLCPlayer( const rtl::OUString& url );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment