summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
diff options
context:
space:
mode:
authorAndy Hung <hunga@google.com>2014-12-03 11:47:36 -0800
committerAndy Hung <hunga@google.com>2014-12-03 16:13:50 -0800
commit202bce11a7f66f27e6dbb6d154ddc123aa62513d (patch)
tree390b83dacc286717243ba6e3c1173c9e2f01b376 /media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
parent9a1c8892f6835325db6931529dc74bf98cf0aee8 (diff)
downloadframeworks_av-202bce11a7f66f27e6dbb6d154ddc123aa62513d.zip
frameworks_av-202bce11a7f66f27e6dbb6d154ddc123aa62513d.tar.gz
frameworks_av-202bce11a7f66f27e6dbb6d154ddc123aa62513d.tar.bz2
Fix NuPlayer assertion on failure to create AudioTrack
Under heavy media load or monkey/stress testing, more than 32 AudioTracks may be created or memory resources may be scarce. Remove the assertion on failure to create AudioTrack and signal MEDIA_ERROR. Bug: 17319843 Change-Id: I5d4e200b5f50d800046851a33e035cdc6ff10075
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp27
1 files changed, 9 insertions, 18 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
index 012d33e..6ad28b5 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
@@ -44,7 +44,7 @@ NuPlayer::Decoder::Decoder(
const sp<Renderer> &renderer,
const sp<NativeWindowWrapper> &nativeWindow,
const sp<CCDecoder> &ccDecoder)
- : mNotify(notify),
+ : DecoderBase(notify),
mNativeWindow(nativeWindow),
mSource(source),
mRenderer(renderer),
@@ -56,7 +56,6 @@ NuPlayer::Decoder::Decoder(
mIsVideoAVC(false),
mIsSecure(false),
mFormatChangePending(false),
- mBufferGeneration(0),
mPaused(true),
mResumePending(false),
mComponentName("decoder") {
@@ -336,20 +335,6 @@ void NuPlayer::Decoder::doRequestBuffers() {
}
}
-void NuPlayer::Decoder::handleError(int32_t err)
-{
- // We cannot immediately release the codec due to buffers still outstanding
- // in the renderer. We signal to the player the error so it can shutdown/release the
- // decoder after flushing and increment the generation to discard unnecessary messages.
-
- ++mBufferGeneration;
-
- sp<AMessage> notify = mNotify->dup();
- notify->setInt32("what", kWhatError);
- notify->setInt32("err", err);
- notify->post();
-}
-
bool NuPlayer::Decoder::handleAnInputBuffer() {
if (mFormatChangePending) {
return false;
@@ -462,8 +447,14 @@ bool NuPlayer::Decoder::handleAnOutputBuffer() {
flags = AUDIO_OUTPUT_FLAG_NONE;
}
- mRenderer->openAudioSink(
- format, false /* offloadOnly */, hasVideo, flags);
+ res = mRenderer->openAudioSink(
+ format, false /* offloadOnly */, hasVideo, flags, NULL /* isOffloaded */);
+ if (res != OK) {
+ ALOGE("Failed to open AudioSink on format change for %s (err=%d)",
+ mComponentName.c_str(), res);
+ handleError(res);
+ return false;
+ }
}
return true;
} else if (res == INFO_DISCONTINUITY) {