OSDN Git Service

Fix AMR decoder
authorMarco Nelissen <marcone@google.com>
Fri, 25 Mar 2016 15:26:18 +0000 (08:26 -0700)
committerMarco Nelissen <marcone@google.com>
Fri, 25 Mar 2016 15:29:28 +0000 (08:29 -0700)
Previous change caused EOS to be ignored.

Bug: 27843673
Related-to-bug: 27662364
Change-Id: Ia148a88abc861a9b393f42bc7cd63d8d3ae349bc

media/libstagefright/codecs/amrnb/dec/SoftAMR.cpp

index b2ea98b..6fb59dd 100644 (file)
@@ -306,13 +306,6 @@ void SoftAMR::onQueueFilled(OMX_U32 portIndex) {
         BufferInfo *inInfo = *inQueue.begin();
         OMX_BUFFERHEADERTYPE *inHeader = inInfo->mHeader;
 
-        if (inHeader->nFilledLen == 0) {
-            inInfo->mOwnedByUs = false;
-            inQueue.erase(inQueue.begin());
-            notifyEmptyBufferDone(inHeader);
-            continue;
-        }
-
         BufferInfo *outInfo = *outQueue.begin();
         OMX_BUFFERHEADERTYPE *outHeader = outInfo->mHeader;
 
@@ -330,6 +323,13 @@ void SoftAMR::onQueueFilled(OMX_U32 portIndex) {
             return;
         }
 
+        if (inHeader->nFilledLen == 0) {
+            inInfo->mOwnedByUs = false;
+            inQueue.erase(inQueue.begin());
+            notifyEmptyBufferDone(inHeader);
+            continue;
+        }
+
         if (inHeader->nOffset == 0) {
             mAnchorTimeUs = inHeader->nTimeStamp;
             mNumSamplesOutput = 0;