hal: Add support for AAC ADTS offload playback
-In byte stream mode input bistream is configured with AAC ADTS format
-Add change to configure ADSP in ADTS format if input is in ADTS format
Change-Id: Ie423af6847e4bfd49722239105aaba4fecf9469b
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 1dadf0f..435c57d 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -305,6 +305,9 @@
format == AUDIO_FORMAT_AAC_LC ||
format == AUDIO_FORMAT_AAC_HE_V1 ||
format == AUDIO_FORMAT_AAC_HE_V2 ||
+ format == AUDIO_FORMAT_AAC_ADTS_LC ||
+ format == AUDIO_FORMAT_AAC_ADTS_HE_V1 ||
+ format == AUDIO_FORMAT_AAC_ADTS_HE_V2 ||
format == AUDIO_FORMAT_PCM_16_BIT_OFFLOAD ||
format == AUDIO_FORMAT_PCM_24_BIT_OFFLOAD ||
format == AUDIO_FORMAT_FLAC ||
@@ -329,6 +332,9 @@
case AUDIO_FORMAT_AAC:
id = SND_AUDIOCODEC_AAC;
break;
+ case AUDIO_FORMAT_AAC_ADTS:
+ id = SND_AUDIOCODEC_AAC;
+ break;
case AUDIO_FORMAT_PCM_OFFLOAD:
id = SND_AUDIOCODEC_PCM;
break;
@@ -1829,15 +1835,6 @@
return -EINVAL;
}
- ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_FORMAT, value, sizeof(value));
- if (ret >= 0) {
- if (atoi(value) == SND_AUDIOSTREAMFORMAT_MP4ADTS) {
- out->compr_config.codec->format = SND_AUDIOSTREAMFORMAT_MP4ADTS;
- ALOGV("ADTS format is set in offload mode");
- }
- out->send_new_metadata = 1;
- }
-
ret = audio_extn_parse_compress_metadata(out, parms);
ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_SAMPLE_RATE, value, sizeof(value));
@@ -2924,8 +2921,10 @@
/*TODO: Do we need to change it for passthrough */
out->compr_config.codec->format = SND_AUDIOSTREAMFORMAT_RAW;
- if (config->offload_info.format == AUDIO_FORMAT_AAC)
- out->compr_config.codec->format = SND_AUDIOSTREAMFORMAT_RAW;
+ 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)
+ out->compr_config.codec->format = SND_AUDIOSTREAMFORMAT_MP4ADTS;
if (config->offload_info.format == AUDIO_FORMAT_PCM_16_BIT_OFFLOAD)
out->compr_config.codec->format = SNDRV_PCM_FORMAT_S16_LE;
if(config->offload_info.format == AUDIO_FORMAT_PCM_24_BIT_OFFLOAD)