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

Commit 229b7a8d authored by Marco Nelissen's avatar Marco Nelissen
Browse files

Always consider first buffer to be config

for backwards compatibility. Also fix a problem where writing 0
bytes to an empty ringbuffer would treat it as overflowed.

Bug: 17567501
Change-Id: I8019da76466576e1b2984e9eccf09bdec593038a
parent 9b7db1c5
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -408,6 +408,9 @@ void SoftAAC2::configureDownmix() const {
}

bool SoftAAC2::outputDelayRingBufferPutSamples(INT_PCM *samples, int32_t numSamples) {
    if (numSamples == 0) {
        return true;
    }
    if (mOutputDelayRingBufferWritePos + numSamples <= mOutputDelayRingBufferSize
            && (mOutputDelayRingBufferReadPos <= mOutputDelayRingBufferWritePos
                    || mOutputDelayRingBufferReadPos > mOutputDelayRingBufferWritePos + numSamples)) {
@@ -512,6 +515,11 @@ void SoftAAC2::onQueueFilled(OMX_U32 /* portIndex */) {
            OMX_BUFFERHEADERTYPE *inHeader = inInfo->mHeader;

            mEndOfInput = (inHeader->nFlags & OMX_BUFFERFLAG_EOS) != 0;

            if (mInputBufferCount == 0 && !(inHeader->nFlags & OMX_BUFFERFLAG_CODECCONFIG)) {
                ALOGE("first buffer should have OMX_BUFFERFLAG_CODECCONFIG set");
                inHeader->nFlags |= OMX_BUFFERFLAG_CODECCONFIG;
            }
            if ((inHeader->nFlags & OMX_BUFFERFLAG_CODECCONFIG) != 0) {
                BufferInfo *inInfo = *inQueue.begin();
                OMX_BUFFERHEADERTYPE *inHeader = inInfo->mHeader;