summaryrefslogtreecommitdiff
authorjiejing.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)
commitb14ea1490af4eb2a279206b6dfa5df6296de676b (patch)
tree3dc38cf90f52997271b8e5d1209adef332f6a8ed
parent741f77970ea2e0871b1cd61f4485863165298328 (diff)
downloadav-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>
Diffstat
-rw-r--r--libaudioeffect/AVL/Avl.cpp92
-rw-r--r--libaudioeffect/Ms12Dap/Android.mk4
-rw-r--r--libaudioeffect/Ms12Dap/ms12_dap_wapper.cpp12
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;
}