From 63de3232f725a6a8471e9b96dc7bb0742f53c696 Mon Sep 17 00:00:00 2001
From: Thomas Goyne <plorkyeran@aegisub.org>
Date: Thu, 10 Jul 2014 10:21:18 -0700
Subject: [PATCH] Add test for channel downmixing

---
 tests/tests/audio.cpp | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/tests/tests/audio.cpp b/tests/tests/audio.cpp
index e486c7084..aedb5fd9a 100644
--- a/tests/tests/audio.cpp
+++ b/tests/tests/audio.cpp
@@ -236,6 +236,35 @@ TEST(lagi_audio, sample_doubling) {
 	}
 }
 
+TEST(lagi_audio, stereo_downmix) {
+	struct AudioProvider : agi::AudioProvider {
+		AudioProvider() {
+			channels = 2;
+			num_samples = 90 * 480000;
+			decoded_samples = num_samples;
+			sample_rate = 480000;
+			bytes_per_sample = 2;
+			float_samples = false;
+		}
+
+		void FillBuffer(void *buf, int64_t start, int64_t count) const override {
+			auto out = static_cast<int16_t *>(buf);
+			for (int64_t end = start + count; start < end; ++start) {
+				*out++ = (int16_t)(start * 2);
+				*out++ = 0;
+			}
+		}
+	};
+
+	auto provider = agi::CreateConvertAudioProvider(agi::make_unique<AudioProvider>());
+	EXPECT_EQ(1, provider->GetChannels());
+
+	int16_t samples[100];
+	provider->GetAudio(samples, 0, 100);
+	for (int i = 0; i < 100; ++i)
+		EXPECT_EQ(i, samples[i]);
+}
+
 TEST(lagi_audio, pcm_simple) {
 	auto path = agi::Path().Decode("?temp/pcm_simple");
 	{
-- 
GitLab