From 7fd78666d1f6f532bc43e482af37f11abda1a31d Mon Sep 17 00:00:00 2001 From: christosts Date: Thu, 12 Nov 2020 17:10:17 +0000 Subject: [PATCH] Add Robolectric playback tests for existing MKA assets PiperOrigin-RevId: 342060794 --- .../exoplayer2/e2etest/MkaPlaybackTest.java | 78 ++++++++++ .../mka/bear-flac-16bit.mka.dump | 32 ++++ .../mka/bear-flac-24bit.mka.dump | 32 ++++ .../mka/bear-opus-negative-gain.mka.dump | 140 ++++++++++++++++++ .../playbackdumps/mka/bear-opus.mka.dump | 140 ++++++++++++++++++ 5 files changed, 422 insertions(+) create mode 100644 library/core/src/test/java/com/google/android/exoplayer2/e2etest/MkaPlaybackTest.java create mode 100644 testdata/src/test/assets/playbackdumps/mka/bear-flac-16bit.mka.dump create mode 100644 testdata/src/test/assets/playbackdumps/mka/bear-flac-24bit.mka.dump create mode 100644 testdata/src/test/assets/playbackdumps/mka/bear-opus-negative-gain.mka.dump create mode 100644 testdata/src/test/assets/playbackdumps/mka/bear-opus.mka.dump diff --git a/library/core/src/test/java/com/google/android/exoplayer2/e2etest/MkaPlaybackTest.java b/library/core/src/test/java/com/google/android/exoplayer2/e2etest/MkaPlaybackTest.java new file mode 100644 index 0000000000..b58acd5f79 --- /dev/null +++ b/library/core/src/test/java/com/google/android/exoplayer2/e2etest/MkaPlaybackTest.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.android.exoplayer2.e2etest; + +import android.graphics.SurfaceTexture; +import android.view.Surface; +import androidx.test.core.app.ApplicationProvider; +import com.google.android.exoplayer2.MediaItem; +import com.google.android.exoplayer2.Player; +import com.google.android.exoplayer2.SimpleExoPlayer; +import com.google.android.exoplayer2.robolectric.PlaybackOutput; +import com.google.android.exoplayer2.robolectric.ShadowMediaCodecConfig; +import com.google.android.exoplayer2.robolectric.TestPlayerRunHelper; +import com.google.android.exoplayer2.testutil.AutoAdvancingFakeClock; +import com.google.android.exoplayer2.testutil.DumpFileAsserts; +import com.google.common.collect.ImmutableList; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.ParameterizedRobolectricTestRunner; +import org.robolectric.ParameterizedRobolectricTestRunner.Parameters; +import org.robolectric.annotation.Config; + +/** End-to-end tests using MKA samples. */ +// TODO(b/143232359): Remove once https://issuetracker.google.com/143232359 is resolved. +@Config(sdk = 29) +@RunWith(ParameterizedRobolectricTestRunner.class) +public final class MkaPlaybackTest { + @Parameters(name = "{0}") + public static ImmutableList mediaSamples() { + return ImmutableList.of( + "bear-flac-16bit.mka", + "bear-flac-24bit.mka", + "bear-opus.mka", + "bear-opus-negative-gain.mka"); + } + + @ParameterizedRobolectricTestRunner.Parameter public String inputFile; + + @Rule + public ShadowMediaCodecConfig mediaCodecConfig = + ShadowMediaCodecConfig.forAllSupportedMimeTypes(); + + @Test + public void test() throws Exception { + SimpleExoPlayer player = + new SimpleExoPlayer.Builder(ApplicationProvider.getApplicationContext()) + .setClock(new AutoAdvancingFakeClock()) + .build(); + player.setVideoSurface(new Surface(new SurfaceTexture(/* texName= */ 1))); + PlaybackOutput playbackOutput = PlaybackOutput.register(player, mediaCodecConfig); + + player.setMediaItem(MediaItem.fromUri("asset:///media/mka/" + inputFile)); + player.prepare(); + player.play(); + TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_ENDED); + player.release(); + + DumpFileAsserts.assertOutput( + ApplicationProvider.getApplicationContext(), + playbackOutput, + "playbackdumps/mka/" + inputFile + ".dump"); + } +} diff --git a/testdata/src/test/assets/playbackdumps/mka/bear-flac-16bit.mka.dump b/testdata/src/test/assets/playbackdumps/mka/bear-flac-16bit.mka.dump new file mode 100644 index 0000000000..17b7a89085 --- /dev/null +++ b/testdata/src/test/assets/playbackdumps/mka/bear-flac-16bit.mka.dump @@ -0,0 +1,32 @@ +MediaCodec (audio/flac): + buffers.length = 30 + buffers[0] = length 3608, hash EE7EFC6C + buffers[1] = length 4278, hash 7BAF8A9 + buffers[2] = length 3763, hash 40C70127 + buffers[3] = length 3568, hash 51FBCC44 + buffers[4] = length 4339, hash FFA8D5A2 + buffers[5] = length 3788, hash 5F5CFFDD + buffers[6] = length 3714, hash DD46DF94 + buffers[7] = length 3766, hash 4D96187C + buffers[8] = length 3806, hash 86DB14D4 + buffers[9] = length 3755, hash AF217312 + buffers[10] = length 3824, hash 37A61E58 + buffers[11] = length 4785, hash F5200FA7 + buffers[12] = length 4619, hash 8D64F73D + buffers[13] = length 3915, hash 73500C2C + buffers[14] = length 4763, hash 2FCDE683 + buffers[15] = length 4154, hash A5AB5A5D + buffers[16] = length 4547, hash BF9A246A + buffers[17] = length 4005, hash 83EE3482 + buffers[18] = length 3905, hash E6EE5342 + buffers[19] = length 3797, hash AE6F03B2 + buffers[20] = length 3863, hash E022115D + buffers[21] = length 3958, hash B3F0059 + buffers[22] = length 3856, hash 81DEB55F + buffers[23] = length 3958, hash EC7E2889 + buffers[24] = length 3937, hash 2CC2FD97 + buffers[25] = length 3934, hash F80FF227 + buffers[26] = length 3954, hash 17C9E273 + buffers[27] = length 2299, hash 3F1A98BF + buffers[28] = length 333, hash FC52D488 + buffers[29] = length 0, hash 1 diff --git a/testdata/src/test/assets/playbackdumps/mka/bear-flac-24bit.mka.dump b/testdata/src/test/assets/playbackdumps/mka/bear-flac-24bit.mka.dump new file mode 100644 index 0000000000..75bfed7e79 --- /dev/null +++ b/testdata/src/test/assets/playbackdumps/mka/bear-flac-24bit.mka.dump @@ -0,0 +1,32 @@ +MediaCodec (audio/flac): + buffers.length = 30 + buffers[0] = length 3610, hash C0423D1B + buffers[1] = length 4280, hash 2E8BEA95 + buffers[2] = length 3765, hash EDE8EB27 + buffers[3] = length 3570, hash 49DC5122 + buffers[4] = length 4341, hash 54B19279 + buffers[5] = length 3790, hash 2A45E2ED + buffers[6] = length 3716, hash 7C9037F7 + buffers[7] = length 3768, hash AD0272F9 + buffers[8] = length 3808, hash 5EA67F93 + buffers[9] = length 3757, hash 49A182E0 + buffers[10] = length 3826, hash 3B1D36A5 + buffers[11] = length 4787, hash BAD9FD83 + buffers[12] = length 4621, hash FF75E71D + buffers[13] = length 3917, hash 576128F0 + buffers[14] = length 4765, hash 533216EE + buffers[15] = length 4156, hash CABB5909 + buffers[16] = length 4549, hash 7E10A60C + buffers[17] = length 4007, hash 10851893 + buffers[18] = length 3907, hash E54710ED + buffers[19] = length 3799, hash 2A466310 + buffers[20] = length 3865, hash E0187577 + buffers[21] = length 3960, hash BD8BAE69 + buffers[22] = length 3858, hash A5AFCF25 + buffers[23] = length 3960, hash 68C635 + buffers[24] = length 3939, hash 6D7A7AB9 + buffers[25] = length 3936, hash 70272966 + buffers[26] = length 3956, hash 6E328CC8 + buffers[27] = length 2476, hash AF155313 + buffers[28] = length 335, hash 1B7D092B + buffers[29] = length 0, hash 1 diff --git a/testdata/src/test/assets/playbackdumps/mka/bear-opus-negative-gain.mka.dump b/testdata/src/test/assets/playbackdumps/mka/bear-opus-negative-gain.mka.dump new file mode 100644 index 0000000000..5c3a9f9286 --- /dev/null +++ b/testdata/src/test/assets/playbackdumps/mka/bear-opus-negative-gain.mka.dump @@ -0,0 +1,140 @@ +MediaCodec (audio/opus): + buffers.length = 138 + buffers[0] = length 375, hash 147EA9B + buffers[1] = length 187, hash C8ADD7C2 + buffers[2] = length 175, hash A6D94D6E + buffers[3] = length 162, hash 45359884 + buffers[4] = length 163, hash CBB836AF + buffers[5] = length 293, hash EEB23890 + buffers[6] = length 160, hash 7843AFDA + buffers[7] = length 162, hash 607E26A4 + buffers[8] = length 164, hash C1423D63 + buffers[9] = length 169, hash 90CEDF8C + buffers[10] = length 165, hash 97A6A3F7 + buffers[11] = length 179, hash 2EA2049F + buffers[12] = length 168, hash FCD51794 + buffers[13] = length 162, hash 80D9FBC0 + buffers[14] = length 162, hash BB673AC7 + buffers[15] = length 161, hash 8D5CC41B + buffers[16] = length 161, hash 5F5E6270 + buffers[17] = length 165, hash 117B14D9 + buffers[18] = length 166, hash D8BFD4 + buffers[19] = length 162, hash 61D76007 + buffers[20] = length 165, hash 78245BE8 + buffers[21] = length 165, hash A5F5B919 + buffers[22] = length 255, hash 1F42ECE2 + buffers[23] = length 165, hash D89D3EF0 + buffers[24] = length 164, hash C44C8E79 + buffers[25] = length 163, hash FFCE2E84 + buffers[26] = length 184, hash FD7BF02A + buffers[27] = length 162, hash 59074C0F + buffers[28] = length 162, hash 41CAF78D + buffers[29] = length 163, hash 50F0BCBD + buffers[30] = length 163, hash FABC49B3 + buffers[31] = length 256, hash 8515E521 + buffers[32] = length 244, hash D5F80618 + buffers[33] = length 162, hash A23FA880 + buffers[34] = length 163, hash 5D99DCD2 + buffers[35] = length 163, hash 37A4EB87 + buffers[36] = length 164, hash 4C190996 + buffers[37] = length 164, hash A2F6E788 + buffers[38] = length 162, hash E7353EFB + buffers[39] = length 161, hash FFF24D5F + buffers[40] = length 162, hash 95B27AB0 + buffers[41] = length 163, hash C43CB498 + buffers[42] = length 164, hash 438F5714 + buffers[43] = length 163, hash BDB72F57 + buffers[44] = length 162, hash 3194B57A + buffers[45] = length 163, hash D7CC025 + buffers[46] = length 162, hash F9E19F4D + buffers[47] = length 194, hash EED4C2BD + buffers[48] = length 164, hash ABFAEEFE + buffers[49] = length 163, hash 7487380A + buffers[50] = length 163, hash D4BFFB76 + buffers[51] = length 164, hash F3EB6797 + buffers[52] = length 163, hash 82B7ABB7 + buffers[53] = length 177, hash 921FEDAE + buffers[54] = length 162, hash BC7D176B + buffers[55] = length 165, hash 32DAEB04 + buffers[56] = length 164, hash 55FDBC77 + buffers[57] = length 230, hash FC32522D + buffers[58] = length 177, hash DF834667 + buffers[59] = length 161, hash F2ADFBCA + buffers[60] = length 161, hash 13CB7679 + buffers[61] = length 164, hash A12B20AC + buffers[62] = length 163, hash 38D448B + buffers[63] = length 164, hash BFE96C9A + buffers[64] = length 161, hash 921431E3 + buffers[65] = length 162, hash 9DDE27E0 + buffers[66] = length 165, hash 42C01110 + buffers[67] = length 163, hash C244C6B1 + buffers[68] = length 162, hash 288A7D7A + buffers[69] = length 164, hash 6DDF8E96 + buffers[70] = length 312, hash DD1760ED + buffers[71] = length 164, hash 40BD6AB0 + buffers[72] = length 167, hash 45FEB94 + buffers[73] = length 164, hash 1783D8D9 + buffers[74] = length 165, hash 7F68CB47 + buffers[75] = length 163, hash 431D98B9 + buffers[76] = length 164, hash 2F7F0A03 + buffers[77] = length 164, hash 330E9D40 + buffers[78] = length 161, hash 670A6D84 + buffers[79] = length 162, hash 55CEAB6A + buffers[80] = length 161, hash 690C1C44 + buffers[81] = length 311, hash 507DC3E7 + buffers[82] = length 226, hash 2D0C0942 + buffers[83] = length 163, hash 47A75060 + buffers[84] = length 163, hash 198A78EB + buffers[85] = length 165, hash F7AF184 + buffers[86] = length 163, hash 7EC009AE + buffers[87] = length 163, hash 7ACF600A + buffers[88] = length 170, hash 67F513C9 + buffers[89] = length 162, hash E0116535 + buffers[90] = length 164, hash 6C4C8BC1 + buffers[91] = length 163, hash 73E55623 + buffers[92] = length 162, hash 614AB0EE + buffers[93] = length 162, hash 49E038A6 + buffers[94] = length 162, hash 45BBCDDF + buffers[95] = length 163, hash 94E6047A + buffers[96] = length 162, hash FA40E646 + buffers[97] = length 163, hash 54F3E885 + buffers[98] = length 163, hash 42EA2C3C + buffers[99] = length 164, hash 11E5DC72 + buffers[100] = length 161, hash FB697FB7 + buffers[101] = length 164, hash 45137460 + buffers[102] = length 232, hash F8A33CF3 + buffers[103] = length 163, hash B2562537 + buffers[104] = length 163, hash D07ADBF + buffers[105] = length 163, hash 2AE2FC1E + buffers[106] = length 162, hash F574ABD + buffers[107] = length 162, hash 8A20D2FC + buffers[108] = length 162, hash BD37BF40 + buffers[109] = length 163, hash 81DF11E8 + buffers[110] = length 165, hash 236877C0 + buffers[111] = length 226, hash 6B5CD992 + buffers[112] = length 162, hash 7F697CCA + buffers[113] = length 161, hash 4C2993B4 + buffers[114] = length 163, hash 1DE49094 + buffers[115] = length 162, hash DCA5BB9B + buffers[116] = length 165, hash 66B62984 + buffers[117] = length 161, hash 994C6D54 + buffers[118] = length 163, hash DA5BA1F1 + buffers[119] = length 187, hash 7F6C5537 + buffers[120] = length 161, hash D0AF4628 + buffers[121] = length 161, hash 8A49A435 + buffers[122] = length 163, hash 90D7B180 + buffers[123] = length 162, hash C459D78E + buffers[124] = length 161, hash D7766E6B + buffers[125] = length 187, hash E0449F61 + buffers[126] = length 162, hash 203F238E + buffers[127] = length 163, hash 15F81805 + buffers[128] = length 161, hash 8496E779 + buffers[129] = length 163, hash DF6A28D0 + buffers[130] = length 233, hash 39CAC5CB + buffers[131] = length 250, hash 40F8863A + buffers[132] = length 248, hash BB880EB4 + buffers[133] = length 247, hash A93865FE + buffers[134] = length 244, hash ED7E6DB5 + buffers[135] = length 252, hash 2DD353C4 + buffers[136] = length 244, hash CE73B41E + buffers[137] = length 0, hash 1 diff --git a/testdata/src/test/assets/playbackdumps/mka/bear-opus.mka.dump b/testdata/src/test/assets/playbackdumps/mka/bear-opus.mka.dump new file mode 100644 index 0000000000..5c3a9f9286 --- /dev/null +++ b/testdata/src/test/assets/playbackdumps/mka/bear-opus.mka.dump @@ -0,0 +1,140 @@ +MediaCodec (audio/opus): + buffers.length = 138 + buffers[0] = length 375, hash 147EA9B + buffers[1] = length 187, hash C8ADD7C2 + buffers[2] = length 175, hash A6D94D6E + buffers[3] = length 162, hash 45359884 + buffers[4] = length 163, hash CBB836AF + buffers[5] = length 293, hash EEB23890 + buffers[6] = length 160, hash 7843AFDA + buffers[7] = length 162, hash 607E26A4 + buffers[8] = length 164, hash C1423D63 + buffers[9] = length 169, hash 90CEDF8C + buffers[10] = length 165, hash 97A6A3F7 + buffers[11] = length 179, hash 2EA2049F + buffers[12] = length 168, hash FCD51794 + buffers[13] = length 162, hash 80D9FBC0 + buffers[14] = length 162, hash BB673AC7 + buffers[15] = length 161, hash 8D5CC41B + buffers[16] = length 161, hash 5F5E6270 + buffers[17] = length 165, hash 117B14D9 + buffers[18] = length 166, hash D8BFD4 + buffers[19] = length 162, hash 61D76007 + buffers[20] = length 165, hash 78245BE8 + buffers[21] = length 165, hash A5F5B919 + buffers[22] = length 255, hash 1F42ECE2 + buffers[23] = length 165, hash D89D3EF0 + buffers[24] = length 164, hash C44C8E79 + buffers[25] = length 163, hash FFCE2E84 + buffers[26] = length 184, hash FD7BF02A + buffers[27] = length 162, hash 59074C0F + buffers[28] = length 162, hash 41CAF78D + buffers[29] = length 163, hash 50F0BCBD + buffers[30] = length 163, hash FABC49B3 + buffers[31] = length 256, hash 8515E521 + buffers[32] = length 244, hash D5F80618 + buffers[33] = length 162, hash A23FA880 + buffers[34] = length 163, hash 5D99DCD2 + buffers[35] = length 163, hash 37A4EB87 + buffers[36] = length 164, hash 4C190996 + buffers[37] = length 164, hash A2F6E788 + buffers[38] = length 162, hash E7353EFB + buffers[39] = length 161, hash FFF24D5F + buffers[40] = length 162, hash 95B27AB0 + buffers[41] = length 163, hash C43CB498 + buffers[42] = length 164, hash 438F5714 + buffers[43] = length 163, hash BDB72F57 + buffers[44] = length 162, hash 3194B57A + buffers[45] = length 163, hash D7CC025 + buffers[46] = length 162, hash F9E19F4D + buffers[47] = length 194, hash EED4C2BD + buffers[48] = length 164, hash ABFAEEFE + buffers[49] = length 163, hash 7487380A + buffers[50] = length 163, hash D4BFFB76 + buffers[51] = length 164, hash F3EB6797 + buffers[52] = length 163, hash 82B7ABB7 + buffers[53] = length 177, hash 921FEDAE + buffers[54] = length 162, hash BC7D176B + buffers[55] = length 165, hash 32DAEB04 + buffers[56] = length 164, hash 55FDBC77 + buffers[57] = length 230, hash FC32522D + buffers[58] = length 177, hash DF834667 + buffers[59] = length 161, hash F2ADFBCA + buffers[60] = length 161, hash 13CB7679 + buffers[61] = length 164, hash A12B20AC + buffers[62] = length 163, hash 38D448B + buffers[63] = length 164, hash BFE96C9A + buffers[64] = length 161, hash 921431E3 + buffers[65] = length 162, hash 9DDE27E0 + buffers[66] = length 165, hash 42C01110 + buffers[67] = length 163, hash C244C6B1 + buffers[68] = length 162, hash 288A7D7A + buffers[69] = length 164, hash 6DDF8E96 + buffers[70] = length 312, hash DD1760ED + buffers[71] = length 164, hash 40BD6AB0 + buffers[72] = length 167, hash 45FEB94 + buffers[73] = length 164, hash 1783D8D9 + buffers[74] = length 165, hash 7F68CB47 + buffers[75] = length 163, hash 431D98B9 + buffers[76] = length 164, hash 2F7F0A03 + buffers[77] = length 164, hash 330E9D40 + buffers[78] = length 161, hash 670A6D84 + buffers[79] = length 162, hash 55CEAB6A + buffers[80] = length 161, hash 690C1C44 + buffers[81] = length 311, hash 507DC3E7 + buffers[82] = length 226, hash 2D0C0942 + buffers[83] = length 163, hash 47A75060 + buffers[84] = length 163, hash 198A78EB + buffers[85] = length 165, hash F7AF184 + buffers[86] = length 163, hash 7EC009AE + buffers[87] = length 163, hash 7ACF600A + buffers[88] = length 170, hash 67F513C9 + buffers[89] = length 162, hash E0116535 + buffers[90] = length 164, hash 6C4C8BC1 + buffers[91] = length 163, hash 73E55623 + buffers[92] = length 162, hash 614AB0EE + buffers[93] = length 162, hash 49E038A6 + buffers[94] = length 162, hash 45BBCDDF + buffers[95] = length 163, hash 94E6047A + buffers[96] = length 162, hash FA40E646 + buffers[97] = length 163, hash 54F3E885 + buffers[98] = length 163, hash 42EA2C3C + buffers[99] = length 164, hash 11E5DC72 + buffers[100] = length 161, hash FB697FB7 + buffers[101] = length 164, hash 45137460 + buffers[102] = length 232, hash F8A33CF3 + buffers[103] = length 163, hash B2562537 + buffers[104] = length 163, hash D07ADBF + buffers[105] = length 163, hash 2AE2FC1E + buffers[106] = length 162, hash F574ABD + buffers[107] = length 162, hash 8A20D2FC + buffers[108] = length 162, hash BD37BF40 + buffers[109] = length 163, hash 81DF11E8 + buffers[110] = length 165, hash 236877C0 + buffers[111] = length 226, hash 6B5CD992 + buffers[112] = length 162, hash 7F697CCA + buffers[113] = length 161, hash 4C2993B4 + buffers[114] = length 163, hash 1DE49094 + buffers[115] = length 162, hash DCA5BB9B + buffers[116] = length 165, hash 66B62984 + buffers[117] = length 161, hash 994C6D54 + buffers[118] = length 163, hash DA5BA1F1 + buffers[119] = length 187, hash 7F6C5537 + buffers[120] = length 161, hash D0AF4628 + buffers[121] = length 161, hash 8A49A435 + buffers[122] = length 163, hash 90D7B180 + buffers[123] = length 162, hash C459D78E + buffers[124] = length 161, hash D7766E6B + buffers[125] = length 187, hash E0449F61 + buffers[126] = length 162, hash 203F238E + buffers[127] = length 163, hash 15F81805 + buffers[128] = length 161, hash 8496E779 + buffers[129] = length 163, hash DF6A28D0 + buffers[130] = length 233, hash 39CAC5CB + buffers[131] = length 250, hash 40F8863A + buffers[132] = length 248, hash BB880EB4 + buffers[133] = length 247, hash A93865FE + buffers[134] = length 244, hash ED7E6DB5 + buffers[135] = length 252, hash 2DD353C4 + buffers[136] = length 244, hash CE73B41E + buffers[137] = length 0, hash 1