summaryrefslogtreecommitdiffstats
path: root/hal
diff options
context:
space:
mode:
authorArun Kumar Dasari <Arun@codeaurora.org>2016-12-27 13:01:14 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2017-01-19 06:02:30 -0800
commit3b174180fd25331c3439a402d929787f812f01ca (patch)
treece1b61955d7fea4e1e2314ae9c6845b66cf286ac /hal
parentbca6de20594e6b1e17fbbac0a4294ae069390aaa (diff)
downloadhardware_qcom_audio-3b174180fd25331c3439a402d929787f812f01ca.tar.gz
hardware_qcom_audio-3b174180fd25331c3439a402d929787f812f01ca.tar.bz2
hardware_qcom_audio-3b174180fd25331c3439a402d929787f812f01ca.zip
hal: Add support for AAC LATM format
Add support for AAC LATM format in hal layer Change-Id: I1314fb8759a59845cd7cba879f829d6fe2a0f53c
Diffstat (limited to 'hal')
-rw-r--r--hal/audio_extn/audio_extn.h10
-rw-r--r--hal/audio_extn/utils.c7
-rw-r--r--hal/audio_hw.c9
3 files changed, 24 insertions, 2 deletions
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 659592cf..b9402d57 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -83,6 +83,16 @@
AUDIO_FORMAT_AAC_SUB_HE_V2)
#endif
+#ifndef AUDIO_FORMAT_AAC_LATM
+#define AUDIO_FORMAT_AAC_LATM 0x23000000UL
+#define AUDIO_FORMAT_AAC_LATM_LC (AUDIO_FORMAT_AAC_LATM |\
+ AUDIO_FORMAT_AAC_SUB_LC)
+#define AUDIO_FORMAT_AAC_LATM_HE_V1 (AUDIO_FORMAT_AAC_LATM |\
+ AUDIO_FORMAT_AAC_SUB_HE_V1)
+#define AUDIO_FORMAT_AAC_LATM_HE_V2 (AUDIO_FORMAT_AAC_LATM |\
+ AUDIO_FORMAT_AAC_SUB_HE_V2)
+#endif
+
#ifndef COMPRESS_METADATA_NEEDED
#define audio_extn_parse_compress_metadata(out, parms) (0)
#else
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index b8063939..69a7eec3 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -147,6 +147,10 @@ const struct string_to_enum s_format_name_to_enum_table[] = {
STRING_TO_ENUM(AUDIO_FORMAT_AAC_ADTS_HE_V1),
STRING_TO_ENUM(AUDIO_FORMAT_AAC_ADTS_HE_V2),
STRING_TO_ENUM(AUDIO_FORMAT_DSD),
+ STRING_TO_ENUM(AUDIO_FORMAT_AAC_LATM),
+ STRING_TO_ENUM(AUDIO_FORMAT_AAC_LATM_LC),
+ STRING_TO_ENUM(AUDIO_FORMAT_AAC_LATM_HE_V1),
+ STRING_TO_ENUM(AUDIO_FORMAT_AAC_LATM_HE_V2),
#endif
};
@@ -1114,6 +1118,9 @@ int get_snd_codec_id(audio_format_t format)
case AUDIO_FORMAT_AAC_ADTS:
id = SND_AUDIOCODEC_AAC;
break;
+ case AUDIO_FORMAT_AAC_LATM:
+ id = SND_AUDIOCODEC_AAC;
+ break;
case AUDIO_FORMAT_PCM_OFFLOAD:
case AUDIO_FORMAT_PCM:
id = SND_AUDIOCODEC_PCM;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 61e9b899..e60ce6e4 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
* Not a Contribution.
*
* Copyright (C) 2013 The Android Open Source Project
@@ -503,6 +503,9 @@ static bool is_supported_format(audio_format_t format)
format == AUDIO_FORMAT_AAC_ADTS_LC ||
format == AUDIO_FORMAT_AAC_ADTS_HE_V1 ||
format == AUDIO_FORMAT_AAC_ADTS_HE_V2 ||
+ format == AUDIO_FORMAT_AAC_LATM_LC ||
+ format == AUDIO_FORMAT_AAC_LATM_HE_V1 ||
+ format == AUDIO_FORMAT_AAC_LATM_HE_V2 ||
format == AUDIO_FORMAT_PCM_24_BIT_PACKED ||
format == AUDIO_FORMAT_PCM_8_24_BIT ||
format == AUDIO_FORMAT_PCM_FLOAT ||
@@ -3988,8 +3991,10 @@ int adev_open_output_stream(struct audio_hw_device *dev,
if ((config->offload_info.format & AUDIO_FORMAT_MAIN_MASK) == AUDIO_FORMAT_AAC)
out->compr_config.codec->format = SND_AUDIOSTREAMFORMAT_RAW;
- if ((config->offload_info.format & AUDIO_FORMAT_MAIN_MASK) == AUDIO_FORMAT_AAC_ADTS)
+ else if ((config->offload_info.format & AUDIO_FORMAT_MAIN_MASK) == AUDIO_FORMAT_AAC_ADTS)
out->compr_config.codec->format = SND_AUDIOSTREAMFORMAT_MP4ADTS;
+ else if ((config->offload_info.format & AUDIO_FORMAT_MAIN_MASK) == AUDIO_FORMAT_AAC_LATM)
+ out->compr_config.codec->format = SND_AUDIOSTREAMFORMAT_MP4LATM;
if ((config->offload_info.format & AUDIO_FORMAT_MAIN_MASK) ==
AUDIO_FORMAT_PCM) {