diff options
author | Andreas Huber <andih@google.com> | 2009-09-09 16:32:59 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2009-09-09 16:33:53 -0700 |
commit | 371e243b6638e74e577d56a24eee7d5a97e36d2b (patch) | |
tree | 34f628153868fa2a397509e6ae2bdaeb501361fb /media/libstagefright/MPEG4Extractor.cpp | |
parent | 195ea1e0d4484f1deb2309e239f6a5cc9a7e5ba7 (diff) | |
download | frameworks_av-371e243b6638e74e577d56a24eee7d5a97e36d2b.zip frameworks_av-371e243b6638e74e577d56a24eee7d5a97e36d2b.tar.gz frameworks_av-371e243b6638e74e577d56a24eee7d5a97e36d2b.tar.bz2 |
Support for amr-wb tracks in MPEG4Extractor.
Diffstat (limited to 'media/libstagefright/MPEG4Extractor.cpp')
-rw-r--r-- | media/libstagefright/MPEG4Extractor.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
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<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); } |