nt9856x/code/hdal/vendor/media/include/vendor_audiocapture.h
2023-03-28 15:07:53 +08:00

204 lines
8.9 KiB
C
Executable File

/**
@brief Header file of vendor audiocapture module.\n
This file contains the functions which is related to vendor audiocapture.
@file vendor_audiocapture.h
@ingroup mhdal
@note Nothing.
Copyright Novatek Microelectronics Corp. 2018. All rights reserved.
*/
#ifndef _VENDOR_AUDIOCAP_H_
#define _VENDOR_AUDIOCAP_H_
/********************************************************************
INCLUDE FILES
********************************************************************/
#include "hd_type.h"
#include "hdal.h"
/********************************************************************
MACRO CONSTANT DEFINITIONS
********************************************************************/
#define VENDOR_AUDIOCAP_NAME_LEN 32
/********************************************************************
MACRO FUNCTION DEFINITIONS
********************************************************************/
/********************************************************************
TYPE DEFINITION
********************************************************************/
typedef enum _VENDOR_AUDIOCAP_ITEM {
VENDOR_AUDIOCAP_ITEM_EXT,
VENDOR_AUDIOCAP_ITEM_DEFAULT_SETTING,
VENDOR_AUDIOCAP_ITEM_NOISEGATE_THRESHOLD,
VENDOR_AUDIOCAP_ITEM_AGC_CONFIG,
VENDOR_AUDIOCAP_ITEM_ALC_ENABLE,
VENDOR_AUDIOCAP_ITEM_VOLUME,
VENDOR_AUDIOCAP_ITEM_REC_SRC,
VENDOR_AUDIOCAP_ITEM_PREPWR_ENABLE,
VENDOR_AUDIOCAP_ITEM_LOOPBACK_CONFIG,
VENDOR_AUDIOCAP_ITEM_AUDIO_FRAME,
VENDOR_AUDIOCAP_ITEM_DMA_ABORT,
VENDOR_AUDIOCAP_ITEM_GAIN_LEVEL,
VENDOR_AUDIOCAP_ITEM_TDM_CH,
VENDOR_AUDIOCAP_ITEM_ALC_CONFIG,
VENDOR_AUDIOCAP_ITEM_MONO_EXPAND,
ENUM_DUMMY4WORD(VENDOR_AUDIOCAP_ITEM)
} VENDOR_AUDIOCAP_ITEM;
typedef enum _VENDOR_AUDIOCAP_DEFAULT_SETTING {
VENDOR_AUDIOCAP_DEFAULT_SETTING_10DB = 0x0,
VENDOR_AUDIOCAP_DEFAULT_SETTING_10DB_HP_8K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_10DB_HP_16K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_10DB_HP_32K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_10DB_HP_48K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_20DB = 0x5,
VENDOR_AUDIOCAP_DEFAULT_SETTING_20DB_HP_8K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_20DB_HP_16K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_20DB_HP_32K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_20DB_HP_48K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_30DB = 0xA,
VENDOR_AUDIOCAP_DEFAULT_SETTING_30DB_HP_8K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_30DB_HP_16K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_30DB_HP_32K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_30DB_HP_48K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_0DB,
VENDOR_AUDIOCAP_DEFAULT_SETTING_0DB_HP_8K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_0DB_HP_16K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_0DB_HP_32K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_0DB_HP_48K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_ALCOFF,
VENDOR_AUDIOCAP_DEFAULT_SETTING_ALCOFF_HP_8K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_ALCOFF_HP_16K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_ALCOFF_HP_32K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_ALCOFF_HP_48K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_DMIC,
VENDOR_AUDIOCAP_DEFAULT_SETTING_DMIC_LP_8K, ///< not available
VENDOR_AUDIOCAP_DEFAULT_SETTING_DMIC_LP_16K,
VENDOR_AUDIOCAP_DEFAULT_SETTING_DMIC_LP_32K, ///< not available
VENDOR_AUDIOCAP_DEFAULT_SETTING_DMIC_LP_48K, ///< not available
ENUM_DUMMY4WORD(VENDOR_AUDIOCAP_DEFAULT_SETTING)
} VENDOR_AUDIOCAP_DEFAULT_SETTING;
typedef enum _VENDOR_AUDIOCAP_REC_SRC {
VENDOR_AUDIOCAP_REC_SRC_AMIC,
VENDOR_AUDIOCAP_REC_SRC_DMIC,
ENUM_DUMMY4WORD(VENDOR_AUDIOCAP_REC_SRC)
} VENDOR_AUDIOCAP_REC_SRC;
/**
Total Record Gain Level
*/
typedef enum {
VENDOR_AUDIOCAP_GAIN_LEVEL8 = 8, ///< total 8 recordgain level
VENDOR_AUDIOCAP_GAIN_LEVEL16 = 16, ///< total 16 recordgain level
VENDOR_AUDIOCAP_GAIN_LEVEL32 = 32, ///< total 32 recordgain level
ENUM_DUMMY4WORD(KDRV_AUDIO_CAP_GAIN_LEVEL)
} VENDOR_AUDIOCAP_GAIN_LEVEL;
typedef enum _VENDOR_AUDIOCAP_ALC_GAIN {
VENDOR_AUDIOCAP_ALC_GAIN_MIN = 0x00,
VENDOR_AUDIOCAP_ALC_GAIN_N21P0_DB = 0x00, ///< ALC controllable Gain as -21.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_N19P5_DB, ///< ALC controllable Gain as -19.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_N18P0_DB, ///< ALC controllable Gain as -18.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_N16P5_DB, ///< ALC controllable Gain as -16.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_N15P0_DB, ///< ALC controllable Gain as -15.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_N13P5_DB, ///< ALC controllable Gain as -13.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_N12P0_DB, ///< ALC controllable Gain as -12.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_N10P5_DB, ///< ALC controllable Gain as -10.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_N9P0_DB, ///< ALC controllable Gain as -9.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_N7P5_DB, ///< ALC controllable Gain as -7.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_N6P0_DB, ///< ALC controllable Gain as -6.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_N4P5_DB, ///< ALC controllable Gain as -4.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_N3P0_DB, ///< ALC controllable Gain as -3.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_N1P5_DB, ///< ALC controllable Gain as -1.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_0_DB, ///< ALC controllable Gain as 0dB.
VENDOR_AUDIOCAP_ALC_GAIN_P1P5_DB, ///< ALC controllable Gain as +1.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_P3P0_DB, ///< ALC controllable Gain as +3.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_P4P5_DB, ///< ALC controllable Gain as +4.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_P6P0_DB, ///< ALC controllable Gain as +6.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_P7P5_DB, ///< ALC controllable Gain as +7.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_P9P0_DB, ///< ALC controllable Gain as +9.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_P10P5_DB, ///< ALC controllable Gain as +10.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_P12P0_DB, ///< ALC controllable Gain as +12.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_P13P5_DB, ///< ALC controllable Gain as +13.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_P15P0_DB, ///< ALC controllable Gain as +15.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_P16P5_DB, ///< ALC controllable Gain as +16.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_P18P0_DB, ///< ALC controllable Gain as +18.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_P19P5_DB, ///< ALC controllable Gain as +19.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_P21P0_DB, ///< ALC controllable Gain as +21.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_P22P5_DB, ///< ALC controllable Gain as +22.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_P24P0_DB, ///< ALC controllable Gain as +24.0dB.
VENDOR_AUDIOCAP_ALC_GAIN_P25P5_DB, ///< ALC controllable Gain as +25.5dB.
VENDOR_AUDIOCAP_ALC_GAIN_MAX = 0x1F,
ENUM_DUMMY4WORD(VENDOR_AUDIOCAP_ALC_GAIN)
} VENDOR_AUDIOCAP_ALC_GAIN;
typedef struct _VENDOR_AUDIOCAP_PINMUX_CFG {
UINT32 audio_pinmux;
UINT32 cmd_if_pinmux;
} VENDOR_AUDIOCAP_PINMUX_CFG;
typedef struct _VENDOR_AUDIOCAP_INIT_PIN_CFG {
VENDOR_AUDIOCAP_PINMUX_CFG pinmux;
} VENDOR_AUDIOCAP_INIT_PIN_CFG;
typedef struct _VENDOR_AUDIOCAP_INIT_I2S_CFG {
UINT32 bit_width;
UINT32 bit_clk_ratio;
UINT32 op_mode;
UINT32 tdm_ch;
} VENDOR_AUDIOCAP_INIT_I2S_CFG;
typedef struct _VENDOR_AUDIOCAP_INIT_CFG_OBJ {
VENDOR_AUDIOCAP_INIT_PIN_CFG pin_cfg;
VENDOR_AUDIOCAP_INIT_I2S_CFG i2s_cfg;
} VENDOR_AUDIOCAP_INIT_CFG_OBJ;
typedef struct _VENDOR_AUDIOCAP_INIT_CFG {
CHAR driver_name[VENDOR_AUDIOCAP_NAME_LEN];
VENDOR_AUDIOCAP_INIT_CFG_OBJ aud_init_cfg;
} VENDOR_AUDIOCAP_INIT_CFG;
typedef struct _VENDOR_AUDIOCAP_AGC_CONFIG {
BOOL enable;
INT32 target_lvl;
INT32 ng_threshold;
} VENDOR_AUDIOCAP_AGC_CONFIG;
typedef struct _VENDOR_AUDIOCAP_VOLUME {
UINT32 volume; ///< audio input volume
} VENDOR_AUDIOCAP_VOLUME;
typedef struct _VENDOR_AUDIOCAP_AUDIO_FRAME {
HD_AUDIO_FRAME audio_frame; ///< audiocap frame
HD_AUDIO_FRAME audio_aec_ref_frame; ///< aec reference frame
INT32 wait_ms; ///< timeout
} VENDOR_AUDIOCAP_AUDIO_FRAME;
typedef struct _VENDOR_AUDIOCAP_LOOPBACK_CONFIG {
BOOL enabled;
HD_AUDIOCAP_LB_CH lb_channel; ///< loopback channel for AEC
} VENDOR_AUDIOCAP_LOOPBACK_CONFIG;
typedef struct _VENDOR_AUDIOCAP_ALC_CONFIG {
UINT32 decay_time; ///< Embedded codec ALC Decay Time length. Valid setting range is 0~10.
UINT32 attack_time; ///< Embedded codec ALC Attack Time length. Valid setting range is 0~10.
INT32 max_gain; ///< Embedded codec ALC maximum PGA gain. Valid setting range is -21 ~ +25.5 (dB).
INT32 min_gain; ///< Embedded codec ALC minimum PGA gain. Valid setting range is -21 ~ +25.5 (dB).
} VENDOR_AUDIOCAP_ALC_CONFIG;
/********************************************************************
EXTERN VARIABLES & FUNCTION PROTOTYPES DECLARATIONS
********************************************************************/
HD_RESULT vendor_audiocap_set(UINT32 id, VENDOR_AUDIOCAP_ITEM item, VOID *p_param);
HD_RESULT vendor_audiocap_get(UINT32 id, VENDOR_AUDIOCAP_ITEM item, VOID *p_param);
#endif