From 50b276fe31985b3e6cd631363c8d23cc5616eb81 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 4 Jul 2014 00:47:44 +0100 Subject: [PATCH] Fixed issue in which MediaChunk.seekToStart might not actually seek to the start of the segment. --- .../java/com/google/android/exoplayer/chunk/MediaChunk.java | 4 +--- .../com/google/android/exoplayer/chunk/Mp4MediaChunk.java | 6 ++++++ .../android/exoplayer/chunk/SingleSampleMediaChunk.java | 5 +++++ .../com/google/android/exoplayer/chunk/WebmMediaChunk.java | 5 +++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/MediaChunk.java b/library/src/main/java/com/google/android/exoplayer/chunk/MediaChunk.java index ad22645be6..fd7c3a59b6 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/MediaChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/MediaChunk.java @@ -73,9 +73,7 @@ public abstract class MediaChunk extends Chunk { /** * Seeks to the beginning of the chunk. */ - public final void seekToStart() { - seekTo(startTimeUs, false); - } + public abstract void seekToStart(); /** * Seeks to the specified position within the chunk. diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/Mp4MediaChunk.java b/library/src/main/java/com/google/android/exoplayer/chunk/Mp4MediaChunk.java index 0b1e22b643..4bd0076a6d 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/Mp4MediaChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/Mp4MediaChunk.java @@ -54,6 +54,12 @@ public final class Mp4MediaChunk extends MediaChunk { this.sampleOffsetUs = sampleOffsetUs; } + @Override + public void seekToStart() { + extractor.seekTo(0, false); + resetReadPosition(); + } + @Override public boolean seekTo(long positionUs, boolean allowNoop) { long seekTimeUs = positionUs + sampleOffsetUs; diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleMediaChunk.java b/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleMediaChunk.java index 893e28b507..ef7e1436a0 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleMediaChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleMediaChunk.java @@ -109,6 +109,11 @@ public class SingleSampleMediaChunk extends MediaChunk { return true; } + @Override + public void seekToStart() { + resetReadPosition(); + } + @Override public boolean seekTo(long positionUs, boolean allowNoop) { resetReadPosition(); diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/WebmMediaChunk.java b/library/src/main/java/com/google/android/exoplayer/chunk/WebmMediaChunk.java index 1c86c23865..23dfa2bf0a 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/WebmMediaChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/WebmMediaChunk.java @@ -50,6 +50,11 @@ public final class WebmMediaChunk extends MediaChunk { this.extractor = extractor; } + @Override + public void seekToStart() { + seekTo(0, false); + } + @Override public boolean seekTo(long positionUs, boolean allowNoop) { boolean isDiscontinuous = extractor.seekTo(positionUs, allowNoop);