diff options
author | Steve Kondik <steve@cyngn.com> | 2015-12-14 02:54:24 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-12-14 02:58:56 -0800 |
commit | 23e9ce412425be12b8b637fff5886703f753c36e (patch) | |
tree | a840a7030de14a3337fd078ce7c5c4884cfc1391 /media/libmediaplayerservice/nuplayer/NuPlayer.cpp | |
parent | dc5f0eb0bb08885f63a97a111b02e234efc5c413 (diff) | |
download | frameworks_av-23e9ce412425be12b8b637fff5886703f753c36e.zip frameworks_av-23e9ce412425be12b8b637fff5886703f753c36e.tar.gz frameworks_av-23e9ce412425be12b8b637fff5886703f753c36e.tar.bz2 |
nuplayer: PCM offload fixes
* Fix PCM offload when passthrough isn't used (OMX decoder)
* Fix resume of PCM offload after pause timeout
Change-Id: I742eafd6ae8656fb214ba6b81cc63af57590c28c
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayer.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayer.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index 678db8e..c7e1b13 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -1240,7 +1240,7 @@ void NuPlayer::onResume() { } // |mAudioDecoder| may have been released due to the pause timeout, so re-create it if // needed. - if (audioDecoderStillNeeded() && mAudioDecoder == NULL && !mOffloadDecodedPCM) { + if (audioDecoderStillNeeded() && mAudioDecoder == NULL) { instantiateDecoder(true /* audio */, &mAudioDecoder); } if (mRenderer != NULL) { @@ -1316,8 +1316,8 @@ void NuPlayer::onStart(int64_t startPositionUs) { mOffloadAudio = canOffloadStream(audioMeta, (videoFormat != NULL), mSource->isStreaming(), streamType); - if (!mOffloadAudio) { - mOffloadAudio = canOffloadDecodedPCMStream(audioMeta, (videoFormat != NULL), mSource->isStreaming(), streamType); + if (!mOffloadAudio && (audioMeta != NULL)) { + mOffloadDecodedPCM = mOffloadAudio = canOffloadDecodedPCMStream(audioMeta, (videoFormat != NULL), mSource->isStreaming(), streamType); } if (mOffloadAudio) { @@ -1460,6 +1460,7 @@ void NuPlayer::tryOpenAudioSinkForOffload(const sp<AMessage> &format, bool hasVi if (err != OK) { // Any failure we turn off mOffloadAudio. mOffloadAudio = false; + mOffloadDecodedPCM = false; } else if (mOffloadAudio) { sp<MetaData> audioMeta = mSource->getFormatMeta(true /* audio */); @@ -1479,6 +1480,7 @@ void NuPlayer::determineAudioModeChange() { if (mRenderer == NULL) { ALOGW("No renderer can be used to determine audio mode. Use non-offload for safety."); mOffloadAudio = false; + mOffloadDecodedPCM = false; return; } @@ -1489,7 +1491,7 @@ void NuPlayer::determineAudioModeChange() { bool canOffload = canOffloadStream( audioMeta, hasVideo, mSource->isStreaming(), streamType); if (!canOffload) { - canOffload = canOffloadDecodedPCMStream(audioMeta, (videoFormat != NULL), mSource->isStreaming(), streamType); + mOffloadDecodedPCM = canOffload = canOffloadDecodedPCMStream(audioMeta, (videoFormat != NULL), mSource->isStreaming(), streamType); } if (canOffload) { if (!mOffloadAudio) { @@ -1502,7 +1504,6 @@ void NuPlayer::determineAudioModeChange() { if (mOffloadAudio) { mRenderer->signalDisableOffloadAudio(); mOffloadAudio = false; - setDecodedPcmOffload(false); } } } @@ -2477,7 +2478,7 @@ bool NuPlayer::canOffloadDecodedPCMStream(const sp<MetaData> audioMeta, AVNuUtils::get()->createPCMMetaFromSource(audioMeta); ALOGI("canOffloadDecodedPCMStream"); - audioMeta->dumpToLog(); + audioPCMMeta->dumpToLog(); mOffloadDecodedPCM = ((mime && !AVNuUtils::get()->pcmOffloadException(audioMeta)) && canOffloadStream(audioPCMMeta, hasVideo, isStreaming, streamType)); |