Merge pull request #255 from google/dev

dev -> dev-hls
This commit is contained in:
ojw28 2015-01-21 15:52:31 -08:00
commit ef396933f8

View File

@ -23,6 +23,7 @@ import android.content.Context;
import android.media.MediaExtractor; import android.media.MediaExtractor;
import android.net.Uri; import android.net.Uri;
import java.io.FileDescriptor;
import java.io.IOException; import java.io.IOException;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
@ -39,10 +40,16 @@ public final class FrameworkSampleSource implements SampleSource {
private static final int TRACK_STATE_ENABLED = 1; private static final int TRACK_STATE_ENABLED = 1;
private static final int TRACK_STATE_FORMAT_SENT = 2; private static final int TRACK_STATE_FORMAT_SENT = 2;
// Parameters for a Uri data source.
private final Context context; private final Context context;
private final Uri uri; private final Uri uri;
private final Map<String, String> headers; private final Map<String, String> headers;
// Parameters for a FileDescriptor data source.
private final FileDescriptor fileDescriptor;
private final long fileDescriptorOffset;
private final long fileDescriptorLength;
private MediaExtractor extractor; private MediaExtractor extractor;
private TrackInfo[] trackInfos; private TrackInfo[] trackInfos;
private boolean prepared; private boolean prepared;
@ -55,17 +62,41 @@ public final class FrameworkSampleSource implements SampleSource {
public FrameworkSampleSource(Context context, Uri uri, Map<String, String> headers, public FrameworkSampleSource(Context context, Uri uri, Map<String, String> headers,
int downstreamRendererCount) { int downstreamRendererCount) {
Assertions.checkState(Util.SDK_INT >= 16); Assertions.checkState(Util.SDK_INT >= 16);
this.remainingReleaseCount = downstreamRendererCount;
this.context = context; this.context = context;
this.uri = uri; this.uri = uri;
this.headers = headers; this.headers = headers;
this.fileDescriptor = null;
this.fileDescriptorOffset = 0;
this.fileDescriptorLength = 0;
}
public FrameworkSampleSource(FileDescriptor fileDescriptor, long offset, long length,
int downstreamRendererCount) {
Assertions.checkState(Util.SDK_INT >= 16);
this.remainingReleaseCount = downstreamRendererCount; this.remainingReleaseCount = downstreamRendererCount;
this.fileDescriptor = fileDescriptor;
this.fileDescriptorOffset = offset;
this.fileDescriptorLength = length;
this.context = null;
this.uri = null;
this.headers = null;
} }
@Override @Override
public boolean prepare() throws IOException { public boolean prepare() throws IOException {
if (!prepared) { if (!prepared) {
extractor = new MediaExtractor(); extractor = new MediaExtractor();
extractor.setDataSource(context, uri, headers); if (context != null) {
extractor.setDataSource(context, uri, headers);
} else {
extractor.setDataSource(fileDescriptor, fileDescriptorOffset, fileDescriptorLength);
}
trackStates = new int[extractor.getTrackCount()]; trackStates = new int[extractor.getTrackCount()];
pendingDiscontinuities = new boolean[trackStates.length]; pendingDiscontinuities = new boolean[trackStates.length];
trackInfos = new TrackInfo[trackStates.length]; trackInfos = new TrackInfo[trackStates.length];