diff options
author | Andy Hung <hunga@google.com> | 2014-07-17 21:30:53 -0700 |
---|---|---|
committer | Andy Hung <hunga@google.com> | 2014-07-24 18:40:33 -0700 |
commit | e93b6b7347a7846c8fd746542364ec11b0cd5124 (patch) | |
tree | d5498ae539ae460d4153026be9714129fc45a21f /services/audioflinger/tests | |
parent | 81e50d0c782cc18eab4ef40ecd6c7f36df50fea5 (diff) | |
download | frameworks_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-x | services/audioflinger/tests/mixer_to_wav_tests.sh | 4 | ||||
-rw-r--r-- | services/audioflinger/tests/test-mixer.cpp | 32 | ||||
-rw-r--r-- | services/audioflinger/tests/test_utils.h | 4 |
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); } } } |