diff options
author | Brint E. Kriebel <bekit@cyngn.com> | 2014-11-03 18:12:15 -0800 |
---|---|---|
committer | Brint E. Kriebel <bekit@cyngn.com> | 2014-11-03 18:12:15 -0800 |
commit | 548b33e40eb031af1a209d90a0d372b856aed9e6 (patch) | |
tree | 3bdbc123bdc5ccaefd4f0b8851046a9dde05fda7 | |
parent | fa562a1b38ee204644e8f214f1db0cc41eedbbd0 (diff) | |
parent | 68d0fd75a73c04bee94560b13bca5b325b3ef87d (diff) | |
download | hardware_qcom_audio-stable/cm-11.0-XNF8Y.tar.gz hardware_qcom_audio-stable/cm-11.0-XNF8Y.tar.bz2 hardware_qcom_audio-stable/cm-11.0-XNF8Y.zip |
Merge branch 'cm-11.0' into stable/cm-11.0cm-11.0-XNPH05Q-tomato-9828f8e9cccm-11.0-XNPH05Q-bacon-5229c4ef56stable/cm-11.0-XNF9Xstable/cm-11.0-XNF8Ystable/cm-11.0shipping/cm-11.0
-rw-r--r-- | Android.mk | 2 | ||||
-rw-r--r-- | hal/Android.mk | 16 | ||||
-rw-r--r-- | hal/audio_hw.c | 57 |
3 files changed, 73 insertions, 2 deletions
@@ -1,4 +1,4 @@ -ifeq ($(TARGET_QCOM_AUDIO_VARIANT),) +ifeq ($(call my-dir),$(call project-path-for,qcom-audio)) ifneq ($(filter msm8960 msm8226 msm8x26 msm8974 msm8x74,$(TARGET_BOARD_PLATFORM)),) diff --git a/hal/Android.mk b/hal/Android.mk index b7acf4c0..9d1fec90 100644 --- a/hal/Android.mk +++ b/hal/Android.mk @@ -43,6 +43,22 @@ ifneq ($(strip $(PRODUCT_BRAND)),google) LOCAL_CFLAGS += -DDISABLE_TMUS_AUDIO endif +ifneq ($(filter msm8974 msm8226,$(TARGET_BOARD_PLATFORM)),) +ifneq ($(strip $(AUDIO_FEATURE_DISABLED_WMA_OFFLOAD_DISABLED)),true) + LOCAL_CFLAGS += -DWMA_OFFLOAD_ENABLED + LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include + LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr +endif +endif + +ifneq ($(filter msm8974 msm8226,$(TARGET_BOARD_PLATFORM)),) +ifneq ($(strip $(AUDIO_FEATURE_DISABLED_MP2_OFFLOAD)),true) + LOCAL_CFLAGS += -DMP2_OFFLOAD_ENABLED + LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include + LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr +endif +endif + ifeq ($(strip $(AUDIO_FEATURE_ENABLED_FLAC_OFFLOAD)),true) LOCAL_CFLAGS += -DFLAC_OFFLOAD_ENABLED endif diff --git a/hal/audio_hw.c b/hal/audio_hw.c index f338cc3e..ef5e6ad4 100644 --- a/hal/audio_hw.c +++ b/hal/audio_hw.c @@ -169,6 +169,9 @@ static bool is_supported_format(audio_format_t format) { if (format == AUDIO_FORMAT_MP3 || format == AUDIO_FORMAT_AAC || + format == AUDIO_FORMAT_WMA || + format == AUDIO_FORMAT_WMA_PRO || + format == AUDIO_FORMAT_MP2 || #ifdef FLAC_OFFLOAD_ENABLED format == AUDIO_FORMAT_FLAC || #endif @@ -190,6 +193,19 @@ static int get_snd_codec_id(audio_format_t format) case AUDIO_FORMAT_AAC: id = SND_AUDIOCODEC_AAC; break; +#ifdef WMA_OFFLOAD_ENABLED + case AUDIO_FORMAT_WMA: + id = SND_AUDIOCODEC_WMA; + break; + case AUDIO_FORMAT_WMA_PRO: + id = SND_AUDIOCODEC_WMA_PRO; + break; +#endif +#ifdef MP2_OFFLOAD_ENABLED + case AUDIO_FORMAT_MP2: + id = SND_AUDIOCODEC_MP2; + break; +#endif case AUDIO_FORMAT_PCM_16_BIT_OFFLOAD: case AUDIO_FORMAT_PCM_24_BIT_OFFLOAD: id = SND_AUDIOCODEC_PCM; @@ -1395,6 +1411,45 @@ static int parse_compress_metadata(struct stream_out *out, struct str_parms *par ALOGV("%s new encoder delay %u and padding %u", __func__, out->gapless_mdata.encoder_delay, out->gapless_mdata.encoder_padding); + if(out->format == AUDIO_FORMAT_WMA || out->format == AUDIO_FORMAT_WMA_PRO) { + ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_FORMAT_TAG, value, sizeof(value)); + if (ret >= 0) { + out->compr_config.codec->format = atoi(value); + } + ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_BLOCK_ALIGN, value, sizeof(value)); + if (ret >= 0) { + out->compr_config.codec->options.wma.super_block_align = atoi(value); + } + ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_BIT_PER_SAMPLE, value, sizeof(value)); + if (ret >= 0) { + out->compr_config.codec->options.wma.bits_per_sample = atoi(value); + } + ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_CHANNEL_MASK, value, sizeof(value)); + if (ret >= 0) { + out->compr_config.codec->options.wma.channelmask = atoi(value); + } + ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_ENCODE_OPTION, value, sizeof(value)); + if (ret >= 0) { + out->compr_config.codec->options.wma.encodeopt = atoi(value); + } + ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_ENCODE_OPTION1, value, sizeof(value)); + if (ret >= 0) { + out->compr_config.codec->options.wma.encodeopt1 = atoi(value); + } + ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_ENCODE_OPTION2, value, sizeof(value)); + if (ret >= 0) { + out->compr_config.codec->options.wma.encodeopt2 = atoi(value); + } + ALOGV("WMA params: fmt %x, balgn %x, sr %d, chmsk %x, encop %x, op1 %x, op2 %x", + out->compr_config.codec->format, + out->compr_config.codec->options.wma.super_block_align, + out->compr_config.codec->options.wma.bits_per_sample, + out->compr_config.codec->options.wma.channelmask, + out->compr_config.codec->options.wma.encodeopt, + out->compr_config.codec->options.wma.encodeopt1, + out->compr_config.codec->options.wma.encodeopt2); + } + return 0; } @@ -1475,7 +1530,7 @@ static int out_set_parameters(struct audio_stream *stream, const char *kvpairs) if (out->usecase == USECASE_AUDIO_PLAYBACK_OFFLOAD) { pthread_mutex_lock(&out->lock); - parse_compress_metadata(out, parms); + ret = parse_compress_metadata(out, parms); pthread_mutex_unlock(&out->lock); } |