求助帖,望路过的大佬给指点一下,万分感谢
软件SDK: Tina4-V1.2 SDK
硬件平台:百问网V853-AICT开发板

需求:我想要测试一下AEC效果
当前操作过程:我编译运行了external/eyesee-mpp/middleware/sun8iw21/sample/sample_aec例程。程序运行结束后输出的ai_cap.wav只有一个wav头44byte大小。
AEC调试记录:
测试过程如下(异常是没有获取到aec后的音频帧,所以结果文件ai_cap.wav只写了个44byte的wav头):
初步定位:sample_aec.c:311行的ret = AW_MPI_AI_GetFrame(pCtx->mAIODev, pCtx->mAIChn, &frame, &stAecFrm, 500);
返回值为ERR_AI_BUF_EMPTY,拿不到音频帧,所以ai_cap.wav输出为空文件。。。
root@TinaLinux:/mnt/UDISK# ls
bg0.wav          lost+found       sample_aec       sample_aec.conf
root@TinaLinux:/mnt/UDISK# cat sample_aec.conf 
########### paramter (ref to tulip_cedarx.conf)############
[parameter]
pcm_src_path = "/mnt/UDISK/bg0.wav"
pcm_dst_path = "/mnt/UDISK/ai_cap.wav"
pcm_aec_path = "/mnt/UDISK/ai_aec.wav"
pcm_sample_rate = 16000
pcm_channel_cnt = 1
pcm_bit_width = 16
pcm_frame_size = 1024
aec_en = 1
aec_bypass = 0
ans_en = 1
ans_mode = 0
agc_en = 0
agc_gain = 0
add_wav_header = 1
root@TinaLinux:/mnt/UDISK# ./sample_aec -path sample_aec.conf 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Media Process Platform<<<<<<<<<<<<<<<<<<<<<<<<<<<<
modName : MPP-Platform
tag   : V1.0 Release
branch: v5-dev
commit: 4eed413532ad87725895a8cb1ba75e22fc328233
date  : 20170725
author: jenkins
[ISP]>>>>>>>>>>>>>>>>>>>> ISP VERSION INFO <<<<<<<<<<<<<<<<<<<
IPCORE: ISP600
branch: libisp-dev
commit: c3bfa4e23fb037123e65a04eaaa39f7876cfe1a6
date  : Mon Apr 10 10:37:15 2023 +0800
author: <zhenghanjie@allwinnertech.com>
--------------------------------------------------------
I0101 08:27:30.621999  1359 hwdisplay.c:93]                 <hw_display_init> 
I0101 08:27:30.622413  1359 hwdisplay.c:1008]               <hwd_init> (hwd_init 1008)
I0101 08:27:30.622590  1359 hwdisplay.c:1063]               <hwd_init> ret[0][2,0]ch[0]lyl[0] init: enable[0], screenwin[0,0, 0x0], zorder[0], alpha[mode:0, value:0]
I0101 08:27:41.067487  1359 hwdisplay.c:1077]               <hwd_exit> (hwd_exit 1077)
root@TinaLinux:/mnt/UDISK# ls
ai_cap.wav       lost+found       sample_aec.conf
bg0.wav          sample_aec
root@TinaLinux:/mnt/UDISK# ll ai_cap.wav 
-rw-r--r--    1 root     root            44 Jan  1 08:27 ai_cap.wav
root@TinaLinux:/mnt/UDISK# 
Log如下:
root@TinaLinux:/mnt/UDISK# ls
bg0.wav          lost+found       sample_aec       sample_aec.conf
root@TinaLinux:/mnt/UDISK# ./sample_aec -path sample_aec.conf 
I0101 08:44:57.602978  1423 sample_aec.c:537]               <main> Hello, sample_aec!
I0101 08:44:57.603532  1423 sample_aec.c:123]               <ParseCmdLine> sample ao path:[./sample_aec], arg number is [3]
I0101 08:44:57.604031  1423 confparser.c:60]                <createConfParser> load conf file sample_aec.conf ok!
I0101 08:44:57.604217  1423 sample_aec.c:210]               <loadSampleAecConfig> config:/mnt/UDISK/bg0.wav-16000-1-1-1-0
I0101 08:44:57.604614  1423 sample_aec.c:492]               <ParseWavHeader> Be careful! wav header has chunk:[0x5453494c], size:802, skip
I0101 08:44:57.604757  1423 sample_aec.c:583]               <main> parse wav header size:854, ChnNum[1], SampleRate[16000], BitsPerSample[16]
I0101 08:44:57.604879  1423 mpi_sys.c:842]                  <AW_MPI_SYS_SetConf> kfctmpdir is [/tmp]
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Media Process Platform<<<<<<<<<<<<<<<<<<<<<<<<<<<<
modName : MPP-Platform
tag   : V1.0 Release
branch: v5-dev
commit: 4eed413532ad87725895a8cb1ba75e22fc328233
date  : 20170725
author: jenkins
I0101 08:44:57.608041  1423 mpi_sys.c:1455]                 <AW_MPI_SYS_Init> ISP init
[ISP]>>>>>>>>>>>>>>>>>>>> ISP VERSION INFO <<<<<<<<<<<<<<<<<<<
IPCORE: ISP600
branch: libisp-dev
commit: c3bfa4e23fb037123e65a04eaaa39f7876cfe1a6
date  : Mon Apr 10 10:37:15 2023 +0800
author: <zhenghanjie@allwinnertech.com>
--------------------------------------------------------
I0101 08:44:57.608318  1423 mpi_sys.c:1457]                 <AW_MPI_SYS_Init> ISP init done
I0101 08:44:57.608639  1423 hwdisplay.c:93]                 <hw_display_init> 
I0101 08:44:57.608776  1423 hwdisplay.c:1008]               <hwd_init> (hwd_init 1008)
I0101 08:44:57.608948  1423 hwdisplay.c:1063]               <hwd_init> ret[0][2,0]ch[0]lyl[0] init: enable[0], screenwin[0,0, 0x0], zorder[0], alpha[mode:0, value:0]
I0101 08:44:57.649944  1423 audio_hw.c:228]                 <MakeAllMixerElemsAvailable> pcm open and close, all MixerElems maybe exist.
I0101 08:44:57.650145  1423 alsa_interface.c:707]           <alsaOpenMixer> open mixer:hw:0
I0101 08:44:57.654989  1423 alsa_interface.c:762]           <alsaOpenMixer> set playback vol_val to value: 27
I0101 08:44:57.655528  1423 alsa_interface.c:707]           <alsaOpenMixer> open mixer:hw:1
I0101 08:44:57.659887  1423 AOChannel_Component.c:1127]     <AOChannel_ComponentInit> create AOChannel threadId[0xb6d19d50]
I0101 08:44:57.660155  1423 sample_aec.c:618]               <main> create ao channel[0] success!
I0101 08:44:57.660454  1431 mpi_sys.c:1073]                 <MonitorEnvVarThread> detect user environment:
I0101 08:44:57.660578  1431 mpi_sys.c:1074]                 <MonitorEnvVarThread> /tmp/mpp_log_level
I0101 08:44:57.660650  1431 mpi_sys.c:1075]                 <MonitorEnvVarThread> /tmp/mpp_venc_sei_config_param
I0101 08:44:57.660859  1433 Clock_Component.c:1117]         <Clock_ComponentThread> ClockComp state[0x1]->Idle!
I0101 08:44:57.661008  1423 sample_aec.c:657]               <main> create clock channel[0] success!
I0101 08:44:57.661122  1433 cedarx_avs_counter.c:148]       <avscounter_start> (f:avscounter_start, l:148) Avscounter status [pause]->[run], pauseDuration[0][0]ms
I0101 08:44:57.661348  1423 alsa_interface.c:1063]          <alsaMixerSetVolume> playback setVolume:31, err:0
I0101 08:44:57.661470  1423 alsa_interface.c:990]           <alsaMixerSetAudioCodecHubMode> aec_elem_audio_codec_hub_mode:tx hub mode-1
I0101 08:44:57.661611  1423 alsa_interface.c:1013]          <alsaMixerSetDAudio0HubMode> aec_elem_daudio0_hub_mode:tx hub mode-1
I0101 08:44:57.661720  1423 alsa_interface.c:1036]          <alsaMixerSetDAudio0LoopBackEn> aec_elem_daudio0_loopback_en:loopback debug-1
I0101 08:44:57.661802  1423 alsa_interface.c:873]           <alsaMixerSetCapPlaySyncMode> aec_elem_sync_mode_switch:rx sync mode-1
I0101 08:44:57.661893  1423 alsa_interface.c:873]           <alsaMixerSetCapPlaySyncMode> aec_elem_sync_mode_switch:rx sync mode-1
I0101 08:44:57.661986  1423 alsa_interface.c:471]           <alsaOpenPcm> open pcm! card:[CaptureMic], pcmFlag:[0](0-cap;1-play)
I0101 08:44:57.670695  1423 alsa_interface.c:351]           <alsaSetPcmParams> set pcm params
I0101 08:44:57.671389  1423 alsa_interface.c:432]           <alsaSetPcmParams> ----------------ALSA setting----------------
I0101 08:44:57.671531  1423 alsa_interface.c:433]           <alsaSetPcmParams> >>Channels:      2, BitWidth:    16,phsical_w:  16, SampRate:   16000
I0101 08:44:57.671614  1423 alsa_interface.c:434]           <alsaSetPcmParams> >>ChunkBytes: 4096, ChunkSize: 1024, BufferSize: 8192
I0101 08:44:57.672376  1423 AIChannel_Component.c:1076]     <AIChannel_ComponentInit> create AiChannel threadId:0xb6cb0d50
I0101 08:44:57.672622  1423 sample_aec.c:715]               <main> create ai channel[0] success!
I0101 08:44:57.672943  1423 sample_aec.c:748]               <main> pthread create send_pcm_ao_thread[0xb6c8dd50]!
I0101 08:44:57.673185  1423 sample_aec.c:758]               <main> pthread create send_pcm_ao_thread[0xb6c8dd50]!
I0101 08:44:57.674071  1432 AOChannel_Component.c:1642]     <AOChannel_ComponentThread> AO get first pcm from ADec, nBufferLen: 2048, nTimeStamp:0us, param[16000-1-0],use it to init AudioRenderHal
I0101 08:44:58.005693  1432 AOChannel_Component.c:1653]     <AOChannel_ComponentThread> audioDev[0-0] is not config, config it now
E0101 08:44:58.005830  1432 audio_hw.c:2082]                <audioHw_AO_SetChnPubAttr> ao_set_attr_chl:0,stat:0
I0101 08:44:58.005944  1432 alsa_interface.c:990]           <alsaMixerSetAudioCodecHubMode> aec_elem_audio_codec_hub_mode:tx hub mode-1
I0101 08:44:58.006077  1432 alsa_interface.c:1013]          <alsaMixerSetDAudio0HubMode> aec_elem_daudio0_hub_mode:tx hub mode-1
I0101 08:44:58.006202  1432 alsa_interface.c:1036]          <alsaMixerSetDAudio0LoopBackEn> aec_elem_daudio0_loopback_en:loopback debug-1
I0101 08:44:58.006304  1432 AOChannel_Component.c:1659]     <AOChannel_ComponentThread> audioDev[0-0] is not start, start it now
E0101 08:44:58.006390  1432 audio_hw.c:2177]                <audioHw_AO_EnableChn> ao_enable_chl:0
W0101 08:44:58.006491  1432 audio_hw.c:2220]                <audioHw_AO_EnableChn> params of play_daudio0 chn[0] must follow PlaybackRateDmix in asound.conf! [16000-1-960]
I0101 08:44:58.006586  1432 alsa_interface.c:471]           <alsaOpenPcm> open pcm! card:[hw:1,0], pcmFlag:[1](0-cap;1-play)
I0101 08:44:57.673751  1439 sample_aec.c:295]               <AiSaveDataThread> AiSaveDataThread cap data file: /mnt/UDISK/ai_cap.wav, dst_fp:0x11f3120
I0101 08:44:58.011462  1432 alsa_interface.c:351]           <alsaSetPcmParams> set pcm params
I0101 08:44:58.022038  1432 alsa_interface.c:432]           <alsaSetPcmParams> ----------------ALSA setting----------------
I0101 08:44:58.022231  1432 alsa_interface.c:433]           <alsaSetPcmParams> >>Channels:      1, BitWidth:    16,phsical_w:  16, SampRate:   16000
I0101 08:44:58.022336  1432 alsa_interface.c:434]           <alsaSetPcmParams> >>ChunkBytes: 2048, ChunkSize: 1024, BufferSize: 8192
I0101 08:44:58.022434  1432 alsa_interface.c:539]           <alsaPreparePcm> prepare pcm
I0101 08:44:58.032639  1432 audio_hw.c:2266]                <audioHw_AO_EnableChn> daudio0 chn:0 prepare pcm done.
I0101 08:44:58.032795  1432 alsa_interface.c:471]           <alsaOpenPcm> open pcm! card:[plug:PlaybackRateDmix], pcmFlag:[1](0-cap;1-play)
I0101 08:44:58.059717  1432 alsa_interface.c:351]           <alsaSetPcmParams> set pcm params
I0101 08:44:58.082430  1432 alsa_interface.c:432]           <alsaSetPcmParams> ----------------ALSA setting----------------
I0101 08:44:58.082617  1432 alsa_interface.c:433]           <alsaSetPcmParams> >>Channels:      1, BitWidth:    16,phsical_w:  16, SampRate:   16000
I0101 08:44:58.082722  1432 alsa_interface.c:434]           <alsaSetPcmParams> >>ChunkBytes: 2048, ChunkSize: 1024, BufferSize: 8192
I0101 08:44:58.082812  1432 alsa_interface.c:539]           <alsaPreparePcm> prepare pcm
I0101 08:44:58.082922  1432 AOChannel_Component.c:1663]     <AOChannel_ComponentThread> audio render hal init and run ok:0!
W0101 08:44:58.507748  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:44:59.008080  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:44:59.508420  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:45:00.008745  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:45:00.509076  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:45:01.009436  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:45:01.509773  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:45:02.010105  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:45:02.510436  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:45:03.010768  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:45:03.511103  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:45:04.011434  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
W0101 08:45:04.511764  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
I0101 08:45:04.579367  1438 sample_aec.c:402]               <SendPcmAoThread> read file finish!
I0101 08:45:04.579592  1438 AOChannel_Component.c:172]      <AOSetStreamEof> AO end flag is set! drain pcm flag:1!
I0101 08:45:04.579739  1432 AOChannel_Component.c:1605]     <AOChannel_ComponentThread> A. AOChn[0-0] notify player eof!
I0101 08:45:04.579846  1432 AOChannel_Component.c:1608]     <AOChannel_ComponentThread> AOChn[0-0] drain pcm ring buf!
W0101 08:45:05.012097  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
I0101 08:45:05.091085  1432 AOChannel_Component.c:1621]     <AOChannel_ComponentThread> AOChn[0-0] drain pcm ring buf done, cost[511]ms!
I0101 08:45:05.091392  1432 sample_aec.c:66]                <SampleAec_CallbackWrapper> AO channel notify APP that play complete!
I0101 08:45:05.091578  1432 AOChannel_Component.c:1566]     <AOChannel_ComponentThread> AO EOF!
I0101 08:45:05.180292  1423 sample_aec.c:772]               <main> sendPcmAoTid[0xb6c8dd50] is joined!
W0101 08:45:05.512420  1439 sample_aec.c:340]               <AiSaveDataThread> Be careful! ai getFrame timeout?
I0101 08:45:05.512938  1423 sample_aec.c:781]               <main> aiSaveDataTidPcm[0xb6c6ad50] is joined!
I0101 08:45:05.513210  1433 Clock_Component.c:1117]         <Clock_ComponentThread> ClockComp state[0x3]->Idle!
I0101 08:45:05.513378  1432 AOChannel_Component.c:1419]     <AOChannel_ComponentThread> release all frames to ADec, when state[0x2]->[0x1]
I0101 08:45:05.513515  1423 AOChannel_Component.c:896]      <AOChannel_ComponentDeInit> wait AO channel component exit!...
I0101 08:45:05.513763  1423 AOChannel_Component.c:965]      <AOChannel_ComponentDeInit> AO component exited!
I0101 08:45:05.513895  1423 audio_hw.c:2350]                <audioHw_AO_DisableChn> close pcm! current AoCardType:[0-0]
I0101 08:45:05.526581  1423 audio_hw.c:2367]                <audioHw_AO_DisableChn> close daudio0 pcm! current AoCardType:[0-0], daudio0:[0-0]
E0101 08:45:08.105403  1436 alsa_interface.c:585]           <alsaReadPcm> read error: I/O error
E0101 08:45:08.105638  1436 audio_hw.c:1006]                <audioHw_AI_CapThread> aec fatal error! mainChn fail to read pcm 4096 bytes-2--1
E0101 08:45:08.105772  1436 audio_hw.c:1036]                <audioHw_AI_CapThread> Be careful! aec mainChn trigger result[-1] is not -EPIPE. Treated as EPIPE
I0101 08:45:08.105880  1436 audio_hw.c:1053]                <audioHw_AI_CapThread> aec trigger fail[-1]:[1658080848]us, continue
I0101 08:45:08.105960  1436 audio_hw.c:1241]                <audioHw_AI_CapThread> AI_CapThread exit!
W0101 08:45:08.107680  1423 AIChannel_Component.c:832]      <AIChannel_ComponentDeInit> Be careful! aiDev[0]Chn[0] discard audio block num:0, discard audio data len:0
I0101 08:45:08.108138  1423 AIChannel_Component.c:866]      <AIChannel_ComponentDeInit> Ai component exited!
I0101 08:45:08.108316  1423 alsa_interface.c:810]           <alsaCloseMixer> close mixer
I0101 08:45:08.108635  1423 alsa_interface.c:810]           <alsaCloseMixer> close mixer
I0101 08:45:08.108816  1423 hwdisplay.c:1077]               <hwd_exit> (hwd_exit 1077)
I0101 08:45:08.662381  1431 mpi_sys.c:1080]                 <MonitorEnvVarThread> MonitorEnvVar thread will exit!
I0101 08:45:08.662796  1423 sample_aec.c:810]               <main> ./sample_aec test result: success
root@TinaLinux:/mnt/UDISK# 
我当前的menuconfig配置如下:

我当前的asound.conf配置如下:
pcm.!default {
type asym
playback.pcm “hw:{CARD=audiocodec, DEV=0}”
capture.pcm “hw:0,0”
}
pcm.PlaybackRateDmix {
type plug
slave {
pcm {
type dmix
ipc_key 1111
ipc_perm 0666
slave {
pcm “hw:0,0”
format S16_LE
rate 16000
channels 1
period_size 1024
periods 8
}
}
}
rate_converter “linear”
}
#pcm.resample rely on alsa-plugin and libspeexdsp. Select them in menuconfig if we want to use plugin pcm.resample.
pcm.resample {
type plug
slave {
pcm “hw:0,0”
format S16_LE
rate 16000
channels 1
}
rate_converter “speexrate”
}
pcm.CaptureMic {
type hooks
slave.pcm “hw:0,0”
hooks.0 {
type ctl_elems
hook_args [
{
name “MIC1 Switch”
preserve true
optional true
value 1
}
]
}
}
pcm.eq {
type awequal
slave.pcm “hw:0,0”
config_file “/etc/awequal.conf”
tuning_support true