summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorApurupa Pattapu <apurupa@codeaurora.org>2015-08-06 13:06:07 -0700
committerLinux Build Service Account <lnxbuild@localhost>2015-10-06 03:24:38 -0600
commit363794122a6482830ec5925d13b34c5d05c0726f (patch)
tree965a51790e1e6da4055911e46bb3f4ecd41103c3
parentfc78c2cb9d133c3b53d0898b5b746ad408f1234a (diff)
downloadframeworks_av-363794122a6482830ec5925d13b34c5d05c0726f.zip
frameworks_av-363794122a6482830ec5925d13b34c5d05c0726f.tar.gz
frameworks_av-363794122a6482830ec5925d13b34c5d05c0726f.tar.bz2
libstagefright: Update extractor for specific formats
- New API updateExtractor is used to either keep default extractor or use extended extractor based on media track's mime types. CRs-Fixed: 884793 Change-Id: I63dcc4b2d3901dbc3287eb43a1f4ce2767897258
-rw-r--r--media/libavextensions/stagefright/AVExtensions.h5
-rw-r--r--media/libavextensions/stagefright/AVFactory.cpp8
-rw-r--r--media/libstagefright/MediaExtractor.cpp5
3 files changed, 14 insertions, 4 deletions
diff --git a/media/libavextensions/stagefright/AVExtensions.h b/media/libavextensions/stagefright/AVExtensions.h
index 33f19d3..9cf1413 100644
--- a/media/libavextensions/stagefright/AVExtensions.h
+++ b/media/libavextensions/stagefright/AVExtensions.h
@@ -51,7 +51,10 @@ struct NuCachedSource2;
struct AVFactory {
virtual sp<ACodec> createACodec();
virtual MediaExtractor* createExtendedExtractor(
- const sp<DataSource> &source, const char *mime);
+ const sp<DataSource> &source, const char *mime, sp<AMessage> *meta);
+ virtual sp<MediaExtractor> updateExtractor(
+ sp<MediaExtractor> ext, const sp<DataSource> &source,
+ const char *mime, sp<AMessage> *meta);
virtual sp<NuCachedSource2> createCachedSource(
const sp<DataSource> &source,
const char *cacheConfig = NULL,
diff --git a/media/libavextensions/stagefright/AVFactory.cpp b/media/libavextensions/stagefright/AVFactory.cpp
index 22969a2..671c858 100644
--- a/media/libavextensions/stagefright/AVFactory.cpp
+++ b/media/libavextensions/stagefright/AVFactory.cpp
@@ -53,10 +53,16 @@ sp<ACodec> AVFactory::createACodec() {
}
MediaExtractor* AVFactory::createExtendedExtractor(
- const sp<DataSource> &, const char *) {
+ const sp<DataSource> &, const char *, sp<AMessage> *) {
return NULL;
}
+sp<MediaExtractor> AVFactory::updateExtractor(
+ sp<MediaExtractor> ext, const sp<DataSource> &,
+ const char *, sp<AMessage> *) {
+ return ext;
+}
+
sp<NuCachedSource2> AVFactory::createCachedSource(
const sp<DataSource> &source,
const char *cacheConfig,
diff --git a/media/libstagefright/MediaExtractor.cpp b/media/libstagefright/MediaExtractor.cpp
index 8d89071..c0fbb6d 100644
--- a/media/libstagefright/MediaExtractor.cpp
+++ b/media/libstagefright/MediaExtractor.cpp
@@ -93,8 +93,8 @@ sp<MediaExtractor> MediaExtractor::Create(
}
}
- MediaExtractor *ret = NULL;
- if ((ret = AVFactory::get()->createExtendedExtractor(source, mime)) != NULL) {
+ sp<MediaExtractor> ret = NULL;
+ if ((ret = AVFactory::get()->createExtendedExtractor(source, mime, &meta)) != NULL) {
} else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG4)
|| !strcasecmp(mime, "audio/mp4")) {
ret = new MPEG4Extractor(source);
@@ -124,6 +124,7 @@ sp<MediaExtractor> MediaExtractor::Create(
ret = new MidiExtractor(source);
}
+ ret = AVFactory::get()->updateExtractor(ret, source, mime, &meta);
if (ret != NULL) {
if (isDrm) {
ret->setDrmFlag(true);