From 84584471624775a849c880a50efc351e47c4a4af Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Thu, 8 Sep 2011 11:33:47 -0700 Subject: [PATCH] Audio player must not be used as a timesource before it's started. Otherwise it'll trigger a division-by-zero exception since the audio sample rate is as yet unknown. Change-Id: I0793aa7c1c348ffa2611272bb646eff6ecf6ff53 related-to-bug: 5242451 --- media/libstagefright/AudioPlayer.cpp | 6 ++++-- media/libstagefright/AwesomePlayer.cpp | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp index d41ab1b55acde..ba076f57bf0e0 100644 --- a/media/libstagefright/AudioPlayer.cpp +++ b/media/libstagefright/AudioPlayer.cpp @@ -20,8 +20,8 @@ #include #include +#include #include -#include #include #include #include @@ -60,7 +60,7 @@ AudioPlayer::~AudioPlayer() { } void AudioPlayer::setSource(const sp &source) { - CHECK_EQ(mSource, NULL); + CHECK(mSource == NULL); mSource = source; } @@ -466,6 +466,8 @@ int64_t AudioPlayer::getRealTimeUs() { } int64_t AudioPlayer::getRealTimeUsLocked() const { + CHECK(mStarted); + CHECK_NE(mSampleRate, 0); return -mLatencyUs + (mNumFramesPlayed * 1000000) / mSampleRate; } diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 47224ccb97e35..07a46bd20e6cf 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -1736,7 +1736,9 @@ void AwesomePlayer::onVideoEvent() { modifyFlags(TEXT_RUNNING, SET); } - TimeSource *ts = (mFlags & AUDIO_AT_EOS) ? &mSystemTimeSource : mTimeSource; + TimeSource *ts = + ((mFlags & AUDIO_AT_EOS) || !(mFlags & AUDIOPLAYER_STARTED)) + ? &mSystemTimeSource : mTimeSource; if (mFlags & FIRST_FRAME) { modifyFlags(FIRST_FRAME, CLEAR);