blob: d0482a1b80fb783a4fbeca5d7e86e37a87aece44 [file] [log] [blame]
#!/bin/bash
#
# This script uses test-mixer to generate WAV files
# for evaluation of the AudioMixer component.
#
# Sine and chirp signals are used for input because they
# show up as clear lines, either horizontal or diagonal,
# on a spectrogram. This means easy verification of multiple
# track mixing.
#
# After execution, look for created subdirectories like
# mixer_i_i
# mixer_i_f
# mixer_f_f
#
# Recommend using a program such as audacity to evaluate
# the output WAV files, e.g.
#
# cd testdir
# audacity *.wav
#
# Using Audacity:
#
# Under "Waveform" view mode you can zoom into the
# start of the WAV file to verify proper ramping.
#
# Select "Spectrogram" to see verify the lines
# (sine = horizontal, chirp = diagonal) which should
# be clear (except for around the start as the volume
# ramping causes spectral distortion).
if [ -z "$ANDROID_BUILD_TOP" ]; then
echo "Android build environment not set"
exit -1
fi
# ensure we have mm
. $ANDROID_BUILD_TOP/build/envsetup.sh
pushd $ANDROID_BUILD_TOP/frameworks/av/services/audioflinger/
# build
pwd
mm
# send to device
echo "waiting for device"
adb root && adb wait-for-device remount
adb push $OUT/system/lib/libaudioresampler.so /system/lib
adb push $OUT/system/bin/test-mixer /system/bin
# createwav creates a series of WAV files testing various
# mixer settings
# $1 = flags
# $2 = directory
function createwav() {
# create directory if it doesn't exist
if [ ! -d $2 ]; then
mkdir $2
fi
# Test:
# process__genericResampling with mixed integer and float track input
# track__Resample / track__genericResample
adb shell test-mixer $1 -s 48000 \
-o /sdcard/tm48000grif.wav \
sine:2,4000,7520 chirp:2,9200 sine:1,3000,18000 \
sine:f,6,6000,19000 chirp:i,4,30000
adb pull /sdcard/tm48000grif.wav $2
# Test:
# process__genericResampling
# track__Resample / track__genericResample
adb shell test-mixer $1 -s 48000 \
-o /sdcard/tm48000gr.wav \
sine:2,4000,7520 chirp:2,9200 sine:1,3000,18000 \
sine:6,6000,19000
adb pull /sdcard/tm48000gr.wav $2
# Test:
# process__genericResample
# track__Resample / track__genericResample
# track__NoResample / track__16BitsStereo / track__16BitsMono
# Aux buffer
adb shell test-mixer $1 -c 5 -s 9307 \
-a /sdcard/aux9307gra.wav -o /sdcard/tm9307gra.wav \
sine:4,1000,3000 sine:1,2000,9307 chirp:3,9307
adb pull /sdcard/tm9307gra.wav $2
adb pull /sdcard/aux9307gra.wav $2
# Test:
# process__genericNoResampling
# track__NoResample / track__16BitsStereo / track__16BitsMono
adb shell test-mixer $1 -s 32000 \
-o /sdcard/tm32000gnr.wav \
sine:2,1000,32000 chirp:2,32000 sine:1,3000,32000
adb pull /sdcard/tm32000gnr.wav $2
# Test:
# process__genericNoResampling
# track__NoResample / track__16BitsStereo / track__16BitsMono
# Aux buffer
adb shell test-mixer $1 -s 32000 \
-a /sdcard/aux32000gnra.wav -o /sdcard/tm32000gnra.wav \
sine:2,1000,32000 chirp:2,32000 sine:1,3000,32000
adb pull /sdcard/tm32000gnra.wav $2
adb pull /sdcard/aux32000gnra.wav $2
# Test:
# process__NoResampleOneTrack / process__OneTrack16BitsStereoNoResampling
# Downmixer
adb shell test-mixer $1 -s 32000 \
-o /sdcard/tm32000nrot.wav \
sine:6,1000,32000
adb pull /sdcard/tm32000nrot.wav $2
# Test:
# process__NoResampleOneTrack / OneTrack16BitsStereoNoResampling
# Aux buffer
adb shell test-mixer $1 -s 44100 \
-a /sdcard/aux44100nrota.wav -o /sdcard/tm44100nrota.wav \
sine:2,2000,44100
adb pull /sdcard/tm44100nrota.wav $2
adb pull /sdcard/aux44100nrota.wav $2
}
#
# Call createwav to generate WAV files in various combinations
#
# i_i = integer input track, integer mixer output
# f_f = float input track, float mixer output
# i_f = integer input track, float_mixer output
#
# If the mixer output is float, then the output WAV file is pcm float.
#
# TODO: create a "snr" like "diff" to automatically
# compare files in these directories together.
#
createwav "" "tests/mixer_i_i"
createwav "-f -m" "tests/mixer_f_f"
createwav "-m" "tests/mixer_i_f"
popd