nt9856x/rtos/code/lib/include/ImageApp/ImageApp_Voice.h
2023-03-28 15:07:53 +08:00

140 lines
5.1 KiB
C
Executable File

#ifndef IMAGEAPP_VOICE_H
#define IMAGEAPP_VOICE_H
#include "hdal.h"
#include <kwrap/type.h>
#include "FileSysTsk.h"
/// ========== Enum area ==========
enum {
IAVOICE_CONFIG_AUDIO_INFO = 0xF000F100,
IAVOICE_CONFIG_MEM_POOL_INFO,
};
typedef enum {
_IAVOICE_FILE_FORMAT_UNKNOWN = 0,
_IAVOICE_FILE_FORMAT_PCM,
_IAVOICE_FILE_FORMAT_WAV,
_IAVOICE_FILE_FORMAT_AAC,
ENUM_DUMMY4WORD(IAVOICE_FILE_FORMAT)
} IAVOICE_FILE_FORMAT;
typedef enum {
_IAVOICE_CFG_AUDIO_CH_LEFT, ///< Left
_IAVOICE_CFG_AUDIO_CH_RIGHT, ///< Right
_IAVOICE_CFG_AUDIO_CH_STEREO, ///< Stereo
ENUM_DUMMY4WORD(IAVOICE_CFG_AUDIO_CH)
} IAVOICE_CFG_AUDIO_CH;
/// ========== Data structure area ==========
typedef _PACKED_BEGIN struct _WAV_RIFF {
UINT32 ChunkID; /* "RIFF" */
UINT32 ChunkSize; /* 36 + Subchunk2Size */
UINT32 Format; /* "WAVE" */
} _PACKED_END WAV_RIFF;
typedef _PACKED_BEGIN struct _WAV_FMT {
UINT32 Subchunk1ID; /* "fmt " */
UINT32 Subchunk1Size; /* 16 for PCM */
UINT16 AudioFormat; /* PCM = 1*/
UINT16 NumChannels; /* Mono = 1, Stereo = 2, etc. */
UINT32 SampleRate; /* 8000, 44100, etc. */
UINT32 ByteRate; /* = SampleRate * NumChannels * BitsPerSample/8 */
UINT16 BlockAlign; /* = NumChannels * BitsPerSample/8 */
UINT16 BitsPerSample; /* 8bits, 16bits, etc. */
} _PACKED_END WAV_FMT;
typedef _PACKED_BEGIN struct _WAV_DATA {
UINT32 Subchunk2ID; /* "data" */
UINT32 Subchunk2Size; /* data size */
} _PACKED_END WAV_DATA;
typedef _PACKED_BEGIN struct _WAV_HEADER {
WAV_RIFF riff;
WAV_FMT fmt;
WAV_DATA data;
} _PACKED_END WAV_HEADER;
typedef struct {
UINT32 aud_rate;
UINT32 aud_ch;
UINT32 aud_ch_num;
HD_AUDIO_MONO aud_out_mono;
HD_AUDIOOUT_OUTPUT adu_out_type;
} IAVOICE_AUDIO_INFO;
typedef struct {
FST_FILE fd;
IAVOICE_FILE_FORMAT format;
UINT32 aud_rate;
UINT32 aud_ch_num;
} IAVOICE_AUDIO_PLAY_INFO;
// =================== User Event Callback ===================
typedef enum {
IAVOICE_USER_CB_EVENT_START = 0x0000E500,
// EVENT
IAVOICE_USER_CB_EVENT_FILENAMING_CB = IAVOICE_USER_CB_EVENT_START,
IAVOICE_USER_CB_EVENT_APLAY_DONE,
// ERROR
ENUM_DUMMY4WORD(IAVOICE_USER_CB_EVENT)
} IAVOICE_USER_CB_EVENT;
typedef void (IAVoiceUserEventCb)(UINT32 id, IAVOICE_USER_CB_EVENT event_id, UINT32 value);
typedef void (IAVoiceAudCapCb)(UINT32 pa, UINT32 va, UINT32 size);
typedef void (IAVoiceAudBsCb)(UINT32 id, HD_AUDIO_BS *paenc_data);
// =================== Parameters ===================
enum {
IAVOICE_PARAM_START = 0x0000EE000,
// audio codec group
IAVOICE_PARAM_AUD_GROUP_BEGIN = IAVOICE_PARAM_START,
IAVOICE_PARAM_AUD_ACAP_REG_CB = IAVOICE_PARAM_AUD_GROUP_BEGIN + 0x100,
IAVOICE_PARAM_AUD_ACAP_BY_HDAL, /// var + acap
IAVOICE_PARAM_AUD_ACAP_VOL,
IAVOICE_PARAM_AUD_ACAP_ALC_EN,
IAVOICE_PARAM_AUD_ACAP_ANR, /// Set before ImageApp_MovieMulti_Open
IAVOICE_PARAM_AUD_ACAP_DEFAULT_SETTING, /// Set after ImageApp_Voice_Open and before audio start. VENDOR_AUDIOCAP_DEFAULT_SETTING_10DB ~ 30DB
IAVOICE_PARAM_AUD_ACAP_NOISEGATE_THRESHOLD, /// Set after ImageApp_Voice_Open and before audio start. -76 ~ -31 (dB)
IAVOICE_PARAM_AUD_ENC_REG_CB = IAVOICE_PARAM_AUD_GROUP_BEGIN + 0x200,
IAVOICE_PARAM_AUD_MUTE_ENC_FUNC_EN, /// keep acap but only mute aenc
IAVOICE_PARAM_AUD_MUTE_ENC, /// var + acap (mute from acap if MOVIEMULTI_PARAM_AUD_MUTE_ENC_FUNC_EN is not set)
IAVOICE_PARAM_AUD_AOUT_VOL = IAVOICE_PARAM_AUD_GROUP_BEGIN + 0x400,
IAVOICE_PARAM_AUD_GROUP_END,
};
/// ========== Function Prototype area ==========
/// ImageApp_Voice
extern ER ImageApp_Voice_Open(void);
extern ER ImageApp_Voice_Close(void);
extern ER ImageApp_Voice_Config(UINT32 config_id, UINT32 value);
/// ImageApp_Voice_AudCapLink
extern ER ImageApp_Voice_AudCapStart(UINT32 id);
extern ER ImageApp_Voice_AudCapStop(UINT32 id);
extern ER ImageApp_Voice_AudEncStart(UINT32 id);
extern ER ImageApp_Voice_AudEncStop(UINT32 id);
extern ER ImageApp_Voice_AudOutStart(UINT32 id);
extern ER ImageApp_Voice_AudOutStop(UINT32 id);
extern ER ImageApp_Voice_AudCapGetFrame(UINT32 id, UINT8 *p_buf, UINT32 *p_len, INT32 wait_ms);
/// ImageApp_Voice_CB
extern ER ImageApp_Voice_RegUserCB(IAVoiceUserEventCb *fncb);
/// ImageApp_Voice_Operation_Play
extern ER ImageApp_Voice_PlayStart(UINT32 id, IAVOICE_AUDIO_PLAY_INFO *p_info);
extern ER ImageApp_Voice_PlayStop(UINT32 id);
extern ER ImageApp_Voice_PlayPause(UINT32 id);
extern ER ImageApp_Voice_PlayResume(UINT32 id);
/// ImageApp_Voice_Operation_Record
extern ER ImageApp_Voice_RecStart(UINT32 id);
extern ER ImageApp_Voice_RecStop(UINT32 id);
/// ImageApp_Voice_Param
extern ER ImageApp_Voice_SetParam(UINT32 id, UINT32 param, UINT32 value);
extern ER ImageApp_Voice_GetParam(UINT32 id, UINT32 param, UINT32* value);
#endif//IMAGEAPP_VOICE_H