new/external/rockchip-test/audio/audio_functions_test.sh
2025-05-10 21:58:58 +08:00

120 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
device_1=$1
device_2=$2
echo ""
echo "*****************************************************"
echo "* Rockchip Platform Audio Functions Test *"
echo "*****************************************************"
echo "* Loop playback: [0] *"
echo "* Loop capture: [1] *"
echo "* Test loopback: [2] *"
echo "* Exit audio test: [q] *"
echo "*****************************************************"
echo ""
echo -n "Please select a test case: "
read TEST_CASE
echo ""
PATH_AUDIO=/tmp/audio_test
mkdir -p $PATH_AUDIO
prepare_mic_capture()
{
amixer set "Capture Digital" 192
amixer set "Capture Mute" 0
amixer set "Right PGA Mux" "DifferentialR"
amixer set "Left PGA Mux" "DifferentialL"
amixer set "Differential Mux" "Line 2"
amixer set "Left Channel" 0
amixer set "Right Channel" 0
}
loop_playback()
{
echo "******** Loop playback start ********"
fs_tbl="8000 11025 16000 22050 32000 44100 48000 64000 88200 96000 176400 192000"
bits_tbl="16 24 32"
ch=2
seconds=2
gain=-30
play_device="default"
if [ -n "$1" ]; then
play_device=$1
fi
while [ $ch -ge 1 ]
do
for fs in $fs_tbl
do
for bits in $bits_tbl
do
echo "play_device=$play_device, ch="$ch", rate="$fs", bit=$bits, $seconds sec, gain=$gain"
sox -b $bits -r $fs -c $ch -n -t alsa $play_device synth $seconds sine 440 gain $gain
done
done
done
echo "******** Loop playback end ********"
}
loop_capture()
{
PATH_CAPTURE=$PATH_AUDIO/cap_files
mkdir $PATH_CAPTURE
fs_tbl="8000 11025 16000 22050 32000 44100 48000 64000 88200 96000 176400 192000"
bits_tbl="S16_LE S24_LE S32_LE"
ch_tbl="2"
seconds=3
capt_device="default"
if [ -n "$1" ]; then
capt_device=$1
fi
echo "******** Loop capture start ********"
for fs in $fs_tbl
do
for bits in $bits_tbl
do
for ch in $ch_tbl
do
DUMP_FILE=$(printf 'cap_fs%d_format_%s_ch%d.wav' $fs $bits $ch)
echo "capt_device: $capt_device capture $DUMP_FILE $seconds sec"
arecord -D $capt_device -r $fs -f $bits -c $ch -d $seconds $PATH_CAPTURE/$DUMP_FILE
done
done
done
echo "******** Loop capture end ********"
echo "!! Please using 'adb pull /tmp/audio_test/cap_files/ .' dump all capture files !!"
}
case $TEST_CASE in
"0")
loop_playback $device_1
;;
"1")
prepare_mic_capture
loop_capture $device_1
;;
"2")
source ./test_loopback.sh $device_1 $device_2
;;
"q")
echo "Exit audio test"
;;
*)
echo "Invalid case $TEST_CASE"
;;
esac
exit