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

Commit d62621a6 authored by Hayden Gomes's avatar Hayden Gomes Committed by Automerger Merge Worker
Browse files

Merge "Adding sanity checks for invalid frame sizes" into rvc-dev am: d36b1491

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11851234

Change-Id: I22d996f7520f26ce81a84ac901bd2755d77b59c8
parents aac7bf59 d36b1491
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -164,6 +164,10 @@ status_t AudioStreamOut::open(
        stream = outStream;
        stream = outStream;
        mHalFormatHasProportionalFrames = audio_has_proportional_frames(config->format);
        mHalFormatHasProportionalFrames = audio_has_proportional_frames(config->format);
        status = stream->getFrameSize(&mHalFrameSize);
        status = stream->getFrameSize(&mHalFrameSize);
        LOG_ALWAYS_FATAL_IF(status != OK, "Error retrieving frame size from HAL: %d", status);
        LOG_ALWAYS_FATAL_IF(mHalFrameSize <= 0, "Error frame size was %zu but must be greater than"
                " zero", mHalFrameSize);

    }
    }


    return status;
    return status;
+7 −4
Original line number Original line Diff line number Diff line
@@ -8436,13 +8436,14 @@ void AudioFlinger::RecordThread::readInputParameters_l()
    }
    }
    result = mInput->stream->getFrameSize(&mFrameSize);
    result = mInput->stream->getFrameSize(&mFrameSize);
    LOG_ALWAYS_FATAL_IF(result != OK, "Error retrieving frame size from HAL: %d", result);
    LOG_ALWAYS_FATAL_IF(result != OK, "Error retrieving frame size from HAL: %d", result);
    LOG_ALWAYS_FATAL_IF(mFrameSize <= 0, "Error frame size was %zu but must be greater than zero",
            mFrameSize);
    result = mInput->stream->getBufferSize(&mBufferSize);
    result = mInput->stream->getBufferSize(&mBufferSize);
    LOG_ALWAYS_FATAL_IF(result != OK, "Error retrieving buffer size from HAL: %d", result);
    LOG_ALWAYS_FATAL_IF(result != OK, "Error retrieving buffer size from HAL: %d", result);
    mFrameCount = mBufferSize / mFrameSize;
    mFrameCount = mBufferSize / mFrameSize;
    ALOGV("%p RecordThread params: mChannelCount=%u, mFormat=%#x, mFrameSize=%lld, "
    ALOGV("%p RecordThread params: mChannelCount=%u, mFormat=%#x, mFrameSize=%zu, "
            "mBufferSize=%lld, mFrameCount=%lld",
            "mBufferSize=%zu, mFrameCount=%zu",
            this, mChannelCount, mFormat, (long long)mFrameSize, (long long)mBufferSize,
            this, mChannelCount, mFormat, mFrameSize, mBufferSize, mFrameCount);
            (long long)mFrameCount);
    // This is the formula for calculating the temporary buffer size.
    // This is the formula for calculating the temporary buffer size.
    // With 7 HAL buffers, we can guarantee ability to down-sample the input by ratio of 6:1 to
    // With 7 HAL buffers, we can guarantee ability to down-sample the input by ratio of 6:1 to
    // 1 full output buffer, regardless of the alignment of the available input.
    // 1 full output buffer, regardless of the alignment of the available input.
@@ -9018,6 +9019,8 @@ void AudioFlinger::MmapThread::readHalParameters_l()
    LOG_ALWAYS_FATAL_IF(!audio_is_linear_pcm(mFormat), "HAL format %#x is not linear pcm", mFormat);
    LOG_ALWAYS_FATAL_IF(!audio_is_linear_pcm(mFormat), "HAL format %#x is not linear pcm", mFormat);
    result = mHalStream->getFrameSize(&mFrameSize);
    result = mHalStream->getFrameSize(&mFrameSize);
    LOG_ALWAYS_FATAL_IF(result != OK, "Error retrieving frame size from HAL: %d", result);
    LOG_ALWAYS_FATAL_IF(result != OK, "Error retrieving frame size from HAL: %d", result);
    LOG_ALWAYS_FATAL_IF(mFrameSize <= 0, "Error frame size was %zu but must be greater than zero",
            mFrameSize);
    result = mHalStream->getBufferSize(&mBufferSize);
    result = mHalStream->getBufferSize(&mBufferSize);
    LOG_ALWAYS_FATAL_IF(result != OK, "Error retrieving buffer size from HAL: %d", result);
    LOG_ALWAYS_FATAL_IF(result != OK, "Error retrieving buffer size from HAL: %d", result);
    mFrameCount = mBufferSize / mFrameSize;
    mFrameCount = mBufferSize / mFrameSize;