ASoC: msm: Support WMA playback
Add support for WMA codec in tunnel mode playback.
Change-Id: I1084418a1ccbe63ada78a34b6f8cf532904b919c
Signed-off-by: Aviral Gupta <aviralg@codeaurora.org>
diff --git a/sound/soc/msm/msm-compr-q6.c b/sound/soc/msm/msm-compr-q6.c
index 8e4e205..776337d 100644
--- a/sound/soc/msm/msm-compr-q6.c
+++ b/sound/soc/msm/msm-compr-q6.c
@@ -191,6 +191,7 @@
struct compr_audio *compr = runtime->private_data;
struct msm_audio *prtd = &compr->prtd;
struct asm_aac_cfg aac_cfg;
+ struct asm_wma_cfg wma_cfg;
int ret;
pr_debug("compressed stream prepare\n");
@@ -219,7 +220,7 @@
aac_cfg.aot = AAC_ENC_MODE_EAAC_P;
aac_cfg.format = 0x03;
aac_cfg.ch_cfg = runtime->channels;
- aac_cfg.sample_rate = runtime->rate;
+ aac_cfg.sample_rate = runtime->rate;
ret = q6asm_media_format_block_aac(prtd->audio_client,
&aac_cfg);
if (ret < 0)
@@ -229,6 +230,26 @@
pr_debug("compressd playback, no need to send"
" the decoder params\n");
break;
+ case SND_AUDIOCODEC_WMA:
+ pr_debug("SND_AUDIOCODEC_WMA\n");
+ memset(&wma_cfg, 0x0, sizeof(struct asm_wma_cfg));
+ wma_cfg.format_tag = compr->info.codec_param.codec.format;
+ wma_cfg.ch_cfg = runtime->channels;
+ wma_cfg.sample_rate = runtime->rate;
+ wma_cfg.avg_bytes_per_sec =
+ compr->info.codec_param.codec.bit_rate/8;
+ wma_cfg.block_align = compr->info.codec_param.codec.align;
+ wma_cfg.valid_bits_per_sample =
+ compr->info.codec_param.codec.options.wma.bits_per_sample;
+ wma_cfg.ch_mask =
+ compr->info.codec_param.codec.options.wma.channelmask;
+ wma_cfg.encode_opt =
+ compr->info.codec_param.codec.options.wma.encodeopt;
+ ret = q6asm_media_format_block_wma(prtd->audio_client,
+ &wma_cfg);
+ if (ret < 0)
+ pr_err("%s: CMD Format block failed\n", __func__);
+ break;
default:
return -EINVAL;
}
@@ -294,6 +315,7 @@
compr->info.compr_cap.codecs[0] = SND_AUDIOCODEC_MP3;
compr->info.compr_cap.codecs[1] = SND_AUDIOCODEC_AAC;
compr->info.compr_cap.codecs[2] = SND_AUDIOCODEC_AC3_PASS_THROUGH;
+ compr->info.compr_cap.codecs[3] = SND_AUDIOCODEC_WMA;
/* Add new codecs here */
}
@@ -612,6 +634,10 @@
pr_debug("SND_AUDIOCODEC_AC3_PASS_THROUGH\n");
compr->codec = FORMAT_AC3;
break;
+ case SND_AUDIOCODEC_WMA:
+ pr_debug("SND_AUDIOCODEC_WMA\n");
+ compr->codec = FORMAT_WMA_V9;
+ break;
default:
pr_debug("FORMAT_LINEAR_PCM\n");
compr->codec = FORMAT_LINEAR_PCM;