diff options
Diffstat (limited to 'media/libavextensions')
-rw-r--r-- | media/libavextensions/Android.mk | 10 | ||||
-rw-r--r-- | media/libavextensions/common/ExtensionsLoader.hpp | 10 | ||||
-rw-r--r-- | media/libavextensions/mediaplayerservice/AVNuExtensions.h | 8 | ||||
-rw-r--r-- | media/libavextensions/mediaplayerservice/AVNuUtils.cpp | 53 | ||||
-rw-r--r-- | media/libavextensions/stagefright/AVFactory.cpp | 2 | ||||
-rw-r--r-- | media/libavextensions/stagefright/AVUtils.cpp | 6 |
6 files changed, 68 insertions, 21 deletions
diff --git a/media/libavextensions/Android.mk b/media/libavextensions/Android.mk index 0380135..0b01669 100644 --- a/media/libavextensions/Android.mk +++ b/media/libavextensions/Android.mk @@ -12,7 +12,7 @@ LOCAL_C_INCLUDES:= \ $(TOP)/frameworks/native/include/media/hardware \ $(TOP)/frameworks/native/include/media/openmax \ $(TOP)/external/flac/include \ - $(TOP)/hardware/qcom/media/mm-core/inc \ + $(TOP)/$(call project-path-for,qcom-media)/mm-core/inc \ $(TOP)/frameworks/av/media/libstagefright \ LOCAL_CFLAGS += -Wno-multichar -Werror @@ -41,7 +41,7 @@ LOCAL_C_INCLUDES:= \ $(TOP)/frameworks/native/include/media/hardware \ $(TOP)/frameworks/native/include/media/openmax \ $(TOP)/external/flac/include \ - $(TOP)/hardware/qcom/media/mm-core/inc + $(TOP)/$(call project-path-for,qcom-media)/mm-core/inc LOCAL_CFLAGS += -Wno-multichar -Werror @@ -75,7 +75,7 @@ LOCAL_C_INCLUDES:= \ $(TOP)/frameworks/native/include/media/hardware \ $(TOP)/frameworks/native/include/media/openmax \ $(TOP)/external/flac/include \ - $(TOP)/hardware/qcom/media/mm-core/inc + $(TOP)/$(call project-path-for,qcom-media)/mm-core/inc LOCAL_CFLAGS += -Wno-multichar -Werror @@ -83,6 +83,10 @@ ifeq ($(TARGET_ENABLE_QC_AV_ENHANCEMENTS),true) LOCAL_CFLAGS += -DENABLE_AV_ENHANCEMENTS endif +ifeq ($(TARGET_BOARD_PLATFORM),msm8974) + LOCAL_CFLAGS += -DTARGET_8974 +endif + LOCAL_MODULE:= libavmediaserviceextensions LOCAL_CLANG := false diff --git a/media/libavextensions/common/ExtensionsLoader.hpp b/media/libavextensions/common/ExtensionsLoader.hpp index e03979c..48bcf3b 100644 --- a/media/libavextensions/common/ExtensionsLoader.hpp +++ b/media/libavextensions/common/ExtensionsLoader.hpp @@ -28,6 +28,7 @@ */ #include <dlfcn.h> #include <common/AVExtensionsCommon.h> +#include <cutils/properties.h> namespace android { @@ -52,9 +53,12 @@ T *ExtensionsLoader<T>::createInstance(const char *createFunctionName) { // create extended object if extensions-lib is available and // AV_ENHANCEMENTS is enabled #if ENABLE_AV_ENHANCEMENTS - createFunction_t createFunc = loadCreateFunction(createFunctionName); - if (createFunc) { - return reinterpret_cast<T *>((*createFunc)()); + bool enabled = property_get_bool("media.avenhancements.enabled", false); + if (enabled) { + createFunction_t createFunc = loadCreateFunction(createFunctionName); + if (createFunc) { + return reinterpret_cast<T *>((*createFunc)()); + } } #endif // Else, create the default object diff --git a/media/libavextensions/mediaplayerservice/AVNuExtensions.h b/media/libavextensions/mediaplayerservice/AVNuExtensions.h index 1d45c00..2fe56b8 100644 --- a/media/libavextensions/mediaplayerservice/AVNuExtensions.h +++ b/media/libavextensions/mediaplayerservice/AVNuExtensions.h @@ -80,11 +80,17 @@ struct AVNuUtils { virtual void setDecodedPCMFormat(const sp<AMessage> &); virtual status_t convertToSinkFormatIfNeeded(const sp<ABuffer> &, sp<ABuffer> &, audio_format_t sinkFormat, bool isOffload); +#ifndef TARGET_8974 virtual uint32_t getFlags(); virtual bool canUseSetBuffers(const sp<MetaData> &Meta); - +#endif virtual void printFileName(int fd); virtual void checkFormatChange(bool *formatChange, const sp<ABuffer> &accessUnit); +#ifdef TARGET_8974 + virtual void addFlagsInMeta(const sp<ABuffer> &buffer, int32_t flags, bool isAudio); + virtual uint32_t getFlags(); + virtual bool canUseSetBuffers(const sp<MetaData> &Meta); +#endif virtual bool dropCorruptFrame(); // ----- NO TRESSPASSING BEYOND THIS LINE ------ diff --git a/media/libavextensions/mediaplayerservice/AVNuUtils.cpp b/media/libavextensions/mediaplayerservice/AVNuUtils.cpp index 95f6454..a8defee 100644 --- a/media/libavextensions/mediaplayerservice/AVNuUtils.cpp +++ b/media/libavextensions/mediaplayerservice/AVNuUtils.cpp @@ -33,6 +33,8 @@ #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> +#include <media/stagefright/MediaDefs.h> + #include <nuplayer/NuPlayer.h> #include <nuplayer/NuPlayerDecoderBase.h> #include <nuplayer/NuPlayerDecoderPassThrough.h> @@ -52,12 +54,29 @@ bool AVNuUtils::pcmOffloadException(const sp<MetaData> &) { return true; } -bool AVNuUtils::isRAWFormat(const sp<MetaData> &) { - return false; +bool AVNuUtils::isRAWFormat(const sp<MetaData> &meta) { + const char *mime = {0}; + if (meta == NULL) { + return false; + } + CHECK(meta->findCString(kKeyMIMEType, &mime)); + if (!strncasecmp(mime, MEDIA_MIMETYPE_AUDIO_RAW, 9)) + return true; + else + return false; } -bool AVNuUtils::isRAWFormat(const sp<AMessage> &) { - return false; +bool AVNuUtils::isRAWFormat(const sp<AMessage> &format) { + AString mime; + if (format == NULL) { + return false; + } + CHECK(format->findString("mime", &mime)); + if (!strncasecmp(mime.c_str(), MEDIA_MIMETYPE_AUDIO_RAW, 9)) + return true; + else + return false; + } bool AVNuUtils::isVorbisFormat(const sp<MetaData> &) { @@ -69,20 +88,26 @@ int AVNuUtils::updateAudioBitWidth(audio_format_t /*audioFormat*/, return 16; } -audio_format_t AVNuUtils::getKeyPCMFormat(const sp<MetaData> &) { - return AUDIO_FORMAT_INVALID; -} +audio_format_t AVNuUtils::getKeyPCMFormat(const sp<MetaData> &meta) { + int32_t pcmFormat = 0; + if (meta->findInt32('pfmt', &pcmFormat)) + return (audio_format_t)pcmFormat; -void AVNuUtils::setKeyPCMFormat(const sp<MetaData> &, audio_format_t /*audioFormat*/) { + return AUDIO_FORMAT_PCM_16_BIT; +} +void AVNuUtils::setKeyPCMFormat(const sp<MetaData> &meta, audio_format_t audioFormat) { + if (audio_is_linear_pcm(audioFormat)) + meta->setInt32('pfmt', audioFormat); } -audio_format_t AVNuUtils::getPCMFormat(const sp<AMessage> &) { +audio_format_t AVNuUtils::getPCMFormat(const sp<AMessage> &/*format*/) { return AUDIO_FORMAT_PCM_16_BIT; } -void AVNuUtils::setPCMFormat(const sp<AMessage> &, audio_format_t /*audioFormat*/) { - +void AVNuUtils::setPCMFormat(const sp<AMessage> &format, audio_format_t audioFormat) { + if (audio_is_linear_pcm(audioFormat)) + format->setInt32("pcm-format", audioFormat); } void AVNuUtils::setSourcePCMFormat(const sp<MetaData> &) { @@ -104,6 +129,12 @@ void AVNuUtils::checkFormatChange(bool * /*formatChange*/, const sp<ABuffer> & /*accessUnit*/) { } +#ifdef TARGET_8974 +void AVNuUtils::addFlagsInMeta(const sp<ABuffer> & /*buffer*/, + int32_t /*flags*/, bool /*isAudio*/) { +} +#endif + uint32_t AVNuUtils::getFlags() { return 0; } diff --git a/media/libavextensions/stagefright/AVFactory.cpp b/media/libavextensions/stagefright/AVFactory.cpp index 2a3810d..f6d5f53 100644 --- a/media/libavextensions/stagefright/AVFactory.cpp +++ b/media/libavextensions/stagefright/AVFactory.cpp @@ -72,7 +72,7 @@ sp<NuCachedSource2> AVFactory::createCachedSource( const sp<DataSource> &source, const char *cacheConfig, bool disconnectAtHighwatermark) { - return new NuCachedSource2(source, cacheConfig, disconnectAtHighwatermark); + return NuCachedSource2::Create(source, cacheConfig, disconnectAtHighwatermark); } MediaHTTP* AVFactory::createMediaHTTP( diff --git a/media/libavextensions/stagefright/AVUtils.cpp b/media/libavextensions/stagefright/AVUtils.cpp index 324ff9b..2d5208f 100644 --- a/media/libavextensions/stagefright/AVUtils.cpp +++ b/media/libavextensions/stagefright/AVUtils.cpp @@ -66,8 +66,10 @@ int AVUtils::getAudioSampleBits(const sp<MetaData> &) { return 16; } -int AVUtils::getAudioSampleBits(const sp<AMessage> &) { - return 16; +int AVUtils::getAudioSampleBits(const sp<AMessage> &format) { + int32_t bits = 16; + format->findInt32("bits-per-sample", &bits); + return bits; } void AVUtils::setPcmSampleBits(const sp<AMessage> &, int32_t /*bitWidth*/) { |