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

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

am 546f3cd5: Merge change 24448 into eclair

Merge commit '546f3cd579b80299307d82a769aca8e8f68484ec' into eclair-plus-aosp

* commit '546f3cd579b80299307d82a769aca8e8f68484ec':
  Support for amr-wb tracks in MPEG4Extractor.
parents 04f2ba33 51ae4a94
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -124,6 +124,9 @@ static const char *const FourCC2MIME(uint32_t fourcc) {
        case FOURCC('s', 'a', 'm', 'r'):
            return "audio/3gpp";

        case FOURCC('s', 'a', 'w', 'b'):
            return "audio/amr-wb";

        case FOURCC('m', 'p', '4', 'v'):
            return "video/mp4v-es";

@@ -189,6 +192,10 @@ sp<MetaData> MPEG4Extractor::getTrackMetaData(size_t index) {
        --index;
    }

    if (track == NULL) {
        return NULL;
    }

    return track->meta;
}

@@ -472,6 +479,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {

        case FOURCC('m', 'p', '4', 'a'):
        case FOURCC('s', 'a', 'm', 'r'):
        case FOURCC('s', 'a', 'w', 'b'):
        {
            if (mHandlerType != FOURCC('s', 'o', 'u', 'n')) {
                return ERROR_MALFORMED;
@@ -491,7 +499,8 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {
            uint16_t data_ref_index = U16_AT(&buffer[6]);
            uint16_t num_channels = U16_AT(&buffer[16]);

            if (!strcasecmp("audio/3gpp", FourCC2MIME(chunk_type))) {
            if (!strcasecmp("audio/3gpp", FourCC2MIME(chunk_type))
                || !strcasecmp("audio/amr-wb", FourCC2MIME(chunk_type))) {
                // AMR audio is always mono.
                num_channels = 1;
            }
@@ -705,6 +714,10 @@ sp<MediaSource> MPEG4Extractor::getTrack(size_t index) {
        --index;
    }

    if (track == NULL) {
        return NULL;
    }

    return new MPEG4Source(
            track->meta, mDataSource, track->sampleTable);
}