From 371e243b6638e74e577d56a24eee7d5a97e36d2b Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Wed, 9 Sep 2009 16:32:59 -0700 Subject: Support for amr-wb tracks in MPEG4Extractor. --- media/libstagefright/MPEG4Extractor.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'media/libstagefright/MPEG4Extractor.cpp') diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index 894d46c..433fb18 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -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 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 MPEG4Extractor::getTrack(size_t index) { --index; } + if (track == NULL) { + return NULL; + } + return new MPEG4Source( track->meta, mDataSource, track->sampleTable); } -- cgit v1.1