summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/tests
diff options
context:
space:
mode:
authorAndy Hung <hunga@google.com>2014-07-17 21:30:53 -0700
committerAndy Hung <hunga@google.com>2014-07-24 18:40:33 -0700
commite93b6b7347a7846c8fd746542364ec11b0cd5124 (patch)
treed5498ae539ae460d4153026be9714129fc45a21f /services/audioflinger/tests
parent81e50d0c782cc18eab4ef40ecd6c7f36df50fea5 (diff)
downloadframeworks_av-e93b6b7347a7846c8fd746542364ec11b0cd5124.zip
frameworks_av-e93b6b7347a7846c8fd746542364ec11b0cd5124.tar.gz
frameworks_av-e93b6b7347a7846c8fd746542364ec11b0cd5124.tar.bz2
Add multichannel capability to AudioMixer
tests/test-mixer updated to handle multichannel. New mixer path is still disabled (kUseNewMixer = false). Subsequent CL will enable multichannel capability. Change-Id: I71dafa94cc1d9af567c285e0ded7c5c94e3ff926
Diffstat (limited to 'services/audioflinger/tests')
-rwxr-xr-xservices/audioflinger/tests/mixer_to_wav_tests.sh4
-rw-r--r--services/audioflinger/tests/test-mixer.cpp32
-rw-r--r--services/audioflinger/tests/test_utils.h4
3 files changed, 30 insertions, 10 deletions
diff --git a/services/audioflinger/tests/mixer_to_wav_tests.sh b/services/audioflinger/tests/mixer_to_wav_tests.sh
index 93bff47..9b39e77 100755
--- a/services/audioflinger/tests/mixer_to_wav_tests.sh
+++ b/services/audioflinger/tests/mixer_to_wav_tests.sh
@@ -72,9 +72,9 @@ function createwav() {
# track__Resample / track__genericResample
# track__NoResample / track__16BitsStereo / track__16BitsMono
# Aux buffer
- adb shell test-mixer $1 -s 9307 \
+ adb shell test-mixer $1 -c 5 -s 9307 \
-a /sdcard/aux9307gra.wav -o /sdcard/tm9307gra.wav \
- sine:2,1000,3000 sine:1,2000,9307 chirp:2,9307
+ sine:4,1000,3000 sine:1,2000,9307 chirp:3,9307
adb pull /sdcard/tm9307gra.wav $2
adb pull /sdcard/aux9307gra.wav $2
diff --git a/services/audioflinger/tests/test-mixer.cpp b/services/audioflinger/tests/test-mixer.cpp
index 3940702..5a00f40 100644
--- a/services/audioflinger/tests/test-mixer.cpp
+++ b/services/audioflinger/tests/test-mixer.cpp
@@ -36,11 +36,12 @@
using namespace android;
static void usage(const char* name) {
- fprintf(stderr, "Usage: %s [-f] [-m]"
+ fprintf(stderr, "Usage: %s [-f] [-m] [-c channels]"
" [-s sample-rate] [-o <output-file>] [-a <aux-buffer-file>] [-P csv]"
" (<input-file> | <command>)+\n", name);
fprintf(stderr, " -f enable floating point input track\n");
fprintf(stderr, " -m enable floating point mixer output\n");
+ fprintf(stderr, " -c number of mixer output channels\n");
fprintf(stderr, " -s mixer sample-rate\n");
fprintf(stderr, " -o <output-file> WAV file, pcm16 (or float if -m specified)\n");
fprintf(stderr, " -a <aux-buffer-file>\n");
@@ -90,7 +91,7 @@ int main(int argc, char* argv[]) {
std::vector<int32_t> Names;
std::vector<SignalProvider> Providers;
- for (int ch; (ch = getopt(argc, argv, "fms:o:a:P:")) != -1;) {
+ for (int ch; (ch = getopt(argc, argv, "fmc:s:o:a:P:")) != -1;) {
switch (ch) {
case 'f':
useInputFloat = true;
@@ -98,6 +99,9 @@ int main(int argc, char* argv[]) {
case 'm':
useMixerFloat = true;
break;
+ case 'c':
+ outputChannels = atoi(optarg);
+ break;
case 's':
outputSampleRate = atoi(optarg);
break;
@@ -160,7 +164,7 @@ int main(int argc, char* argv[]) {
parseCSV(argv[i] + strlen(sine), v);
if (v.size() == 3) {
- printf("creating sine(%d %d)\n", v[0], v[1]);
+ printf("creating sine(%d %d %d)\n", v[0], v[1], v[2]);
if (useInputFloat) {
Providers[i].setSine<float>(v[0], v[1], v[2], kSeconds);
} else {
@@ -191,6 +195,8 @@ int main(int argc, char* argv[]) {
const size_t outputFrameSize = outputChannels
* (useMixerFloat ? sizeof(float) : sizeof(int16_t));
const size_t outputSize = outputFrames * outputFrameSize;
+ const audio_channel_mask_t outputChannelMask =
+ audio_channel_out_mask_from_count(outputChannels);
void *outputAddr = NULL;
(void) posix_memalign(&outputAddr, 32, outputSize);
memset(outputAddr, 0, outputSize);
@@ -224,15 +230,29 @@ int main(int argc, char* argv[]) {
Names.push_back(name);
mixer->setBufferProvider(name, &Providers[i]);
mixer->setParameter(name, AudioMixer::TRACK, AudioMixer::MAIN_BUFFER,
- (void *) outputAddr);
+ (void *)outputAddr);
mixer->setParameter(
name,
AudioMixer::TRACK,
- AudioMixer::MIXER_FORMAT, (void *)mixerFormat);
- mixer->setParameter(name, AudioMixer::TRACK, AudioMixer::FORMAT,
+ AudioMixer::MIXER_FORMAT,
+ (void *)(uintptr_t)mixerFormat);
+ mixer->setParameter(
+ name,
+ AudioMixer::TRACK,
+ AudioMixer::FORMAT,
(void *)(uintptr_t)inputFormat);
mixer->setParameter(
name,
+ AudioMixer::TRACK,
+ AudioMixer::MIXER_CHANNEL_MASK,
+ (void *)(uintptr_t)outputChannelMask);
+ mixer->setParameter(
+ name,
+ AudioMixer::TRACK,
+ AudioMixer::CHANNEL_MASK,
+ (void *)(uintptr_t)channelMask);
+ mixer->setParameter(
+ name,
AudioMixer::RESAMPLE,
AudioMixer::SAMPLE_RATE,
(void *)(uintptr_t)Providers[i].getSampleRate());
diff --git a/services/audioflinger/tests/test_utils.h b/services/audioflinger/tests/test_utils.h
index f954292..e446216 100644
--- a/services/audioflinger/tests/test_utils.h
+++ b/services/audioflinger/tests/test_utils.h
@@ -195,7 +195,7 @@ static void createSine(void *vbuffer, size_t frames,
T yt = convertValue<T>(y);
for (size_t j = 0; j < channels; ++j) {
- buffer[i*channels + j] = yt / (j + 1);
+ buffer[i*channels + j] = yt / T(j + 1);
}
}
}
@@ -221,7 +221,7 @@ static void createChirp(void *vbuffer, size_t frames,
T yt = convertValue<T>(y);
for (size_t j = 0; j < channels; ++j) {
- buffer[i*channels + j] = yt / (j + 1);
+ buffer[i*channels + j] = yt / T(j + 1);
}
}
}