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

Commit 013ce69d authored by Lajos Molnar's avatar Lajos Molnar Committed by android-build-merger
Browse files

Merge "stagefright: fix issues with bitrate handling" into nyc-dev

am: 2b1a2424

* commit '2b1a2424':
  stagefright: fix issues with bitrate handling

Change-Id: Ibe48277a28d6cde7c4cd35383f7fb38e126a3153
parents 5a3b7974 2b1a2424
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -215,7 +215,7 @@ int main(int argc, char **argv) {
    enc_meta->setInt32("width", width);
    enc_meta->setInt32("height", height);
    enc_meta->setInt32("sample-rate", kFramerate);
    enc_meta->setInt32("bit-rate", kVideoBitRate);
    enc_meta->setInt32("bitrate", kVideoBitRate);
    // enc_meta->setInt32("stride", width);
    // enc_meta->setInt32("slice-height", height);
    enc_meta->setInt32("i-frame-interval", kIFramesIntervalSec);
+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ enum {
    kKeyPcmEncoding       = 'PCMe',  // int32_t (audio encoding enum)
    kKeyFrameRate         = 'frmR',  // int32_t (video frame rate fps)
    kKeyBitRate           = 'brte',  // int32_t (bps)
    kKeyMaxBitRate        = 'mxBr',  // int32_t (bps)
    kKeyESDS              = 'esds',  // raw data
    kKeyAACProfile        = 'aacp',  // int32_t
    kKeyAVCC              = 'avcc',  // raw data
+1 −1
Original line number Diff line number Diff line
@@ -1770,7 +1770,7 @@ status_t NuPlayer::Renderer::onOpenAudioSink(
                    mime.c_str(), audioFormat);

            int avgBitRate = -1;
            format->findInt32("bit-rate", &avgBitRate);
            format->findInt32("bitrate", &avgBitRate);

            int32_t aacProfile = -1;
            if (audioFormat == AUDIO_FORMAT_AAC
+15 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@
#define LOG_TAG "ESDS"
#include <utils/Log.h>

#include <media/stagefright/Utils.h>

#include "include/ESDS.h"

#include <string.h>
@@ -194,12 +196,25 @@ status_t ESDS::parseESDescriptor(size_t offset, size_t size) {
    return err;
}

status_t ESDS::getBitRate(uint32_t *brateMax, uint32_t *brateAvg) const {
    if (mInitCheck != OK) {
        return mInitCheck;
    }

    *brateMax = mBitRateMax;
    *brateAvg = mBitRateAvg;

    return OK;
};

status_t ESDS::parseDecoderConfigDescriptor(size_t offset, size_t size) {
    if (size < 13) {
        return ERROR_MALFORMED;
    }

    mObjectTypeIndication = mData[offset];
    mBitRateMax = U32_AT(mData + offset + 5);
    mBitRateAvg = U32_AT(mData + offset + 9);

    offset += 13;
    size -= 13;
+25 −0
Original line number Diff line number Diff line
@@ -1738,6 +1738,31 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) {
            break;
        }

        case FOURCC('b', 't', 'r', 't'):
        {
            *offset += chunk_size;

            uint8_t buffer[12];
            if (chunk_data_size != sizeof(buffer)) {
                return ERROR_MALFORMED;
            }

            if (mDataSource->readAt(
                    data_offset, buffer, chunk_data_size) < chunk_data_size) {
                return ERROR_IO;
            }

            uint32_t maxBitrate = U32_AT(&buffer[4]);
            uint32_t avgBitrate = U32_AT(&buffer[8]);
            if (maxBitrate > 0 && maxBitrate < INT32_MAX) {
                mLastTrack->meta->setInt32(kKeyMaxBitRate, (int32_t)maxBitrate);
            }
            if (avgBitrate > 0 && avgBitrate < INT32_MAX) {
                mLastTrack->meta->setInt32(kKeyBitRate, (int32_t)avgBitrate);
            }
            break;
        }

        case FOURCC('a', 'v', 'c', 'C'):
        {
            *offset += chunk_size;
Loading