diff options
| author | Praveen Chavan <pchavan@codeaurora.org> | 2015-07-02 16:09:10 -0700 |
|---|---|---|
| committer | Linux Build Service Account <lnxbuild@localhost> | 2015-10-06 03:24:13 -0600 |
| commit | f48b75f9c6407a2e5b361ec57cefd812404eb02d (patch) | |
| tree | aa96592fc8aa8ced49ac374fbf57ab5601d07834 /media/libstagefright | |
| parent | 0eb0c1dadf6b5c9948b7e4c63a5cde1adfa48c53 (diff) | |
| download | frameworks_av-f48b75f9c6407a2e5b361ec57cefd812404eb02d.zip frameworks_av-f48b75f9c6407a2e5b361ec57cefd812404eb02d.tar.gz frameworks_av-f48b75f9c6407a2e5b361ec57cefd812404eb02d.tar.bz2 | |
Stagefright: Make classes customizable and add AV extensions
Change access modifiers and qualify methods with virtual, to
allow extensions. Add facility for loading customizations
(Extended classes) dynamically.
Conflicts:
media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp
Change-Id: Icc8965754fb1c73175a13a9ad24c19665ad60988
Diffstat (limited to 'media/libstagefright')
| -rw-r--r-- | media/libstagefright/ACodec.cpp | 8 | ||||
| -rw-r--r-- | media/libstagefright/Android.mk | 5 | ||||
| -rw-r--r-- | media/libstagefright/DataSource.cpp | 3 | ||||
| -rw-r--r-- | media/libstagefright/MediaCodec.cpp | 3 | ||||
| -rw-r--r-- | media/libstagefright/MediaExtractor.cpp | 5 | ||||
| -rw-r--r-- | media/libstagefright/Utils.cpp | 3 |
6 files changed, 23 insertions, 4 deletions
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index e3cc413..5f8453f 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -539,6 +539,10 @@ ACodec::ACodec() ACodec::~ACodec() { } +status_t ACodec::setupCustomCodec(status_t err, const char *, const sp<AMessage> &) { + return err; +} + void ACodec::setNotificationMessage(const sp<AMessage> &msg) { mNotify = msg; } @@ -2125,6 +2129,8 @@ status_t ACodec::configureCodec( } else { err = setupEAC3Codec(encoder, numChannels, sampleRate); } + } else { + err = setupCustomCodec(err, mime, msg); } if (err != OK) { @@ -2841,7 +2847,7 @@ static const struct VideoCodingMapEntry { { MEDIA_MIMETYPE_VIDEO_VP9, OMX_VIDEO_CodingVP9 }, }; -static status_t GetVideoCodingTypeFromMime( +status_t ACodec::GetVideoCodingTypeFromMime( const char *mime, OMX_VIDEO_CODINGTYPE *codingType) { for (size_t i = 0; i < sizeof(kVideoCodingMapEntry) / sizeof(kVideoCodingMapEntry[0]); diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk index 2529aa7..03e7e46 100644 --- a/media/libstagefright/Android.mk +++ b/media/libstagefright/Android.mk @@ -72,6 +72,7 @@ LOCAL_SRC_FILES:= \ LOCAL_C_INCLUDES:= \ $(TOP)/frameworks/av/include/media/ \ + $(TOP)/frameworks/av/media/libavextensions \ $(TOP)/frameworks/av/include/media/stagefright/timedtext \ $(TOP)/frameworks/native/include/media/hardware \ $(TOP)/frameworks/native/include/media/openmax \ @@ -104,7 +105,7 @@ LOCAL_SHARED_LIBRARIES := \ libutils \ libvorbisidec \ libz \ - libpowermanager + libpowermanager \ LOCAL_STATIC_LIBRARIES := \ libstagefright_color_conversion \ @@ -120,6 +121,8 @@ LOCAL_STATIC_LIBRARIES := \ libFLAC \ libmedia_helper \ +LOCAL_WHOLE_STATIC_LIBRARIES := libavextensions + LOCAL_SHARED_LIBRARIES += \ libstagefright_enc_common \ libstagefright_avc_common \ diff --git a/media/libstagefright/DataSource.cpp b/media/libstagefright/DataSource.cpp index 75ef288..fdd6d96 100644 --- a/media/libstagefright/DataSource.cpp +++ b/media/libstagefright/DataSource.cpp @@ -48,6 +48,8 @@ #include <cutils/properties.h> +#include <stagefright/AVExtensions.h> + namespace android { bool DataSource::getUInt16(off64_t offset, uint16_t *x) { @@ -175,6 +177,7 @@ void DataSource::RegisterDefaultSniffers() { RegisterSniffer_l(SniffMPEG2PS); RegisterSniffer_l(SniffWVM); RegisterSniffer_l(SniffMidi); + RegisterSniffer_l(AVUtils::get()->getExtendedSniffer()); char value[PROPERTY_VALUE_MAX]; if (property_get("drm.service.enabled", value, NULL) diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp index cd59709..b8a6e07 100644 --- a/media/libstagefright/MediaCodec.cpp +++ b/media/libstagefright/MediaCodec.cpp @@ -51,6 +51,7 @@ #include <private/android_filesystem_config.h> #include <utils/Log.h> #include <utils/Singleton.h> +#include <stagefright/AVExtensions.h> namespace android { @@ -306,7 +307,7 @@ status_t MediaCodec::init(const AString &name, bool nameIsType, bool encoder) { // queue. if (nameIsType || !strncasecmp(name.c_str(), "omx.", 4)) { - mCodec = new ACodec; + mCodec = AVFactory::get()->createACodec(); } else if (!nameIsType && !strncasecmp(name.c_str(), "android.filter.", 15)) { mCodec = new MediaFilter; diff --git a/media/libstagefright/MediaExtractor.cpp b/media/libstagefright/MediaExtractor.cpp index e21fe6e..8d89071 100644 --- a/media/libstagefright/MediaExtractor.cpp +++ b/media/libstagefright/MediaExtractor.cpp @@ -40,6 +40,8 @@ #include <media/stagefright/MetaData.h> #include <utils/String8.h> +#include <stagefright/AVExtensions.h> + namespace android { sp<MetaData> MediaExtractor::getMetaData() { @@ -92,7 +94,8 @@ sp<MediaExtractor> MediaExtractor::Create( } MediaExtractor *ret = NULL; - if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG4) + if ((ret = AVFactory::get()->createExtendedExtractor(source, mime)) != NULL) { + } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG4) || !strcasecmp(mime, "audio/mp4")) { ret = new MPEG4Extractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_MPEG)) { diff --git a/media/libstagefright/Utils.cpp b/media/libstagefright/Utils.cpp index f0a7277..e22c0c9 100644 --- a/media/libstagefright/Utils.cpp +++ b/media/libstagefright/Utils.cpp @@ -35,6 +35,8 @@ #include <media/stagefright/Utils.h> #include <media/AudioParameter.h> +#include <stagefright/AVExtensions.h> + namespace android { uint16_t U16_AT(const uint8_t *ptr) { @@ -433,6 +435,7 @@ status_t convertMetaDataToMessage( msg->setBuffer("csd-2", buffer); } + AVUtils::get()->convertMetaDataToMessage(meta, &msg); *format = msg; return OK; |
