Loading media/libeffects/downmix/benchmark/downmix_benchmark.cpp +60 −36 Original line number Diff line number Diff line Loading @@ -30,30 +30,30 @@ extern audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM; static constexpr audio_channel_mask_t kChannelPositionMasks[] = { // AUDIO_CHANNEL_OUT_MONO, // AUDIO_CHANNEL_OUT_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT, AUDIO_CHANNEL_OUT_FRONT_CENTER, AUDIO_CHANNEL_OUT_STEREO, AUDIO_CHANNEL_OUT_2POINT1, // AUDIO_CHANNEL_OUT_2POINT0POINT2, AUDIO_CHANNEL_OUT_2POINT0POINT2, AUDIO_CHANNEL_OUT_QUAD, AUDIO_CHANNEL_OUT_QUAD_BACK, AUDIO_CHANNEL_OUT_QUAD_SIDE, AUDIO_CHANNEL_OUT_SURROUND, // AUDIO_CHANNEL_OUT_2POINT1POINT2, // AUDIO_CHANNEL_OUT_3POINT0POINT2, AUDIO_CHANNEL_OUT_2POINT1POINT2, AUDIO_CHANNEL_OUT_3POINT0POINT2, AUDIO_CHANNEL_OUT_PENTA, // AUDIO_CHANNEL_OUT_3POINT1POINT2, AUDIO_CHANNEL_OUT_3POINT1POINT2, AUDIO_CHANNEL_OUT_5POINT1, AUDIO_CHANNEL_OUT_5POINT1_BACK, AUDIO_CHANNEL_OUT_5POINT1_SIDE, AUDIO_CHANNEL_OUT_6POINT1, // AUDIO_CHANNEL_OUT_5POINT1POINT2, AUDIO_CHANNEL_OUT_5POINT1POINT2, AUDIO_CHANNEL_OUT_7POINT1, // AUDIO_CHANNEL_OUT_5POINT1POINT4, // AUDIO_CHANNEL_OUT_7POINT1POINT2, // AUDIO_CHANNEL_OUT_7POINT1POINT4, // AUDIO_CHANNEL_OUT_13POINT_360RA, // AUDIO_CHANNEL_OUT_22POINT2, AUDIO_CHANNEL_OUT_5POINT1POINT4, AUDIO_CHANNEL_OUT_7POINT1POINT2, AUDIO_CHANNEL_OUT_7POINT1POINT4, AUDIO_CHANNEL_OUT_13POINT_360RA, AUDIO_CHANNEL_OUT_22POINT2, }; static constexpr effect_uuid_t downmix_uuid = { Loading @@ -64,32 +64,56 @@ static constexpr size_t kFrameCount = 1000; /* Pixel 3XL downmix_benchmark: #BM_Downmix/0 4719 ns 4704 ns 148890 #BM_Downmix/1 5050 ns 5034 ns 139104 #BM_Downmix/2 1506 ns 1501 ns 466795 #BM_Downmix/3 1554 ns 1549 ns 444498 #BM_Downmix/4 1514 ns 1510 ns 463697 #BM_Downmix/5 4442 ns 4428 ns 158016 #BM_Downmix/6 4404 ns 4378 ns 159858 #BM_Downmix/7 4851 ns 4835 ns 144681 #BM_Downmix/8 4848 ns 4832 ns 144560 #BM_Downmix/9 4859 ns 4844 ns 144496 #BM_Downmix/10 5806 ns 5788 ns 120751 #BM_Downmix/11 5051 ns 5036 ns 138920 #BM_Downmix/0 4723 ns 4708 ns 148694 #BM_Downmix/1 4717 ns 4702 ns 148873 #BM_Downmix/2 4803 ns 4788 ns 145893 #BM_Downmix/3 5056 ns 5041 ns 139110 #BM_Downmix/4 4710 ns 4696 ns 149625 #BM_Downmix/5 1514 ns 1509 ns 463694 #BM_Downmix/6 1513 ns 1509 ns 463451 #BM_Downmix/7 1516 ns 1511 ns 463899 #BM_Downmix/8 4445 ns 4431 ns 157831 #BM_Downmix/9 5081 ns 5065 ns 138412 #BM_Downmix/10 4354 ns 4341 ns 161247 #BM_Downmix/11 4411 ns 4397 ns 158893 #BM_Downmix/12 4434 ns 4420 ns 157992 #BM_Downmix/13 4845 ns 4830 ns 144873 #BM_Downmix/14 4851 ns 4835 ns 144954 #BM_Downmix/15 4884 ns 4870 ns 144233 #BM_Downmix/16 5832 ns 5813 ns 120565 #BM_Downmix/17 5241 ns 5224 ns 133927 #BM_Downmix/18 5044 ns 5028 ns 139131 #BM_Downmix/19 5244 ns 5227 ns 132315 #BM_Downmix/20 5943 ns 5923 ns 117759 #BM_Downmix/21 5990 ns 5971 ns 117263 #BM_Downmix/22 4468 ns 4454 ns 156689 #BM_Downmix/23 7306 ns 7286 ns 95911 -- downmix_benchmark: (generic fold) #BM_Downmix/0 4723 ns 4708 ns 148605 #BM_Downmix/1 5081 ns 5065 ns 137920 #BM_Downmix/2 4472 ns 4458 ns 160047 #BM_Downmix/3 4359 ns 4345 ns 158744 #BM_Downmix/4 4722 ns 4706 ns 149648 #BM_Downmix/5 4426 ns 4412 ns 158618 #BM_Downmix/6 4377 ns 4363 ns 160217 #BM_Downmix/7 5262 ns 5245 ns 133155 #BM_Downmix/8 5265 ns 5248 ns 132817 #BM_Downmix/9 5246 ns 5229 ns 133932 #BM_Downmix/10 5819 ns 5801 ns 120295 #BM_Downmix/11 6030 ns 6011 ns 116619 #BM_Downmix/0 4722 ns 4707 ns 149847 #BM_Downmix/1 4714 ns 4698 ns 148748 #BM_Downmix/2 4794 ns 4779 ns 145661 #BM_Downmix/3 5053 ns 5035 ns 139172 #BM_Downmix/4 4695 ns 4678 ns 149762 #BM_Downmix/5 4381 ns 4368 ns 159675 #BM_Downmix/6 4387 ns 4373 ns 160267 #BM_Downmix/7 4732 ns 4717 ns 148514 #BM_Downmix/8 4430 ns 4415 ns 158133 #BM_Downmix/9 5101 ns 5084 ns 138353 #BM_Downmix/10 4356 ns 4343 ns 160821 #BM_Downmix/11 4397 ns 4383 ns 159995 #BM_Downmix/12 4438 ns 4424 ns 158117 #BM_Downmix/13 5243 ns 5226 ns 133863 #BM_Downmix/14 5259 ns 5242 ns 131855 #BM_Downmix/15 5245 ns 5228 ns 133686 #BM_Downmix/16 5829 ns 5809 ns 120543 #BM_Downmix/17 5245 ns 5228 ns 133533 #BM_Downmix/18 5935 ns 5916 ns 118282 #BM_Downmix/19 5263 ns 5245 ns 133657 #BM_Downmix/20 5998 ns 5978 ns 114693 #BM_Downmix/21 5989 ns 5969 ns 117450 #BM_Downmix/22 4442 ns 4431 ns 157913 #BM_Downmix/23 7309 ns 7290 ns 95797 */ static void BM_Downmix(benchmark::State& state) { Loading media/libeffects/downmix/tests/downmix_tests.cpp +25 −13 Original line number Diff line number Diff line Loading @@ -26,32 +26,37 @@ extern audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM; static constexpr audio_channel_mask_t kChannelPositionMasks[] = { // AUDIO_CHANNEL_OUT_MONO, // AUDIO_CHANNEL_OUT_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT, // Legacy: the downmix effect treats MONO as FRONT_LEFT only. // The AudioMixer interprets MONO as a special case requiring // channel replication, bypassing the downmix effect. AUDIO_CHANNEL_OUT_FRONT_CENTER, AUDIO_CHANNEL_OUT_STEREO, AUDIO_CHANNEL_OUT_2POINT1, // AUDIO_CHANNEL_OUT_2POINT0POINT2, AUDIO_CHANNEL_OUT_2POINT0POINT2, AUDIO_CHANNEL_OUT_QUAD, AUDIO_CHANNEL_OUT_QUAD_BACK, AUDIO_CHANNEL_OUT_QUAD_SIDE, AUDIO_CHANNEL_OUT_SURROUND, // AUDIO_CHANNEL_OUT_2POINT1POINT2, // AUDIO_CHANNEL_OUT_3POINT0POINT2, AUDIO_CHANNEL_OUT_2POINT1POINT2, AUDIO_CHANNEL_OUT_3POINT0POINT2, AUDIO_CHANNEL_OUT_PENTA, // AUDIO_CHANNEL_OUT_3POINT1POINT2, AUDIO_CHANNEL_OUT_3POINT1POINT2, AUDIO_CHANNEL_OUT_5POINT1, AUDIO_CHANNEL_OUT_5POINT1_BACK, AUDIO_CHANNEL_OUT_5POINT1_SIDE, AUDIO_CHANNEL_OUT_6POINT1, // AUDIO_CHANNEL_OUT_5POINT1POINT2, AUDIO_CHANNEL_OUT_5POINT1POINT2, AUDIO_CHANNEL_OUT_7POINT1, // AUDIO_CHANNEL_OUT_5POINT1POINT4, // AUDIO_CHANNEL_OUT_7POINT1POINT2, // AUDIO_CHANNEL_OUT_7POINT1POINT4, // AUDIO_CHANNEL_OUT_13POINT_360RA, // AUDIO_CHANNEL_OUT_22POINT2, AUDIO_CHANNEL_OUT_5POINT1POINT4, AUDIO_CHANNEL_OUT_7POINT1POINT2, AUDIO_CHANNEL_OUT_7POINT1POINT4, AUDIO_CHANNEL_OUT_13POINT_360RA, AUDIO_CHANNEL_OUT_22POINT2, }; static constexpr audio_channel_mask_t kConsideredChannels = (audio_channel_mask_t)(AUDIO_CHANNEL_OUT_7POINT1 | AUDIO_CHANNEL_OUT_BACK_CENTER); // Downmix doesn't change with sample rate static constexpr size_t kSampleRates[] = { 48000, Loading Loading @@ -100,7 +105,8 @@ public: ASSERT_LT(index, FCC_24); const int pairIndex = pairIdxFromChannelIdx(index); const AUDIO_GEOMETRY_SIDE side = sideFromChannelIdx(index); channel &= ~(1 << index); const int channelBit = 1 << index; channel &= ~channelBit; // Generate a +1, -1 alternating stream in one channel, which has variance 1. auto indata = input.data(); Loading @@ -127,6 +133,12 @@ public: // Confirm exactly the mix amount prescribed by the existing downmix effect. // For future changes to the downmix effect, the nearness needs to be relaxed // to compare behavior S or earlier. if ((channelBit & kConsideredChannels) == 0) { // for channels not considered, expect 0 power for legacy downmix EXPECT_EQ(0.f, power[0]); EXPECT_EQ(0.f, power[1]); continue; } constexpr float POWER_TOLERANCE = 0.01; // for variance sum error. switch (side) { case AUDIO_GEOMETRY_SIDE_LEFT: Loading Loading
media/libeffects/downmix/benchmark/downmix_benchmark.cpp +60 −36 Original line number Diff line number Diff line Loading @@ -30,30 +30,30 @@ extern audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM; static constexpr audio_channel_mask_t kChannelPositionMasks[] = { // AUDIO_CHANNEL_OUT_MONO, // AUDIO_CHANNEL_OUT_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT, AUDIO_CHANNEL_OUT_FRONT_CENTER, AUDIO_CHANNEL_OUT_STEREO, AUDIO_CHANNEL_OUT_2POINT1, // AUDIO_CHANNEL_OUT_2POINT0POINT2, AUDIO_CHANNEL_OUT_2POINT0POINT2, AUDIO_CHANNEL_OUT_QUAD, AUDIO_CHANNEL_OUT_QUAD_BACK, AUDIO_CHANNEL_OUT_QUAD_SIDE, AUDIO_CHANNEL_OUT_SURROUND, // AUDIO_CHANNEL_OUT_2POINT1POINT2, // AUDIO_CHANNEL_OUT_3POINT0POINT2, AUDIO_CHANNEL_OUT_2POINT1POINT2, AUDIO_CHANNEL_OUT_3POINT0POINT2, AUDIO_CHANNEL_OUT_PENTA, // AUDIO_CHANNEL_OUT_3POINT1POINT2, AUDIO_CHANNEL_OUT_3POINT1POINT2, AUDIO_CHANNEL_OUT_5POINT1, AUDIO_CHANNEL_OUT_5POINT1_BACK, AUDIO_CHANNEL_OUT_5POINT1_SIDE, AUDIO_CHANNEL_OUT_6POINT1, // AUDIO_CHANNEL_OUT_5POINT1POINT2, AUDIO_CHANNEL_OUT_5POINT1POINT2, AUDIO_CHANNEL_OUT_7POINT1, // AUDIO_CHANNEL_OUT_5POINT1POINT4, // AUDIO_CHANNEL_OUT_7POINT1POINT2, // AUDIO_CHANNEL_OUT_7POINT1POINT4, // AUDIO_CHANNEL_OUT_13POINT_360RA, // AUDIO_CHANNEL_OUT_22POINT2, AUDIO_CHANNEL_OUT_5POINT1POINT4, AUDIO_CHANNEL_OUT_7POINT1POINT2, AUDIO_CHANNEL_OUT_7POINT1POINT4, AUDIO_CHANNEL_OUT_13POINT_360RA, AUDIO_CHANNEL_OUT_22POINT2, }; static constexpr effect_uuid_t downmix_uuid = { Loading @@ -64,32 +64,56 @@ static constexpr size_t kFrameCount = 1000; /* Pixel 3XL downmix_benchmark: #BM_Downmix/0 4719 ns 4704 ns 148890 #BM_Downmix/1 5050 ns 5034 ns 139104 #BM_Downmix/2 1506 ns 1501 ns 466795 #BM_Downmix/3 1554 ns 1549 ns 444498 #BM_Downmix/4 1514 ns 1510 ns 463697 #BM_Downmix/5 4442 ns 4428 ns 158016 #BM_Downmix/6 4404 ns 4378 ns 159858 #BM_Downmix/7 4851 ns 4835 ns 144681 #BM_Downmix/8 4848 ns 4832 ns 144560 #BM_Downmix/9 4859 ns 4844 ns 144496 #BM_Downmix/10 5806 ns 5788 ns 120751 #BM_Downmix/11 5051 ns 5036 ns 138920 #BM_Downmix/0 4723 ns 4708 ns 148694 #BM_Downmix/1 4717 ns 4702 ns 148873 #BM_Downmix/2 4803 ns 4788 ns 145893 #BM_Downmix/3 5056 ns 5041 ns 139110 #BM_Downmix/4 4710 ns 4696 ns 149625 #BM_Downmix/5 1514 ns 1509 ns 463694 #BM_Downmix/6 1513 ns 1509 ns 463451 #BM_Downmix/7 1516 ns 1511 ns 463899 #BM_Downmix/8 4445 ns 4431 ns 157831 #BM_Downmix/9 5081 ns 5065 ns 138412 #BM_Downmix/10 4354 ns 4341 ns 161247 #BM_Downmix/11 4411 ns 4397 ns 158893 #BM_Downmix/12 4434 ns 4420 ns 157992 #BM_Downmix/13 4845 ns 4830 ns 144873 #BM_Downmix/14 4851 ns 4835 ns 144954 #BM_Downmix/15 4884 ns 4870 ns 144233 #BM_Downmix/16 5832 ns 5813 ns 120565 #BM_Downmix/17 5241 ns 5224 ns 133927 #BM_Downmix/18 5044 ns 5028 ns 139131 #BM_Downmix/19 5244 ns 5227 ns 132315 #BM_Downmix/20 5943 ns 5923 ns 117759 #BM_Downmix/21 5990 ns 5971 ns 117263 #BM_Downmix/22 4468 ns 4454 ns 156689 #BM_Downmix/23 7306 ns 7286 ns 95911 -- downmix_benchmark: (generic fold) #BM_Downmix/0 4723 ns 4708 ns 148605 #BM_Downmix/1 5081 ns 5065 ns 137920 #BM_Downmix/2 4472 ns 4458 ns 160047 #BM_Downmix/3 4359 ns 4345 ns 158744 #BM_Downmix/4 4722 ns 4706 ns 149648 #BM_Downmix/5 4426 ns 4412 ns 158618 #BM_Downmix/6 4377 ns 4363 ns 160217 #BM_Downmix/7 5262 ns 5245 ns 133155 #BM_Downmix/8 5265 ns 5248 ns 132817 #BM_Downmix/9 5246 ns 5229 ns 133932 #BM_Downmix/10 5819 ns 5801 ns 120295 #BM_Downmix/11 6030 ns 6011 ns 116619 #BM_Downmix/0 4722 ns 4707 ns 149847 #BM_Downmix/1 4714 ns 4698 ns 148748 #BM_Downmix/2 4794 ns 4779 ns 145661 #BM_Downmix/3 5053 ns 5035 ns 139172 #BM_Downmix/4 4695 ns 4678 ns 149762 #BM_Downmix/5 4381 ns 4368 ns 159675 #BM_Downmix/6 4387 ns 4373 ns 160267 #BM_Downmix/7 4732 ns 4717 ns 148514 #BM_Downmix/8 4430 ns 4415 ns 158133 #BM_Downmix/9 5101 ns 5084 ns 138353 #BM_Downmix/10 4356 ns 4343 ns 160821 #BM_Downmix/11 4397 ns 4383 ns 159995 #BM_Downmix/12 4438 ns 4424 ns 158117 #BM_Downmix/13 5243 ns 5226 ns 133863 #BM_Downmix/14 5259 ns 5242 ns 131855 #BM_Downmix/15 5245 ns 5228 ns 133686 #BM_Downmix/16 5829 ns 5809 ns 120543 #BM_Downmix/17 5245 ns 5228 ns 133533 #BM_Downmix/18 5935 ns 5916 ns 118282 #BM_Downmix/19 5263 ns 5245 ns 133657 #BM_Downmix/20 5998 ns 5978 ns 114693 #BM_Downmix/21 5989 ns 5969 ns 117450 #BM_Downmix/22 4442 ns 4431 ns 157913 #BM_Downmix/23 7309 ns 7290 ns 95797 */ static void BM_Downmix(benchmark::State& state) { Loading
media/libeffects/downmix/tests/downmix_tests.cpp +25 −13 Original line number Diff line number Diff line Loading @@ -26,32 +26,37 @@ extern audio_effect_library_t AUDIO_EFFECT_LIBRARY_INFO_SYM; static constexpr audio_channel_mask_t kChannelPositionMasks[] = { // AUDIO_CHANNEL_OUT_MONO, // AUDIO_CHANNEL_OUT_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT, // Legacy: the downmix effect treats MONO as FRONT_LEFT only. // The AudioMixer interprets MONO as a special case requiring // channel replication, bypassing the downmix effect. AUDIO_CHANNEL_OUT_FRONT_CENTER, AUDIO_CHANNEL_OUT_STEREO, AUDIO_CHANNEL_OUT_2POINT1, // AUDIO_CHANNEL_OUT_2POINT0POINT2, AUDIO_CHANNEL_OUT_2POINT0POINT2, AUDIO_CHANNEL_OUT_QUAD, AUDIO_CHANNEL_OUT_QUAD_BACK, AUDIO_CHANNEL_OUT_QUAD_SIDE, AUDIO_CHANNEL_OUT_SURROUND, // AUDIO_CHANNEL_OUT_2POINT1POINT2, // AUDIO_CHANNEL_OUT_3POINT0POINT2, AUDIO_CHANNEL_OUT_2POINT1POINT2, AUDIO_CHANNEL_OUT_3POINT0POINT2, AUDIO_CHANNEL_OUT_PENTA, // AUDIO_CHANNEL_OUT_3POINT1POINT2, AUDIO_CHANNEL_OUT_3POINT1POINT2, AUDIO_CHANNEL_OUT_5POINT1, AUDIO_CHANNEL_OUT_5POINT1_BACK, AUDIO_CHANNEL_OUT_5POINT1_SIDE, AUDIO_CHANNEL_OUT_6POINT1, // AUDIO_CHANNEL_OUT_5POINT1POINT2, AUDIO_CHANNEL_OUT_5POINT1POINT2, AUDIO_CHANNEL_OUT_7POINT1, // AUDIO_CHANNEL_OUT_5POINT1POINT4, // AUDIO_CHANNEL_OUT_7POINT1POINT2, // AUDIO_CHANNEL_OUT_7POINT1POINT4, // AUDIO_CHANNEL_OUT_13POINT_360RA, // AUDIO_CHANNEL_OUT_22POINT2, AUDIO_CHANNEL_OUT_5POINT1POINT4, AUDIO_CHANNEL_OUT_7POINT1POINT2, AUDIO_CHANNEL_OUT_7POINT1POINT4, AUDIO_CHANNEL_OUT_13POINT_360RA, AUDIO_CHANNEL_OUT_22POINT2, }; static constexpr audio_channel_mask_t kConsideredChannels = (audio_channel_mask_t)(AUDIO_CHANNEL_OUT_7POINT1 | AUDIO_CHANNEL_OUT_BACK_CENTER); // Downmix doesn't change with sample rate static constexpr size_t kSampleRates[] = { 48000, Loading Loading @@ -100,7 +105,8 @@ public: ASSERT_LT(index, FCC_24); const int pairIndex = pairIdxFromChannelIdx(index); const AUDIO_GEOMETRY_SIDE side = sideFromChannelIdx(index); channel &= ~(1 << index); const int channelBit = 1 << index; channel &= ~channelBit; // Generate a +1, -1 alternating stream in one channel, which has variance 1. auto indata = input.data(); Loading @@ -127,6 +133,12 @@ public: // Confirm exactly the mix amount prescribed by the existing downmix effect. // For future changes to the downmix effect, the nearness needs to be relaxed // to compare behavior S or earlier. if ((channelBit & kConsideredChannels) == 0) { // for channels not considered, expect 0 power for legacy downmix EXPECT_EQ(0.f, power[0]); EXPECT_EQ(0.f, power[1]); continue; } constexpr float POWER_TOLERANCE = 0.01; // for variance sum error. switch (side) { case AUDIO_GEOMETRY_SIDE_LEFT: Loading