summaryrefslogtreecommitdiff
authorJian 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)
commit60f56fbb2c89b2cfcfb9bdfc13a742f9ca66c86e (patch)
treedfe98c3b1602eeed47f77373254565c95dc34fa4
parent55c9667788d56a614110f36309b8d3035c678231 (diff)
parent4b3ffacaaae4386ae12f45e8c26600212b65f3f4 (diff)
downloadav-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
Diffstat
-rw-r--r--libaudioeffect/AVL/Avl.cpp62
-rw-r--r--libaudioeffect/AVL/lib_aml_agc.a95
-rw-r--r--libaudioeffect/AVL/lib_aml_agc64.a45
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  f yJ$0 G&i9$J9J J42LTHLH%LJ)IKK)i J7MJeLMJ9KKK)I3KFL'GFM3LJ1,/J#IM:/NJ,
-f//,/gX..&/
-v@d~J-$Q!-$KL!JI$2F N$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  f yJ$0 G&i9$J9J J42LTHLH%LJ)IKK)i J7LJeLK9IMJJ3JFL3FLJ)GFMf'+1K/J#IM8/LJ, f//,/gX..&/
+u?c~J-$Q!-$KL!JI$2F N$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
a1 q_kBb 
%
"
-#*'
+#(0
Version 0.1
Date:2018.1.18
Parameter: %fdB,%fdB,%fdB
-
-I
+
+I

6
f
-\
- HIJKLM
-H IJ
-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
+H IJ
+$ 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
+
+
+
+
+
+