140 lines
5.1 KiB
C
Executable File
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
|
|
|