Fixed issue in which MediaChunk.seekToStart might not actually seek to the start of the segment.

This commit is contained in:
Oliver Woodman 2014-07-04 00:47:44 +01:00
parent 8cad387393
commit 50b276fe31
4 changed files with 17 additions and 3 deletions

View File

@ -73,9 +73,7 @@ public abstract class MediaChunk extends Chunk {
/** /**
* Seeks to the beginning of the chunk. * Seeks to the beginning of the chunk.
*/ */
public final void seekToStart() { public abstract void seekToStart();
seekTo(startTimeUs, false);
}
/** /**
* Seeks to the specified position within the chunk. * Seeks to the specified position within the chunk.

View File

@ -54,6 +54,12 @@ public final class Mp4MediaChunk extends MediaChunk {
this.sampleOffsetUs = sampleOffsetUs; this.sampleOffsetUs = sampleOffsetUs;
} }
@Override
public void seekToStart() {
extractor.seekTo(0, false);
resetReadPosition();
}
@Override @Override
public boolean seekTo(long positionUs, boolean allowNoop) { public boolean seekTo(long positionUs, boolean allowNoop) {
long seekTimeUs = positionUs + sampleOffsetUs; long seekTimeUs = positionUs + sampleOffsetUs;

View File

@ -109,6 +109,11 @@ public class SingleSampleMediaChunk extends MediaChunk {
return true; return true;
} }
@Override
public void seekToStart() {
resetReadPosition();
}
@Override @Override
public boolean seekTo(long positionUs, boolean allowNoop) { public boolean seekTo(long positionUs, boolean allowNoop) {
resetReadPosition(); resetReadPosition();

View File

@ -50,6 +50,11 @@ public final class WebmMediaChunk extends MediaChunk {
this.extractor = extractor; this.extractor = extractor;
} }
@Override
public void seekToStart() {
seekTo(0, false);
}
@Override @Override
public boolean seekTo(long positionUs, boolean allowNoop) { public boolean seekTo(long positionUs, boolean allowNoop) {
boolean isDiscontinuous = extractor.seekTo(positionUs, allowNoop); boolean isDiscontinuous = extractor.seekTo(positionUs, allowNoop);