- 使用dump抓取音频数据
device/sprd/scx35l/sp9820w_6c10/rootdir/system/etc/audio_params/audio_hw.xml
这是展讯平台的音频配置文件,其中dump配置如下
<dumpmusic num="16" dump_switch = "0x0" dump_path="/data/local/media/" total_switch="ON">
<dump_play index="0" item_name ="music.dump0" dump_file_name ="dump_music_before_express.pcm" switch="0" />
<dump_play index="1" item_name ="music.dump1" dump_file_name ="dump_music_before_vbc.pcm" switch="0" />
<dump_play index="2" item_name ="music.dump2" dump_file_name ="dump_mix_vaudio.pcm" switch="0" />
<dump_play index="3" item_name ="music.dump3" dump_file_name ="dump_voip_write.pcm" switch="0" />
<dump_play index="4" item_name ="music.dump4" dump_file_name ="dump_bt_sco_write.pcm" switch="0" />
<dump_record index="8" item_name ="record.dump0" dump_file_name ="dump_record_after_vbc.pcm" switch="0" />
<dump_record index="9" item_name ="record.dump1" dump_file_name ="dump_record_after_express" switch="0" />
</dumpmusic>
不同dump的解释如下:
dump1,dump0这些文件表示不同场景和阶段的dump数据。
"dump_music_before_express.pcm"表示framework层送给audio hal层的音频数据;
"dump_music_before_vbc.pcm"表示audio hal处理后送给底层硬件的音频数据;
"dump_mix_vaudio.pcm"表示通话时,AP侧混音数据的dump(按键音、背景音、环境音等);
"dump_voip_write.pcm"表示voip通话时,下行数据dump;
"dump_bt_sco_write.pcm"表示蓝牙通话时,下行dump数据;
"dump_record_after_vbc.pcm"表示硬件送上来的给audio hal的录音dump数据;
"dump_record_after_express"表示audio hal处理后送给上层的录音dump数据;
自己要清楚自己想要dump什么场景下的音频数据。否则,dump出来就会是噪音。
index表示在dump_switch中的bit占位。如第2项 index="1",如果dump_switch的bit 1设置为1,就表示播放音乐时,dump音乐数据。
adb root
adb shell
setprop media.dump.path /data/local/media/
setprop media.dump.switch 0x02 // bit 1 是1,即0x02
同理,如果要dump录音数据,设置dump_switch相应的bit为1,即bit 8,bit 9要设成1,如下:
adb root
adb shell
setprop media.dump.path /data/local/media/
setprop media.dump.switch 0x300
如果要全部dump,可以将开关数值定为0x3ff。
此时再进行音频录制或者播放音乐,测试完毕后,可以测试dump到的数据。
adb pull data/local/media .
使用AudacityPortable进行播放dump到的数据,文件->导入->裸数据,采样率为8k。
网友评论