diff options
Diffstat (limited to 'media/libmediaplayerservice')
5 files changed, 21 insertions, 9 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerFactory.cpp b/media/libmediaplayerservice/MediaPlayerFactory.cpp index f821cc3..3f69c11 100644 --- a/media/libmediaplayerservice/MediaPlayerFactory.cpp +++ b/media/libmediaplayerservice/MediaPlayerFactory.cpp @@ -246,6 +246,7 @@ class SonivoxPlayerFactory : public MediaPlayerFactory::IFactory { ".midi", ".smf", ".xmf", + ".mxmf", ".imy", ".rtttl", ".rtx", diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index 9005500..6b57c48 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -283,7 +283,7 @@ sp<ICrypto> MediaPlayerService::makeCrypto() { sp<IRemoteDisplay> MediaPlayerService::listenForRemoteDisplay( const sp<IRemoteDisplayClient>& client, const String8& iface) { - return new RemoteDisplay(client, iface.string());; + return new RemoteDisplay(client, iface.string()); } status_t MediaPlayerService::enableRemoteDisplay(const char *iface) { @@ -299,7 +299,7 @@ status_t MediaPlayerService::enableRemoteDisplay(const char *iface) { } if (mRemoteDisplay != NULL) { - mRemoteDisplay->disconnect(); + mRemoteDisplay->dispose(); mRemoteDisplay.clear(); } @@ -922,15 +922,22 @@ status_t MediaPlayerService::Client::setNextPlayer(const sp<IMediaPlayer>& playe Mutex::Autolock l(mLock); sp<Client> c = static_cast<Client*>(player.get()); mNextClient = c; - if (mAudioOutput != NULL && c != NULL) { - mAudioOutput->setNextOutput(c->mAudioOutput); - } else { - ALOGE("no current audio output"); + + if (c != NULL) { + if (mAudioOutput != NULL) { + mAudioOutput->setNextOutput(c->mAudioOutput); + } else if ((mPlayer != NULL) && !mPlayer->hardwareOutput()) { + ALOGE("no current audio output"); + } + + if ((mPlayer != NULL) && (mNextClient->getPlayer() != NULL)) { + mPlayer->setNextPlayer(mNextClient->getPlayer()); + } } + return OK; } - status_t MediaPlayerService::Client::seekTo(int msec) { ALOGV("[%d] seekTo(%d)", mConnId, msec); diff --git a/media/libmediaplayerservice/RemoteDisplay.cpp b/media/libmediaplayerservice/RemoteDisplay.cpp index 1cc605e..5542bb5 100644 --- a/media/libmediaplayerservice/RemoteDisplay.cpp +++ b/media/libmediaplayerservice/RemoteDisplay.cpp @@ -39,7 +39,7 @@ RemoteDisplay::RemoteDisplay( RemoteDisplay::~RemoteDisplay() { } -status_t RemoteDisplay::disconnect() { +status_t RemoteDisplay::dispose() { mSource->stop(); mLooper->stop(); diff --git a/media/libmediaplayerservice/RemoteDisplay.h b/media/libmediaplayerservice/RemoteDisplay.h index 63c5286..0d87250 100644 --- a/media/libmediaplayerservice/RemoteDisplay.h +++ b/media/libmediaplayerservice/RemoteDisplay.h @@ -33,7 +33,7 @@ struct WifiDisplaySource; struct RemoteDisplay : public BnRemoteDisplay { RemoteDisplay(const sp<IRemoteDisplayClient> &client, const char *iface); - virtual status_t disconnect(); + virtual status_t dispose(); protected: virtual ~RemoteDisplay(); diff --git a/media/libmediaplayerservice/nuplayer/mp4/MP4Source.cpp b/media/libmediaplayerservice/nuplayer/mp4/MP4Source.cpp index c80d13f..ffb3a65 100644 --- a/media/libmediaplayerservice/nuplayer/mp4/MP4Source.cpp +++ b/media/libmediaplayerservice/nuplayer/mp4/MP4Source.cpp @@ -93,6 +93,10 @@ struct StreamSource : public FragmentedMP4Parser::Source { return total; } + bool isSeekable() { + return false; + } + private: sp<NuPlayer::NuPlayerStreamListener> mListener; off64_t mPosition; |