blob: 7faf5eab9213a900b936edabfbd44bc5eece1bef [file] [log] [blame]
/*
* Copyright (C) 2018 Amlogic Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* DESCRIPTION:
* This file implements a special EQ from Amlogic.
*
*/
#ifndef VIRTUALX_V4_H
#define VIRTUALX_V4_H
#include <system/audio_effect.h>
typedef enum {
/*
Range:[0 99] reserved for UI interface
*/
/* 1.Tuning VX command index */
/* MBHL */
PARAM_MBHL_ENABLE_I32 = 100,
PARAM_MBHL_BYPASS_GAIN_I32,
PARAM_MBHL_REFERENCE_LEVEL_I32,
PARAM_MBHL_VOLUME_I32,
PARAM_MBHL_VOLUME_STEP_I32,
PARAM_MBHL_BALANCE_STEP_I32,
PARAM_MBHL_OUTPUT_GAIN_I32,
PARAM_MBHL_CP_ENABLE_I32,
PARAM_MBHL_CP_LEVEL,
PARAM_MBHL_AC_ENABLE_I32,
PARAM_MBHL_AC_LEVEL,
PARAM_MBHL_MODE_I32,
PARAM_MBHL_PROCESS_DISCARD_I32,
PARAM_MBHL_CROSS_LOW_I32,
PARAM_MBHL_CROSS_MID_I32,
PARAM_MBHL_COMP_ATTACK_I32,
PARAM_MBHL_COMP_LOW_RELEASE_I32,
PARAM_MBHL_COMP_LOW_RATIO_I32,
PARAM_MBHL_COMP_LOW_THRESH_I32,
PARAM_MBHL_COMP_LOW_MAKEUP_I32,
PARAM_MBHL_COMP_MID_RELEASE_I32,
PARAM_MBHL_COMP_MID_RATIO_I32,
PARAM_MBHL_COMP_MID_THRESH_I32,
PARAM_MBHL_COMP_MID_MAKEUP_I32,
PARAM_MBHL_COMP_HIGH_RELEASE_I32,
PARAM_MBHL_COMP_HIGH_RATIO_I32,
PARAM_MBHL_COMP_HIGH_THRESH_I32,
PARAM_MBHL_COMP_HIGH_MAKEUP_I32,
PARAM_MBHL_BOOST_I32,
PARAM_MBHL_THRESHOLD_I32,
PARAM_MBHL_SLOW_OFFSET_I32,
PARAM_MBHL_FAST_ATTACK_I32,
PARAM_MBHL_FAST_RELEASE_I32,
PARAM_MBHL_SLOW_ATTACK_I32,
PARAM_MBHL_SLOW_RELEASE_I32,
PARAM_MBHL_DELAY_I32,
PARAM_MBHL_ENVELOPE_FREQUENCY_I32,
PARAM_MBHL_APP_FRT_LOWCROSS_F32,
PARAM_MBHL_APP_FRT_MIDCROSS_F32,
PARAM_MBHL_APP_LOWCROSS,
PARAM_MBHL_APP_MIDCROSS,
PARAM_MBHL_PARAM_MAX,
/* TBHDX */
PARAM_TBHDX_PARAM_START = PARAM_MBHL_PARAM_MAX,
PARAM_TBHDX_FRONT_ENABLE,
PARAM_TBHDX_FRONT_PROC_MODE,
PARAM_TBHDX_FRONT_SPKSIZE,
PARAM_TBHDX_FRONT_DYNMS,
PARAM_TBHDX_FRONT_HP_EN,
PARAM_TBHDX_FRONT_HP_ORDER,
PARAM_TBHDX_FRONT_BASS_LVL,
PARAM_TBHDX_FRONT_EXT_BASS,
PARAM_TBHDX_FRONT_INPUT_GAIN,
PARAM_TBHDX_FRONT_BYPASS_GAIN,
//REAR
PARAM_TBHDX_REAR_ENABLE,
PARAM_TBHDX_REAR_PROC_MODE,
PARAM_TBHDX_REAR_SPKSIZE,
PARAM_TBHDX_REAR_DYNMS,
PARAM_TBHDX_REAR_HP_EN,
PARAM_TBHDX_REAR_HP_ORDER,
PARAM_TBHDX_REAR_BASS_LVL,
PARAM_TBHDX_REAR_EXT_BASS,
PARAM_TBHDX_REAR_INPUT_GAIN,
PARAM_TBHDX_REAR_BYPASS_GAIN,
//CENETER
PARAM_TBHDX_CENTER_ENABLE,
PARAM_TBHDX_CENTER_SPKSIZE,
PARAM_TBHDX_CENTER_DYNMS,
PARAM_TBHDX_CENTER_HP_EN,
PARAM_TBHDX_CENTER_HP_ORDER,
PARAM_TBHDX_CENTER_BASS_LVL,
PARAM_TBHDX_CENTER_EXT_BASS,
PARAM_TBHDX_CENTER_INPUT_GAIN,
PARAM_TBHDX_CENTER_BYPASS_GAIN,
//SURD
PARAM_TBHDX_SURROUND_ENABLE,
PARAM_TBHDX_SURD_PROC_MODE,
PARAM_TBHDX_SURD_SPKSIZE,
PARAM_TBHDX_SURD_DYNMS,
PARAM_TBHDX_SURD_HP_EN,
PARAM_TBHDX_SURD_HP_ORDER,
PARAM_TBHDX_SURD_BASS_LVL,
PARAM_TBHDX_SURD_EXT_BASS,
PARAM_TBHDX_SURD_INPUT_GAIN,
PARAM_TBHDX_SURD_BYPASS_GAIN,
PARAM_TBHDX_DELAY_MATCH_GAIN,
PARAM_TBHDX_PROCESS_DISCARD_I32,
PARAM_TBHDX_PARAM_MAX,
/*TBHD-APP*/
PARAM_TBHDX_FRONT_APP_SPKSIZE = PARAM_TBHDX_PARAM_MAX + 1,
PARAM_TBHDX_FRONT_APP_TGAIN,
PARAM_TBHDX_FRONT_APP_HPR,
PARAM_TBHDX_FRONT_APP_EXTBASS,
PARAM_TBHDX_CENTER_APP_SPKSIZE,
PARAM_TBHDX_CENTER_APP_TGAIN,
PARAM_TBHDX_CENTER_APP_HPR,
PARAM_TBHDX_CENTER_APP_EXTBASS,
PARAM_TBHDX_SURD_APP_SPKSIZE,
PARAM_TBHDX_SURD_APP_TGAIN,
PARAM_TBHDX_SURD_APP_HPR,
PARAM_TBHDX_SURD_APP_EXTBASS,
PARAM_TBHDX_REAR_APP_SPKSIZE,
PARAM_TBHDX_REAR_APP_TGAIN,
PARAM_TBHDX_REAR_APP_HPR,
PARAM_TBHDX_REAR_APP_EXTBASS,
/* VX force */
PARAM_VX_FORCE_PARAM_START = PARAM_TBHDX_PARAM_MAX + 20,
PARAM_VX_FRAME_SIZE,
PARAM_VX_INPUT_PCM_STRIDE,
PARAM_VX_OUTPUT_PCM_STRIDE,
PARAM_VX_FORCE_PARAM_MAX,
/* VX general */
PARAM_VX_GENERAL_PARAM_START = PARAM_VX_FORCE_PARAM_MAX + 1,
PARAM_VX_ENABLE_I32,
PARAM_VX_INPUT_MODE_I32,
PARAM_VX_OUTPUT_MODE_I32,
PARAM_VX_HEADROOM_GAIN_I32,
PARAM_VX_PROC_OUTPUT_GAIN_I32,
PARAM_VX_REFERENCE_LEVEL_I32,
PARAM_VX_PROCESS_DISCARD_I32,
PARAM_VX_PROCESS_MULTIRATE_PROC_TYPE_I32,
PARAM_VX_PROCESS_MULTIRATE_ENABLE,
PARAM_VX_PROCESS_FILTER_MODE,
PARAM_VX_GENERAL_PARAM_MAX,
/* VX TSX */
PARAM_TSX_PARAM_START = PARAM_VX_GENERAL_PARAM_MAX + 1,
PARAM_TSX_ENABLE_I32,
PARAM_TSX_PASSIVEMATRIXUPMIX_ENABLE_I32,
PARAM_TSX_HORIZNT_EFFECT_CTRL,
PARAM_TSX_PHANTOM_CTRGAIN,
PARAM_TSX_CTRGAIN,
PARAM_TSX_HEIGHTMIX_COEFF,
PARAM_TSX_HEIGHT_OUT_GAIN,
PARAM_TSX_PRECOND_FRONT,
PARAM_TSX_PRECOND_SURND,
PARAM_TSX_VXTOPSPK_LOC,
PARAM_TSX_FRNT_WIDE_EN,
PARAM_TSX_HEIGHT_VIRTUALIZER_EN,
PARAM_TSX_FRNT_SRND_EN,
PARAM_TSX_HEIGHT_UPMIX_ENABLE_I32,
PARAM_TSX_LRMIX_RATIO2CTR,
PARAM_TSX_LFE_GAIN,
PARAM_TSX_HEIGHTMIX_COEFF_I32,
PARAM_TSX_PROCESS_DISCARD_I32, //not defined
PARAM_TSX_HEIGHT_DISCARD_I32,
PARAM_TSX_APP_LSTNR_DIST,
PARAM_TSX_APP_BTTM_DIST,
PARAM_TSX_APP_TOP_DIST,
PARAM_TSX_PARAM_MAX,
/* VX DC */
PARAM_VX_DC_PARAM_START = PARAM_TSX_PARAM_MAX + 1,
PARAM_VX_DC_ENABLE_I32,
PARAM_VX_DC_CONTROL_I32,
PARAM_VX_DEF_ENABLE_I32,
PARAM_VX_DEF_CONTROL_I32,
PARAM_VX_CS2TO3_EN,
PARAM_VX_DC_PARAM_MAX,
/* VX LOUDNESS */
PARAM_LOUDNESS_PARAM_START = PARAM_VX_DC_PARAM_MAX + 1,
PARAM_LOUDNESS_CONTROL_ENABLE_I32,
PARAM_LOUDNESS_CONTROL_TARGET_LOUDNESS_I32,
PARAM_LOUDNESS_CONTROL_PRESET_I32,
PARAM_LOUDNESS_CONTROL_IO_MODE_I32,
PARAM_LOUDNESS_CONTROL_LATENCY_MODE_I32,
PARAM_LOUDNESS_CONTROL_DISCARD,
PARAM_LOUDNESS_PARAM_MAX,
/* VX AEQ */
PARAM_AEQ_PARAM_START = PARAM_LOUDNESS_PARAM_MAX + 1,
PARAM_AEQ_ENABLE_I32,
PARAM_AEQ_CH_CTRL_MASK,
PARAM_AEQ_CH_LINK_MASK_I32,
PARAM_AEQ_INPUT_GAIN_I16,
PARAM_AEQ_OUTPUT_GAIN_I16,
PARAM_AEQ_BYPASS_GAIN_I16,
PARAM_AEQ_PROCESS_DISCARD_I32,
PARAM_AEQ_BAND_En,
PARAM_AEQ_BAND_Num,
PARAM_AEQ_BAND_Fre,
PARAM_AEQ_BAND_Gain,
PARAM_AEQ_BAND_Q,
PARAM_AEQ_BAND_type,
PARAM_AEQ_PARAM_MAX,
/* VX GEQ */
PARAM_GEQ_PARAM_START = PARAM_AEQ_PARAM_MAX + 1,
PARAM_GEQ_En,
PARAM_GEQ_CTRL_MASK,
PARAM_GEQ_INPUT_GAIN,
PARAM_GEQ_BAND0_Gain,
PARAM_GEQ_BAND1_Gain,
PARAM_GEQ_BAND2_Gain,
PARAM_GEQ_BAND3_Gain,
PARAM_GEQ_BAND4_Gain,
PARAM_GEQ_BAND5_Gain,
PARAM_GEQ_BAND6_Gain,
PARAM_GEQ_BAND7_Gain,
PARAM_GEQ_BAND8_Gain,
PARAM_GEQ_BAND9_Gain,
PARAM_GEQ_DISCARD,
PARAM_GEQ_PARAM_MAX,
/* VX ildetect */
PARAM_IL_PARAM_START = PARAM_GEQ_PARAM_MAX + 1,
PARAM_IL_UPMIX_EN,
PARAM_IL_UPMIX_LOW_LEVEL_THRES,
PARAM_IL_UPMIX_PEAK_HOLD_COUNT,
PARAM_IL_UPMIX_ORIG_LR_MIX,
PARAM_IL_UPMIX_SRRND_GAIN,
PARAM_IL_UPMIX_SRRND_DELAY_EN,
PARAM_IL_UPMIX_DISCARD,
PARAM_IL_PARAM_MAX,
/*General setting: input/output channel mode*/
PARAM_CHANNEL_NUM,
PARAM_OUT_CHANNEL_NUM,
PARAM_IN_CHANNEL_MASK,
PARAM_NAME_TO_PARAM_INDEX,
/* 2.UI and debug interface using param Range: [82, 100] */
VIRTUALX_TRU_BASS_ENABLE = 81,
VIRTUALX4_PARAM_ENABLE = 82,
VIRTUALX4_PARAM_DIALOGCLARITY_MODE = 83,
VIRTUALX4_PARAM_SURROUND_MODE = 84,
AUDIO_PARAM_TYPE_NONE = 85,
AUDIO_PARAM_TYPE_TRU_SURROUND = 86,
AUDIO_PARAM_TYPE_CC3D = 87,
AUDIO_PARAM_TYPE_TRU_BASS = 88,
AUDIO_PARAM_TYPE_TRU_DIALOG = 89,
AUDIO_PARAM_TYPE_DEFINITION = 90,
AUDIO_PARAM_TYPE_TRU_VOLUME = 91,
/* debug interface */
AUDIO_ALL_PARAM_DUMP = 92,
VIRTUALX_EFFECT_ENABLE = 93,
DTS_PARAM_DECODER_TYPE = 94,
DTS_PARAM_READE_INI = 95,
VIRTUALX_USER_MODE = 96,
} Virtualx_v4_params;
#define VX4_MAX_PARAM_VALUE_STR_LEN 128
#define MAX_PARAM_VALUE_LEN 16
#define VX4_MAX_PARAM_SIZE 128
typedef struct cmd_param_str {
const char *param;
int key;
int userId;
} VX_Cmd_Param;
typedef struct Virtualx_v4_param_s {
effect_param_t param;
/* 3 (void *) data of param start*/
/* 3.1 psize of low level param */
uint32_t command;
/* 3.2 vsize of low level value */
union {
int32_t v;
float f;
char str[VX4_MAX_PARAM_VALUE_STR_LEN];
float params[VX4_MAX_PARAM_SIZE];
};
} Virtualx_v4_param_t;
VX_Cmd_Param *getVxCmdParamInstance(void);
Virtualx_v4_param_t *getVxParamInstance(void);
int set_param_from_cmd_line(int argc, char **argv);
int set_param_from_scanf(int effectIndex);
void printf_vx4_help(char *name);
int set_param_from_scanf(int effectIndex);
#endif