summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/MediaExtractor.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-08-25 11:09:41 -0700
committerAndreas Huber <andih@google.com>2010-08-25 13:08:38 -0700
commit5a1c3529e4fa2f8a11054181294e0ce79fff8dd3 (patch)
tree06386bceb568bf27c3fff03139ac0745ec1c4eba /media/libstagefright/MediaExtractor.cpp
parentfce49325d807c278229a594c1cc866e21da0e155 (diff)
downloadframeworks_av-5a1c3529e4fa2f8a11054181294e0ce79fff8dd3.zip
frameworks_av-5a1c3529e4fa2f8a11054181294e0ce79fff8dd3.tar.gz
frameworks_av-5a1c3529e4fa2f8a11054181294e0ce79fff8dd3.tar.bz2
Allow sniffers to return a packet of opaque data that the corresponding extractor can take advantage of to not duplicate work already done sniffing. The mp3 extractor takes advantage of this now.
Change-Id: Icb77ae3ee95a69c7da25b4d3b8696c0a2d33028a related-to-bug: 2948754
Diffstat (limited to 'media/libstagefright/MediaExtractor.cpp')
-rw-r--r--media/libstagefright/MediaExtractor.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/media/libstagefright/MediaExtractor.cpp b/media/libstagefright/MediaExtractor.cpp
index 56e6136..9bc94de 100644
--- a/media/libstagefright/MediaExtractor.cpp
+++ b/media/libstagefright/MediaExtractor.cpp
@@ -27,6 +27,7 @@
#include "matroska/MatroskaExtractor.h"
+#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/DataSource.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MediaExtractor.h>
@@ -46,10 +47,12 @@ uint32_t MediaExtractor::flags() const {
// static
sp<MediaExtractor> MediaExtractor::Create(
const sp<DataSource> &source, const char *mime) {
+ sp<AMessage> meta;
+
String8 tmp;
if (mime == NULL) {
float confidence;
- if (!source->sniff(&tmp, &confidence)) {
+ if (!source->sniff(&tmp, &confidence, &meta)) {
LOGV("FAILED to autodetect media content.");
return NULL;
@@ -64,7 +67,7 @@ sp<MediaExtractor> MediaExtractor::Create(
|| !strcasecmp(mime, "audio/mp4")) {
return new MPEG4Extractor(source);
} else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_MPEG)) {
- return new MP3Extractor(source);
+ return new MP3Extractor(source, meta);
} else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_NB)
|| !strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_WB)) {
return new AMRExtractor(source);