From 229b7a8d7c986645ef7ef75a36f27feb0c1a4117 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Thu, 18 Sep 2014 15:09:28 -0700 Subject: 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 --- media/libstagefright/codecs/aacdec/SoftAAC2.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'media/libstagefright/codecs') diff --git a/media/libstagefright/codecs/aacdec/SoftAAC2.cpp b/media/libstagefright/codecs/aacdec/SoftAAC2.cpp index 456be89..863b908 100644 --- a/media/libstagefright/codecs/aacdec/SoftAAC2.cpp +++ b/media/libstagefright/codecs/aacdec/SoftAAC2.cpp @@ -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; -- cgit v1.1