diff options
Diffstat (limited to 'slideshow/source/engine/soundplayer.cxx')
-rw-r--r-- | slideshow/source/engine/soundplayer.cxx | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/slideshow/source/engine/soundplayer.cxx b/slideshow/source/engine/soundplayer.cxx index 2f19fca124b9..505478cd3e33 100644 --- a/slideshow/source/engine/soundplayer.cxx +++ b/slideshow/source/engine/soundplayer.cxx @@ -31,7 +31,7 @@ #include <tools/urlobj.hxx> #include <avmedia/mediawindow.hxx> - +#include <mediafilemanager.hxx> #include <soundplayer.hxx> #include <algorithm> @@ -48,12 +48,14 @@ namespace slideshow std::shared_ptr<SoundPlayer> SoundPlayer::create( EventMultiplexer & rEventMultiplexer, const OUString& rSoundURL, - const uno::Reference< uno::XComponentContext>& rComponentContext ) + const uno::Reference< uno::XComponentContext>& rComponentContext, + MediaFileManager& rMediaFileManager) { std::shared_ptr<SoundPlayer> pPlayer( new SoundPlayer( rEventMultiplexer, rSoundURL, - rComponentContext ) ); + rComponentContext, + rMediaFileManager) ); rEventMultiplexer.addPauseHandler( pPlayer ); pPlayer->mThis = pPlayer; return pPlayer; @@ -86,7 +88,8 @@ namespace slideshow SoundPlayer::SoundPlayer( EventMultiplexer & rEventMultiplexer, const OUString& rSoundURL, - const uno::Reference< uno::XComponentContext>& rComponentContext ) + const uno::Reference< uno::XComponentContext>& rComponentContext, + MediaFileManager& rMediaFileManager) : mrEventMultiplexer(rEventMultiplexer), mThis(), mxPlayer() @@ -96,7 +99,11 @@ namespace slideshow try { - const INetURLObject aURL( rSoundURL ); + if (rSoundURL.startsWithIgnoreAsciiCase("vnd.sun.star.Package:")) + { + mpMediaTempFile = rMediaFileManager.getMediaTempFile(rSoundURL); + } + const INetURLObject aURL( mpMediaTempFile ? mpMediaTempFile->m_TempFileURL : rSoundURL ); mxPlayer.set( avmedia::MediaWindow::createPlayer( aURL.GetMainURL( INetURLObject::DecodeMechanism::Unambiguous ), ""/*TODO!*/ ), uno::UNO_QUERY); |