summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2015-08-11 18:04:14 -0700
committerEric Laurent <elaurent@google.com>2015-08-12 01:12:26 +0000
commit97c9f4fd7bc31e2968d816402659ba1c64f10b42 (patch)
tree96e726b7cfeac443b961a0f6cc3abb3a866d0e5a
parentfa8ebb45fd850f56ca1bf64fbed3ac11e10c7d3d (diff)
downloadframeworks_av-97c9f4fd7bc31e2968d816402659ba1c64f10b42.zip
frameworks_av-97c9f4fd7bc31e2968d816402659ba1c64f10b42.tar.gz
frameworks_av-97c9f4fd7bc31e2968d816402659ba1c64f10b42.tar.bz2
NuPlayerRenderer: handle error when resuming an offloaded track
Make sure that an offloaded audio track is torn down if start() returns an error in onResume(). This makes sure that a track invalidated due to a potential audio path change while paused is re created on the correct output. Bug: 22256441. Change-Id: I6c7bfec6e7322415daffc0451bab46d0c558522a
-rw-r--r--media/libmedia/AudioTrack.cpp2
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp5
2 files changed, 5 insertions, 2 deletions
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index 7befe5d..444f4d8 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -325,7 +325,7 @@ status_t AudioTrack::set(
mTransfer = transferType;
mDoNotReconnect = doNotReconnect;
- ALOGV_IF(sharedBuffer != 0, "sharedBuffer: %p, size: %d", sharedBuffer->pointer(),
+ ALOGV_IF(sharedBuffer != 0, "sharedBuffer: %p, size: %zu", sharedBuffer->pointer(),
sharedBuffer->size());
ALOGV("set() streamType %d frameCount %zu flags %04x", streamType, frameCount, flags);
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index 2e0d0d3..04a46f4 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -1469,7 +1469,10 @@ void NuPlayer::Renderer::onResume() {
if (mHasAudio) {
cancelAudioOffloadPauseTimeout();
- mAudioSink->start();
+ status_t err = mAudioSink->start();
+ if (err != OK) {
+ notifyAudioTearDown();
+ }
}
{