diff options
author | Wei Jia <wjia@google.com> | 2015-08-31 18:33:14 -0700 |
---|---|---|
committer | Wei Jia <wjia@google.com> | 2015-09-03 01:11:40 +0000 |
commit | 4d7ac854c5a45d0e3af3d0af78b5a8c9807cbec6 (patch) | |
tree | e678a66745d69e443bd3396bdfe9cd0fb45e02a3 /media/libmediaplayerservice | |
parent | cfb252cdb748429789f918c4268fcca1331f6cec (diff) | |
download | frameworks_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.cpp | 5 |
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; } |