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

Commit 602b8994 authored by Andreas Huber's avatar Andreas Huber Committed by Android Git Automerger
Browse files

am cd8a36fd: Merge "Add more verbose ADTS error logging to SoftAAC." into jb-dev

* commit 'cd8a36fd':
  Add more verbose ADTS error logging to SoftAAC.
parents c86ae70b cd8a36fd
Loading
Loading
Loading
Loading
+38 −12
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@

#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/hexdump.h>
#include <media/stagefright/MediaErrors.h>

namespace android {

@@ -322,8 +323,13 @@ void SoftAAC::onQueueFilled(OMX_U32 portIndex) {

            const uint8_t *adtsHeader = inHeader->pBuffer + inHeader->nOffset;

            CHECK_GE(inHeader->nFilledLen, 7);

            bool signalError = false;
            if (inHeader->nFilledLen < 7) {
                ALOGE("Audio data too short to contain even the ADTS header. "
                      "Got %ld bytes.", inHeader->nFilledLen);
                hexdump(adtsHeader, inHeader->nFilledLen);
                signalError = true;
            } else {
                bool protectionAbsent = (adtsHeader[1] & 1);

                unsigned aac_frame_length =
@@ -331,15 +337,35 @@ void SoftAAC::onQueueFilled(OMX_U32 portIndex) {
                    | (adtsHeader[4] << 3)
                    | (adtsHeader[5] >> 5);

            CHECK_GE(inHeader->nFilledLen, aac_frame_length);

                if (inHeader->nFilledLen < aac_frame_length) {
                    ALOGE("Not enough audio data for the complete frame. "
                          "Got %ld bytes, frame size according to the ADTS "
                          "header is %u bytes.",
                          inHeader->nFilledLen, aac_frame_length);
                    hexdump(adtsHeader, inHeader->nFilledLen);
                    signalError = true;
                } else {
                    adtsHeaderSize = (protectionAbsent ? 7 : 9);

            mConfig->pInputBuffer = (UChar *)adtsHeader + adtsHeaderSize;
            mConfig->inputBufferCurrentLength = aac_frame_length - adtsHeaderSize;
                    mConfig->pInputBuffer =
                        (UChar *)adtsHeader + adtsHeaderSize;

                    mConfig->inputBufferCurrentLength =
                        aac_frame_length - adtsHeaderSize;

                    inHeader->nOffset += adtsHeaderSize;
                    inHeader->nFilledLen -= adtsHeaderSize;
                }
            }

            if (signalError) {
                mSignalledError = true;

                notify(OMX_EventError, OMX_ErrorStreamCorrupt,
                       ERROR_MALFORMED, NULL);

                return;
            }
        } else {
            mConfig->pInputBuffer = inHeader->pBuffer + inHeader->nOffset;
            mConfig->inputBufferCurrentLength = inHeader->nFilledLen;
+8 −8
Original line number Diff line number Diff line
@@ -367,6 +367,7 @@ void SoftAAC2::onQueueFilled(OMX_U32 portIndex) {
                    inHeader->nOffset += adtsHeaderSize;
                    inHeader->nFilledLen -= adtsHeaderSize;
                }
            }

            if (signalError) {
                mSignalledError = true;
@@ -378,7 +379,6 @@ void SoftAAC2::onQueueFilled(OMX_U32 portIndex) {

                return;
            }
            }
        } else {
            inBuffer[0] = inHeader->pBuffer + inHeader->nOffset;
            inBufferLength[0] = inHeader->nFilledLen;