ret = pthread_create(&tid_ref, NULL, IMP_Audio_Record_AEC_Thread, AUDIO_RECORD_FILE);
if(ret != 0) {
IMP_LOG_ERR(TAG, "[ERROR] %s: pthread_create Audio Record failed\n", __func__);
return -1;
}
FILE *record_file = fopen(argv, "wb");
int devID = 1;
IMPAudioIOAttr attr;
attr.samplerate = AUDIO_SAMPLE_RATE_16000;
attr.bitwidth = AUDIO_BIT_WIDTH_16;
attr.soundmode = AUDIO_SOUND_MODE_MONO;
attr.frmNum = 40;
attr.numPerFrm = 640;
attr.chnCnt = 1;
ret = IMP_AI_SetPubAttr(devID, &attr);
ret = IMP_AI_Enable(devID);
int chnID = 0;
IMPAudioIChnParam chnParam;
chnParam.usrFrmDepth = 40;
chnParam.aecChn = AUDIO_AEC_CHANNEL_FIRST_LEFT;
ret = IMP_AI_SetChnParam(devID, chnID, &chnParam);
ret = IMP_AI_EnableChn(devID, chnID);
ret = IMP_AI_EnableAec(devID, chnID, 0, 0);
ret = IMP_AI_SetVol(devID, chnID, chnVol);
ret = IMP_AI_SetGain(devID, chnID, aigain);
ret = IMP_AI_PollingFrame(devID, chnID, 1000);
IMPAudioFrame frm;
ret = IMP_AI_GetFrame(devID, chnID, &frm, BLOCK);
fwrite(frm.virAddr, 1, frm.len, record_file);
ret = IMP_AI_ReleaseFrame(devID, chnID, &frm);
ret = IMP_AI_DisableAec(devID, chnID);
ret = IMP_AI_DisableChn(devID, chnID);
ret = IMP_AI_Disable(devID);
fclose(record_file);
pthread_exit(0);
ret = pthread_create(&tid_play, NULL, IMP_Audio_Play_Thread, AUDIO_RECORD_FILE_FOR_PLAY);
if(ret != 0) {
IMP_LOG_ERR(TAG, "[ERROR] %s: pthread_create Audio Play failed\n", __func__);
return -1;
}
fopen文件 rb
IMP_AO_SetPubAttr devID为0 设置AO设备属性和采样率和帧num chn_cnt
int devID = 0;
IMP_AO_Enable 使能devID0
int chnID = 0;
IMP_AO_EnableChn 使能DevID0下ChnID0,
IMP_AO_SetVol(devID, chnID, chnVol);
IMP_AO_EnableAlgo(devID, chnID);
size = fread(buf, 1, AO_TEST_BUF_SIZE, play_file);
IMPAudioFrame frm;
frm.virAddr = (uint32_t *)buf;
frm.len = size;
ret = IMP_AO_SendFrame(devID, chnID, &frm, BLOCK);
ret = IMP_AO_ClearChnBuf(devID,chnID);
ret = IMP_AO_ResumeChn(devID,chnID);
ret = IMP_AO_FlushChnBuf(devID,chnID);
ret = IMP_AO_DisableAlgo(devID,chnID);
ret = IMP_AO_DisableChn(devID, chnID);
ret = IMP_AO_Disable(devID);
fclose(play_file);
pthread_join(tid_play, NULL);
pthread_join(tid_ref, NULL);
