diff options
Diffstat (limited to 'sound/soc/fsl/fsl_dsp_platform_compress.c')
-rw-r--r-- | sound/soc/fsl/fsl_dsp_platform_compress.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/sound/soc/fsl/fsl_dsp_platform_compress.c b/sound/soc/fsl/fsl_dsp_platform_compress.c index b60dd776cfe7..439066efe49e 100644 --- a/sound/soc/fsl/fsl_dsp_platform_compress.c +++ b/sound/soc/fsl/fsl_dsp_platform_compress.c @@ -197,6 +197,35 @@ static int dsp_platform_compr_set_params(struct snd_compr_stream *cstream, goto err_comp0_create; } + if (drv->codec_type == CODEC_AAC_DEC) { + s_param.id = XA_STREAM_TYPE; + if (params->codec.format == SND_AUDIOSTREAMFORMAT_MP4ADTS || params->codec.format == SND_AUDIOSTREAMFORMAT_MP2ADTS) + s_param.mixData.value = XA_STREAM_ADTS; + else if (params->codec.format == SND_AUDIOSTREAMFORMAT_ADIF) + s_param.mixData.value = XA_STREAM_ADIF; + else + s_param.mixData.value = XA_STREAM_RAW; + ret = xaf_comp_set_config(drv->client, &drv->component[0], 1, &s_param); + if (ret) { + dev_err(component->dev, + "set param[cmd:0x%x|val:0x%x] error, err = %d\n", + s_param.id, s_param.mixData.value, ret); + goto err_comp0_create; + } + + /* ...set depth before init codec */ + s_param.id = XA_DEPTH; + s_param.mixData.value = 16; + ret = xaf_comp_set_config(drv->client, &drv->component[0], 1, &s_param); + if (ret) { + dev_err(component->dev, + "set param[cmd:0x%x|val:0x%x] error, err = %d\n", + s_param.id, s_param.mixData.value, ret); + goto err_comp0_create; + } + } + + /* ...add component into pipeline */ ret = xaf_comp_add(&drv->pipeline, &drv->component[0]); if (ret) { @@ -666,8 +695,8 @@ static struct snd_compr_codec_caps caps_aac = { .descriptor[1].profiles = 0, .descriptor[1].modes = 0, .descriptor[1].formats = - (SND_AUDIOSTREAMFORMAT_MP4ADTS | - SND_AUDIOSTREAMFORMAT_RAW), + (SND_AUDIOSTREAMFORMAT_MP4ADTS | SND_AUDIOSTREAMFORMAT_MP2ADTS | + SND_AUDIOSTREAMFORMAT_ADIF | SND_AUDIOSTREAMFORMAT_RAW), }; static int dsp_platform_compr_get_codec_caps(struct snd_compr_stream *cstream, |