author | Jian Xu <jian.xu@amlogic.com> | 2019-02-19 12:14:38 (GMT) |
---|---|---|
committer | Gerrit Code Review <gituser@scgit.amlogic.com> | 2019-02-19 12:14:38 (GMT) |
commit | 60f56fbb2c89b2cfcfb9bdfc13a742f9ca66c86e (patch) | |
tree | dfe98c3b1602eeed47f77373254565c95dc34fa4 | |
parent | 55c9667788d56a614110f36309b8d3035c678231 (diff) | |
parent | 4b3ffacaaae4386ae12f45e8c26600212b65f3f4 (diff) | |
download | av-60f56fbb2c89b2cfcfb9bdfc13a742f9ca66c86e.zip av-60f56fbb2c89b2cfcfb9bdfc13a742f9ca66c86e.tar.gz av-60f56fbb2c89b2cfcfb9bdfc13a742f9ca66c86e.tar.bz2 |
Merge "audio: audioeffect: adapt avl's attrack and release time [1/2]" into o-amlogic
-rw-r--r-- | libaudioeffect/AVL/Avl.cpp | 62 | ||||
-rw-r--r-- | libaudioeffect/AVL/lib_aml_agc.a | 95 | ||||
-rw-r--r-- | libaudioeffect/AVL/lib_aml_agc64.a | 45 |
3 files changed, 112 insertions, 90 deletions
diff --git a/libaudioeffect/AVL/Avl.cpp b/libaudioeffect/AVL/Avl.cpp index 83ba4cf..1069e90 100644 --- a/libaudioeffect/AVL/Avl.cpp +++ b/libaudioeffect/AVL/Avl.cpp @@ -161,7 +161,6 @@ int Avl_parse_mode_config(AvlContext *pContext, int mode_num, int band_num, cons if (data->usr_cfg == NULL) { data->usr_cfg = (int *)calloc(mode_num * band_num, sizeof(int)); - data->usr_cfg = (int *)calloc(mode_num * band_num, sizeof(int)); if (!data->usr_cfg) { ALOGE("%s: alloc failed", __FUNCTION__); return -EINVAL; @@ -250,11 +249,11 @@ int Avl_init(AvlContext *pContext) pContext->config.outputCfg.bufferProvider.cookie = NULL; pContext->config.outputCfg.mask = EFFECT_CONFIG_ALL; - pContext->gAvldata.tbcfg.dynamic_threshold=-24; - pContext->gAvldata.tbcfg.noise_threshold=-40; - pContext->gAvldata.tbcfg.peak_level=-18; - pContext->gAvldata.tbcfg.response_time=512; - pContext->gAvldata.tbcfg.release_time=2; + pContext->gAvldata.tbcfg.dynamic_threshold = -24; + pContext->gAvldata.tbcfg.noise_threshold = -40; + pContext->gAvldata.tbcfg.peak_level = -18; + pContext->gAvldata.tbcfg.response_time = 960; + pContext->gAvldata.tbcfg.release_time = 200; DeleteAmlAGC(data->agc); if (data->agc == NULL) { @@ -304,25 +303,25 @@ int Avl_setParameter(AvlContext *pContext, void *pParam, void *pValue) switch (param) { case AVL_PARAM_PEAK_LEVEL: value = *(int32_t *)pValue; - tbcfg->peak_level=(float)value; + tbcfg->peak_level = (float)value; SetAmlAGC(data->agc,tbcfg->peak_level, tbcfg->dynamic_threshold, tbcfg->noise_threshold, tbcfg->response_time,tbcfg->release_time); ALOGD("%s: set peak_level -> %f ", __FUNCTION__, tbcfg->peak_level); break; case AVL_PARAM_DYNAMIC_THRESHOLD: value = *(int32_t *)pValue; - tbcfg->dynamic_threshold=(float)value; + tbcfg->dynamic_threshold = (float)value; SetAmlAGC(data->agc,tbcfg->peak_level, tbcfg->dynamic_threshold, tbcfg->noise_threshold, tbcfg->response_time,tbcfg->release_time); ALOGD("%s: set dynamic_threshold -> %f ", __FUNCTION__, tbcfg->dynamic_threshold); break; case AVL_PARAM_NOISE_THRESHOLD : value = *(int32_t *)pValue; - tbcfg->noise_threshold=(float)value; + tbcfg->noise_threshold = (float)value; SetAmlAGC(data->agc,tbcfg->peak_level, tbcfg->dynamic_threshold, tbcfg->noise_threshold, tbcfg->response_time,tbcfg->release_time); ALOGD("%s: set noise_threshold -> %f ", __FUNCTION__, tbcfg->noise_threshold); break; case AVL_PARAM_RESPONSE_TIME: value = *(int32_t *)pValue; - tbcfg->response_time=value; + tbcfg->response_time = value; SetAmlAGC(data->agc,tbcfg->peak_level, tbcfg->dynamic_threshold, tbcfg->noise_threshold, tbcfg->response_time,tbcfg->release_time); ALOGD("%s: set response_time-> %d ", __FUNCTION__, tbcfg->response_time); break; @@ -333,7 +332,7 @@ int Avl_setParameter(AvlContext *pContext, void *pParam, void *pValue) break; case AVL_PARAM_RELEASE_TIME: value = *(int32_t *)pValue; - tbcfg->release_time=value; + tbcfg->release_time = value; SetAmlAGC(data->agc,tbcfg->peak_level, tbcfg->dynamic_threshold, tbcfg->noise_threshold, tbcfg->response_time,tbcfg->release_time); ALOGD("%s: set release_time-> %d ", __FUNCTION__, tbcfg->release_time); break; @@ -348,11 +347,11 @@ int Avl_setParameter(AvlContext *pContext, void *pParam, void *pValue) for (i = 0; i < data->band_num; i++) { ALOGD("%s: Set band[%d] -> %d", __FUNCTION__, i + 1, data->usr_cfg[value * data->band_num + i]); } - tbcfg->peak_level =data->usr_cfg[value * data->band_num]; - tbcfg->dynamic_threshold =data->usr_cfg[value * data->band_num + 1]; - tbcfg->noise_threshold =data->usr_cfg[value * data->band_num + 2]; - tbcfg->response_time =data->usr_cfg[value * data->band_num + 3]; - tbcfg->release_time =data->usr_cfg[value * data->band_num + 4]; + tbcfg->peak_level = data->usr_cfg[value * data->band_num]; + tbcfg->dynamic_threshold = data->usr_cfg[value * data->band_num + 1]; + tbcfg->noise_threshold = data->usr_cfg[value * data->band_num + 2]; + tbcfg->response_time = data->usr_cfg[value * data->band_num + 3]; + tbcfg->release_time = data->usr_cfg[value * data->band_num + 4]; SetAmlAGC(data->agc,tbcfg->peak_level, tbcfg->dynamic_threshold, tbcfg->noise_threshold, tbcfg->response_time,tbcfg->release_time); break; default: @@ -366,8 +365,8 @@ int Avl_getParameter(AvlContext*pContext, void *pParam, size_t *pValueSize, void { int32_t param = *(int32_t *)pParam; int32_t value; - Avldata *data=&pContext->gAvldata; - Avlcfg *tbcfg=&data->tbcfg; + Avldata *data = &pContext->gAvldata; + Avlcfg *tbcfg = &data->tbcfg; switch (param) { case AVL_PARAM_PEAK_LEVEL: @@ -375,7 +374,7 @@ int Avl_getParameter(AvlContext*pContext, void *pParam, size_t *pValueSize, void *pValueSize = 0; return -EINVAL; } - *(int*)pValue=(int)tbcfg->peak_level; + *(int*)pValue = (int)tbcfg->peak_level; ALOGD("%s: Get peak_level -> %f ", __FUNCTION__, tbcfg->peak_level); break; @@ -384,7 +383,7 @@ int Avl_getParameter(AvlContext*pContext, void *pParam, size_t *pValueSize, void *pValueSize = 0; return -EINVAL; } - *(float*)pValue=tbcfg->dynamic_threshold; + *(float*)pValue = tbcfg->dynamic_threshold; ALOGD("%s: Get dynamic_threshold -> %f ", __FUNCTION__, tbcfg->dynamic_threshold); break; @@ -393,7 +392,7 @@ int Avl_getParameter(AvlContext*pContext, void *pParam, size_t *pValueSize, void *pValueSize = 0; return -EINVAL; } - *(float*)pValue=tbcfg->noise_threshold; + *(float*)pValue = tbcfg->noise_threshold; ALOGD("%s: Get noise_threshold -> %f ", __FUNCTION__, tbcfg->noise_threshold); break; @@ -441,9 +440,13 @@ int Avl_getParameter(AvlContext*pContext, void *pParam, size_t *pValueSize, void int Avl_release(AvlContext *pContext) { - Avldata *data=&pContext->gAvldata; + Avldata *data = &pContext->gAvldata; DeleteAmlAGC(data->agc); - (data->agc)->agc_enable=0; + (data->agc)->agc_enable = 0; + if (data->usr_cfg != NULL) { + free(data->usr_cfg); + data->usr_cfg = NULL; + } return 0; } @@ -469,7 +472,7 @@ int Avl_process(effect_handle_t self, audio_buffer_t *inBuffer, audio_buffer_t * int16_t *in = (int16_t *)inBuffer->raw; int16_t *out = (int16_t *)outBuffer->raw; Avldata*data = &pContext->gAvldata; - (data->agc)->agc_enable=1; + (data->agc)->agc_enable = 1; if (!data->enable) { for (size_t i = 0; i < inBuffer->frameCount; i++) { *out++ = *in++; @@ -477,6 +480,17 @@ int Avl_process(effect_handle_t self, audio_buffer_t *inBuffer, audio_buffer_t * } } else { DoAmlAGC(data->agc, (void *)in, (inBuffer->frameCount)<<1); +#if 0 + FILE *dump_fp = NULL; + dump_fp = fopen("/data/audio_hal/audio_in.pcm", "a+"); + if (dump_fp != NULL) { + fwrite((void*)in, inBuffer->frameCount*4, 1, dump_fp); + fclose(dump_fp); + } else { + ALOGW("[Error] Can't write to /data/dump_in.pcm"); + } +#endif + } return 0; } diff --git a/libaudioeffect/AVL/lib_aml_agc.a b/libaudioeffect/AVL/lib_aml_agc.a index d257b74..4b3ea8c 100644 --- a/libaudioeffect/AVL/lib_aml_agc.a +++ b/libaudioeffect/AVL/lib_aml_agc.a @@ -1,61 +1,64 @@ !<arch> / 0 0 0 0 62 ` - -ELF -O~P -"""m@ - -H@H -Ɋ -ZԻ -8 -ȿA -Ȋ 0 -+V2[S0+ -Z1{(F1FH@FF(F1F:FSFʪFF(F1F S0+F4J
FD zD + +ELF +O~Q + +"""A +O`(ؿ `G +eI eJyDzDO0\* +HB +@* +:ԟS*0:A*:ȿC* + +º +2 ++V2[S0+ +Z1{(F1FH@FF(F1F:FSFȊFF(F1F +S0+̰F2J
FD zD c+@YF +;#h
:* - - - -fz:jj& - z7!z:HSa[szU(ϜE*{7Fz'zjjb݆hB&j -T z z7j -ף;p}? + + + +fz:jj& + zj +G! +:HSz[U(sEa*{7Fz'zjjb݆hB&j +T z z6j +ף;p}? Version 0.1 Date:2018.1.18 Parameter: %fdB,%fdB,%fdB - -I + + +I 2 b -X +X A - -c.4o.Mfnf2GPPMLo.Ji -nd5yJQwJ J.f&
J -J -/K -Of.f(I$MH$L,$0H
fyJ$0
G&i9$J9J
J42LTHLH%LJ)IKK)i
J7MJeLMJ9KKK)I3KFL'GFM3LJ1,/J#IM:/NJ, -f//,/gX..&/ -v@d~J-$Q!-$KL!JI$2FN$0Lf. -R -R -U -U -U -R -R -T -O -R -R -S - - - + +c.#MZf +=JeJ.eJGPPMqJ +Jdjx. xJ6.fb +J +/K +Of."I$MH$L,$0H
fyJ$0
G&i9$J9J
J42LTHLH%LJ)IKK)i
J7LJeLK9IMJJ3JFL3FLJ)GFMf'+1K/J#IM8/LJ,f//,/gX..&/ +u?c~J-$Q!-$KL!JI$2FN$0Kf. +V +Y +Y +Y +V +V +X +S +V +W + + diff --git a/libaudioeffect/AVL/lib_aml_agc64.a b/libaudioeffect/AVL/lib_aml_agc64.a index 9c054a7..ea979e8 100644 --- a/libaudioeffect/AVL/lib_aml_agc64.a +++ b/libaudioeffect/AVL/lib_aml_agc64.a @@ -1,35 +1,40 @@ !<arch> / 0 0 0 0 62 ` - -ELF -N -N - -N -ף;p}?@ + +ELF +ף;p}? + +N + +N 1 a1q_kBb
% " -#*' +#(0 Version 0.1 Date:2018.1.18 Parameter: %fdB,%fdB,%fdB - -I + +I 6 f -\ -HIJKLM -HIJ -8cJ#JJrJnQPwJGJLM -w JL
J - -K -JJJLK$LJ~$J&O
JG$G>9J
J42JLTH
KI%L)IKK)
J7JJ9KeIMJKJKLH3JFLJ)G1KFL'FM/HL#GM:KNJ -,J/K,I/XJJ& -v@~J-!P$KL!JJKMF$LJJ +\ +HIJKLM +HIJ +$ J qJJ +eJhJPhJLJ +J +K +JJDK$LJ~$J&O
JG$G>9J
J42JLTH
KI%L)IKK)
J7JJ9KeIMJKJKLH3JFLJ)G1KFL'FM/HL#GM8KLJ,J/K,I/XJJ& +u?~J-!P$KL!JJKMF$KJJ + + + + + + |