You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

181 lines
5.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) Hisilicon Technologies Co., Ltd. 2012-2020. All rights reserved.
* Description: define audio common data structure
* Author: Hisilicon
* Create: 2012-12-22
*/
#ifndef __UAPI_AEF_H__
#define __UAPI_AEF_H__
#include "uapi_audio.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif /* __cplusplus */
#define UAPI_AEF_GET_AFLTID_CMD 0x0100
#define UAPI_AEF_GET_CH_CMD 0x0101
#define UAPI_AEF_GET_FRAMEDELAY_CMD 0x0102
#define UAPI_AEF_SET_OUTBUFADDR_CMD 0x1000
#define UAPI_AEF_DEBUG_CONFIG_CMD 0x1101
/* Audio effect type, uapi_aef_type keep consistent with effect type of ARM/DSP */
/* CNcomment: uapi_aef_type 必须 ARM/DSP 保持唯一值 */
typedef enum {
/* Dolby audio effect */
/* CNcomment: Dolby音效 */
UAPI_AEF_TYPE_DOLBY = 0x000,
/* Customer audio effect */
/* CNcomment: 客户自研音效 */
UAPI_AEF_TYPE_CUSTOMER = 0x020,
/* Customer 1 audio effect */
/* CNcomment: 客户1的自研音效 */
UAPI_AEF_TYPE_CUSTOMER_A = 0x021,
/* LP audio effect */
/* CNcomment: LP音效 */
UAPI_AEF_TYPE_LP = 0x100,
/* SPECTRUM */
/* CNcomment: SPECTRUM组件 */
UAPI_AEF_TYPE_SPECTRUM = 0x120,
/* SWS3D V2.0 audio effect */
/* CNcomment: SWS3D V2.0音效 */
UAPI_AEF_TYPE_SWS2 = 0x131,
/* SWS3D V3.0 audio effect */
/* CNcomment: SWS3D V3.0音 */
UAPI_AEF_TYPE_SWS3 = 0x132,
/* KDE audio effect */
/* CNcomment: 卡拉OK音效 */
UAPI_AEF_TYPE_KDE = 0x150,
/* SOOVEN audio effect */
/* CNcomment: SOOVEN音效 */
UAPI_AEF_TYPE_SOOVEN = 0x160,
/* SOOVEN2 audio effect */
/* CNcomment: SOOVEN2音效 */
UAPI_AEF_TYPE_SOOVEN2 = 0x161,
/* SOOVEN3 audio effect */
/* CNcomment: SOOVEN3音效 */
UAPI_AEF_TYPE_SOOVEN3 = 0x162,
/* HVS audio effect */
/* CNcomment: Heaven Sound effect */
UAPI_AEF_TYPE_HVS = 0x163,
/* HVS2 audio effect */
/* CNcomment: Heaven Sound2 effect */
UAPI_AEF_TYPE_HVS2 = 0x164,
/* HVS3 audio effect */
/* CNcomment: Heaven Sound3 effect */
UAPI_AEF_TYPE_HVS3 = 0x165,
/* global audio effect */
/* CNcomment: 全局音效 */
UAPI_SND_AEF_TYPE_GLOBAL = 0x170,
/* supplemental1 audio effect */
/* CNcomment: 补充1音效补充全局音效的单一特性§ */
UAPI_SND_AEF_TYPE_SUPPLEMENTAL1 = 0x171,
/* supplemental2 audio effect */
/* CNcomment: 补充2音效补充全局音效的单一特性Reserved */
UAPI_SND_AEF_TYPE_SUPPLEMENTAL2 = 0x172,
} uapi_aef_type;
/* Configuration parameters required by an audio effect for creating devices. */
/* CNcomment: 音效创建设备的配置参数 */
typedef struct {
/* [IN]be master or not */
/* CNcomment:[IN]主从模式 */
td_bool master;
/* [IN]pointer to private data */
/* CNcomment:[IN]指向私有配置结构体的指针 */
td_void *private_data;
/* [IN]size of the private data. */
/* CNcomment:[IN]私有结构体大小 */
td_u32 private_data_size;
} uapi_aef_param;
typedef struct uapi_aef_authorize__ {
/* [IN]description information about an AEF, such as SRS_StudioSound3D or Dolby_Volume. */
const td_char *name;
const uapi_aef_type aef_type;
const td_u32 version; /* [IN]version. */
/* CNcomment:寄存器可查询,不对外公布 */
td_void (*get_auth_key)(td_u32 *customer_auth_key); /* 128/256bit key */
/* detailed information about the user of AEF, less than 64 bytes. */
/* CNcomment:proc信息可查询 */
const td_char *customer_description;
} uapi_aef_authorize;
typedef struct {
/* The common function api of ARM & DSP */
td_char *name; /* [IN]description of an AEF, such as SRS_StudioSound3D. */
uapi_aef_type aef_type;
td_u32 version; /* [IN]version. */
/* detailed information about the user of AEF, less than 64 bytes. */
const td_char *customer_description;
td_s32 (*get_default_open_param)(td_void *open_param, td_u32 param_size);
td_s32 (*create)(uapi_aef_authorize *auth_entry, td_void *aef_attr, td_handle *aef);
td_s32 (*destroy)(td_handle aef);
td_s32 (*set_config)(td_handle aef, td_u32 config_index, const td_void *config);
td_s32 (*get_config)(td_handle aef, td_u32 config_index, td_void *config);
td_s32 (*set_parameter)(td_handle aef, td_u32 param_index, const td_void *parameter);
td_s32 (*get_parameter)(td_handle aef, td_u32 param_index, td_void *parameter);
/* The private function api only on DSP */
td_s32 (*set_enable)(td_handle aef, td_bool enable);
td_s32 (*get_enable)(td_handle aef, td_bool *enable);
td_s32 (*get_max_pcm_in_size)(td_handle aef, td_u32 *in_size);
td_s32 (*get_max_pcm_out_size)(td_handle aef, td_u32 *out_size);
td_s32 (*in_buf_init)(td_handle aef, td_u32 buf_size);
td_s32 (*in_buf_deinit)(td_handle aef);
td_s32 (*out_buf_init)(td_handle aef, td_u32 buf_size, td_u32 buf_num);
td_s32 (*out_buf_deinit)(td_handle aef);
td_s32 (*get_buf)(td_handle aef, uapi_stream_buf *buf);
td_s32 (*put_buf)(td_handle aef, const uapi_stream_buf *buf);
td_s32 (*acquire_frame)(td_handle aef, uapi_audio_frame *frame);
td_s32 (*release_frame)(td_handle aef, td_u32 frame_index);
td_s32 (*set_eos_flag)(td_handle aef, td_bool eos);
/* The private function api only on ARM */
td_s32 (*proc_frame)(td_handle aef, uapi_audio_frame *in_frame, uapi_audio_frame *out_frame);
} uapi_aef_component;
#define UAPI_AEF_SETTING_SIZE (4 << 10)
typedef struct {
td_bool changed;
td_bool debug;
uapi_aef_type aef_type;
td_void *aef_setting;
} uapi_aef_setting;
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif /* __UAPI_AEF_H__ */