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

Commit 2f607551 authored by Mikhail Naganov's avatar Mikhail Naganov
Browse files

Fix crash in DownmixerBufferProvider

In ag/1768960, I forgot to actually set the buffers for the effect
interface. Without that, a 'process' method was attempting to use null
buffers.

Bug: 34228998
Test: android.media.cts.AudioNativeTest#testPlayStreamData
Change-Id: I904a9c08aa75bd5738b3ce981ee54511f37df7ec
parent 67d0d7eb
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -45,11 +45,21 @@ status_t EffectHalLocal::setOutBuffer(const sp<EffectBufferHalInterface>& buffer
}

status_t EffectHalLocal::process() {
    if (mInBuffer == nullptr || mOutBuffer == nullptr) {
        ALOGE_IF(mInBuffer == nullptr, "Input buffer not set");
        ALOGE_IF(mOutBuffer == nullptr, "Output buffer not set");
        return NO_INIT;
    }
    return (*mHandle)->process(mHandle, mInBuffer->audioBuffer(), mOutBuffer->audioBuffer());
}

status_t EffectHalLocal::processReverse() {
    if ((*mHandle)->process_reverse != NULL) {
        if (mInBuffer == nullptr || mOutBuffer == nullptr) {
            ALOGE_IF(mInBuffer == nullptr, "Input buffer not set");
            ALOGE_IF(mOutBuffer == nullptr, "Output buffer not set");
            return NO_INIT;
        }
        return (*mHandle)->process_reverse(
                mHandle, mInBuffer->audioBuffer(), mOutBuffer->audioBuffer());
    } else {
+2 −0
Original line number Diff line number Diff line
@@ -200,6 +200,8 @@ DownmixerBufferProvider::DownmixerBufferProvider(
         mEffectsFactory.clear();
         return;
     }
     mDownmixInterface->setInBuffer(mInBuffer);
     mDownmixInterface->setOutBuffer(mOutBuffer);

     int cmdStatus;
     uint32_t replySize = sizeof(int);