summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice
diff options
context:
space:
mode:
authorWei Jia <wjia@google.com>2015-08-31 18:33:14 -0700
committerWei Jia <wjia@google.com>2015-09-03 01:11:40 +0000
commit4d7ac854c5a45d0e3af3d0af78b5a8c9807cbec6 (patch)
treee678a66745d69e443bd3396bdfe9cd0fb45e02a3 /media/libmediaplayerservice
parentcfb252cdb748429789f918c4268fcca1331f6cec (diff)
downloadframeworks_av-4d7ac854c5a45d0e3af3d0af78b5a8c9807cbec6.zip
frameworks_av-4d7ac854c5a45d0e3af3d0af78b5a8c9807cbec6.tar.gz
frameworks_av-4d7ac854c5a45d0e3af3d0af78b5a8c9807cbec6.tar.bz2
NuPlayerRenderer: avoid divison by zero when sample rate is 0.
Also close AudioSink when failing to set playback rate. Bug: 23624664 Change-Id: I5bf8bcca4a21c26fb52821db597d61f7f1273d5c
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index 4de08ff..0ac29a8 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -945,6 +945,10 @@ bool NuPlayer::Renderer::onDrainAudioQueue() {
int64_t NuPlayer::Renderer::getDurationUsIfPlayedAtSampleRate(uint32_t numFrames) {
int32_t sampleRate = offloadingAudio() ?
mCurrentOffloadInfo.sample_rate : mCurrentPcmInfo.mSampleRate;
+ if (sampleRate == 0) {
+ ALOGE("sampleRate is 0 in %s mode", offloadingAudio() ? "offload" : "non-offload");
+ return 0;
+ }
// TODO: remove the (int32_t) casting below as it may overflow at 12.4 hours.
return (int64_t)((int32_t)numFrames * 1000000LL / sampleRate);
}
@@ -1789,6 +1793,7 @@ status_t NuPlayer::Renderer::onOpenAudioSink(
}
if (err != OK) {
ALOGW("openAudioSink: non offloaded open failed status: %d", err);
+ mAudioSink->close();
mCurrentPcmInfo = AUDIO_PCMINFO_INITIALIZER;
return err;
}