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

Commit 097fc64d authored by Marco Nelissen's avatar Marco Nelissen Committed by Android (Google) Code Review
Browse files

Merge "Don't signal an error at the end of a short file" into lmp-mr1-dev

parents d61ba0aa b1f5ab44
Loading
Loading
Loading
Loading
+10 −21
Original line number Diff line number Diff line
@@ -929,33 +929,22 @@ void SoftAAC2::onQueueFilled(OMX_U32 /* portIndex */) {
        }

        if (mEndOfInput) {
            if (outputDelayRingBufferSamplesAvailable() > 0
                    && outputDelayRingBufferSamplesAvailable()
                            < mStreamInfo->frameSize * mStreamInfo->numChannels) {
                ALOGE("not a complete frame of samples available");
                mSignalledError = true;
                notify(OMX_EventError, OMX_ErrorUndefined, 0, NULL);
                return;
            }

            if (mEndOfInput && !outQueue.empty() && outputDelayRingBufferSamplesAvailable() == 0) {
            int ringBufAvail = outputDelayRingBufferSamplesAvailable();
            if (!outQueue.empty()
                    && ringBufAvail < mStreamInfo->frameSize * mStreamInfo->numChannels) {
                if (!mEndOfOutput) {
                    // send empty block signaling EOS
                    // send partial or empty block signaling EOS
                    mEndOfOutput = true;
                    BufferInfo *outInfo = *outQueue.begin();
                    OMX_BUFFERHEADERTYPE *outHeader = outInfo->mHeader;

                    if (outHeader->nOffset != 0) {
                        ALOGE("outHeader->nOffset != 0 is not handled");
                        mSignalledError = true;
                        notify(OMX_EventError, OMX_ErrorUndefined, 0, NULL);
                        return;
                    }

                    INT_PCM *outBuffer = reinterpret_cast<INT_PCM *>(outHeader->pBuffer
                            + outHeader->nOffset);
                    int32_t ns = 0;
                    outHeader->nFilledLen = 0;
                    int32_t ns = outputDelayRingBufferGetSamples(outBuffer, ringBufAvail);
                    if (ns < 0) {
                        ns = 0;
                    }
                    outHeader->nFilledLen = ns;
                    outHeader->nFlags = OMX_BUFFERFLAG_EOS;

                    outHeader->nTimeStamp = mBufferTimestamps.itemAt(0);
@@ -994,7 +983,7 @@ void SoftAAC2::onPortFlushCompleted(OMX_U32 portIndex) {
            }
            int32_t ns = outputDelayRingBufferGetSamples(0, avail);
            if (ns != avail) {
                ALOGE("not a complete frame of samples available");
                ALOGW("not a complete frame of samples available");
                break;
            }
            mOutputBufferCount++;