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

Commit b607c45a authored by Pawin Vongmasa's avatar Pawin Vongmasa
Browse files

Fix crash in Opus and Vorbis decoders

This CL reverts the fix for EOS flag in the first call, which causes a
crash in other tests and is not needed now.

Test: VtsHalMediaOmxV1_0Host
Bug: 62271829
Bug: 37501531
Change-Id: If25b78ba8019250a79e0402bbae7ee4e31b1d781
parent a6263336
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -350,11 +350,6 @@ void SoftOpus::onQueueFilled(OMX_U32 portIndex) {
        const uint8_t *data = header->pBuffer + header->nOffset;
        size_t size = header->nFilledLen;

        if ((header->nFlags & OMX_BUFFERFLAG_EOS) && size == 0) {
            header->nFlags &= ~OMX_BUFFERFLAG_CODECCONFIG;
            goto L_eos;
        }

        if (mInputBufferCount == 0) {
            CHECK(mHeader == NULL);
            mHeader = new OpusHeader();
@@ -413,11 +408,6 @@ void SoftOpus::onQueueFilled(OMX_U32 portIndex) {
            mOutputPortSettingsChange = AWAITING_DISABLED;
        }

        if (header->nFlags & OMX_BUFFERFLAG_EOS) {
            header->nFilledLen = 0;
            header->nFlags &= ~OMX_BUFFERFLAG_CODECCONFIG;
            goto L_eos;
        }
        inQueue.erase(inQueue.begin());
        info->mOwnedByUs = false;
        notifyEmptyBufferDone(header);
@@ -425,7 +415,6 @@ void SoftOpus::onQueueFilled(OMX_U32 portIndex) {
        return;
    }

L_eos:
    while (!inQueue.empty() && !outQueue.empty()) {
        BufferInfo *inInfo = *inQueue.begin();
        OMX_BUFFERHEADERTYPE *inHeader = inInfo->mHeader;
+0 −11
Original line number Diff line number Diff line
@@ -274,11 +274,6 @@ void SoftVorbis::onQueueFilled(OMX_U32 portIndex) {

        const uint8_t *data = header->pBuffer + header->nOffset;
        size_t size = header->nFilledLen;

        if ((header->nFlags & OMX_BUFFERFLAG_EOS) && size == 0) {
            goto L_eos;
        }

        if (size < 7) {
            ALOGE("Too small input buffer: %zu bytes", size);
            android_errorWriteLog(0x534e4554, "27833616");
@@ -322,11 +317,6 @@ void SoftVorbis::onQueueFilled(OMX_U32 portIndex) {
            mOutputPortSettingsChange = AWAITING_DISABLED;
        }

        if (header->nFlags & OMX_BUFFERFLAG_EOS) {
            header->nFilledLen = 0;
            goto L_eos;
        }

        inQueue.erase(inQueue.begin());
        info->mOwnedByUs = false;
        notifyEmptyBufferDone(header);
@@ -336,7 +326,6 @@ void SoftVorbis::onQueueFilled(OMX_U32 portIndex) {
        return;
    }

L_eos:
    while ((!inQueue.empty() || (mSawInputEos && !mSignalledOutputEos)) && !outQueue.empty()) {
        BufferInfo *inInfo = NULL;
        OMX_BUFFERHEADERTYPE *inHeader = NULL;