From 88be178e0fa8139a36d127a1a5cdaab4fbd3cda2 Mon Sep 17 00:00:00 2001 From: olly Date: Mon, 16 Dec 2019 15:35:06 +0000 Subject: [PATCH] Manual rollback of https://github.com/google/ExoPlayer/commit/b3f485d7d9c08e39574b72a949166ee4834c3b24 It's technically possible to output a seekable SeekMap with unknown duration. This can occur if the media defines seek points but doesn't define either the overall duration or the duration of the media from the last seek point to the end. PiperOrigin-RevId: 285769121 --- .../exoplayer2/testutil/FakeExtractorOutput.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeExtractorOutput.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeExtractorOutput.java index b5e90dc3ea..0502707682 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeExtractorOutput.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeExtractorOutput.java @@ -69,16 +69,16 @@ public final class FakeExtractorOutput implements ExtractorOutput, Dumper.Dumpab @Override public void seekMap(SeekMap seekMap) { if (seekMap.isSeekable()) { - if (seekMap.getDurationUs() == C.TIME_UNSET) { - throw new IllegalStateException("SeekMap cannot be seekable and have an unknown duration"); - } SeekMap.SeekPoints seekPoints = seekMap.getSeekPoints(0); if (!seekPoints.first.equals(seekPoints.second)) { throw new IllegalStateException("SeekMap defines two seek points for t=0"); } - seekPoints = seekMap.getSeekPoints(seekMap.getDurationUs()); - if (!seekPoints.first.equals(seekPoints.second)) { - throw new IllegalStateException("SeekMap defines two seek points for t=durationUs"); + long durationUs = seekMap.getDurationUs(); + if (durationUs != C.TIME_UNSET) { + seekPoints = seekMap.getSeekPoints(durationUs); + if (!seekPoints.first.equals(seekPoints.second)) { + throw new IllegalStateException("SeekMap defines two seek points for t=durationUs"); + } } } this.seekMap = seekMap;