Index: chromecast/media/cma/backend/alsa/stream_mixer_alsa_unittest.cc |
diff --git a/chromecast/media/cma/backend/alsa/stream_mixer_alsa_unittest.cc b/chromecast/media/cma/backend/alsa/stream_mixer_alsa_unittest.cc |
index 2b7b358343a5b3a2acffba6dfefc9273d1890a3a..dcfdb2b5d7f8535bf2476c80bda16761aeb657fc 100644 |
--- a/chromecast/media/cma/backend/alsa/stream_mixer_alsa_unittest.cc |
+++ b/chromecast/media/cma/backend/alsa/stream_mixer_alsa_unittest.cc |
@@ -27,7 +27,7 @@ namespace { |
// Testing constants that are common to multiple test cases. |
const int kNumChannels = 2; |
-const int kBytesPerSample = 4; |
+const int kBytesPerSample = sizeof(int32_t); |
cleichner
2016/01/12 17:12:32
size_t
slan
2016/01/12 17:45:07
Are you proposing sizeof(size_t)? The datatype is
cleichner
2016/01/12 18:13:54
const int kBytesPerSample = sizeof(int32_t); shoul
slan
2016/01/12 18:30:04
Ah, of course.... Done.
|
const int kTestMaxReadSize = 4096; |
const int kTestSamplesPerSecond = 12345; |
@@ -36,73 +36,73 @@ const int kTestSamplesPerSecond = 12345; |
#define NUM_DATA_SETS 2u |
#define NUM_SAMPLES 64u |
-float kTestData[NUM_DATA_SETS][NUM_SAMPLES] = { |
+const int32_t kTestData[NUM_DATA_SETS][NUM_SAMPLES] = { |
{ |
- 0.034619, -0.62082, |
- -0.633705, 0.530298, |
- 0.89957, 0.864411, |
- 0.302309, 0.262931, |
- 0.780742, 0.0109042, |
- -0.602219, 0.255149, |
- -0.454606, 0.857073, |
- 0.798388, 0.167035, |
- 0.458046, 0.588998, |
- 0.206043, 0.569494, |
- 0.147803, 0.170857, |
- 0.648797, -0.475908, |
- -0.95678, -0.0743951, |
- 0.524809, -0.924101, |
- 0.65518, -0.322856, |
- -0.721563, 0.573805, |
- 0.451849, -0.814982, |
- -0.364712, 0.573464, |
- 0.537977, -0.381851, |
- 0.53816, -0.516168, |
- -0.0700984, 0.481362, |
- 0.98778, 0.852158, |
- -0.8815, -0.381422, |
- -0.230589, 0.466485, |
- -0.67107, 0.322319, |
- 0.892472, -0.320276, |
- -0.424015, 0.789646, |
- 0.462945, 0.826759, |
- 0.423481, 0.229418, |
- -0.354715, -0.961272, |
- 0.632236, -0.735754, |
- 0.872045, -0.709881, |
+ 74343736, -1333200799, |
+ -1360871126, 1138806283, |
+ 1931811865, 1856308487, |
+ 649203634, 564640023, |
+ 1676630678, 23416591, |
+ -1293255456, 547928305, |
+ -976258952, 1840550252, |
+ 1714525174, 358704931, |
+ 983646295, 1264863573, |
+ 442473973, 1222979052, |
+ 317404525, 366912613, |
+ 1393280948, -1022004648, |
+ -2054669405, -159762261, |
+ 1127018745, -1984491787, |
+ 1406988336, -693327981, |
+ -1549544744, 1232236854, |
+ 970338338, -1750160519, |
+ -783213057, 1231504562, |
+ 1155296810, -820018779, |
+ 1155689800, -1108462340, |
+ -150535168, 1033717023, |
+ 2121241397, 1829995370, |
+ -1893006836, -819097508, |
+ -495186107, 1001768909, |
+ -1441111852, 692174781, |
+ 1916569026, -687787473, |
+ -910565280, 1695751872, |
+ 994166817, 1775451433, |
+ 909418522, 492671403, |
+ -761744663, -2064315902, |
+ 1357716471, -1580019684, |
+ 1872702377, -1524457840, |
}, { |
- 0.908805, 0.331583, |
- 0.514689, 0.803509, |
- -0.459579, 0.106887, |
- 0.48557, 0.879381, |
- 0.688156, 0.692105, |
- -0.158415, -0.851542, |
- 0.660676, -0.33735, |
- -0.49228, 0.655911, |
- -0.014641, 0.66197, |
- -0.573276, 0.254189, |
- 0.666018, 0.98153, |
- -0.967202, -0.525433, |
- -0.838106, -0.484799, |
- 0.889906, -0.548501, |
- -0.889936, -0.432651, |
- 0.590209, 0.0801954, |
- -0.953734, -0.994462, |
- 0.341957, 0.565746, |
- 0.605983, -0.152254, |
- -0.232025, -0.54384, |
- -0.274306, 0.275652, |
- 0.276137, -0.367112, |
- -0.000647, 0.68271, |
- 0.179821, 0.646818, |
- 0.435898, -0.669994, |
- 0.624382, -0.752883, |
- -0.396175, 0.776021, |
- 0.600866, -0.2293, |
- 0.306964, -0.252563, |
- -0.055882, 0.480061, |
- -0.408798, -0.405238, |
- 0.61592, -0.16056, |
+ 1951643876, 712069070, |
+ 1105286211, 1725522438, |
+ -986938388, 229538084, |
+ 1042753634, 1888456317, |
+ 1477803757, 1486284170, |
+ -340193623, -1828672521, |
+ 1418790906, -724453609, |
+ -1057163251, 1408558147, |
+ -31441309, 1421569750, |
+ -1231100836, 545866721, |
+ 1430262764, 2107819625, |
+ -2077050480, -1128358776, |
+ -1799818931, -1041097926, |
+ 1911058583, -1177896929, |
+ -1911123008, -929110948, |
+ 1267464176, 172218310, |
+ -2048128170, -2135590884, |
+ 734347065, 1214930283, |
+ 1301338583, -326962976, |
+ -498269894, -1167887508, |
+ -589067650, 591958162, |
+ 592999692, -788367017, |
+ -1389422, 1466108561, |
+ 386162657, 1389031078, |
+ 936083827, -1438801160, |
+ 1340850135, -1616803932, |
+ -850779335, 1666492408, |
+ 1290349909, -492418001, |
+ 659200170, -542374913, |
+ -120005682, 1030923147, |
+ -877887021, -870241979, |
+ 1322678128, -344799975, |
} |
}; |
@@ -110,8 +110,8 @@ float kTestData[NUM_DATA_SETS][NUM_SAMPLES] = { |
scoped_ptr<::media::AudioBus> GetTestData(size_t index) { |
CHECK_LT(index, NUM_DATA_SETS); |
int frames = NUM_SAMPLES / kNumChannels; |
- auto data = |
- ::media::AudioBus::WrapMemory(kNumChannels, frames, kTestData[index]); |
+ auto data = ::media::AudioBus::Create(kNumChannels, frames); |
+ data->FromInterleaved(kTestData[index], frames, kBytesPerSample); |
return data; |
} |
@@ -394,6 +394,8 @@ TEST_F(StreamMixerAlsaTest, OneStreamMixesProperly) { |
const int kNumFrames = 32; |
input->SetData(GetTestData(0)); |
+ ASSERT_EQ(mock_alsa()->data().size(), 0u); |
+ |
// Write the stream to ALSA. |
EXPECT_CALL(*input, GetResampledData(_, kNumFrames)); |
EXPECT_CALL(*input, AfterWriteFrames(_)); |
@@ -405,8 +407,7 @@ TEST_F(StreamMixerAlsaTest, OneStreamMixesProperly) { |
ASSERT_GT(mock_alsa()->data().size(), 0u); |
actual->FromInterleaved( |
&(mock_alsa()->data()[0]), kNumFrames, kBytesPerSample); |
- auto expected = GetMixedAudioData(input); |
- CompareAudioData(*expected, *actual); |
+ CompareAudioData(input->data(), *actual); |
} |
TEST_F(StreamMixerAlsaTest, OneStreamIsScaledDownProperly) { |
@@ -422,8 +423,7 @@ TEST_F(StreamMixerAlsaTest, OneStreamIsScaledDownProperly) { |
const int kNumFrames = 32; |
ASSERT_EQ((int)sizeof(kTestData[0]), |
kNumChannels * kNumFrames * kBytesPerSample); |
- auto data = |
- ::media::AudioBus::WrapMemory(kNumChannels, kNumFrames, kTestData[0]); |
+ auto data = GetTestData(0); |
input->SetData(std::move(data)); |
// Set a volume multiplier on the stream. |
@@ -496,37 +496,38 @@ TEST_F(StreamMixerAlsaTest, TwoUnscaledStreamsMixProperlyWithEdgeCases) { |
mixer->AddInput(make_scoped_ptr(inputs[i])); |
} |
- // Create edge case data for the inputs. By mixing these two short streams, |
- // every combination of {-1.0, 0.0, 1.0} is tested. Note that this test case |
- // is intended to be a hand-checkable gut check. |
+ // Create edge case data for the inputs. These are respresented as raw |
kmackay
2016/01/12 17:19:28
nit: represented
slan
2016/01/12 17:45:07
Done.
|
+ // samples instead of floats to avoid alignment issues. By mixing these two |
cleichner
2016/01/12 17:12:32
Mind clarifying the nature of the issues?
slan
2016/01/12 17:45:07
Clarified.
|
+ // short streams, every combination of {-(2^31), 0, 2^31} is tested. Note |
+ // that this test case is intended to be a hand-checkable gut check. |
const int kNumFrames = 3; |
- float kEdgeData[2][8] = { |
+ const int32_t kEdgeData[2][8] = { |
{ |
- -1.0, -1.0, |
- -1.0, 0.0, |
- 0.0, 1.0, |
- 0.0, 0.0, |
+ -0x7FFFFFFF, -0x7FFFFFFF, |
cleichner
2016/01/12 17:12:32
This isn't 2^31, is the range meant to be inclusiv
kmackay
2016/01/12 17:19:28
+1, should be -0x80000000 (or std::numeric_limits<
slan
2016/01/12 17:45:07
Ah, darn. My mistake. Done.
|
+ -0x7FFFFFFF, 0.0, |
+ 0.0, 0x7FFFFFFF, |
+ 0.0, 0.0, |
}, { |
- -1.0, 0.0, |
- 1.0, 0.0, |
- 1.0, 1.0, |
- 0.0, 0.0, |
+ -0x7FFFFFFF, 0.0, |
+ 0x7FFFFFFF, 0.0, |
+ 0x7FFFFFFF, 0x7FFFFFFF, |
+ 0.0, 0.0, |
} |
}; |
- // Hand-calculate the results. Index 0 is clamped to -1.0 from -2.0. Index |
- // 5 is clamped from 2.0 to 1.0. |
- float kResult[8] = { |
- -1.0, -1.0, |
- 0.0, 0.0, |
- 1.0, 1.0, |
- 0.0, 0.0, |
+ // Hand-calculate the results. Index 0 is clamped from -(2^32) to -(2^31). |
+ // Index 5 is clamped from 2^32 to 2^31. |
+ const int32_t kResult[8] = { |
+ -0x7FFFFFFF, -0x7FFFFFFF, |
cleichner
2016/01/12 17:12:32
Ditto.
slan
2016/01/12 17:45:07
Done.
|
+ 0.0, 0.0, |
+ 0x7FFFFFFF, 0x7FFFFFFF, |
+ 0.0, 0.0, |
}; |
for (size_t i = 0; i < inputs.size(); ++i) { |
- auto test_data = |
- ::media::AudioBus::WrapMemory(kNumChannels, kNumFrames, kEdgeData[i]); |
+ auto test_data = ::media::AudioBus::Create(kNumChannels, kNumFrames); |
+ test_data->FromInterleaved(kEdgeData[i], kNumFrames, kBytesPerSample); |
inputs[i]->SetData(std::move(test_data)); |
EXPECT_CALL(*inputs[i], GetResampledData(_, kNumFrames)); |
EXPECT_CALL(*inputs[i], AfterWriteFrames(_)); |
@@ -536,8 +537,8 @@ TEST_F(StreamMixerAlsaTest, TwoUnscaledStreamsMixProperlyWithEdgeCases) { |
mixer->WriteFramesForTest(); |
// Use the hand-calculated results above. |
- auto expected = |
- ::media::AudioBus::WrapMemory(kNumChannels, kNumFrames, kResult); |
+ auto expected = ::media::AudioBus::Create(kNumChannels, kNumFrames); |
+ expected->FromInterleaved(kResult, kNumFrames, kBytesPerSample); |
// Get the actual stream rendered to ALSA, and compare it against the |
// expected stream. The stream should match exactly. |