From d098f35fa9cd20969a1fbf08d585f13a27166bef Mon Sep 17 00:00:00 2001 From: Sharad Sangle Date: Sat, 18 Jul 2015 19:26:22 +0530 Subject: audio: add support for offload FLAC Add support for FLAC playback in compressed offload mode Change-Id: I617b41b867277272212d6cf1a6f82f646c5b1032 --- media/libavextensions/stagefright/AVExtensions.h | 4 ++++ media/libavextensions/stagefright/AVUtils.cpp | 10 ++++++++++ media/libstagefright/Utils.cpp | 3 ++- services/audiopolicy/common/managerdefinitions/Android.mk | 5 +++++ .../common/managerdefinitions/include/ConfigParsingUtils.h | 3 +++ 5 files changed, 24 insertions(+), 1 deletion(-) diff --git a/media/libavextensions/stagefright/AVExtensions.h b/media/libavextensions/stagefright/AVExtensions.h index 08dbeeb..29f4cbc 100644 --- a/media/libavextensions/stagefright/AVExtensions.h +++ b/media/libavextensions/stagefright/AVExtensions.h @@ -31,12 +31,14 @@ #include #include +#include namespace android { struct ACodec; class MediaExtractor; struct MediaCodec; +class AudioParameter; /* * Factory to create objects of base-classes in libstagefright @@ -58,6 +60,8 @@ struct AVUtils { virtual status_t convertMetaDataToMessage( const sp &meta, sp *format); virtual DataSource::SnifferFunc getExtendedSniffer(); + virtual status_t mapMimeToAudioFormat( audio_format_t& format, const char* mime); + virtual status_t sendMetaDataToHal(const sp& meta, AudioParameter *param); virtual sp createCustomComponentByName(const sp &looper, const char* mime, bool encoder); diff --git a/media/libavextensions/stagefright/AVUtils.cpp b/media/libavextensions/stagefright/AVUtils.cpp index 8fe0c53..d767f45 100644 --- a/media/libavextensions/stagefright/AVUtils.cpp +++ b/media/libavextensions/stagefright/AVUtils.cpp @@ -49,6 +49,16 @@ status_t AVUtils::convertMetaDataToMessage( return OK; } +status_t AVUtils::mapMimeToAudioFormat( + audio_format_t&, const char* ) { + return OK; +} + +status_t AVUtils::sendMetaDataToHal( + const sp&, AudioParameter *){ + return OK; +} + static bool dumbSniffer( const sp &, String8 *, float *, sp *) { diff --git a/media/libstagefright/Utils.cpp b/media/libstagefright/Utils.cpp index e22c0c9..a8927ee 100644 --- a/media/libstagefright/Utils.cpp +++ b/media/libstagefright/Utils.cpp @@ -727,6 +727,7 @@ status_t sendMetaDataToHal(sp& sink, param.addInt(String8(AUDIO_OFFLOAD_CODEC_PADDING_SAMPLES), paddingSamples); } + AVUtils::get()->sendMetaDataToHal(meta, ¶m); ALOGV("sendMetaDataToHal: bitRate %d, sampleRate %d, chanMask %d," "delaySample %d, paddingSample %d", bitRate, sampleRate, channelMask, delaySamples, paddingSamples); @@ -762,7 +763,7 @@ const struct mime_conv_t* p = &mimeLookup[0]; ++p; } - return BAD_VALUE; + return AVUtils::get()->mapMimeToAudioFormat(format, mime); } struct aac_format_conv_t { diff --git a/services/audiopolicy/common/managerdefinitions/Android.mk b/services/audiopolicy/common/managerdefinitions/Android.mk index 8728ff3..81b0a7a 100644 --- a/services/audiopolicy/common/managerdefinitions/Android.mk +++ b/services/audiopolicy/common/managerdefinitions/Android.mk @@ -30,6 +30,11 @@ LOCAL_C_INCLUDES += \ LOCAL_EXPORT_C_INCLUDE_DIRS := \ $(LOCAL_PATH)/include +ifeq ($(call is-vendor-board-platform,QCOM),true) +ifeq ($(strip $(AUDIO_FEATURE_ENABLED_FLAC_OFFLOAD)),true) +LOCAL_CFLAGS += -DFLAC_OFFLOAD_ENABLED +endif +endif LOCAL_MODULE := libaudiopolicycomponents diff --git a/services/audiopolicy/common/managerdefinitions/include/ConfigParsingUtils.h b/services/audiopolicy/common/managerdefinitions/include/ConfigParsingUtils.h index e87397d..dfb3555 100644 --- a/services/audiopolicy/common/managerdefinitions/include/ConfigParsingUtils.h +++ b/services/audiopolicy/common/managerdefinitions/include/ConfigParsingUtils.h @@ -201,6 +201,9 @@ const StringToEnum sFormatNameToEnumTable[] = { STRING_TO_ENUM(AUDIO_FORMAT_E_AC3), STRING_TO_ENUM(AUDIO_FORMAT_DTS), STRING_TO_ENUM(AUDIO_FORMAT_DTS_HD), +#ifdef FLAC_OFFLOAD_ENABLED + STRING_TO_ENUM(AUDIO_FORMAT_FLAC), +#endif }; const StringToEnum sOutChannelsNameToEnumTable[] = { -- cgit v1.1