Loading drivers/misc/qcom/qdsp6v2/aac_in.c +46 −13 Original line number Diff line number Diff line /* * Copyright (c) 2010-2013, The Linux Foundation. All rights reserved. * Copyright (c) 2010-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -160,9 +160,22 @@ static long aac_in_ioctl(struct file *file, cfg.channels = 2; cfg.sample_rate = enc_cfg->sample_rate; cfg.bit_rate = enc_cfg->bit_rate; /* ADTS(-1) to ADTS(0x00), RAW(0x00) to RAW(0x03) */ cfg.stream_format = ((enc_cfg->stream_format == \ 0x00) ? AUDIO_AAC_FORMAT_ADTS : AUDIO_AAC_FORMAT_RAW); switch (enc_cfg->stream_format) { case 0x00: cfg.stream_format = AUDIO_AAC_FORMAT_ADTS; break; case 0x01: cfg.stream_format = AUDIO_AAC_FORMAT_LOAS; break; case 0x02: cfg.stream_format = AUDIO_AAC_FORMAT_ADIF; break; default: case 0x03: cfg.stream_format = AUDIO_AAC_FORMAT_RAW; } pr_debug("%s:session id %d: Get-aac-cfg: format=%d sr=%d" "bitrate=%d\n", __func__, audio->ac->session, cfg.stream_format, cfg.sample_rate, cfg.bit_rate); Loading @@ -173,6 +186,7 @@ static long aac_in_ioctl(struct file *file, case AUDIO_SET_AAC_ENC_CONFIG: { struct msm_audio_aac_enc_config cfg; struct msm_audio_aac_enc_config *enc_cfg; uint32_t min_bitrate, max_bitrate; enc_cfg = audio->enc_cfg; if (copy_from_user(&cfg, (void *)arg, sizeof(cfg))) { rc = -EFAULT; Loading @@ -181,10 +195,23 @@ static long aac_in_ioctl(struct file *file, pr_debug("%s:session id %d: Set-aac-cfg: stream=%d\n", __func__, audio->ac->session, cfg.stream_format); if ((cfg.stream_format != AUDIO_AAC_FORMAT_RAW) && (cfg.stream_format != AAC_FORMAT_ADTS)) { pr_err("%s:session id %d: unsupported AAC format\n", __func__, audio->ac->session); switch (cfg.stream_format) { case AUDIO_AAC_FORMAT_ADTS: enc_cfg->stream_format = 0x00; break; case AUDIO_AAC_FORMAT_LOAS: enc_cfg->stream_format = 0x01; break; case AUDIO_AAC_FORMAT_ADIF: enc_cfg->stream_format = 0x02; break; case AUDIO_AAC_FORMAT_RAW: enc_cfg->stream_format = 0x03; break; default: pr_err("%s:session id %d: unsupported AAC format %d\n", __func__, audio->ac->session, cfg.stream_format); rc = -EINVAL; break; } Loading @@ -197,7 +224,7 @@ static long aac_in_ioctl(struct file *file, rc = -EINVAL; break; } if ((cfg.sample_rate < 8000) && (cfg.sample_rate > 48000)) { if ((cfg.sample_rate < 8000) || (cfg.sample_rate > 48000)) { pr_err("%s: ERROR in setting samplerate = %d\n", __func__, cfg.sample_rate); rc = -EINVAL; Loading @@ -206,7 +233,16 @@ static long aac_in_ioctl(struct file *file, /* For aac-lc, min_bit_rate = min(24Kbps, 0.5*SR*num_chan); max_bi_rate = min(192Kbps, 6*SR*num_chan); min_sample_rate = 8000Hz, max_rate=48000 */ if ((cfg.bit_rate < 4000) || (cfg.bit_rate > 192000)) { min_bitrate = ((cfg.sample_rate)*(cfg.channels))/2; if (min_bitrate < 24000) min_bitrate = 24000; max_bitrate = 6*(cfg.sample_rate)*(cfg.channels); if (max_bitrate > 192000) max_bitrate = 192000; if ((cfg.bit_rate < min_bitrate) || (cfg.bit_rate > max_bitrate)) { pr_err("%s: bitrate permissible: max=%d, min=%d\n", __func__, max_bitrate, min_bitrate); pr_err("%s: ERROR in setting bitrate = %d\n", __func__, cfg.bit_rate); rc = -EINVAL; Loading @@ -215,9 +251,6 @@ static long aac_in_ioctl(struct file *file, enc_cfg->sample_rate = cfg.sample_rate; enc_cfg->channels = cfg.channels; enc_cfg->bit_rate = cfg.bit_rate; enc_cfg->stream_format = ((cfg.stream_format == AUDIO_AAC_FORMAT_RAW) ? \ 0x03 : 0x00); pr_debug("%s:session id %d: Set-aac-cfg:SR= 0x%x ch=0x%x" "bitrate=0x%x, format(adts/raw) = %d\n", __func__, audio->ac->session, enc_cfg->sample_rate, Loading Loading
drivers/misc/qcom/qdsp6v2/aac_in.c +46 −13 Original line number Diff line number Diff line /* * Copyright (c) 2010-2013, The Linux Foundation. All rights reserved. * Copyright (c) 2010-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -160,9 +160,22 @@ static long aac_in_ioctl(struct file *file, cfg.channels = 2; cfg.sample_rate = enc_cfg->sample_rate; cfg.bit_rate = enc_cfg->bit_rate; /* ADTS(-1) to ADTS(0x00), RAW(0x00) to RAW(0x03) */ cfg.stream_format = ((enc_cfg->stream_format == \ 0x00) ? AUDIO_AAC_FORMAT_ADTS : AUDIO_AAC_FORMAT_RAW); switch (enc_cfg->stream_format) { case 0x00: cfg.stream_format = AUDIO_AAC_FORMAT_ADTS; break; case 0x01: cfg.stream_format = AUDIO_AAC_FORMAT_LOAS; break; case 0x02: cfg.stream_format = AUDIO_AAC_FORMAT_ADIF; break; default: case 0x03: cfg.stream_format = AUDIO_AAC_FORMAT_RAW; } pr_debug("%s:session id %d: Get-aac-cfg: format=%d sr=%d" "bitrate=%d\n", __func__, audio->ac->session, cfg.stream_format, cfg.sample_rate, cfg.bit_rate); Loading @@ -173,6 +186,7 @@ static long aac_in_ioctl(struct file *file, case AUDIO_SET_AAC_ENC_CONFIG: { struct msm_audio_aac_enc_config cfg; struct msm_audio_aac_enc_config *enc_cfg; uint32_t min_bitrate, max_bitrate; enc_cfg = audio->enc_cfg; if (copy_from_user(&cfg, (void *)arg, sizeof(cfg))) { rc = -EFAULT; Loading @@ -181,10 +195,23 @@ static long aac_in_ioctl(struct file *file, pr_debug("%s:session id %d: Set-aac-cfg: stream=%d\n", __func__, audio->ac->session, cfg.stream_format); if ((cfg.stream_format != AUDIO_AAC_FORMAT_RAW) && (cfg.stream_format != AAC_FORMAT_ADTS)) { pr_err("%s:session id %d: unsupported AAC format\n", __func__, audio->ac->session); switch (cfg.stream_format) { case AUDIO_AAC_FORMAT_ADTS: enc_cfg->stream_format = 0x00; break; case AUDIO_AAC_FORMAT_LOAS: enc_cfg->stream_format = 0x01; break; case AUDIO_AAC_FORMAT_ADIF: enc_cfg->stream_format = 0x02; break; case AUDIO_AAC_FORMAT_RAW: enc_cfg->stream_format = 0x03; break; default: pr_err("%s:session id %d: unsupported AAC format %d\n", __func__, audio->ac->session, cfg.stream_format); rc = -EINVAL; break; } Loading @@ -197,7 +224,7 @@ static long aac_in_ioctl(struct file *file, rc = -EINVAL; break; } if ((cfg.sample_rate < 8000) && (cfg.sample_rate > 48000)) { if ((cfg.sample_rate < 8000) || (cfg.sample_rate > 48000)) { pr_err("%s: ERROR in setting samplerate = %d\n", __func__, cfg.sample_rate); rc = -EINVAL; Loading @@ -206,7 +233,16 @@ static long aac_in_ioctl(struct file *file, /* For aac-lc, min_bit_rate = min(24Kbps, 0.5*SR*num_chan); max_bi_rate = min(192Kbps, 6*SR*num_chan); min_sample_rate = 8000Hz, max_rate=48000 */ if ((cfg.bit_rate < 4000) || (cfg.bit_rate > 192000)) { min_bitrate = ((cfg.sample_rate)*(cfg.channels))/2; if (min_bitrate < 24000) min_bitrate = 24000; max_bitrate = 6*(cfg.sample_rate)*(cfg.channels); if (max_bitrate > 192000) max_bitrate = 192000; if ((cfg.bit_rate < min_bitrate) || (cfg.bit_rate > max_bitrate)) { pr_err("%s: bitrate permissible: max=%d, min=%d\n", __func__, max_bitrate, min_bitrate); pr_err("%s: ERROR in setting bitrate = %d\n", __func__, cfg.bit_rate); rc = -EINVAL; Loading @@ -215,9 +251,6 @@ static long aac_in_ioctl(struct file *file, enc_cfg->sample_rate = cfg.sample_rate; enc_cfg->channels = cfg.channels; enc_cfg->bit_rate = cfg.bit_rate; enc_cfg->stream_format = ((cfg.stream_format == AUDIO_AAC_FORMAT_RAW) ? \ 0x03 : 0x00); pr_debug("%s:session id %d: Set-aac-cfg:SR= 0x%x ch=0x%x" "bitrate=0x%x, format(adts/raw) = %d\n", __func__, audio->ac->session, enc_cfg->sample_rate, Loading