summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/MPEG4Extractor.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2009-09-09 16:32:59 -0700
committerAndreas Huber <andih@google.com>2009-09-09 16:33:53 -0700
commit371e243b6638e74e577d56a24eee7d5a97e36d2b (patch)
tree34f628153868fa2a397509e6ae2bdaeb501361fb /media/libstagefright/MPEG4Extractor.cpp
parent195ea1e0d4484f1deb2309e239f6a5cc9a7e5ba7 (diff)
downloadframeworks_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.cpp15
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);
}