Files

380 lines
12 KiB
C
Raw Permalink Normal View History

2026-08-13 11:28:40 +08:00
/*
* 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_H
#define VIRTUALX_H
#include <system/audio_effect.h>
#define VX_MAX_PARAM_SIZE 128
#define VX_MAX_PARAM_VALUE_STR_LEN 128
#define MAX_PARAM_VALUE_LEN 16
#define VX4_MAX_PARAM_VALUE_STR_LEN 128
#define VX4_MAX_PARAM_SIZE 128
#define VX_CUP_LOAD_ARM9E 100 // Expressed in 0.1 MIPS
#define VX_MEM_USAGE 50 // Expressed in kB
typedef enum {
/*Tuning interface*/
DTS_PARAM_MBHL_ENABLE_I32 = 0,
DTS_PARAM_MBHL_BYPASS_GAIN_I32 = 1,
DTS_PARAM_MBHL_REFERENCE_LEVEL_I32 = 2,
DTS_PARAM_MBHL_VOLUME_I32 = 3,
DTS_PARAM_MBHL_VOLUME_STEP_I32 = 4,
DTS_PARAM_MBHL_BALANCE_STEP_I32 = 5,
DTS_PARAM_MBHL_OUTPUT_GAIN_I32 = 6,
DTS_PARAM_MBHL_MODE_I32 = 7,
DTS_PARAM_MBHL_PROCESS_DISCARD_I32 = 8,
DTS_PARAM_MBHL_CROSS_LOW_I32 = 9,
DTS_PARAM_MBHL_CROSS_MID_I32 = 10,
DTS_PARAM_MBHL_COMP_ATTACK_I32 = 11,
DTS_PARAM_MBHL_COMP_LOW_RELEASE_I32 = 12,
DTS_PARAM_MBHL_COMP_LOW_RATIO_I32 = 13,
DTS_PARAM_MBHL_COMP_LOW_THRESH_I32 = 14,
DTS_PARAM_MBHL_COMP_LOW_MAKEUP_I32 = 15,
DTS_PARAM_MBHL_COMP_MID_RELEASE_I32 = 16,
DTS_PARAM_MBHL_COMP_MID_RATIO_I32 = 17,
DTS_PARAM_MBHL_COMP_MID_THRESH_I32 = 18,
DTS_PARAM_MBHL_COMP_MID_MAKEUP_I32 = 19,
DTS_PARAM_MBHL_COMP_HIGH_RELEASE_I32 = 20,
DTS_PARAM_MBHL_COMP_HIGH_RATIO_I32 = 21,
DTS_PARAM_MBHL_COMP_HIGH_THRESH_I32 = 22,
DTS_PARAM_MBHL_COMP_HIGH_MAKEUP_I32 = 23,
DTS_PARAM_MBHL_BOOST_I32 = 24,
DTS_PARAM_MBHL_THRESHOLD_I32 = 25,
DTS_PARAM_MBHL_SLOW_OFFSET_I32 = 26,
DTS_PARAM_MBHL_FAST_ATTACK_I32 = 27,
DTS_PARAM_MBHL_FAST_RELEASE_I32 = 28,
DTS_PARAM_MBHL_SLOW_ATTACK_I32 = 29,
DTS_PARAM_MBHL_SLOW_RELEASE_I32 = 30,
DTS_PARAM_MBHL_DELAY_I32 = 31,
DTS_PARAM_MBHL_ENVELOPE_FREQUENCY_I32 = 32,
DTS_PARAM_MBHL_APP_FRT_LOWCROSS_F32 = 33,
DTS_PARAM_MBHL_APP_FRT_MIDCROSS_F32 = 34,
DTS_PARAM_TBHDX_ENABLE_I32 = 35,
DTS_PARAM_TBHDX_MONO_MODE_I32 = 36,
DTS_PARAM_TBHDX_MAXGAIN_I32 = 37,
DTS_PARAM_TBHDX_SPKSIZE_I32 = 38,
DTS_PARAM_TBHDX_HP_ENABLE_I32 = 39,
DTS_PARAM_TBHDX_TEMP_GAIN_I32 = 40,
DTS_PARAM_TBHDX_PROCESS_DISCARD_I32 = 41,
DTS_PARAM_TBHDX_HPORDER_I32 = 42,
DTS_PARAM_TBHDX_APP_SPKSIZE_I32 = 43,
DTS_PARAM_TBHDX_APP_HPRATIO_F32 = 44,
DTS_PARAM_TBHDX_APP_EXTBASS_F32 = 45,
DTS_PARAM_VX_ENABLE_I32 = 46,
DTS_PARAM_VX_INPUT_MODE_I32 = 47,
DTS_PARAM_VX_OUTPUT_MODE_I32 = 48,
DTS_PARAM_VX_HEADROOM_GAIN_I32 = 49,
DTS_PARAM_VX_PROC_OUTPUT_GAIN_I32 = 50,
DTS_PARAM_VX_REFERENCE_LEVEL_I32 = 51,
DTS_PARAM_TSX_ENABLE_I32 = 52,
DTS_PARAM_TSX_PASSIVEMATRIXUPMIX_ENABLE_I32 = 53,
DTS_PARAM_TSX_HEIGHT_UPMIX_ENABLE_I32 = 54,
DTS_PARAM_TSX_LPR_GAIN_I32 = 55,
DTS_PARAM_TSX_CENTER_GAIN_I32 = 56,
DTS_PARAM_TSX_HORIZ_VIR_EFF_CTRL_I32 = 57,
DTS_PARAM_TSX_HEIGHTMIX_COEFF_I32 = 58,
DTS_PARAM_TSX_PROCESS_DISCARD_I32 = 59,
DTS_PARAM_TSX_HEIGHT_DISCARD_I32 = 60,
DTS_PARAM_TSX_FRNT_CTRL_I32 = 61,
DTS_PARAM_TSX_SRND_CTRL_I32 = 62,
DTS_PARAM_VX_DC_ENABLE_I32 = 63,
DTS_PARAM_VX_DC_CONTROL_I32 = 64,
DTS_PARAM_VX_DEF_ENABLE_I32 = 65,
DTS_PARAM_VX_DEF_CONTROL_I32 = 66,
DTS_PARAM_LOUDNESS_CONTROL_ENABLE_I32 = 67,
DTS_PARAM_LOUDNESS_CONTROL_TARGET_LOUDNESS_I32 = 68,
DTS_PARAM_LOUDNESS_CONTROL_PRESET_I32 = 69,
DTS_PARAM_LOUDNESS_CONTROL_IO_MODE_I32 = 70,
DTS_PARAM_AEQ_ENABLE_I32 = 71,
DTS_PARAM_AEQ_DISCARD_I32 = 72,
DTS_PARAM_AEQ_INPUT_GAIN_I16 = 73,
DTS_PARAM_AEQ_OUTPUT_GAIN_I16 = 74,
DTS_PARAM_AEQ_BYPASS_GAIN_I16 = 75,
DTS_PARAM_AEQ_LR_LINK_I32 = 76,
DTS_PARAM_AEQ_BAND_Fre = 77,
DTS_PARAM_AEQ_BAND_Gain = 78,
DTS_PARAM_AEQ_BAND_Q = 79,
DTS_PARAM_AEQ_BAND_type = 80,
DTS_PARAM_CHANNEL_NUM = 81,
/*UI interface*/
VIRTUALX_PARAM_ENABLE = 82,
VIRTUALX_PARAM_DIALOGCLARITY_MODE = 83,
VIRTUALX_PARAM_SURROUND_MODE = 84,
AUDIO_DTS_PARAM_TYPE_NONE = 85,
AUDIO_DTS_PARAM_TYPE_TRU_SURROUND = 86,
AUDIO_DTS_PARAM_TYPE_CC3D = 87,
AUDIO_DTS_PARAM_TYPE_TRU_BASS = 88,
AUDIO_DTS_PARAM_TYPE_TRU_DIALOG = 89,
AUDIO_DTS_PARAM_TYPE_DEFINITION = 90,
AUDIO_DTS_PARAM_TYPE_TRU_VOLUME = 91,
/* debug interface */
AUDIO_DTS_ALL_PARAM_DUMP = 92,
DTS_PARAM_IN_CHANNEL_MASK = 93,
} Virtualx_params;
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] */
VIRTUALX4_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;
#endif