summaryrefslogtreecommitdiffstats
path: root/slideshow/source/engine/soundplayer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'slideshow/source/engine/soundplayer.cxx')
-rw-r--r--slideshow/source/engine/soundplayer.cxx17
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);