Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2016)

Unified Diff: chromecast/media/cma/backend/alsa/stream_mixer_alsa_unittest.cc

Issue 1578983003: [Chromecast] Store ALSA Mixer test data as uint32_t. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Comment update, sizeof => size_t Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromecast/media/cma/backend/alsa/mock_alsa_wrapper.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..39760c7e4bbcfb6891056e016892a48df78c9050 100644
--- a/chromecast/media/cma/backend/alsa/stream_mixer_alsa_unittest.cc
+++ b/chromecast/media/cma/backend/alsa/stream_mixer_alsa_unittest.cc
@@ -26,8 +26,8 @@ namespace media {
namespace {
// Testing constants that are common to multiple test cases.
+const size_t kBytesPerSample = sizeof(int32_t);
const int kNumChannels = 2;
-const int kBytesPerSample = 4;
const int kTestMaxReadSize = 4096;
const int kTestSamplesPerSecond = 12345;
@@ -36,73 +36,77 @@ const int kTestSamplesPerSecond = 12345;
#define NUM_DATA_SETS 2u
#define NUM_SAMPLES 64u
-float kTestData[NUM_DATA_SETS][NUM_SAMPLES] = {
+// Note: Test data should be represented as 32-bit integers and copied into
+// ::media::AudioBus instances, rather than wrapping statically declared float
+// arrays. The latter method is brittle, as ::media::AudioBus requires 16-bit
+// alignment for internal data.
+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 +114,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 +398,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 +411,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 +427,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.
@@ -497,36 +501,42 @@ TEST_F(StreamMixerAlsaTest, TwoUnscaledStreamsMixProperlyWithEdgeCases) {
}
// 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.
+ // every combination of {-(2^31), 0, 2^31-1} is tested. This test case is
+ // intended to be a hand-checkable gut check.
+ // Note: Test data should be represented as 32-bit integers and copied into
+ // ::media::AudioBus instances, rather than wrapping statically declared float
+ // arrays. The latter method is brittle, as ::media::AudioBus requires 16-bit
+ // alignment for internal data.
const int kNumFrames = 3;
- float kEdgeData[2][8] = {
+ const int32_t kMaxSample = std::numeric_limits<int32_t>::max();
+ const int32_t kMinSample = std::numeric_limits<int32_t>::min();
+ const int32_t kEdgeData[2][8] = {
{
- -1.0, -1.0,
- -1.0, 0.0,
- 0.0, 1.0,
- 0.0, 0.0,
+ kMinSample, kMinSample,
+ kMinSample, 0.0,
+ 0.0, kMaxSample,
+ 0.0, 0.0,
}, {
- -1.0, 0.0,
- 1.0, 0.0,
- 1.0, 1.0,
- 0.0, 0.0,
+ kMinSample, 0.0,
+ kMaxSample, 0.0,
+ kMaxSample, kMaxSample,
+ 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 to -(2^31). Index 5 is
+ // clamped to 2^31-1.
+ const int32_t kResult[8] = {
+ kMinSample, kMinSample,
+ 0.0, 0.0,
+ kMaxSample, kMaxSample,
+ 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 +546,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.
« no previous file with comments | « chromecast/media/cma/backend/alsa/mock_alsa_wrapper.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698