commit
dd2921f9b2
@ -43,7 +43,7 @@ import com.google.android.exoplayer.drm.StreamingDrmSessionManager;
|
|||||||
import com.google.android.exoplayer.upstream.BufferPool;
|
import com.google.android.exoplayer.upstream.BufferPool;
|
||||||
import com.google.android.exoplayer.upstream.DataSource;
|
import com.google.android.exoplayer.upstream.DataSource;
|
||||||
import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
|
import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
|
||||||
import com.google.android.exoplayer.upstream.HttpDataSource;
|
import com.google.android.exoplayer.upstream.UriDataSource;
|
||||||
import com.google.android.exoplayer.util.ManifestFetcher;
|
import com.google.android.exoplayer.util.ManifestFetcher;
|
||||||
import com.google.android.exoplayer.util.ManifestFetcher.ManifestCallback;
|
import com.google.android.exoplayer.util.ManifestFetcher.ManifestCallback;
|
||||||
import com.google.android.exoplayer.util.MimeTypes;
|
import com.google.android.exoplayer.util.MimeTypes;
|
||||||
@ -162,7 +162,7 @@ public class DashVodRendererBuilder implements RendererBuilder,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Build the video renderer.
|
// Build the video renderer.
|
||||||
DataSource videoDataSource = new HttpDataSource(userAgent, null, bandwidthMeter);
|
DataSource videoDataSource = new UriDataSource(userAgent, bandwidthMeter);
|
||||||
ChunkSource videoChunkSource;
|
ChunkSource videoChunkSource;
|
||||||
String mimeType = videoRepresentations[0].format.mimeType;
|
String mimeType = videoRepresentations[0].format.mimeType;
|
||||||
if (mimeType.equals(MimeTypes.VIDEO_MP4) || mimeType.equals(MimeTypes.VIDEO_WEBM)) {
|
if (mimeType.equals(MimeTypes.VIDEO_MP4) || mimeType.equals(MimeTypes.VIDEO_WEBM)) {
|
||||||
@ -187,7 +187,7 @@ public class DashVodRendererBuilder implements RendererBuilder,
|
|||||||
audioChunkSource = null;
|
audioChunkSource = null;
|
||||||
audioRenderer = null;
|
audioRenderer = null;
|
||||||
} else {
|
} else {
|
||||||
DataSource audioDataSource = new HttpDataSource(userAgent, null, bandwidthMeter);
|
DataSource audioDataSource = new UriDataSource(userAgent, bandwidthMeter);
|
||||||
audioTrackNames = new String[audioRepresentationsList.size()];
|
audioTrackNames = new String[audioRepresentationsList.size()];
|
||||||
ChunkSource[] audioChunkSources = new ChunkSource[audioRepresentationsList.size()];
|
ChunkSource[] audioChunkSources = new ChunkSource[audioRepresentationsList.size()];
|
||||||
FormatEvaluator audioEvaluator = new FormatEvaluator.FixedEvaluator();
|
FormatEvaluator audioEvaluator = new FormatEvaluator.FixedEvaluator();
|
||||||
|
@ -131,7 +131,7 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
|
|||||||
* A listener for receiving notifications of timed text.
|
* A listener for receiving notifications of timed text.
|
||||||
*/
|
*/
|
||||||
public interface TextListener {
|
public interface TextListener {
|
||||||
public abstract void onText(String text);
|
void onText(String text);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Constants pulled into this class for convenience.
|
// Constants pulled into this class for convenience.
|
||||||
@ -287,7 +287,6 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
|
|||||||
this.trackNames = trackNames;
|
this.trackNames = trackNames;
|
||||||
this.multiTrackSources = multiTrackSources;
|
this.multiTrackSources = multiTrackSources;
|
||||||
rendererBuildingState = RENDERER_BUILDING_STATE_BUILT;
|
rendererBuildingState = RENDERER_BUILDING_STATE_BUILT;
|
||||||
maybeReportPlayerState();
|
|
||||||
pushSurfaceAndVideoTrack(false);
|
pushSurfaceAndVideoTrack(false);
|
||||||
pushTrackSelection(TYPE_AUDIO, true);
|
pushTrackSelection(TYPE_AUDIO, true);
|
||||||
pushTrackSelection(TYPE_TEXT, true);
|
pushTrackSelection(TYPE_TEXT, true);
|
||||||
|
@ -41,7 +41,7 @@ import com.google.android.exoplayer.text.ttml.TtmlParser;
|
|||||||
import com.google.android.exoplayer.upstream.BufferPool;
|
import com.google.android.exoplayer.upstream.BufferPool;
|
||||||
import com.google.android.exoplayer.upstream.DataSource;
|
import com.google.android.exoplayer.upstream.DataSource;
|
||||||
import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
|
import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
|
||||||
import com.google.android.exoplayer.upstream.HttpDataSource;
|
import com.google.android.exoplayer.upstream.UriDataSource;
|
||||||
import com.google.android.exoplayer.util.ManifestFetcher;
|
import com.google.android.exoplayer.util.ManifestFetcher;
|
||||||
import com.google.android.exoplayer.util.Util;
|
import com.google.android.exoplayer.util.Util;
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ public class SmoothStreamingRendererBuilder implements RendererBuilder,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Build the video renderer.
|
// Build the video renderer.
|
||||||
DataSource videoDataSource = new HttpDataSource(userAgent, null, bandwidthMeter);
|
DataSource videoDataSource = new UriDataSource(userAgent, bandwidthMeter);
|
||||||
ChunkSource videoChunkSource = new SmoothStreamingChunkSource(manifestFetcher,
|
ChunkSource videoChunkSource = new SmoothStreamingChunkSource(manifestFetcher,
|
||||||
videoStreamElementIndex, videoTrackIndices, videoDataSource,
|
videoStreamElementIndex, videoTrackIndices, videoDataSource,
|
||||||
new AdaptiveEvaluator(bandwidthMeter), LIVE_EDGE_LATENCY_MS);
|
new AdaptiveEvaluator(bandwidthMeter), LIVE_EDGE_LATENCY_MS);
|
||||||
@ -177,7 +177,7 @@ public class SmoothStreamingRendererBuilder implements RendererBuilder,
|
|||||||
} else {
|
} else {
|
||||||
audioTrackNames = new String[audioStreamElementCount];
|
audioTrackNames = new String[audioStreamElementCount];
|
||||||
ChunkSource[] audioChunkSources = new ChunkSource[audioStreamElementCount];
|
ChunkSource[] audioChunkSources = new ChunkSource[audioStreamElementCount];
|
||||||
DataSource audioDataSource = new HttpDataSource(userAgent, null, bandwidthMeter);
|
DataSource audioDataSource = new UriDataSource(userAgent, bandwidthMeter);
|
||||||
FormatEvaluator audioFormatEvaluator = new FormatEvaluator.FixedEvaluator();
|
FormatEvaluator audioFormatEvaluator = new FormatEvaluator.FixedEvaluator();
|
||||||
audioStreamElementCount = 0;
|
audioStreamElementCount = 0;
|
||||||
for (int i = 0; i < manifest.streamElements.length; i++) {
|
for (int i = 0; i < manifest.streamElements.length; i++) {
|
||||||
@ -208,7 +208,7 @@ public class SmoothStreamingRendererBuilder implements RendererBuilder,
|
|||||||
} else {
|
} else {
|
||||||
textTrackNames = new String[textStreamElementCount];
|
textTrackNames = new String[textStreamElementCount];
|
||||||
ChunkSource[] textChunkSources = new ChunkSource[textStreamElementCount];
|
ChunkSource[] textChunkSources = new ChunkSource[textStreamElementCount];
|
||||||
DataSource ttmlDataSource = new HttpDataSource(userAgent, null, bandwidthMeter);
|
DataSource ttmlDataSource = new UriDataSource(userAgent, bandwidthMeter);
|
||||||
FormatEvaluator ttmlFormatEvaluator = new FormatEvaluator.FixedEvaluator();
|
FormatEvaluator ttmlFormatEvaluator = new FormatEvaluator.FixedEvaluator();
|
||||||
textStreamElementCount = 0;
|
textStreamElementCount = 0;
|
||||||
for (int i = 0; i < manifest.streamElements.length; i++) {
|
for (int i = 0; i < manifest.streamElements.length; i++) {
|
||||||
|
@ -37,7 +37,7 @@ import com.google.android.exoplayer.demo.simple.SimplePlayerActivity.RendererBui
|
|||||||
import com.google.android.exoplayer.upstream.BufferPool;
|
import com.google.android.exoplayer.upstream.BufferPool;
|
||||||
import com.google.android.exoplayer.upstream.DataSource;
|
import com.google.android.exoplayer.upstream.DataSource;
|
||||||
import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
|
import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
|
||||||
import com.google.android.exoplayer.upstream.HttpDataSource;
|
import com.google.android.exoplayer.upstream.UriDataSource;
|
||||||
import com.google.android.exoplayer.util.ManifestFetcher;
|
import com.google.android.exoplayer.util.ManifestFetcher;
|
||||||
import com.google.android.exoplayer.util.ManifestFetcher.ManifestCallback;
|
import com.google.android.exoplayer.util.ManifestFetcher.ManifestCallback;
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ import java.util.ArrayList;
|
|||||||
videoRepresentationsList.toArray(videoRepresentations);
|
videoRepresentationsList.toArray(videoRepresentations);
|
||||||
|
|
||||||
// Build the video renderer.
|
// Build the video renderer.
|
||||||
DataSource videoDataSource = new HttpDataSource(userAgent, null, bandwidthMeter);
|
DataSource videoDataSource = new UriDataSource(userAgent, bandwidthMeter);
|
||||||
ChunkSource videoChunkSource = new DashChunkSource(videoDataSource,
|
ChunkSource videoChunkSource = new DashChunkSource(videoDataSource,
|
||||||
new AdaptiveEvaluator(bandwidthMeter), videoRepresentations);
|
new AdaptiveEvaluator(bandwidthMeter), videoRepresentations);
|
||||||
ChunkSampleSource videoSampleSource = new ChunkSampleSource(videoChunkSource, loadControl,
|
ChunkSampleSource videoSampleSource = new ChunkSampleSource(videoChunkSource, loadControl,
|
||||||
@ -127,7 +127,7 @@ import java.util.ArrayList;
|
|||||||
MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, 0, mainHandler, playerActivity, 50);
|
MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, 0, mainHandler, playerActivity, 50);
|
||||||
|
|
||||||
// Build the audio renderer.
|
// Build the audio renderer.
|
||||||
DataSource audioDataSource = new HttpDataSource(userAgent, null, bandwidthMeter);
|
DataSource audioDataSource = new UriDataSource(userAgent, bandwidthMeter);
|
||||||
ChunkSource audioChunkSource = new DashChunkSource(audioDataSource,
|
ChunkSource audioChunkSource = new DashChunkSource(audioDataSource,
|
||||||
new FormatEvaluator.FixedEvaluator(), audioRepresentation);
|
new FormatEvaluator.FixedEvaluator(), audioRepresentation);
|
||||||
SampleSource audioSampleSource = new ChunkSampleSource(audioChunkSource, loadControl,
|
SampleSource audioSampleSource = new ChunkSampleSource(audioChunkSource, loadControl,
|
||||||
|
@ -35,7 +35,7 @@ import com.google.android.exoplayer.smoothstreaming.SmoothStreamingManifestParse
|
|||||||
import com.google.android.exoplayer.upstream.BufferPool;
|
import com.google.android.exoplayer.upstream.BufferPool;
|
||||||
import com.google.android.exoplayer.upstream.DataSource;
|
import com.google.android.exoplayer.upstream.DataSource;
|
||||||
import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
|
import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
|
||||||
import com.google.android.exoplayer.upstream.HttpDataSource;
|
import com.google.android.exoplayer.upstream.UriDataSource;
|
||||||
import com.google.android.exoplayer.util.ManifestFetcher;
|
import com.google.android.exoplayer.util.ManifestFetcher;
|
||||||
import com.google.android.exoplayer.util.ManifestFetcher.ManifestCallback;
|
import com.google.android.exoplayer.util.ManifestFetcher.ManifestCallback;
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ import java.util.ArrayList;
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Build the video renderer.
|
// Build the video renderer.
|
||||||
DataSource videoDataSource = new HttpDataSource(userAgent, null, bandwidthMeter);
|
DataSource videoDataSource = new UriDataSource(userAgent, bandwidthMeter);
|
||||||
ChunkSource videoChunkSource = new SmoothStreamingChunkSource(manifestFetcher,
|
ChunkSource videoChunkSource = new SmoothStreamingChunkSource(manifestFetcher,
|
||||||
videoStreamElementIndex, videoTrackIndices, videoDataSource,
|
videoStreamElementIndex, videoTrackIndices, videoDataSource,
|
||||||
new AdaptiveEvaluator(bandwidthMeter), LIVE_EDGE_LATENCY_MS);
|
new AdaptiveEvaluator(bandwidthMeter), LIVE_EDGE_LATENCY_MS);
|
||||||
@ -131,7 +131,7 @@ import java.util.ArrayList;
|
|||||||
MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, 0, mainHandler, playerActivity, 50);
|
MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, 0, mainHandler, playerActivity, 50);
|
||||||
|
|
||||||
// Build the audio renderer.
|
// Build the audio renderer.
|
||||||
DataSource audioDataSource = new HttpDataSource(userAgent, null, bandwidthMeter);
|
DataSource audioDataSource = new UriDataSource(userAgent, bandwidthMeter);
|
||||||
ChunkSource audioChunkSource = new SmoothStreamingChunkSource(manifestFetcher,
|
ChunkSource audioChunkSource = new SmoothStreamingChunkSource(manifestFetcher,
|
||||||
audioStreamElementIndex, new int[] {0}, audioDataSource,
|
audioStreamElementIndex, new int[] {0}, audioDataSource,
|
||||||
new FormatEvaluator.FixedEvaluator(), LIVE_EDGE_LATENCY_MS);
|
new FormatEvaluator.FixedEvaluator(), LIVE_EDGE_LATENCY_MS);
|
||||||
|
@ -62,24 +62,21 @@ public final class UriDataSource implements DataSource {
|
|||||||
@Override
|
@Override
|
||||||
public long open(DataSpec dataSpec) throws IOException {
|
public long open(DataSpec dataSpec) throws IOException {
|
||||||
Assertions.checkState(dataSource == null);
|
Assertions.checkState(dataSource == null);
|
||||||
|
dataSource = FILE_URI_SCHEME.equals(dataSpec.uri.getScheme()) ? fileDataSource : httpDataSource;
|
||||||
dataSource = dataSpec.uri.getScheme().equals(FILE_URI_SCHEME) ? fileDataSource : httpDataSource;
|
|
||||||
return dataSource.open(dataSpec);
|
return dataSource.open(dataSpec);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void close() throws IOException {
|
|
||||||
Assertions.checkNotNull(dataSource);
|
|
||||||
|
|
||||||
dataSource.close();
|
|
||||||
dataSource = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int read(byte[] buffer, int offset, int readLength) throws IOException {
|
public int read(byte[] buffer, int offset, int readLength) throws IOException {
|
||||||
Assertions.checkNotNull(dataSource);
|
|
||||||
|
|
||||||
return dataSource.read(buffer, offset, readLength);
|
return dataSource.read(buffer, offset, readLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() throws IOException {
|
||||||
|
if (dataSource != null) {
|
||||||
|
dataSource.close();
|
||||||
|
dataSource = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user