diff options
author | Minh Ngo <nlminhtl@gmail.com> | 2013-07-29 23:49:18 +0300 |
---|---|---|
committer | Michael Meeks <michael.meeks@suse.com> | 2013-08-21 10:54:49 +0100 |
commit | 2a6b3cb7616abd80ed59304facde14a23387dd1d (patch) | |
tree | 2363a4c71bbe05594d4b9407fad38acccc75da3e /avmedia | |
parent | 569533275a23faa774f6b1c972ff99d872ea8da9 (diff) |
Optimizing VLC player initialization process.
Manager checks if an URL is the same or empty.
Change-Id: I4ab2db31f73fef45feff1973fa82452dc579ef9d
Diffstat (limited to 'avmedia')
-rw-r--r-- | avmedia/source/vlc/vlcmanager.cxx | 9 | ||||
-rw-r--r-- | avmedia/source/vlc/vlcmanager.hxx | 1 | ||||
-rw-r--r-- | avmedia/source/vlc/vlcplayer.cxx | 13 | ||||
-rw-r--r-- | avmedia/source/vlc/vlcplayer.hxx | 2 |
4 files changed, 19 insertions, 6 deletions
diff --git a/avmedia/source/vlc/vlcmanager.cxx b/avmedia/source/vlc/vlcmanager.cxx index 0b2ad6a642b8..a3e762bacc77 100644 --- a/avmedia/source/vlc/vlcmanager.cxx +++ b/avmedia/source/vlc/vlcmanager.cxx @@ -21,10 +21,13 @@ Manager::~Manager() uno::Reference< media::XPlayer > SAL_CALL Manager::createPlayer( const rtl::OUString& rURL ) throw (uno::RuntimeException) { - VLCPlayer* pPlayer( new VLCPlayer( rURL/*, mxMgr */ ) ); - uno::Reference< media::XPlayer > xRet( pPlayer ); + if ( !rURL.isEmpty() || (mPlayer.is() && dynamic_cast<VLCPlayer*>( mPlayer.get() )->url() != rURL)) + { + VLCPlayer* pPlayer( new VLCPlayer( rURL/*, mxMgr */ ) ); + mPlayer = uno::Reference< media::XPlayer >( pPlayer ); + } - return xRet; + return mPlayer; } rtl::OUString SAL_CALL Manager::getImplementationName() diff --git a/avmedia/source/vlc/vlcmanager.hxx b/avmedia/source/vlc/vlcmanager.hxx index 2e81a3533a27..94174802f064 100644 --- a/avmedia/source/vlc/vlcmanager.hxx +++ b/avmedia/source/vlc/vlcmanager.hxx @@ -42,6 +42,7 @@ public: private: ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMgr; + ::com::sun::star::uno::Reference< ::com::sun::star::media::XPlayer > mPlayer; }; } diff --git a/avmedia/source/vlc/vlcplayer.cxx b/avmedia/source/vlc/vlcplayer.cxx index 34ebb00608ca..c4628edcfbd1 100644 --- a/avmedia/source/vlc/vlcplayer.cxx +++ b/avmedia/source/vlc/vlcplayer.cxx @@ -14,11 +14,13 @@ const ::rtl::OUString AVMEDIA_VLC_PLAYER_IMPLEMENTATIONNAME = "com.sun.star.comp const ::rtl::OUString AVMEDIA_VLC_PLAYER_SERVICENAME = "com.sun.star.media.Player_VLC"; const char * const VLC_ARGS[] = { - "-I", +// "-I", "-Vdummy", - "--ignore-config", + "--snapshot-format=png", +// "--ignore-config", + "--ffmpeg-threads", "--verbose=-1", - "--quiet" +// "--quiet" }; const int MS_IN_SEC = 1000; // Millisec in sec @@ -43,6 +45,11 @@ VLCPlayer::VLCPlayer( const rtl::OUString& url ) { } +const rtl::OUString& VLCPlayer::url() const +{ + return mUrl; +} + void SAL_CALL VLCPlayer::start() { ::osl::MutexGuard aGuard(m_aMutex); diff --git a/avmedia/source/vlc/vlcplayer.hxx b/avmedia/source/vlc/vlcplayer.hxx index 00a55ebfecbb..81136025e530 100644 --- a/avmedia/source/vlc/vlcplayer.hxx +++ b/avmedia/source/vlc/vlcplayer.hxx @@ -44,6 +44,8 @@ class VLCPlayer : public ::cppu::BaseMutex, public: VLCPlayer( const rtl::OUString& url ); + const rtl::OUString& url() const; + void SAL_CALL start(); void SAL_CALL stop(); ::sal_Bool SAL_CALL isPlaying(); |