nt9856x/code/application/source/cardv/SrcCode/UIApp/Voice/UIAppVoice_Exe.c
2023-03-28 15:07:53 +08:00

152 lines
3.9 KiB
C
Executable File

#include "PrjCfg.h"
#if (VOICE_MODE == ENABLE)
#include "ImageApp/ImageApp_Voice.h"
#include "NamingRule/NameRule_Custom.h"
#include "GxTime.h"
#include "UIWnd/UIFlow.h"
#include "kwrap/debug.h"
#define FILE_SN_MAX 999999
UINT32 g_IAVoiceFileSerialNum = 0;
IAVOICE_AUDIO_INFO UIVoice_Audio_Info = {
.aud_rate = HD_AUDIO_SR_32000,
.aud_ch = _IAVOICE_CFG_AUDIO_CH_RIGHT,
.aud_ch_num = 1,
};
static void VoiceExe_FileNamingCB(UINT32 id, char *pFileName)
{
static struct tm CurDateTime = {0};
g_IAVoiceFileSerialNum ++;
if (g_IAVoiceFileSerialNum > FILE_SN_MAX) {
g_IAVoiceFileSerialNum = FILE_SN_MAX;
Ux_PostEvent(NVTEVT_CB_MOVIE_FULL, 0);
}
GxTime_GetTime(&CurDateTime);
snprintf(pFileName, NMC_TOTALFILEPATH_MAX_LEN, "A:\\%04d%02d%02d%02d%02d%02d_%06d.wav",
CurDateTime.tm_year, CurDateTime.tm_mon, CurDateTime.tm_mday,
CurDateTime.tm_hour, CurDateTime.tm_min, CurDateTime.tm_sec, g_IAVoiceFileSerialNum);
}
static void VoiceExe_UserEventCb(UINT32 id, IAVOICE_USER_CB_EVENT event_id, UINT32 value)
{
switch ((UINT32)event_id) {
case IAVOICE_USER_CB_EVENT_FILENAMING_CB: {
CHAR *pFileName = (CHAR *) value;
// Make custome file name
VoiceExe_FileNamingCB(id, pFileName);
break;
}
case IAVOICE_USER_CB_EVENT_APLAY_DONE: {
Ux_PostEvent(NVTEVT_VOICE_PLAYSTOP, 0);
break;
}
}
}
INT32 VoiceExe_OnOpen(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
// update aout drv cfg
extern HD_PATH_ID gxsound_ctrl_id;
HD_AUDIOOUT_DRV_CONFIG audio_driver_cfg = {0};
hd_audioout_get(gxsound_ctrl_id, HD_AUDIOOUT_PARAM_DRV_CONFIG, &audio_driver_cfg);
UIVoice_Audio_Info.aud_out_mono = audio_driver_cfg.mono;
UIVoice_Audio_Info.adu_out_type = audio_driver_cfg.output;
// Set audio config
ImageApp_Voice_Config(IAVOICE_CONFIG_AUDIO_INFO, (UINT32)&UIVoice_Audio_Info);
// Set user callback
ImageApp_Voice_RegUserCB(VoiceExe_UserEventCb);
// Open ImageApp
ImageApp_Voice_Open();
return NVTEVT_CONSUME;
}
INT32 VoiceExe_OnClose(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
ImageApp_Voice_Close();
return NVTEVT_CONSUME;
}
INT32 VoiceExe_OnRecStart(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
return NVTEVT_CONSUME;
}
INT32 VoiceExe_OnRecStop(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
return NVTEVT_CONSUME;
}
INT32 VoiceExe_OnPlay(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
IAVOICE_AUDIO_PLAY_INFO play_info = {0};
if (paramNum > 0) {
memcpy((VOID *)&play_info, (VOID *)paramArray[0], sizeof(IAVOICE_AUDIO_PLAY_INFO));
} else {
DBG_ERR("File handle is not assigned\r\n");
return NVTEVT_CONSUME;
}
ImageApp_Voice_PlayStart(0, &play_info);
return NVTEVT_CONSUME;
}
INT32 VoiceExe_OnPlayStop(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
ImageApp_Voice_PlayStop(0);
return NVTEVT_CONSUME;
}
INT32 VoiceExe_OnPlayPause(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
ImageApp_Voice_PlayPause(0);
return NVTEVT_CONSUME;
}
INT32 VoiceExe_OnPlayResume(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
ImageApp_Voice_PlayResume(0);
return NVTEVT_CONSUME;
}
INT32 VoiceExe_OnPlayVolume(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
UINT32 volume;
if (paramNum > 0) {
volume = paramArray[0];
ImageApp_Voice_SetParam(0, IAVOICE_PARAM_AUD_AOUT_VOL, volume);
}
return NVTEVT_CONSUME;
}
EVENT_ENTRY CustomVoiceObjCmdMap[] =
{
{NVTEVT_EXE_OPEN, VoiceExe_OnOpen },
{NVTEVT_EXE_CLOSE, VoiceExe_OnClose },
{NVTEVT_VOICE_RECORD, VoiceExe_OnRecStart },
{NVTEVT_VOICE_RECORDSTOP, VoiceExe_OnRecStop },
{NVTEVT_VOICE_PLAY, VoiceExe_OnPlay },
{NVTEVT_VOICE_PLAYSTOP, VoiceExe_OnPlayStop },
{NVTEVT_VOICE_PLAYPAUSE, VoiceExe_OnPlayPause },
{NVTEVT_VOICE_PLAYRESUME, VoiceExe_OnPlayResume },
{NVTEVT_VOICE_PLAYVOLUME, VoiceExe_OnPlayVolume },
{NVTEVT_NULL, 0 }, //End of Command Map
};
CREATE_APP(CustomVoiceObj,APP_SETUP)
#endif // #if (VOICE_MODE == ENABLE)