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 6908f5cc93..2a17cbdea6 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 1414443187..412e4a1b8f 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 e343241650..42ebb125d1 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 95ab255bd0..958cb0d418 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 7a4a74770c..f4502749f5 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 0f005ee5a9..009ff55c23 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 378f5d7f2a..91396e81b8 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 80caf24a93..5c56dcc8af 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 c9672ba9c4..cf5a0199fc 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 abc07dc503..62a270eb9e 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 c43a43b576..43e5eed5d1 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 eca3a6687d..b12a68a60b 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 12abf149c4..abf5b10415 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 3568616e76..813f61b7fc 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 8a31fe5e7d..9a0207bd53 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 88601665b0..435360dfed 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 88601665b0..435360dfed 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 88601665b0..435360dfed 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 88601665b0..435360dfed 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 2c0ac67561..6b49619b50 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 7cd3486505..77708b16df 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 fcf9402cba..30ed21ef98 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 5dbb6e1561..640d92722c 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 bac707446d..b4fd4a0b02 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 736e57693c..ec2cb7b8ce 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 8186a2b9ce..ae012055fe 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 4d09067f3b..643972b836 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 821351e989..8df1563d90 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 3aea1e8d74..bed4c46d9c 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 b49af29f2c..8a9c99250e 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 b2d5a9f3d2..5d2c84b047 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 572d1da891..ff22bb2d3e 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 d53f257fd2..50110149fd 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 cdfd6efab8..483ae36721 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 9b029d3301..a47407e63d 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 572d1da891..ff22bb2d3e 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 1c02c1bbef..32f350efcb 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 81d79b8674..3082e8faca 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 f8b00bcb3a..b574409f70 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 b020618488..f411596b44 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 bf135434f4..bdfe90277d 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 860e8a3b5b..dd129ce9dc 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 11afeb9665..4fb8a74d92 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 f2f97ebcfa..fad8f33d77 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 5d5f284cf2..49dca02220 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 ee1176773e..756be42854 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 d430d1d8d4..130be06ceb 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 bedffcf198..46028638fe 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 a97cf860d1..132859a00e 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 41db704d56..e833201692 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 e900b94673..39b1565289 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 5d0f4d77f0..32f9d495d2 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 e59239bff8..d4758e65b5 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 c80a260385..ea33c62423 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 9f25028923..de0d8f22d0 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 5cb11fdd81..7f6398dd5a 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 final class FakeExtractorInput implements ExtractorInput { @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 final class FakeExtractorInput implements ExtractorInput { @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 final class FakeExtractorInput implements ExtractorInput { @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 final class FakeExtractorInput implements ExtractorInput { @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 final class FakeExtractorInput implements ExtractorInput { 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 @@ public final class FakeExtractorInput implements ExtractorInput { 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 b14e6f60ef..f8e5407421 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 final class FakeTrackOutput implements TrackOutput, Dumper.Dumpable { } dumper.endBlock().endBlock(); + dumper.add("total output bytes", sampleData.length); dumper.add("sample count", sampleTimesUs.size()); for (int i = 0; i < sampleTimesUs.size(); i++) {