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

Commit 47c6bbb7 authored by Andy Hung's avatar Andy Hung
Browse files

AudioFlinger: Check output is non-null for (get|set)PlaybackRate

Flag: EXEMPT bugfix
Test: Clarity offload playback
Test: atest AudioTrackOffloadTest
Bug: 398187637
Change-Id: I7f20c7bf8666718e4407e6b42000c49b1cf2c52d
parent 559e32f0
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -2125,7 +2125,9 @@ status_t Track::getPlaybackRateParameters(
        if (thread != nullptr) {
            auto* const t = thread->asIAfPlaybackThread().get();
            audio_utils::lock_guard lock(t->mutex());
            status = t->getOutput_l()->stream->getPlaybackRateParameters(playbackRate);
            if (auto* const output = t->getOutput_l()) {
                status = output->stream->getPlaybackRateParameters(playbackRate);
            }
            ALOGD_IF((status == NO_ERROR) &&
                    !isAudioPlaybackRateEqual(mPlaybackRateParameters, *playbackRate),
                    "%s: playbackRate inconsistent", __func__);
@@ -2143,12 +2145,14 @@ status_t Track::setPlaybackRateParameters(
        if (thread != nullptr) {
            auto* const t = thread->asIAfPlaybackThread().get();
            audio_utils::lock_guard lock(t->mutex());
            status = t->getOutput_l()->stream->setPlaybackRateParameters(playbackRate);
            if (auto* const output = t->getOutput_l()) {
                status = output->stream->setPlaybackRateParameters(playbackRate);
                if (status == NO_ERROR) {
                    mPlaybackRateParameters = playbackRate;
                }
            }
        }
    }
    return status;
}