From 4ee971052bb39acf1f33a52959d77c7204de8498 Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 9 Jan 2018 03:34:40 -0800 Subject: [PATCH] Improve Extractor partial read tests. Partial reads were performed once using a partial size of 1 byte. This was not enough to detect problems which only occur in combination with IOExceptions. Partial reads are now only applied when no exception is thrown. Moreover, the tests didn't check whether the total number of sampled bytes is what it is supposed to be. Added a field to the data dumps checking the total number of bytes in the sampled data. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=181296545 --- .../src/androidTest/assets/bear.flac.0.dump | 1 + .../src/androidTest/assets/bear.flac.1.dump | 1 + .../src/androidTest/assets/bear.flac.2.dump | 1 + .../src/androidTest/assets/bear.flac.3.dump | 1 + .../androidTest/assets/flv/sample.flv.0.dump | 2 + .../androidTest/assets/mkv/sample.mkv.0.dump | 2 + .../androidTest/assets/mkv/sample.mkv.1.dump | 2 + .../androidTest/assets/mkv/sample.mkv.2.dump | 2 + .../androidTest/assets/mkv/sample.mkv.3.dump | 2 + .../subsample_encrypted_altref.webm.0.dump | 1 + .../subsample_encrypted_noaltref.webm.0.dump | 1 + .../androidTest/assets/mp3/bear.mp3.0.dump | 1 + .../androidTest/assets/mp3/bear.mp3.1.dump | 1 + .../androidTest/assets/mp3/bear.mp3.2.dump | 1 + .../androidTest/assets/mp3/bear.mp3.3.dump | 1 + .../assets/mp3/play-trimmed.mp3.0.dump | 1 + .../assets/mp3/play-trimmed.mp3.1.dump | 1 + .../assets/mp3/play-trimmed.mp3.2.dump | 1 + .../assets/mp3/play-trimmed.mp3.3.dump | 1 + .../assets/mp3/play-trimmed.mp3.unklen.dump | 1 + .../androidTest/assets/mp4/sample.mp4.0.dump | 2 + .../androidTest/assets/mp4/sample.mp4.1.dump | 2 + .../androidTest/assets/mp4/sample.mp4.2.dump | 2 + .../androidTest/assets/mp4/sample.mp4.3.dump | 2 + .../assets/mp4/sample_fragmented.mp4.0.dump | 2 + .../mp4/sample_fragmented_sei.mp4.0.dump | 3 + .../androidTest/assets/ogg/bear.opus.0.dump | 1 + .../androidTest/assets/ogg/bear.opus.1.dump | 1 + .../androidTest/assets/ogg/bear.opus.2.dump | 1 + .../androidTest/assets/ogg/bear.opus.3.dump | 1 + .../assets/ogg/bear.opus.unklen.dump | 1 + .../assets/ogg/bear_flac.ogg.0.dump | 1 + .../assets/ogg/bear_flac.ogg.1.dump | 1 + .../assets/ogg/bear_flac.ogg.2.dump | 1 + .../assets/ogg/bear_flac.ogg.3.dump | 1 + .../assets/ogg/bear_flac.ogg.unklen.dump | 1 + .../ogg/bear_flac_noseektable.ogg.0.dump | 1 + .../ogg/bear_flac_noseektable.ogg.1.dump | 1 + .../ogg/bear_flac_noseektable.ogg.2.dump | 1 + .../ogg/bear_flac_noseektable.ogg.3.dump | 1 + .../ogg/bear_flac_noseektable.ogg.unklen.dump | 1 + .../assets/ogg/bear_vorbis.ogg.0.dump | 1 + .../assets/ogg/bear_vorbis.ogg.1.dump | 1 + .../assets/ogg/bear_vorbis.ogg.2.dump | 1 + .../assets/ogg/bear_vorbis.ogg.3.dump | 1 + .../assets/ogg/bear_vorbis.ogg.unklen.dump | 1 + .../assets/rawcc/sample.rawcc.0.dump | 1 + .../androidTest/assets/ts/sample.ac3.0.dump | 1 + .../androidTest/assets/ts/sample.adts.0.dump | 2 + .../androidTest/assets/ts/sample.ps.0.dump | 2 + .../androidTest/assets/ts/sample.ts.0.dump | 2 + .../androidTest/assets/wav/sample.wav.0.dump | 1 + .../androidTest/assets/wav/sample.wav.1.dump | 1 + .../androidTest/assets/wav/sample.wav.2.dump | 1 + .../androidTest/assets/wav/sample.wav.3.dump | 1 + .../testutil/FakeExtractorInput.java | 63 +++++++++++-------- .../exoplayer2/testutil/FakeTrackOutput.java | 1 + 57 files changed, 109 insertions(+), 25 deletions(-) diff --git a/extensions/flac/src/androidTest/assets/bear.flac.0.dump b/extensions/flac/src/androidTest/assets/bear.flac.0.dump index 6908f5cc932..2a17cbdea67 100644 --- a/extensions/flac/src/androidTest/assets/bear.flac.0.dump +++ b/extensions/flac/src/androidTest/assets/bear.flac.0.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 526272 sample count = 33 sample 0: time = 0 diff --git a/extensions/flac/src/androidTest/assets/bear.flac.1.dump b/extensions/flac/src/androidTest/assets/bear.flac.1.dump index 1414443187a..412e4a1b8fd 100644 --- a/extensions/flac/src/androidTest/assets/bear.flac.1.dump +++ b/extensions/flac/src/androidTest/assets/bear.flac.1.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 362432 sample count = 23 sample 0: time = 853333 diff --git a/extensions/flac/src/androidTest/assets/bear.flac.2.dump b/extensions/flac/src/androidTest/assets/bear.flac.2.dump index e343241650a..42ebb125d15 100644 --- a/extensions/flac/src/androidTest/assets/bear.flac.2.dump +++ b/extensions/flac/src/androidTest/assets/bear.flac.2.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 182208 sample count = 12 sample 0: time = 1792000 diff --git a/extensions/flac/src/androidTest/assets/bear.flac.3.dump b/extensions/flac/src/androidTest/assets/bear.flac.3.dump index 95ab255bd00..958cb0d418a 100644 --- a/extensions/flac/src/androidTest/assets/bear.flac.3.dump +++ b/extensions/flac/src/androidTest/assets/bear.flac.3.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 18368 sample count = 2 sample 0: time = 2645333 diff --git a/library/core/src/androidTest/assets/flv/sample.flv.0.dump b/library/core/src/androidTest/assets/flv/sample.flv.0.dump index 7a4a74770c1..f4502749f56 100644 --- a/library/core/src/androidTest/assets/flv/sample.flv.0.dump +++ b/library/core/src/androidTest/assets/flv/sample.flv.0.dump @@ -26,6 +26,7 @@ track 8: drmInitData = - initializationData: data = length 2, hash 5F7 + total output bytes = 9529 sample count = 45 sample 0: time = 112000 @@ -231,6 +232,7 @@ track 9: initializationData: data = length 30, hash F6F3D010 data = length 10, hash 7A0D0F2B + total output bytes = 89502 sample count = 30 sample 0: time = 67000 diff --git a/library/core/src/androidTest/assets/mkv/sample.mkv.0.dump b/library/core/src/androidTest/assets/mkv/sample.mkv.0.dump index 0f005ee5a9f..009ff55c232 100644 --- a/library/core/src/androidTest/assets/mkv/sample.mkv.0.dump +++ b/library/core/src/androidTest/assets/mkv/sample.mkv.0.dump @@ -27,6 +27,7 @@ track 1: initializationData: data = length 30, hash F6F3D010 data = length 10, hash 7A0D0F2B + total output bytes = 89502 sample count = 30 sample 0: time = 67000 @@ -170,6 +171,7 @@ track 2: language = und drmInitData = - initializationData: + total output bytes = 12120 sample count = 29 sample 0: time = 129000 diff --git a/library/core/src/androidTest/assets/mkv/sample.mkv.1.dump b/library/core/src/androidTest/assets/mkv/sample.mkv.1.dump index 378f5d7f2ad..91396e81b8d 100644 --- a/library/core/src/androidTest/assets/mkv/sample.mkv.1.dump +++ b/library/core/src/androidTest/assets/mkv/sample.mkv.1.dump @@ -27,6 +27,7 @@ track 1: initializationData: data = length 30, hash F6F3D010 data = length 10, hash 7A0D0F2B + total output bytes = 30995 sample count = 22 sample 0: time = 334000 @@ -138,6 +139,7 @@ track 2: language = und drmInitData = - initializationData: + total output bytes = 8778 sample count = 21 sample 0: time = 408000 diff --git a/library/core/src/androidTest/assets/mkv/sample.mkv.2.dump b/library/core/src/androidTest/assets/mkv/sample.mkv.2.dump index 80caf24a93c..5c56dcc8af9 100644 --- a/library/core/src/androidTest/assets/mkv/sample.mkv.2.dump +++ b/library/core/src/androidTest/assets/mkv/sample.mkv.2.dump @@ -27,6 +27,7 @@ track 1: initializationData: data = length 30, hash F6F3D010 data = length 10, hash 7A0D0F2B + total output bytes = 10158 sample count = 11 sample 0: time = 700000 @@ -94,6 +95,7 @@ track 2: language = und drmInitData = - initializationData: + total output bytes = 4180 sample count = 10 sample 0: time = 791000 diff --git a/library/core/src/androidTest/assets/mkv/sample.mkv.3.dump b/library/core/src/androidTest/assets/mkv/sample.mkv.3.dump index c9672ba9c43..cf5a0199fc3 100644 --- a/library/core/src/androidTest/assets/mkv/sample.mkv.3.dump +++ b/library/core/src/androidTest/assets/mkv/sample.mkv.3.dump @@ -27,6 +27,7 @@ track 1: initializationData: data = length 30, hash F6F3D010 data = length 10, hash 7A0D0F2B + total output bytes = 0 sample count = 0 track 2: format: @@ -50,6 +51,7 @@ track 2: language = und drmInitData = - initializationData: + total output bytes = 1254 sample count = 3 sample 0: time = 1035000 diff --git a/library/core/src/androidTest/assets/mkv/subsample_encrypted_altref.webm.0.dump b/library/core/src/androidTest/assets/mkv/subsample_encrypted_altref.webm.0.dump index abc07dc5039..62a270eb9ec 100644 --- a/library/core/src/androidTest/assets/mkv/subsample_encrypted_altref.webm.0.dump +++ b/library/core/src/androidTest/assets/mkv/subsample_encrypted_altref.webm.0.dump @@ -25,6 +25,7 @@ track 1: language = null drmInitData = 1305012705 initializationData: + total output bytes = 39 sample count = 1 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/mkv/subsample_encrypted_noaltref.webm.0.dump b/library/core/src/androidTest/assets/mkv/subsample_encrypted_noaltref.webm.0.dump index c43a43b5769..43e5eed5d14 100644 --- a/library/core/src/androidTest/assets/mkv/subsample_encrypted_noaltref.webm.0.dump +++ b/library/core/src/androidTest/assets/mkv/subsample_encrypted_noaltref.webm.0.dump @@ -25,6 +25,7 @@ track 1: language = null drmInitData = 1305012705 initializationData: + total output bytes = 24 sample count = 1 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/mp3/bear.mp3.0.dump b/library/core/src/androidTest/assets/mp3/bear.mp3.0.dump index eca3a6687d7..b12a68a60b9 100644 --- a/library/core/src/androidTest/assets/mp3/bear.mp3.0.dump +++ b/library/core/src/androidTest/assets/mp3/bear.mp3.0.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 44544 sample count = 116 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/mp3/bear.mp3.1.dump b/library/core/src/androidTest/assets/mp3/bear.mp3.1.dump index 12abf149c4d..abf5b104156 100644 --- a/library/core/src/androidTest/assets/mp3/bear.mp3.1.dump +++ b/library/core/src/androidTest/assets/mp3/bear.mp3.1.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 29568 sample count = 77 sample 0: time = 928568 diff --git a/library/core/src/androidTest/assets/mp3/bear.mp3.2.dump b/library/core/src/androidTest/assets/mp3/bear.mp3.2.dump index 3568616e763..813f61b7fc1 100644 --- a/library/core/src/androidTest/assets/mp3/bear.mp3.2.dump +++ b/library/core/src/androidTest/assets/mp3/bear.mp3.2.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 14592 sample count = 38 sample 0: time = 1871586 diff --git a/library/core/src/androidTest/assets/mp3/bear.mp3.3.dump b/library/core/src/androidTest/assets/mp3/bear.mp3.3.dump index 8a31fe5e7d2..9a0207bd534 100644 --- a/library/core/src/androidTest/assets/mp3/bear.mp3.3.dump +++ b/library/core/src/androidTest/assets/mp3/bear.mp3.3.dump @@ -25,5 +25,6 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 0 sample count = 0 tracksEnded = true diff --git a/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.0.dump b/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.0.dump index 88601665b04..435360dfed8 100644 --- a/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.0.dump +++ b/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.0.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 418 sample count = 1 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.1.dump b/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.1.dump index 88601665b04..435360dfed8 100644 --- a/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.1.dump +++ b/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.1.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 418 sample count = 1 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.2.dump b/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.2.dump index 88601665b04..435360dfed8 100644 --- a/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.2.dump +++ b/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.2.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 418 sample count = 1 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.3.dump b/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.3.dump index 88601665b04..435360dfed8 100644 --- a/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.3.dump +++ b/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.3.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 418 sample count = 1 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.unklen.dump b/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.unklen.dump index 2c0ac67561c..6b49619b502 100644 --- a/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.unklen.dump +++ b/library/core/src/androidTest/assets/mp3/play-trimmed.mp3.unklen.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 418 sample count = 1 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/mp4/sample.mp4.0.dump b/library/core/src/androidTest/assets/mp4/sample.mp4.0.dump index 7cd34865053..77708b16df4 100644 --- a/library/core/src/androidTest/assets/mp4/sample.mp4.0.dump +++ b/library/core/src/androidTest/assets/mp4/sample.mp4.0.dump @@ -27,6 +27,7 @@ track 0: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B + total output bytes = 89876 sample count = 30 sample 0: time = 0 @@ -171,6 +172,7 @@ track 1: drmInitData = - initializationData: data = length 2, hash 5F7 + total output bytes = 9529 sample count = 45 sample 0: time = 44000 diff --git a/library/core/src/androidTest/assets/mp4/sample.mp4.1.dump b/library/core/src/androidTest/assets/mp4/sample.mp4.1.dump index fcf9402cba7..30ed21ef98f 100644 --- a/library/core/src/androidTest/assets/mp4/sample.mp4.1.dump +++ b/library/core/src/androidTest/assets/mp4/sample.mp4.1.dump @@ -27,6 +27,7 @@ track 0: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B + total output bytes = 89876 sample count = 30 sample 0: time = 0 @@ -171,6 +172,7 @@ track 1: drmInitData = - initializationData: data = length 2, hash 5F7 + total output bytes = 7464 sample count = 33 sample 0: time = 322639 diff --git a/library/core/src/androidTest/assets/mp4/sample.mp4.2.dump b/library/core/src/androidTest/assets/mp4/sample.mp4.2.dump index 5dbb6e15614..640d92722c0 100644 --- a/library/core/src/androidTest/assets/mp4/sample.mp4.2.dump +++ b/library/core/src/androidTest/assets/mp4/sample.mp4.2.dump @@ -27,6 +27,7 @@ track 0: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B + total output bytes = 89876 sample count = 30 sample 0: time = 0 @@ -171,6 +172,7 @@ track 1: drmInitData = - initializationData: data = length 2, hash 5F7 + total output bytes = 4019 sample count = 18 sample 0: time = 670938 diff --git a/library/core/src/androidTest/assets/mp4/sample.mp4.3.dump b/library/core/src/androidTest/assets/mp4/sample.mp4.3.dump index bac707446d5..b4fd4a0b02e 100644 --- a/library/core/src/androidTest/assets/mp4/sample.mp4.3.dump +++ b/library/core/src/androidTest/assets/mp4/sample.mp4.3.dump @@ -27,6 +27,7 @@ track 0: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B + total output bytes = 89876 sample count = 30 sample 0: time = 0 @@ -171,6 +172,7 @@ track 1: drmInitData = - initializationData: data = length 2, hash 5F7 + total output bytes = 470 sample count = 3 sample 0: time = 1019238 diff --git a/library/core/src/androidTest/assets/mp4/sample_fragmented.mp4.0.dump b/library/core/src/androidTest/assets/mp4/sample_fragmented.mp4.0.dump index 736e57693cc..ec2cb7b8cea 100644 --- a/library/core/src/androidTest/assets/mp4/sample_fragmented.mp4.0.dump +++ b/library/core/src/androidTest/assets/mp4/sample_fragmented.mp4.0.dump @@ -27,6 +27,7 @@ track 0: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B + total output bytes = 85933 sample count = 30 sample 0: time = 66000 @@ -171,6 +172,7 @@ track 1: drmInitData = - initializationData: data = length 5, hash 2B7623A + total output bytes = 18257 sample count = 46 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/mp4/sample_fragmented_sei.mp4.0.dump b/library/core/src/androidTest/assets/mp4/sample_fragmented_sei.mp4.0.dump index 8186a2b9ce1..ae012055fed 100644 --- a/library/core/src/androidTest/assets/mp4/sample_fragmented_sei.mp4.0.dump +++ b/library/core/src/androidTest/assets/mp4/sample_fragmented_sei.mp4.0.dump @@ -27,6 +27,7 @@ track 0: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B + total output bytes = 85933 sample count = 30 sample 0: time = 66000 @@ -171,6 +172,7 @@ track 1: drmInitData = - initializationData: data = length 5, hash 2B7623A + total output bytes = 18257 sample count = 46 sample 0: time = 0 @@ -378,5 +380,6 @@ track 3: language = null drmInitData = - initializationData: + total output bytes = 0 sample count = 0 tracksEnded = true diff --git a/library/core/src/androidTest/assets/ogg/bear.opus.0.dump b/library/core/src/androidTest/assets/ogg/bear.opus.0.dump index 4d09067f3b9..643972b8364 100644 --- a/library/core/src/androidTest/assets/ogg/bear.opus.0.dump +++ b/library/core/src/androidTest/assets/ogg/bear.opus.0.dump @@ -28,6 +28,7 @@ track 0: data = length 19, hash BFE794DB data = length 8, hash CA22068C data = length 8, hash 79C07075 + total output bytes = 25541 sample count = 275 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/ogg/bear.opus.1.dump b/library/core/src/androidTest/assets/ogg/bear.opus.1.dump index 821351e989c..8df1563d903 100644 --- a/library/core/src/androidTest/assets/ogg/bear.opus.1.dump +++ b/library/core/src/androidTest/assets/ogg/bear.opus.1.dump @@ -28,6 +28,7 @@ track 0: data = length 19, hash BFE794DB data = length 8, hash CA22068C data = length 8, hash 79C07075 + total output bytes = 17031 sample count = 184 sample 0: time = 910000 diff --git a/library/core/src/androidTest/assets/ogg/bear.opus.2.dump b/library/core/src/androidTest/assets/ogg/bear.opus.2.dump index 3aea1e8d749..bed4c46d9ca 100644 --- a/library/core/src/androidTest/assets/ogg/bear.opus.2.dump +++ b/library/core/src/androidTest/assets/ogg/bear.opus.2.dump @@ -28,6 +28,7 @@ track 0: data = length 19, hash BFE794DB data = length 8, hash CA22068C data = length 8, hash 79C07075 + total output bytes = 8698 sample count = 92 sample 0: time = 1830000 diff --git a/library/core/src/androidTest/assets/ogg/bear.opus.3.dump b/library/core/src/androidTest/assets/ogg/bear.opus.3.dump index b49af29f2ca..8a9c99250e2 100644 --- a/library/core/src/androidTest/assets/ogg/bear.opus.3.dump +++ b/library/core/src/androidTest/assets/ogg/bear.opus.3.dump @@ -28,6 +28,7 @@ track 0: data = length 19, hash BFE794DB data = length 8, hash CA22068C data = length 8, hash 79C07075 + total output bytes = 126 sample count = 1 sample 0: time = 2741000 diff --git a/library/core/src/androidTest/assets/ogg/bear.opus.unklen.dump b/library/core/src/androidTest/assets/ogg/bear.opus.unklen.dump index b2d5a9f3d2d..5d2c84b0479 100644 --- a/library/core/src/androidTest/assets/ogg/bear.opus.unklen.dump +++ b/library/core/src/androidTest/assets/ogg/bear.opus.unklen.dump @@ -28,6 +28,7 @@ track 0: data = length 19, hash BFE794DB data = length 8, hash CA22068C data = length 8, hash 79C07075 + total output bytes = 25541 sample count = 275 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/ogg/bear_flac.ogg.0.dump b/library/core/src/androidTest/assets/ogg/bear_flac.ogg.0.dump index 572d1da891d..ff22bb2d3e2 100644 --- a/library/core/src/androidTest/assets/ogg/bear_flac.ogg.0.dump +++ b/library/core/src/androidTest/assets/ogg/bear_flac.ogg.0.dump @@ -26,6 +26,7 @@ track 0: drmInitData = - initializationData: data = length 42, hash 83F6895 + total output bytes = 164431 sample count = 33 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/ogg/bear_flac.ogg.1.dump b/library/core/src/androidTest/assets/ogg/bear_flac.ogg.1.dump index d53f257fd2f..50110149fd4 100644 --- a/library/core/src/androidTest/assets/ogg/bear_flac.ogg.1.dump +++ b/library/core/src/androidTest/assets/ogg/bear_flac.ogg.1.dump @@ -26,6 +26,7 @@ track 0: drmInitData = - initializationData: data = length 42, hash 83F6895 + total output bytes = 113666 sample count = 23 sample 0: time = 853333 diff --git a/library/core/src/androidTest/assets/ogg/bear_flac.ogg.2.dump b/library/core/src/androidTest/assets/ogg/bear_flac.ogg.2.dump index cdfd6efab80..483ae36721e 100644 --- a/library/core/src/androidTest/assets/ogg/bear_flac.ogg.2.dump +++ b/library/core/src/androidTest/assets/ogg/bear_flac.ogg.2.dump @@ -26,6 +26,7 @@ track 0: drmInitData = - initializationData: data = length 42, hash 83F6895 + total output bytes = 55652 sample count = 12 sample 0: time = 1792000 diff --git a/library/core/src/androidTest/assets/ogg/bear_flac.ogg.3.dump b/library/core/src/androidTest/assets/ogg/bear_flac.ogg.3.dump index 9b029d3301b..a47407e63dc 100644 --- a/library/core/src/androidTest/assets/ogg/bear_flac.ogg.3.dump +++ b/library/core/src/androidTest/assets/ogg/bear_flac.ogg.3.dump @@ -26,6 +26,7 @@ track 0: drmInitData = - initializationData: data = length 42, hash 83F6895 + total output bytes = 445 sample count = 1 sample 0: time = 2730666 diff --git a/library/core/src/androidTest/assets/ogg/bear_flac.ogg.unklen.dump b/library/core/src/androidTest/assets/ogg/bear_flac.ogg.unklen.dump index 572d1da891d..ff22bb2d3e2 100644 --- a/library/core/src/androidTest/assets/ogg/bear_flac.ogg.unklen.dump +++ b/library/core/src/androidTest/assets/ogg/bear_flac.ogg.unklen.dump @@ -26,6 +26,7 @@ track 0: drmInitData = - initializationData: data = length 42, hash 83F6895 + total output bytes = 164431 sample count = 33 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.0.dump b/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.0.dump index 1c02c1bbefb..32f350efcb4 100644 --- a/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.0.dump +++ b/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.0.dump @@ -26,6 +26,7 @@ track 0: drmInitData = - initializationData: data = length 42, hash 83F6895 + total output bytes = 164431 sample count = 33 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.1.dump b/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.1.dump index 81d79b86746..3082e8faca9 100644 --- a/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.1.dump +++ b/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.1.dump @@ -26,6 +26,7 @@ track 0: drmInitData = - initializationData: data = length 42, hash 83F6895 + total output bytes = 113666 sample count = 23 sample 0: time = 853333 diff --git a/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.2.dump b/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.2.dump index f8b00bcb3af..b574409f708 100644 --- a/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.2.dump +++ b/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.2.dump @@ -26,6 +26,7 @@ track 0: drmInitData = - initializationData: data = length 42, hash 83F6895 + total output bytes = 55652 sample count = 12 sample 0: time = 1792000 diff --git a/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.3.dump b/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.3.dump index b0206184883..f411596b44c 100644 --- a/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.3.dump +++ b/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.3.dump @@ -26,6 +26,7 @@ track 0: drmInitData = - initializationData: data = length 42, hash 83F6895 + total output bytes = 445 sample count = 1 sample 0: time = 2730666 diff --git a/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.unklen.dump b/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.unklen.dump index bf135434f49..bdfe90277da 100644 --- a/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.unklen.dump +++ b/library/core/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.unklen.dump @@ -26,6 +26,7 @@ track 0: drmInitData = - initializationData: data = length 42, hash 83F6895 + total output bytes = 164431 sample count = 33 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.0.dump b/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.0.dump index 860e8a3b5bc..dd129ce9dc6 100644 --- a/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.0.dump +++ b/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.0.dump @@ -27,6 +27,7 @@ track 0: initializationData: data = length 30, hash 9A8FF207 data = length 3832, hash 8A406249 + total output bytes = 26873 sample count = 180 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.1.dump b/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.1.dump index 11afeb9665e..4fb8a74d923 100644 --- a/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.1.dump +++ b/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.1.dump @@ -27,6 +27,7 @@ track 0: initializationData: data = length 30, hash 9A8FF207 data = length 3832, hash 8A406249 + total output bytes = 17598 sample count = 109 sample 0: time = 896000 diff --git a/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.2.dump b/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.2.dump index f2f97ebcfa5..fad8f33d779 100644 --- a/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.2.dump +++ b/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.2.dump @@ -27,6 +27,7 @@ track 0: initializationData: data = length 30, hash 9A8FF207 data = length 3832, hash 8A406249 + total output bytes = 8658 sample count = 49 sample 0: time = 1821333 diff --git a/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.3.dump b/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.3.dump index 5d5f284cf24..49dca02220d 100644 --- a/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.3.dump +++ b/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.3.dump @@ -27,5 +27,6 @@ track 0: initializationData: data = length 30, hash 9A8FF207 data = length 3832, hash 8A406249 + total output bytes = 0 sample count = 0 tracksEnded = true diff --git a/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.unklen.dump b/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.unklen.dump index ee1176773e3..756be428542 100644 --- a/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.unklen.dump +++ b/library/core/src/androidTest/assets/ogg/bear_vorbis.ogg.unklen.dump @@ -27,6 +27,7 @@ track 0: initializationData: data = length 30, hash 9A8FF207 data = length 3832, hash 8A406249 + total output bytes = 26873 sample count = 180 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/rawcc/sample.rawcc.0.dump b/library/core/src/androidTest/assets/rawcc/sample.rawcc.0.dump index d430d1d8d44..130be06cebd 100644 --- a/library/core/src/androidTest/assets/rawcc/sample.rawcc.0.dump +++ b/library/core/src/androidTest/assets/rawcc/sample.rawcc.0.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 978 sample count = 150 sample 0: time = 37657512133 diff --git a/library/core/src/androidTest/assets/ts/sample.ac3.0.dump b/library/core/src/androidTest/assets/ts/sample.ac3.0.dump index bedffcf1989..46028638fe6 100644 --- a/library/core/src/androidTest/assets/ts/sample.ac3.0.dump +++ b/library/core/src/androidTest/assets/ts/sample.ac3.0.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 13281 sample count = 8 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/ts/sample.adts.0.dump b/library/core/src/androidTest/assets/ts/sample.adts.0.dump index a97cf860d10..132859a00e1 100644 --- a/library/core/src/androidTest/assets/ts/sample.adts.0.dump +++ b/library/core/src/androidTest/assets/ts/sample.adts.0.dump @@ -26,6 +26,7 @@ track 0: drmInitData = - initializationData: data = length 2, hash 5F7 + total output bytes = 30797 sample count = 144 sample 0: time = 0 @@ -625,5 +626,6 @@ track 1: language = null drmInitData = - initializationData: + total output bytes = 0 sample count = 0 tracksEnded = true diff --git a/library/core/src/androidTest/assets/ts/sample.ps.0.dump b/library/core/src/androidTest/assets/ts/sample.ps.0.dump index 41db704d568..e833201692c 100644 --- a/library/core/src/androidTest/assets/ts/sample.ps.0.dump +++ b/library/core/src/androidTest/assets/ts/sample.ps.0.dump @@ -25,6 +25,7 @@ track 192: language = null drmInitData = - initializationData: + total output bytes = 1671 sample count = 4 sample 0: time = 29088 @@ -65,6 +66,7 @@ track 224: drmInitData = - initializationData: data = length 22, hash 743CC6F8 + total output bytes = 44056 sample count = 2 sample 0: time = 40000 diff --git a/library/core/src/androidTest/assets/ts/sample.ts.0.dump b/library/core/src/androidTest/assets/ts/sample.ts.0.dump index e900b946732..39b15652894 100644 --- a/library/core/src/androidTest/assets/ts/sample.ts.0.dump +++ b/library/core/src/androidTest/assets/ts/sample.ts.0.dump @@ -26,6 +26,7 @@ track 256: drmInitData = - initializationData: data = length 22, hash CE183139 + total output bytes = 45026 sample count = 2 sample 0: time = 33366 @@ -57,6 +58,7 @@ track 257: language = und drmInitData = - initializationData: + total output bytes = 5015 sample count = 4 sample 0: time = 22455 diff --git a/library/core/src/androidTest/assets/wav/sample.wav.0.dump b/library/core/src/androidTest/assets/wav/sample.wav.0.dump index 5d0f4d77f05..32f9d495d23 100644 --- a/library/core/src/androidTest/assets/wav/sample.wav.0.dump +++ b/library/core/src/androidTest/assets/wav/sample.wav.0.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 88200 sample count = 3 sample 0: time = 0 diff --git a/library/core/src/androidTest/assets/wav/sample.wav.1.dump b/library/core/src/androidTest/assets/wav/sample.wav.1.dump index e59239bff81..d4758e65b5f 100644 --- a/library/core/src/androidTest/assets/wav/sample.wav.1.dump +++ b/library/core/src/androidTest/assets/wav/sample.wav.1.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 58802 sample count = 2 sample 0: time = 333310 diff --git a/library/core/src/androidTest/assets/wav/sample.wav.2.dump b/library/core/src/androidTest/assets/wav/sample.wav.2.dump index c80a260385c..ea33c62423e 100644 --- a/library/core/src/androidTest/assets/wav/sample.wav.2.dump +++ b/library/core/src/androidTest/assets/wav/sample.wav.2.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 29402 sample count = 1 sample 0: time = 666643 diff --git a/library/core/src/androidTest/assets/wav/sample.wav.3.dump b/library/core/src/androidTest/assets/wav/sample.wav.3.dump index 9f25028923d..de0d8f22d02 100644 --- a/library/core/src/androidTest/assets/wav/sample.wav.3.dump +++ b/library/core/src/androidTest/assets/wav/sample.wav.3.dump @@ -25,6 +25,7 @@ track 0: language = null drmInitData = - initializationData: + total output bytes = 2 sample count = 1 sample 0: time = 999977 diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeExtractorInput.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeExtractorInput.java index 5cb11fdd81a..7f6398dd5a6 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeExtractorInput.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeExtractorInput.java @@ -91,23 +91,16 @@ public void setPosition(int position) { @Override public int read(byte[] target, int offset, int length) throws IOException { + checkIOException(readPosition, failedReadPositions); length = getReadLength(length); - if (readFully(target, offset, length, true)) { - return length; - } - return C.RESULT_END_OF_INPUT; + return readFullyInternal(target, offset, length, true) ? length : C.RESULT_END_OF_INPUT; } @Override public boolean readFully(byte[] target, int offset, int length, boolean allowEndOfInput) throws IOException { - if (!checkXFully(allowEndOfInput, readPosition, length, failedReadPositions)) { - return false; - } - System.arraycopy(data, readPosition, target, offset, length); - readPosition += length; - peekPosition = readPosition; - return true; + checkIOException(readPosition, failedReadPositions); + return readFullyInternal(target, offset, length, allowEndOfInput); } @Override @@ -117,21 +110,15 @@ public void readFully(byte[] target, int offset, int length) throws IOException @Override public int skip(int length) throws IOException { + checkIOException(readPosition, failedReadPositions); length = getReadLength(length); - if (skipFully(length, true)) { - return length; - } - return C.RESULT_END_OF_INPUT; + return skipFullyInternal(length, true) ? length : C.RESULT_END_OF_INPUT; } @Override public boolean skipFully(int length, boolean allowEndOfInput) throws IOException { - if (!checkXFully(allowEndOfInput, readPosition, length, failedReadPositions)) { - return false; - } - readPosition += length; - peekPosition = readPosition; - return true; + checkIOException(readPosition, failedReadPositions); + return skipFullyInternal(length, allowEndOfInput); } @Override @@ -142,7 +129,8 @@ public void skipFully(int length) throws IOException { @Override public boolean peekFully(byte[] target, int offset, int length, boolean allowEndOfInput) throws IOException { - if (!checkXFully(allowEndOfInput, peekPosition, length, failedPeekPositions)) { + checkIOException(peekPosition, failedPeekPositions); + if (!checkXFully(allowEndOfInput, peekPosition, length)) { return false; } System.arraycopy(data, peekPosition, target, offset, length); @@ -157,7 +145,8 @@ public void peekFully(byte[] target, int offset, int length) throws IOException @Override public boolean advancePeekPosition(int length, boolean allowEndOfInput) throws IOException { - if (!checkXFully(allowEndOfInput, peekPosition, length, failedPeekPositions)) { + checkIOException(peekPosition, failedPeekPositions); + if (!checkXFully(allowEndOfInput, peekPosition, length)) { return false; } peekPosition += length; @@ -196,13 +185,17 @@ public void setRetryPosition(long position, E e) throws E throw e; } - private boolean checkXFully(boolean allowEndOfInput, int position, int length, - SparseBooleanArray failedPositions) throws IOException { + private void checkIOException(int position, SparseBooleanArray failedPositions) + throws SimulatedIOException { if (simulateIOErrors && !failedPositions.get(position)) { failedPositions.put(position, true); peekPosition = readPosition; throw new SimulatedIOException("Simulated IO error at position: " + position); } + } + + private boolean checkXFully(boolean allowEndOfInput, int position, int length) + throws EOFException { if (length > 0 && position == data.length) { if (allowEndOfInput) { return false; @@ -230,6 +223,26 @@ private int getReadLength(int requestedLength) { return Math.min(requestedLength, data.length - readPosition); } + private boolean readFullyInternal(byte[] target, int offset, int length, boolean allowEndOfInput) + throws EOFException { + if (!checkXFully(allowEndOfInput, readPosition, length)) { + return false; + } + System.arraycopy(data, readPosition, target, offset, length); + readPosition += length; + peekPosition = readPosition; + return true; + } + + private boolean skipFullyInternal(int length, boolean allowEndOfInput) throws EOFException { + if (!checkXFully(allowEndOfInput, readPosition, length)) { + return false; + } + readPosition += length; + peekPosition = readPosition; + return true; + } + /** * Builder of {@link FakeExtractorInput} instances. */ diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTrackOutput.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTrackOutput.java index b14e6f60efa..f8e54074219 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTrackOutput.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTrackOutput.java @@ -160,6 +160,7 @@ public void dump(Dumper dumper) { } dumper.endBlock().endBlock(); + dumper.add("total output bytes", sampleData.length); dumper.add("sample count", sampleTimesUs.size()); for (int i = 0; i < sampleTimesUs.size(); i++) {