summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSharad Sangle <assangle@codeaurora.org>2015-07-18 19:26:22 +0530
committerLinux Build Service Account <lnxbuild@localhost>2015-10-06 03:24:16 -0600
commitd098f35fa9cd20969a1fbf08d585f13a27166bef (patch)
tree112fbede22267fe32ca21d5b030d5b5227ef6d13
parent3f854035a48cbaa5059996f039fb0fa2ecd69743 (diff)
downloadframeworks_av-d098f35fa9cd20969a1fbf08d585f13a27166bef.zip
frameworks_av-d098f35fa9cd20969a1fbf08d585f13a27166bef.tar.gz
frameworks_av-d098f35fa9cd20969a1fbf08d585f13a27166bef.tar.bz2
audio: add support for offload FLAC
Add support for FLAC playback in compressed offload mode Change-Id: I617b41b867277272212d6cf1a6f82f646c5b1032
-rw-r--r--media/libavextensions/stagefright/AVExtensions.h4
-rw-r--r--media/libavextensions/stagefright/AVUtils.cpp10
-rw-r--r--media/libstagefright/Utils.cpp3
-rw-r--r--services/audiopolicy/common/managerdefinitions/Android.mk5
-rw-r--r--services/audiopolicy/common/managerdefinitions/include/ConfigParsingUtils.h3
5 files changed, 24 insertions, 1 deletions
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 <media/stagefright/DataSource.h>
#include <common/AVExtensionsCommon.h>
+#include <system/audio.h>
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<MetaData> &meta, sp<AMessage> *format);
virtual DataSource::SnifferFunc getExtendedSniffer();
+ virtual status_t mapMimeToAudioFormat( audio_format_t& format, const char* mime);
+ virtual status_t sendMetaDataToHal(const sp<MetaData>& meta, AudioParameter *param);
virtual sp<MediaCodec> createCustomComponentByName(const sp<ALooper> &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<MetaData>&, AudioParameter *){
+ return OK;
+}
+
static bool dumbSniffer(
const sp<DataSource> &, String8 *,
float *, sp<AMessage> *) {
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<MediaPlayerBase::AudioSink>& sink,
param.addInt(String8(AUDIO_OFFLOAD_CODEC_PADDING_SAMPLES), paddingSamples);
}
+ AVUtils::get()->sendMetaDataToHal(meta, &param);
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[] = {