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
{
void EventHandler( const libvlc_event_t *evemt, void *pData )
{
switch (evemt->type)
switch ( evemt->type )
{
case libvlc_MediaPlayerPaused:
osl::Condition *condition = static_cast<osl::Condition*>( pData );
......@@ -53,7 +53,7 @@ namespace
libvlc_event_attach( manager, libvlc_MediaPlayerPaused, EventHandler, &condition );
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;
}
......
......@@ -42,6 +42,7 @@ VLCPlayer::VLCPlayer( const rtl::OUString& url )
, mMedia( InitMedia( url, mInstance ), libvlc_media_release )
, mPlayer( libvlc_media_player_new_from_media( mMedia.get() ), libvlc_media_player_release )
, mUrl( url )
, mPlaybackLoop( false )
{
}
......@@ -98,13 +99,38 @@ double SAL_CALL VLCPlayer::getRate()
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 )
{
::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()
{
return false;
::osl::MutexGuard aGuard(m_aMutex);
return mPlaybackLoop;
}
void SAL_CALL VLCPlayer::setVolumeDB( ::sal_Int16 nDB )
......@@ -210,4 +236,4 @@ uno::Reference< css::media::XFrameGrabber > SAL_CALL VLCPlayer::createFrameGrabb
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -41,6 +41,7 @@ class VLCPlayer : public ::cppu::BaseMutex,
boost::shared_ptr<libvlc_media_t> mMedia;
boost::shared_ptr<libvlc_media_player_t> mPlayer;
const rtl::OUString mUrl;
bool mPlaybackLoop;
public:
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