summaryrefslogtreecommitdiff
path: root/avmedia/source
diff options
context:
space:
mode:
authorMinh Ngo <nlminhtl@gmail.com>2013-07-29 23:49:18 +0300
committerMichael Meeks <michael.meeks@suse.com>2013-08-21 10:54:49 +0100
commit2a6b3cb7616abd80ed59304facde14a23387dd1d (patch)
tree2363a4c71bbe05594d4b9407fad38acccc75da3e /avmedia/source
parent569533275a23faa774f6b1c972ff99d872ea8da9 (diff)
Optimizing VLC player initialization process.
Manager checks if an URL is the same or empty. Change-Id: I4ab2db31f73fef45feff1973fa82452dc579ef9d
Diffstat (limited to 'avmedia/source')
-rw-r--r--avmedia/source/vlc/vlcmanager.cxx9
-rw-r--r--avmedia/source/vlc/vlcmanager.hxx1
-rw-r--r--avmedia/source/vlc/vlcplayer.cxx13
-rw-r--r--avmedia/source/vlc/vlcplayer.hxx2
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();