Add Robolectric playback tests for existing MKV assets
PiperOrigin-RevId: 342618706
This commit is contained in:
parent
1984779fa1
commit
c87f95e153
@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
* 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 MKV samples. */
|
||||||
|
// TODO(b/143232359): Remove once https://issuetracker.google.com/143232359 is resolved.
|
||||||
|
@Config(sdk = 29)
|
||||||
|
@RunWith(ParameterizedRobolectricTestRunner.class)
|
||||||
|
public final class MkvPlaybackTest {
|
||||||
|
@Parameters(name = "{0}")
|
||||||
|
public static ImmutableList<String> mediaSamples() {
|
||||||
|
return ImmutableList.of(
|
||||||
|
"sample.mkv",
|
||||||
|
"sample_with_htc_rotation_track_name.mkv",
|
||||||
|
"sample_with_srt.mkv");
|
||||||
|
}
|
||||||
|
|
||||||
|
@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/mkv/" + inputFile));
|
||||||
|
player.prepare();
|
||||||
|
player.play();
|
||||||
|
TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_ENDED);
|
||||||
|
player.release();
|
||||||
|
|
||||||
|
DumpFileAsserts.assertOutput(
|
||||||
|
ApplicationProvider.getApplicationContext(),
|
||||||
|
playbackOutput,
|
||||||
|
"playbackdumps/mkv/" + inputFile + ".dump");
|
||||||
|
}
|
||||||
|
}
|
@ -73,6 +73,11 @@ public final class ShadowMediaCodecConfig extends ExternalResource {
|
|||||||
MimeTypes.VIDEO_MPEG2,
|
MimeTypes.VIDEO_MPEG2,
|
||||||
ImmutableList.of(mpeg2ProfileLevel),
|
ImmutableList.of(mpeg2ProfileLevel),
|
||||||
ImmutableList.of(MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Flexible));
|
ImmutableList.of(MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Flexible));
|
||||||
|
configureCodec(
|
||||||
|
/* codecName= */ "exotest.video.vp9",
|
||||||
|
MimeTypes.VIDEO_VP9,
|
||||||
|
ImmutableList.of(),
|
||||||
|
ImmutableList.of(MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Flexible));
|
||||||
|
|
||||||
// Audio codecs
|
// Audio codecs
|
||||||
configureCodec("exotest.audio.aac", MimeTypes.AUDIO_AAC);
|
configureCodec("exotest.audio.aac", MimeTypes.AUDIO_AAC);
|
||||||
|
65
testdata/src/test/assets/playbackdumps/mkv/sample.mkv.dump
vendored
Normal file
65
testdata/src/test/assets/playbackdumps/mkv/sample.mkv.dump
vendored
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
MediaCodec (audio/ac3):
|
||||||
|
buffers.length = 30
|
||||||
|
buffers[0] = length 416, hash 211F2286
|
||||||
|
buffers[1] = length 418, hash 77425A86
|
||||||
|
buffers[2] = length 418, hash A0FE5CA1
|
||||||
|
buffers[3] = length 418, hash 2309B066
|
||||||
|
buffers[4] = length 418, hash 928A653B
|
||||||
|
buffers[5] = length 418, hash 3422F0CB
|
||||||
|
buffers[6] = length 418, hash EFF43D5B
|
||||||
|
buffers[7] = length 418, hash FC8093C7
|
||||||
|
buffers[8] = length 418, hash CCC08A16
|
||||||
|
buffers[9] = length 418, hash 2A6EE863
|
||||||
|
buffers[10] = length 418, hash D69A9251
|
||||||
|
buffers[11] = length 418, hash BCFB758D
|
||||||
|
buffers[12] = length 418, hash 11B66799
|
||||||
|
buffers[13] = length 418, hash C824D392
|
||||||
|
buffers[14] = length 418, hash C167D872
|
||||||
|
buffers[15] = length 418, hash 4221C855
|
||||||
|
buffers[16] = length 418, hash 4D4FF934
|
||||||
|
buffers[17] = length 418, hash 984AA025
|
||||||
|
buffers[18] = length 418, hash BB788B46
|
||||||
|
buffers[19] = length 418, hash 9EFBFD97
|
||||||
|
buffers[20] = length 418, hash DF1A460C
|
||||||
|
buffers[21] = length 418, hash 2BDB56A
|
||||||
|
buffers[22] = length 418, hash CA230060
|
||||||
|
buffers[23] = length 418, hash D2F19F41
|
||||||
|
buffers[24] = length 418, hash AF392D79
|
||||||
|
buffers[25] = length 418, hash C5D7F2A3
|
||||||
|
buffers[26] = length 418, hash 733A35AE
|
||||||
|
buffers[27] = length 418, hash DE46E5D3
|
||||||
|
buffers[28] = length 418, hash 56AB8D37
|
||||||
|
buffers[29] = length 0, hash 1
|
||||||
|
MediaCodec (video/avc):
|
||||||
|
buffers.length = 31
|
||||||
|
buffers[0] = length 36477, hash F0F36CFE
|
||||||
|
buffers[1] = length 5341, hash 40B85E2
|
||||||
|
buffers[2] = length 596, hash 357B4D92
|
||||||
|
buffers[3] = length 7704, hash A39EDA06
|
||||||
|
buffers[4] = length 989, hash 2813C72D
|
||||||
|
buffers[5] = length 721, hash C50D1C73
|
||||||
|
buffers[6] = length 519, hash 65FE1911
|
||||||
|
buffers[7] = length 6160, hash E1CAC0EC
|
||||||
|
buffers[8] = length 953, hash 7160C661
|
||||||
|
buffers[9] = length 620, hash 7A7AE07C
|
||||||
|
buffers[10] = length 405, hash 5CC7F4E7
|
||||||
|
buffers[11] = length 4852, hash 9DB6979D
|
||||||
|
buffers[12] = length 547, hash E31A6979
|
||||||
|
buffers[13] = length 570, hash FEC40D00
|
||||||
|
buffers[14] = length 5525, hash 7C478F7E
|
||||||
|
buffers[15] = length 1082, hash DA07059A
|
||||||
|
buffers[16] = length 807, hash 93478E6B
|
||||||
|
buffers[17] = length 744, hash 9A8E6026
|
||||||
|
buffers[18] = length 4732, hash C73B23C0
|
||||||
|
buffers[19] = length 1004, hash 8A19A228
|
||||||
|
buffers[20] = length 794, hash 8126022C
|
||||||
|
buffers[21] = length 645, hash F08300E5
|
||||||
|
buffers[22] = length 2684, hash 727FE378
|
||||||
|
buffers[23] = length 787, hash 419A7821
|
||||||
|
buffers[24] = length 649, hash 5C159346
|
||||||
|
buffers[25] = length 509, hash F912D655
|
||||||
|
buffers[26] = length 1226, hash 29815C21
|
||||||
|
buffers[27] = length 898, hash D997AD0A
|
||||||
|
buffers[28] = length 476, hash A0423645
|
||||||
|
buffers[29] = length 486, hash DDF32CBB
|
||||||
|
buffers[30] = length 0, hash 1
|
65
testdata/src/test/assets/playbackdumps/mkv/sample_with_htc_rotation_track_name.mkv.dump
vendored
Normal file
65
testdata/src/test/assets/playbackdumps/mkv/sample_with_htc_rotation_track_name.mkv.dump
vendored
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
MediaCodec (audio/ac3):
|
||||||
|
buffers.length = 30
|
||||||
|
buffers[0] = length 416, hash 211F2286
|
||||||
|
buffers[1] = length 418, hash 77425A86
|
||||||
|
buffers[2] = length 418, hash A0FE5CA1
|
||||||
|
buffers[3] = length 418, hash 2309B066
|
||||||
|
buffers[4] = length 418, hash 928A653B
|
||||||
|
buffers[5] = length 418, hash 3422F0CB
|
||||||
|
buffers[6] = length 418, hash EFF43D5B
|
||||||
|
buffers[7] = length 418, hash FC8093C7
|
||||||
|
buffers[8] = length 418, hash CCC08A16
|
||||||
|
buffers[9] = length 418, hash 2A6EE863
|
||||||
|
buffers[10] = length 418, hash D69A9251
|
||||||
|
buffers[11] = length 418, hash BCFB758D
|
||||||
|
buffers[12] = length 418, hash 11B66799
|
||||||
|
buffers[13] = length 418, hash C824D392
|
||||||
|
buffers[14] = length 418, hash C167D872
|
||||||
|
buffers[15] = length 418, hash 4221C855
|
||||||
|
buffers[16] = length 418, hash 4D4FF934
|
||||||
|
buffers[17] = length 418, hash 984AA025
|
||||||
|
buffers[18] = length 418, hash BB788B46
|
||||||
|
buffers[19] = length 418, hash 9EFBFD97
|
||||||
|
buffers[20] = length 418, hash DF1A460C
|
||||||
|
buffers[21] = length 418, hash 2BDB56A
|
||||||
|
buffers[22] = length 418, hash CA230060
|
||||||
|
buffers[23] = length 418, hash D2F19F41
|
||||||
|
buffers[24] = length 418, hash AF392D79
|
||||||
|
buffers[25] = length 418, hash C5D7F2A3
|
||||||
|
buffers[26] = length 418, hash 733A35AE
|
||||||
|
buffers[27] = length 418, hash DE46E5D3
|
||||||
|
buffers[28] = length 418, hash 56AB8D37
|
||||||
|
buffers[29] = length 0, hash 1
|
||||||
|
MediaCodec (video/avc):
|
||||||
|
buffers.length = 31
|
||||||
|
buffers[0] = length 36477, hash F0F36CFE
|
||||||
|
buffers[1] = length 5341, hash 40B85E2
|
||||||
|
buffers[2] = length 596, hash 357B4D92
|
||||||
|
buffers[3] = length 7704, hash A39EDA06
|
||||||
|
buffers[4] = length 989, hash 2813C72D
|
||||||
|
buffers[5] = length 721, hash C50D1C73
|
||||||
|
buffers[6] = length 519, hash 65FE1911
|
||||||
|
buffers[7] = length 6160, hash E1CAC0EC
|
||||||
|
buffers[8] = length 953, hash 7160C661
|
||||||
|
buffers[9] = length 620, hash 7A7AE07C
|
||||||
|
buffers[10] = length 405, hash 5CC7F4E7
|
||||||
|
buffers[11] = length 4852, hash 9DB6979D
|
||||||
|
buffers[12] = length 547, hash E31A6979
|
||||||
|
buffers[13] = length 570, hash FEC40D00
|
||||||
|
buffers[14] = length 5525, hash 7C478F7E
|
||||||
|
buffers[15] = length 1082, hash DA07059A
|
||||||
|
buffers[16] = length 807, hash 93478E6B
|
||||||
|
buffers[17] = length 744, hash 9A8E6026
|
||||||
|
buffers[18] = length 4732, hash C73B23C0
|
||||||
|
buffers[19] = length 1004, hash 8A19A228
|
||||||
|
buffers[20] = length 794, hash 8126022C
|
||||||
|
buffers[21] = length 645, hash F08300E5
|
||||||
|
buffers[22] = length 2684, hash 727FE378
|
||||||
|
buffers[23] = length 787, hash 419A7821
|
||||||
|
buffers[24] = length 649, hash 5C159346
|
||||||
|
buffers[25] = length 509, hash F912D655
|
||||||
|
buffers[26] = length 1226, hash 29815C21
|
||||||
|
buffers[27] = length 898, hash D997AD0A
|
||||||
|
buffers[28] = length 476, hash A0423645
|
||||||
|
buffers[29] = length 486, hash DDF32CBB
|
||||||
|
buffers[30] = length 0, hash 1
|
65
testdata/src/test/assets/playbackdumps/mkv/sample_with_srt.mkv.dump
vendored
Normal file
65
testdata/src/test/assets/playbackdumps/mkv/sample_with_srt.mkv.dump
vendored
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
MediaCodec (audio/ac3):
|
||||||
|
buffers.length = 30
|
||||||
|
buffers[0] = length 416, hash 211F2286
|
||||||
|
buffers[1] = length 418, hash 77425A86
|
||||||
|
buffers[2] = length 418, hash A0FE5CA1
|
||||||
|
buffers[3] = length 418, hash 2309B066
|
||||||
|
buffers[4] = length 418, hash 928A653B
|
||||||
|
buffers[5] = length 418, hash 3422F0CB
|
||||||
|
buffers[6] = length 418, hash EFF43D5B
|
||||||
|
buffers[7] = length 418, hash FC8093C7
|
||||||
|
buffers[8] = length 418, hash CCC08A16
|
||||||
|
buffers[9] = length 418, hash 2A6EE863
|
||||||
|
buffers[10] = length 418, hash D69A9251
|
||||||
|
buffers[11] = length 418, hash BCFB758D
|
||||||
|
buffers[12] = length 418, hash 11B66799
|
||||||
|
buffers[13] = length 418, hash C824D392
|
||||||
|
buffers[14] = length 418, hash C167D872
|
||||||
|
buffers[15] = length 418, hash 4221C855
|
||||||
|
buffers[16] = length 418, hash 4D4FF934
|
||||||
|
buffers[17] = length 418, hash 984AA025
|
||||||
|
buffers[18] = length 418, hash BB788B46
|
||||||
|
buffers[19] = length 418, hash 9EFBFD97
|
||||||
|
buffers[20] = length 418, hash DF1A460C
|
||||||
|
buffers[21] = length 418, hash 2BDB56A
|
||||||
|
buffers[22] = length 418, hash CA230060
|
||||||
|
buffers[23] = length 418, hash D2F19F41
|
||||||
|
buffers[24] = length 418, hash AF392D79
|
||||||
|
buffers[25] = length 418, hash C5D7F2A3
|
||||||
|
buffers[26] = length 418, hash 733A35AE
|
||||||
|
buffers[27] = length 418, hash DE46E5D3
|
||||||
|
buffers[28] = length 418, hash 56AB8D37
|
||||||
|
buffers[29] = length 0, hash 1
|
||||||
|
MediaCodec (video/avc):
|
||||||
|
buffers.length = 31
|
||||||
|
buffers[0] = length 36477, hash F0F36CFE
|
||||||
|
buffers[1] = length 5341, hash 40B85E2
|
||||||
|
buffers[2] = length 596, hash 357B4D92
|
||||||
|
buffers[3] = length 7704, hash A39EDA06
|
||||||
|
buffers[4] = length 989, hash 2813C72D
|
||||||
|
buffers[5] = length 721, hash C50D1C73
|
||||||
|
buffers[6] = length 519, hash 65FE1911
|
||||||
|
buffers[7] = length 6160, hash E1CAC0EC
|
||||||
|
buffers[8] = length 953, hash 7160C661
|
||||||
|
buffers[9] = length 620, hash 7A7AE07C
|
||||||
|
buffers[10] = length 405, hash 5CC7F4E7
|
||||||
|
buffers[11] = length 4852, hash 9DB6979D
|
||||||
|
buffers[12] = length 547, hash E31A6979
|
||||||
|
buffers[13] = length 570, hash FEC40D00
|
||||||
|
buffers[14] = length 5525, hash 7C478F7E
|
||||||
|
buffers[15] = length 1082, hash DA07059A
|
||||||
|
buffers[16] = length 807, hash 93478E6B
|
||||||
|
buffers[17] = length 744, hash 9A8E6026
|
||||||
|
buffers[18] = length 4732, hash C73B23C0
|
||||||
|
buffers[19] = length 1004, hash 8A19A228
|
||||||
|
buffers[20] = length 794, hash 8126022C
|
||||||
|
buffers[21] = length 645, hash F08300E5
|
||||||
|
buffers[22] = length 2684, hash 727FE378
|
||||||
|
buffers[23] = length 787, hash 419A7821
|
||||||
|
buffers[24] = length 649, hash 5C159346
|
||||||
|
buffers[25] = length 509, hash F912D655
|
||||||
|
buffers[26] = length 1226, hash 29815C21
|
||||||
|
buffers[27] = length 898, hash D997AD0A
|
||||||
|
buffers[28] = length 476, hash A0423645
|
||||||
|
buffers[29] = length 486, hash DDF32CBB
|
||||||
|
buffers[30] = length 0, hash 1
|
Loading…
x
Reference in New Issue
Block a user