From 796e5bc7d64af7d59c0b48dd9b257c9f1d990b76 Mon Sep 17 00:00:00 2001 From: Nezz Date: Wed, 21 Jan 2015 02:44:21 +0100 Subject: [PATCH 1/2] FrameworkSampleSource with FileDescriptor #246 --- .../exoplayer/FrameworkSampleSource.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java b/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java index b2bcc91bfa..bfed6650d6 100644 --- a/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java @@ -23,6 +23,7 @@ import android.content.Context; import android.media.MediaExtractor; import android.net.Uri; +import java.io.FileDescriptor; import java.io.IOException; import java.util.Map; import java.util.UUID; @@ -42,6 +43,10 @@ public final class FrameworkSampleSource implements SampleSource { private final Context context; private final Uri uri; private final Map headers; + + private final FileDescriptor fileDescriptor; + private final long fdOffset; + private final long fdLength; private MediaExtractor extractor; private TrackInfo[] trackInfos; @@ -59,13 +64,36 @@ public final class FrameworkSampleSource implements SampleSource { this.uri = uri; this.headers = headers; this.remainingReleaseCount = downstreamRendererCount; + + this.fileDescriptor = null; + this.fdOffset = 0; + this.fdLength = 0; + } + + public FrameworkSampleSource(FileDescriptor fileDescriptor, long offset, long length, + int downstreamRendererCount) { + Assertions.checkState(Util.SDK_INT >= 16); + + this.fileDescriptor = fileDescriptor; + this.fdOffset = offset; + this.fdLength = length; + this.remainingReleaseCount = downstreamRendererCount; + + this.context = null; + this.uri = null; + this.headers = null; } @Override public boolean prepare() throws IOException { if (!prepared) { extractor = new MediaExtractor(); - extractor.setDataSource(context, uri, headers); + + if (context != null) + extractor.setDataSource(context, uri, headers); + else + extractor.setDataSource(fileDescriptor, fdOffset, fdLength); + trackStates = new int[extractor.getTrackCount()]; pendingDiscontinuities = new boolean[trackStates.length]; trackInfos = new TrackInfo[trackStates.length]; From 8547f0c05d6911efae35aa3b2dfb61600f698995 Mon Sep 17 00:00:00 2001 From: Nezz Date: Wed, 21 Jan 2015 17:44:48 +0100 Subject: [PATCH 2/2] Replaced tabs with spaces --- .../com/google/android/exoplayer/FrameworkSampleSource.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java b/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java index bfed6650d6..6fe88cad27 100644 --- a/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java @@ -74,9 +74,9 @@ public final class FrameworkSampleSource implements SampleSource { int downstreamRendererCount) { Assertions.checkState(Util.SDK_INT >= 16); - this.fileDescriptor = fileDescriptor; - this.fdOffset = offset; - this.fdLength = length; + this.fileDescriptor = fileDescriptor; + this.fdOffset = offset; + this.fdLength = length; this.remainingReleaseCount = downstreamRendererCount; this.context = null;