1*4882a593Smuzhiyun#!/bin/bash 2*4882a593Smuzhiyun 3*4882a593Smuzhiyundevice_1=$1 4*4882a593Smuzhiyundevice_2=$2 5*4882a593Smuzhiyun 6*4882a593Smuzhiyunecho "" 7*4882a593Smuzhiyunecho "*****************************************************" 8*4882a593Smuzhiyunecho "* Rockchip Platform Audio Functions Test *" 9*4882a593Smuzhiyunecho "*****************************************************" 10*4882a593Smuzhiyunecho "* Loop playback: [0] *" 11*4882a593Smuzhiyunecho "* Loop capture: [1] *" 12*4882a593Smuzhiyunecho "* Test loopback: [2] *" 13*4882a593Smuzhiyunecho "* Exit audio test: [q] *" 14*4882a593Smuzhiyunecho "*****************************************************" 15*4882a593Smuzhiyun 16*4882a593Smuzhiyunecho "" 17*4882a593Smuzhiyunecho -n "Please select a test case: " 18*4882a593Smuzhiyunread TEST_CASE 19*4882a593Smuzhiyunecho "" 20*4882a593Smuzhiyun 21*4882a593SmuzhiyunPATH_AUDIO=/tmp/audio_test 22*4882a593Smuzhiyunmkdir -p $PATH_AUDIO 23*4882a593Smuzhiyun 24*4882a593Smuzhiyunprepare_mic_capture() 25*4882a593Smuzhiyun{ 26*4882a593Smuzhiyun amixer set "Capture Digital" 192 27*4882a593Smuzhiyun amixer set "Capture Mute" 0 28*4882a593Smuzhiyun amixer set "Right PGA Mux" "DifferentialR" 29*4882a593Smuzhiyun amixer set "Left PGA Mux" "DifferentialL" 30*4882a593Smuzhiyun amixer set "Differential Mux" "Line 2" 31*4882a593Smuzhiyun amixer set "Left Channel" 0 32*4882a593Smuzhiyun amixer set "Right Channel" 0 33*4882a593Smuzhiyun} 34*4882a593Smuzhiyun 35*4882a593Smuzhiyunloop_playback() 36*4882a593Smuzhiyun{ 37*4882a593Smuzhiyun echo "******** Loop playback start ********" 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun fs_tbl="8000 11025 16000 22050 32000 44100 48000 64000 88200 96000 176400 192000" 40*4882a593Smuzhiyun bits_tbl="16 24 32" 41*4882a593Smuzhiyun ch=2 42*4882a593Smuzhiyun seconds=2 43*4882a593Smuzhiyun gain=-30 44*4882a593Smuzhiyun play_device="default" 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun if [ -n "$1" ]; then 47*4882a593Smuzhiyun play_device=$1 48*4882a593Smuzhiyun fi 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun while [ $ch -ge 1 ] 51*4882a593Smuzhiyun do 52*4882a593Smuzhiyun for fs in $fs_tbl 53*4882a593Smuzhiyun do 54*4882a593Smuzhiyun for bits in $bits_tbl 55*4882a593Smuzhiyun do 56*4882a593Smuzhiyun echo "play_device=$play_device, ch="$ch", rate="$fs", bit=$bits, $seconds sec, gain=$gain" 57*4882a593Smuzhiyun sox -b $bits -r $fs -c $ch -n -t alsa $play_device synth $seconds sine 440 gain $gain 58*4882a593Smuzhiyun done 59*4882a593Smuzhiyun done 60*4882a593Smuzhiyun done 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun echo "******** Loop playback end ********" 63*4882a593Smuzhiyun} 64*4882a593Smuzhiyun 65*4882a593Smuzhiyunloop_capture() 66*4882a593Smuzhiyun{ 67*4882a593Smuzhiyun PATH_CAPTURE=$PATH_AUDIO/cap_files 68*4882a593Smuzhiyun mkdir $PATH_CAPTURE 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun fs_tbl="8000 11025 16000 22050 32000 44100 48000 64000 88200 96000 176400 192000" 71*4882a593Smuzhiyun bits_tbl="S16_LE S24_LE S32_LE" 72*4882a593Smuzhiyun ch_tbl="2" 73*4882a593Smuzhiyun seconds=3 74*4882a593Smuzhiyun capt_device="default" 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun if [ -n "$1" ]; then 77*4882a593Smuzhiyun capt_device=$1 78*4882a593Smuzhiyun fi 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun echo "******** Loop capture start ********" 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun for fs in $fs_tbl 83*4882a593Smuzhiyun do 84*4882a593Smuzhiyun for bits in $bits_tbl 85*4882a593Smuzhiyun do 86*4882a593Smuzhiyun for ch in $ch_tbl 87*4882a593Smuzhiyun do 88*4882a593Smuzhiyun DUMP_FILE=$(printf 'cap_fs%d_format_%s_ch%d.wav' $fs $bits $ch) 89*4882a593Smuzhiyun echo "capt_device: $capt_device capture $DUMP_FILE $seconds sec" 90*4882a593Smuzhiyun arecord -D $capt_device -r $fs -f $bits -c $ch -d $seconds $PATH_CAPTURE/$DUMP_FILE 91*4882a593Smuzhiyun done 92*4882a593Smuzhiyun done 93*4882a593Smuzhiyun done 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun echo "******** Loop capture end ********" 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun echo "!! Please using 'adb pull /tmp/audio_test/cap_files/ .' dump all capture files !!" 98*4882a593Smuzhiyun} 99*4882a593Smuzhiyun 100*4882a593Smuzhiyuncase $TEST_CASE in 101*4882a593Smuzhiyun "0") 102*4882a593Smuzhiyun loop_playback $device_1 103*4882a593Smuzhiyun ;; 104*4882a593Smuzhiyun "1") 105*4882a593Smuzhiyun prepare_mic_capture 106*4882a593Smuzhiyun loop_capture $device_1 107*4882a593Smuzhiyun ;; 108*4882a593Smuzhiyun "2") 109*4882a593Smuzhiyun source ./test_loopback.sh $device_1 $device_2 110*4882a593Smuzhiyun ;; 111*4882a593Smuzhiyun "q") 112*4882a593Smuzhiyun echo "Exit audio test" 113*4882a593Smuzhiyun ;; 114*4882a593Smuzhiyun *) 115*4882a593Smuzhiyun echo "Invalid case $TEST_CASE" 116*4882a593Smuzhiyun ;; 117*4882a593Smuzhiyunesac 118*4882a593Smuzhiyun 119*4882a593Smuzhiyunexit 120