Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
c87f95e1
authored
Nov 16, 2020
by
christosts
Committed by
Ian Baker
Nov 16, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add Robolectric playback tests for existing MKV assets
PiperOrigin-RevId: 342618706
parent
1984779f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
277 additions
and
0 deletions
library/core/src/test/java/com/google/android/exoplayer2/e2etest/MkvPlaybackTest.java
robolectricutils/src/main/java/com/google/android/exoplayer2/robolectric/ShadowMediaCodecConfig.java
testdata/src/test/assets/playbackdumps/mkv/sample.mkv.dump
testdata/src/test/assets/playbackdumps/mkv/sample_with_htc_rotation_track_name.mkv.dump
testdata/src/test/assets/playbackdumps/mkv/sample_with_srt.mkv.dump
library/core/src/test/java/com/google/android/exoplayer2/e2etest/MkvPlaybackTest.java
0 → 100644
View file @
c87f95e1
/*
* 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"
);
}
}
robolectricutils/src/main/java/com/google/android/exoplayer2/robolectric/ShadowMediaCodecConfig.java
View file @
c87f95e1
...
...
@@ -73,6 +73,11 @@ public final class ShadowMediaCodecConfig extends ExternalResource {
MimeTypes
.
VIDEO_MPEG2
,
ImmutableList
.
of
(
mpeg2ProfileLevel
),
ImmutableList
.
of
(
MediaCodecInfo
.
CodecCapabilities
.
COLOR_FormatYUV420Flexible
));
configureCodec
(
/* codecName= */
"exotest.video.vp9"
,
MimeTypes
.
VIDEO_VP9
,
ImmutableList
.
of
(),
ImmutableList
.
of
(
MediaCodecInfo
.
CodecCapabilities
.
COLOR_FormatYUV420Flexible
));
// Audio codecs
configureCodec
(
"exotest.audio.aac"
,
MimeTypes
.
AUDIO_AAC
);
...
...
testdata/src/test/assets/playbackdumps/mkv/sample.mkv.dump
0 → 100644
View file @
c87f95e1
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
testdata/src/test/assets/playbackdumps/mkv/sample_with_htc_rotation_track_name.mkv.dump
0 → 100644
View file @
c87f95e1
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
testdata/src/test/assets/playbackdumps/mkv/sample_with_srt.mkv.dump
0 → 100644
View file @
c87f95e1
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment