1e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung#!/bin/bash 2e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 3e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# This script uses test-mixer to generate WAV files 4e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# for evaluation of the AudioMixer component. 5e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 6e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Sine and chirp signals are used for input because they 7e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# show up as clear lines, either horizontal or diagonal, 8e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# on a spectrogram. This means easy verification of multiple 9e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# track mixing. 10e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 11e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# After execution, look for created subdirectories like 12e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# mixer_i_i 13e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# mixer_i_f 14e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# mixer_f_f 15e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 16e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Recommend using a program such as audacity to evaluate 17e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# the output WAV files, e.g. 18e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 19e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# cd testdir 20e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# audacity *.wav 21e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 22e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Using Audacity: 23e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 24e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Under "Waveform" view mode you can zoom into the 25e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# start of the WAV file to verify proper ramping. 26e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 27e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Select "Spectrogram" to see verify the lines 28e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# (sine = horizontal, chirp = diagonal) which should 29e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# be clear (except for around the start as the volume 30e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# ramping causes spectral distortion). 31e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 32e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungif [ -z "$ANDROID_BUILD_TOP" ]; then 33e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung echo "Android build environment not set" 34e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung exit -1 35e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungfi 36e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 37e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# ensure we have mm 38e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung. $ANDROID_BUILD_TOP/build/envsetup.sh 39e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 40e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungpushd $ANDROID_BUILD_TOP/frameworks/av/services/audioflinger/ 41e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 42e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# build 43e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungpwd 44e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungmm 45e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 46e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# send to device 47e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungecho "waiting for device" 48e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungadb root && adb wait-for-device remount 49e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungadb push $OUT/system/lib/libaudioresampler.so /system/lib 50e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungadb push $OUT/system/bin/test-mixer /system/bin 51e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 52e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# createwav creates a series of WAV files testing various 53e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# mixer settings 54e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# $1 = flags 55e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# $2 = directory 56e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungfunction createwav() { 57e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# create directory if it doesn't exist 58e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung if [ ! -d $2 ]; then 59e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung mkdir $2 60e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung fi 61e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 62e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Test: 63e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# process__genericResampling 64e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# track__Resample / track__genericResample 65e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb shell test-mixer $1 -s 48000 \ 66e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung -o /sdcard/tm48000gr.wav \ 67e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung sine:2,4000,7520 chirp:2,9200 sine:1,3000,18000 68e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb pull /sdcard/tm48000gr.wav $2 69e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 70e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Test: 71e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# process__genericResample 72e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# track__Resample / track__genericResample 73e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# track__NoResample / track__16BitsStereo / track__16BitsMono 74e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Aux buffer 75e93b6b7347a7846c8fd746542364ec11b0cd5124Andy Hung adb shell test-mixer $1 -c 5 -s 9307 \ 76e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung -a /sdcard/aux9307gra.wav -o /sdcard/tm9307gra.wav \ 77e93b6b7347a7846c8fd746542364ec11b0cd5124Andy Hung sine:4,1000,3000 sine:1,2000,9307 chirp:3,9307 78e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb pull /sdcard/tm9307gra.wav $2 79e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb pull /sdcard/aux9307gra.wav $2 80e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 81e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Test: 82e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# process__genericNoResampling 83e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# track__NoResample / track__16BitsStereo / track__16BitsMono 84e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb shell test-mixer $1 -s 32000 \ 85e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung -o /sdcard/tm32000gnr.wav \ 86e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung sine:2,1000,32000 chirp:2,32000 sine:1,3000,32000 87e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb pull /sdcard/tm32000gnr.wav $2 88e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 89e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Test: 90e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# process__genericNoResampling 91e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# track__NoResample / track__16BitsStereo / track__16BitsMono 92e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Aux buffer 93e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb shell test-mixer $1 -s 32000 \ 94e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung -a /sdcard/aux32000gnra.wav -o /sdcard/tm32000gnra.wav \ 95e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung sine:2,1000,32000 chirp:2,32000 sine:1,3000,32000 96e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb pull /sdcard/tm32000gnra.wav $2 97e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb pull /sdcard/aux32000gnra.wav $2 98e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 99e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Test: 100e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# process__NoResampleOneTrack / process__OneTrack16BitsStereoNoResampling 101e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Downmixer 102e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb shell test-mixer $1 -s 32000 \ 103e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung -o /sdcard/tm32000nrot.wav \ 104e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung sine:6,1000,32000 105e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb pull /sdcard/tm32000nrot.wav $2 106e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 107e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Test: 108e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# process__NoResampleOneTrack / OneTrack16BitsStereoNoResampling 109e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Aux buffer 110e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb shell test-mixer $1 -s 44100 \ 111e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung -a /sdcard/aux44100nrota.wav -o /sdcard/tm44100nrota.wav \ 112e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung sine:2,2000,44100 113e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb pull /sdcard/tm44100nrota.wav $2 114e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung adb pull /sdcard/aux44100nrota.wav $2 115e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung} 116e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 117e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 118e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# Call createwav to generate WAV files in various combinations 119e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 120e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# i_i = integer input track, integer mixer output 121e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# f_f = float input track, float mixer output 122e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# i_f = integer input track, float_mixer output 123e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 124e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# If the mixer output is float, then the output WAV file is pcm float. 125e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 126e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# TODO: create a "snr" like "diff" to automatically 127e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# compare files in these directories together. 128e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung# 129e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 130e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungcreatewav "" "tests/mixer_i_i" 131e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungcreatewav "-f -m" "tests/mixer_f_f" 132e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungcreatewav "-m" "tests/mixer_i_f" 133e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hung 134e4fc42359cdd9786e521054a3a0491d6bc3a9e1cAndy Hungpopd 135