From 796e5bc7d64af7d59c0b48dd9b257c9f1d990b76 Mon Sep 17 00:00:00 2001 From: Nezz Date: Wed, 21 Jan 2015 02:44:21 +0100 Subject: [PATCH 1/4] 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/4] 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; From bb9e34f512ad3f82d441efd5b0dc4f0b1c307a0a Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Wed, 21 Jan 2015 15:47:17 -0800 Subject: [PATCH 3/4] Minor style tweaks. --- .../exoplayer/FrameworkSampleSource.java | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 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 6fe88cad27..47183b35f8 100644 --- a/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java @@ -40,13 +40,15 @@ public final class FrameworkSampleSource implements SampleSource { private static final int TRACK_STATE_ENABLED = 1; private static final int TRACK_STATE_FORMAT_SENT = 2; + // Parameters for a Uri data source. private final Context context; private final Uri uri; private final Map headers; - + + // Parameters for a FileDescriptor data source. private final FileDescriptor fileDescriptor; - private final long fdOffset; - private final long fdLength; + private final long fileDescriptorOffset; + private final long fileDescriptorLength; private MediaExtractor extractor; private TrackInfo[] trackInfos; @@ -60,25 +62,26 @@ public final class FrameworkSampleSource implements SampleSource { public FrameworkSampleSource(Context context, Uri uri, Map headers, int downstreamRendererCount) { Assertions.checkState(Util.SDK_INT >= 16); + this.remainingReleaseCount = downstreamRendererCount; + this.context = context; this.uri = uri; this.headers = headers; - this.remainingReleaseCount = downstreamRendererCount; - + this.fileDescriptor = null; - this.fdOffset = 0; - this.fdLength = 0; + this.fileDescriptorOffset = 0; + this.fileDescriptorLength = 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.fileDescriptor = fileDescriptor; + this.fileDescriptorOffset = offset; + this.fileDescriptorLength = length; + this.context = null; this.uri = null; this.headers = null; @@ -88,12 +91,12 @@ public final class FrameworkSampleSource implements SampleSource { public boolean prepare() throws IOException { if (!prepared) { extractor = new MediaExtractor(); - + if (context != null) extractor.setDataSource(context, uri, headers); else - extractor.setDataSource(fileDescriptor, fdOffset, fdLength); - + extractor.setDataSource(fileDescriptor, fileDescriptorOffset, fileDescriptorLength); + trackStates = new int[extractor.getTrackCount()]; pendingDiscontinuities = new boolean[trackStates.length]; trackInfos = new TrackInfo[trackStates.length]; From e246970a202e6db7f2528c8a65416681a0163036 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Wed, 21 Jan 2015 15:51:02 -0800 Subject: [PATCH 4/4] Minor style tweaks. --- .../google/android/exoplayer/FrameworkSampleSource.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 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 47183b35f8..8ff2ab2e02 100644 --- a/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/FrameworkSampleSource.java @@ -91,12 +91,12 @@ public final class FrameworkSampleSource implements SampleSource { public boolean prepare() throws IOException { if (!prepared) { extractor = new MediaExtractor(); - - if (context != null) + if (context != null) { extractor.setDataSource(context, uri, headers); - else + } else { extractor.setDataSource(fileDescriptor, fileDescriptorOffset, fileDescriptorLength); - + } + trackStates = new int[extractor.getTrackCount()]; pendingDiscontinuities = new boolean[trackStates.length]; trackInfos = new TrackInfo[trackStates.length];