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

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

AudioPlayer didn't properly account for the latency when calculating the current media time.

related-to-bug: 2414900
parent 62f67048
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -249,7 +249,8 @@ void AudioPlayer::fillBuffer(void *data, size_t size) {
                        kKeyTime, &mPositionTimeMediaUs));

            mPositionTimeRealUs =
                ((mNumFramesPlayed + size_done / mFrameSize) * 1000000)
                -mLatencyUs
                + ((mNumFramesPlayed + size_done / mFrameSize) * 1000000)
                    / mSampleRate;

            LOGV("buffer->size() = %d, "
@@ -297,6 +298,10 @@ int64_t AudioPlayer::getRealTimeUsLocked() const {
int64_t AudioPlayer::getMediaTimeUs() {
    Mutex::Autolock autoLock(mLock);

    if (mPositionTimeMediaUs < 0 || mPositionTimeRealUs < 0) {
        return 0;
    }

    return mPositionTimeMediaUs + (getRealTimeUsLocked() - mPositionTimeRealUs);
}

@@ -307,7 +312,7 @@ bool AudioPlayer::getMediaTimeMapping(
    *realtime_us = mPositionTimeRealUs;
    *mediatime_us = mPositionTimeMediaUs;

    return mPositionTimeRealUs != -1 || mPositionTimeMediaUs != -1;
    return mPositionTimeRealUs != -1 && mPositionTimeMediaUs != -1;
}

status_t AudioPlayer::seekTo(int64_t time_us) {