Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f7eade99 authored by Andreas Huber's avatar Andreas Huber
Browse files

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
parent 41610c37
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@

#include <binder/IPCThreadState.h>
#include <media/AudioTrack.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/AudioPlayer.h>
#include <media/stagefright/MediaDebug.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/MediaSource.h>
@@ -60,7 +60,7 @@ AudioPlayer::~AudioPlayer() {
}

void AudioPlayer::setSource(const sp<MediaSource> &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;
}

+3 −1
Original line number Diff line number Diff line
@@ -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);