author | jiejing.wang <jiejing.wang@amlogic.com> | 2018-10-19 06:20:30 (GMT) |
---|---|---|
committer | jiejing.wang <jiejing.wang@amlogic.com> | 2018-10-30 08:08:30 (GMT) |
commit | b14ea1490af4eb2a279206b6dfa5df6296de676b (patch) | |
tree | 3dc38cf90f52997271b8e5d1209adef332f6a8ed | |
parent | 741f77970ea2e0871b1cd61f4485863165298328 (diff) | |
download | av-b14ea1490af4eb2a279206b6dfa5df6296de676b.zip av-b14ea1490af4eb2a279206b6dfa5df6296de676b.tar.gz av-b14ea1490af4eb2a279206b6dfa5df6296de676b.tar.bz2 |
audio: audioeffects: fix avl error [1/2]
PD#SWPL-585
Problem:
open avl setting,the sound is large or small
Solution:
add different init value for different source
Verify:
verify by r321
Change-Id: I11cf707667b74e89f2ba2e67079fb4ec9db07977
Signed-off-by: jiejing.wang <jiejing.wang@amlogic.com>
-rw-r--r-- | libaudioeffect/AVL/Avl.cpp | 92 | ||||
-rw-r--r-- | libaudioeffect/Ms12Dap/Android.mk | 4 | ||||
-rw-r--r-- | libaudioeffect/Ms12Dap/ms12_dap_wapper.cpp | 12 |
3 files changed, 92 insertions, 16 deletions
diff --git a/libaudioeffect/AVL/Avl.cpp b/libaudioeffect/AVL/Avl.cpp index 85ab0dd..83ba4cf 100644 --- a/libaudioeffect/AVL/Avl.cpp +++ b/libaudioeffect/AVL/Avl.cpp @@ -75,6 +75,7 @@ typedef enum { AVL_PARAM_NOISE_THRESHOLD, AVL_PARAM_RESPONSE_TIME, AVL_PARAM_RELEASE_TIME, + AVL_PARAM_SOURCE_IN, } Avlparams; @@ -89,9 +90,13 @@ typedef struct Avlcfg_s{ typedef struct Avldata_s { /* avl API needed data */ - AmlAGC *agc; - Avlcfg tbcfg; - int32_t enable; + AmlAGC *agc; + Avlcfg tbcfg; + int32_t enable; + int32_t *usr_cfg; + int32_t mode_num; + int32_t band_num; + int32_t soure_id; } Avldata; typedef struct AvlContext_s { @@ -148,6 +153,36 @@ exit: return result; } +int Avl_parse_mode_config(AvlContext *pContext, int mode_num, int band_num, const char *buffer) +{ + int i; + char *Rch = (char *)buffer; + Avldata *data = &pContext->gAvldata; + + 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; + } + } + + for (i = 0; i < mode_num * band_num; i++) { + if (i == 0) + Rch = strtok(Rch, ","); + else + Rch = strtok(NULL, ","); + if (Rch == NULL) { + ALOGE("%s: Config Parse failed, using default config", __FUNCTION__); + return -1; + } + data->usr_cfg[i] = atoi(Rch); + } + + return 0; +} + int Avl_load_ini_file(AvlContext *pContext) { int result = -1; @@ -163,11 +198,29 @@ int Avl_load_ini_file(AvlContext *pContext) ALOGD("%s: %s load failed", __FUNCTION__, ini_name); goto error; } + /* ini_value = pIniParser->GetString("Avl", "Avl_enable", "1"); if (ini_value == NULL) goto error; ALOGD("%s: enable -> %s", __FUNCTION__, ini_value); data->enable = atoi(ini_value); + */ + ini_value = pIniParser->GetString("Avl", "avl_modenum", "6"); + if (ini_value == NULL) + goto error; + ALOGD("%s: sound mode num -> %s", __FUNCTION__, ini_value); + data->mode_num = atoi(ini_value); + ini_value = pIniParser->GetString("Avl", "avl_bandnum", "5"); + if (ini_value == NULL) + goto error; + ALOGD("%s: sound band num -> %s", __FUNCTION__, ini_value); + data->band_num = atoi(ini_value); + //record different source init value + ini_value = pIniParser->GetString("Avl", "avl_config", "NULL"); + if (ini_value == NULL) + goto error; + ALOGD("%s: condig -> %s", __FUNCTION__, ini_value); + result = Avl_parse_mode_config(pContext, data->mode_num, data->band_num, ini_value); result = 0; error: @@ -244,7 +297,7 @@ int Avl_configure(AvlContext *pContext, effect_config_t *pConfig) int Avl_setParameter(AvlContext *pContext, void *pParam, void *pValue) { int32_t param = *(int32_t *)pParam; - int32_t value; + int32_t i, value; Avldata *data=&pContext->gAvldata; Avlcfg *tbcfg=&data->tbcfg; @@ -284,6 +337,24 @@ int Avl_setParameter(AvlContext *pContext, void *pParam, void *pValue) 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; + case AVL_PARAM_SOURCE_IN: + value = *(int32_t *)pValue; + if (value < 0 || value > data->mode_num) { + ALOGE("%s: incorrect mode value %d", __FUNCTION__, value); + return -EINVAL; + } + data->soure_id = value; + ALOGD("%s: Set source_id -> %d", __FUNCTION__, value); + 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]; + SetAmlAGC(data->agc,tbcfg->peak_level, tbcfg->dynamic_threshold, tbcfg->noise_threshold, tbcfg->response_time,tbcfg->release_time); + break; default: ALOGE("%s: unknown param %08x", __FUNCTION__, param); return -EINVAL; @@ -352,8 +423,17 @@ int Avl_getParameter(AvlContext*pContext, void *pParam, size_t *pValueSize, void *(int32_t *) pValue = tbcfg->release_time; ALOGD("%s: Get release_time-> %d ", __FUNCTION__, tbcfg->release_time); break; - default: - ALOGE("%s: unknown param %d", __FUNCTION__, param); + case AVL_PARAM_SOURCE_IN: + if (*pValueSize < sizeof(int32_t)) { + *pValueSize = 0; + return -EINVAL; + } + value = data->soure_id; + *(int32_t *) pValue = value; + ALOGD("%s: Get aource_id -> %d", __FUNCTION__, value); + break; + default: + ALOGE("%s: unknown param %d", __FUNCTION__, param); return -EINVAL; } return 0; diff --git a/libaudioeffect/Ms12Dap/Android.mk b/libaudioeffect/Ms12Dap/Android.mk index 2489a71..5b4c228 100644 --- a/libaudioeffect/Ms12Dap/Android.mk +++ b/libaudioeffect/Ms12Dap/Android.mk @@ -16,7 +16,9 @@ LOCAL_SHARED_LIBRARIES := \ LOCAL_C_INCLUDES := \ $(LOCAL_PATH) \ - hardware/amlogic/audio/utils/ini/include + hardware/amlogic/audio/utils/ini/include \ + hardware/libhardware/include \ + system/media/audio/include LOCAL_SRC_FILES := ms12_dap_wapper.cpp diff --git a/libaudioeffect/Ms12Dap/ms12_dap_wapper.cpp b/libaudioeffect/Ms12Dap/ms12_dap_wapper.cpp index aba7061..3732a61 100644 --- a/libaudioeffect/Ms12Dap/ms12_dap_wapper.cpp +++ b/libaudioeffect/Ms12Dap/ms12_dap_wapper.cpp @@ -22,6 +22,7 @@ #include <dlfcn.h> #include <hardware/audio_effect.h> #include <cutils/properties.h> +#include <unistd.h> #include "IniParser.h" #include "dolby_audio_processing_control.h" @@ -2119,7 +2120,6 @@ extern "C" { int dap_init_api(DAPContext *pContext) { - int status = 0; DAPdata *pDapData = NULL; dap_cpdp_init_info *pDapInitInfo; DAPapi *pDAPapi = (DAPapi *) & (pContext->gDAPapi); @@ -2707,7 +2707,6 @@ exit: int DAP_print_base_setting(dolby_base* pDapBaseSets) { - int i; int *pInt; ALOGD("%s: DAP_print_base_setting", __FUNCTION__); @@ -4202,7 +4201,6 @@ Error: { DAPdata *pDapData = &pContext->gDAPdata; DAPapi *pDAPapi = (DAPapi *) & (pContext->gDAPapi); - int ret; pContext->config.inputCfg.accessMode = EFFECT_BUFFER_ACCESS_READ; pContext->config.inputCfg.channels = AUDIO_CHANNEL_OUT_STEREO; @@ -4499,7 +4497,7 @@ Error: int DAP_setParameter(DAPContext *pContext, void *pParam, void *pValue) { uint32_t param = *(uint32_t *)pParam; - int32_t value, i; + int32_t value; DAPcfg_8bit_s custom_value; //float scale; DAPdata *pDapData = &pContext->gDAPdata; @@ -4717,7 +4715,7 @@ Error: { DAPContext *pContext = (DAPContext *)self; int inSampleSize, outSampleSize; - int inChannels, outChannels, inFormat, outFormat; + int inChannels, outChannels; int ret; unsigned int tmpSize; unsigned int i; @@ -4875,8 +4873,6 @@ Error: outDlbBuf.ppdata = channel_pointers; outDlbBuf.data_type = 4;//DLB_BUFFER_SHORT_16; - int16_t *pIn16 = (int16_t *)inBuffer->raw; - int16_t *pOut16 = (int16_t *)outBuffer->raw; unsigned char *pInChar = (unsigned char *)inBuffer->raw; unsigned char *pOutChar = (unsigned char *)outBuffer->raw; @@ -5099,8 +5095,6 @@ Error: int DAPLib_Create(const effect_uuid_t *uuid, int32_t sessionId __unused, int32_t ioId __unused, effect_handle_t *pHandle) { - int ret; - if (pHandle == NULL || uuid == NULL) { return -EINVAL; } |