Commit 7e8ba031 by olly Committed by Oliver Woodman

Deprecate final non-nested Factory classes in upstream

PiperOrigin-RevId: 389661768
parent e2ffb5e1
Showing with 142 additions and 64 deletions
...@@ -36,8 +36,8 @@ import com.google.android.exoplayer2.source.ProgressiveMediaSource; ...@@ -36,8 +36,8 @@ import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.source.dash.DashMediaSource; import com.google.android.exoplayer2.source.dash.DashMediaSource;
import com.google.android.exoplayer2.ui.PlayerView; import com.google.android.exoplayer2.ui.PlayerView;
import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;
import com.google.android.exoplayer2.upstream.HttpDataSource; import com.google.android.exoplayer2.upstream.HttpDataSource;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.EventLogger; import com.google.android.exoplayer2.util.EventLogger;
...@@ -144,7 +144,7 @@ public final class MainActivity extends Activity { ...@@ -144,7 +144,7 @@ public final class MainActivity extends Activity {
String drmScheme = Assertions.checkNotNull(intent.getStringExtra(DRM_SCHEME_EXTRA)); String drmScheme = Assertions.checkNotNull(intent.getStringExtra(DRM_SCHEME_EXTRA));
String drmLicenseUrl = Assertions.checkNotNull(intent.getStringExtra(DRM_LICENSE_URL_EXTRA)); String drmLicenseUrl = Assertions.checkNotNull(intent.getStringExtra(DRM_LICENSE_URL_EXTRA));
UUID drmSchemeUuid = Assertions.checkNotNull(Util.getDrmUuid(drmScheme)); UUID drmSchemeUuid = Assertions.checkNotNull(Util.getDrmUuid(drmScheme));
HttpDataSource.Factory licenseDataSourceFactory = new DefaultHttpDataSourceFactory(); HttpDataSource.Factory licenseDataSourceFactory = new DefaultHttpDataSource.Factory();
HttpMediaDrmCallback drmCallback = HttpMediaDrmCallback drmCallback =
new HttpMediaDrmCallback(drmLicenseUrl, licenseDataSourceFactory); new HttpMediaDrmCallback(drmLicenseUrl, licenseDataSourceFactory);
drmSessionManager = drmSessionManager =
...@@ -155,7 +155,7 @@ public final class MainActivity extends Activity { ...@@ -155,7 +155,7 @@ public final class MainActivity extends Activity {
drmSessionManager = DrmSessionManager.DRM_UNSUPPORTED; drmSessionManager = DrmSessionManager.DRM_UNSUPPORTED;
} }
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this); DataSource.Factory dataSourceFactory = new DefaultDataSource.Factory(this);
MediaSource mediaSource; MediaSource mediaSource;
@C.ContentType int type = Util.inferContentType(uri, intent.getStringExtra(EXTENSION_EXTRA)); @C.ContentType int type = Util.inferContentType(uri, intent.getStringExtra(EXTENSION_EXTRA));
if (type == C.TYPE_DASH) { if (type == C.TYPE_DASH) {
......
...@@ -29,7 +29,7 @@ import com.google.android.exoplayer2.offline.DefaultDownloadIndex; ...@@ -29,7 +29,7 @@ import com.google.android.exoplayer2.offline.DefaultDownloadIndex;
import com.google.android.exoplayer2.offline.DownloadManager; import com.google.android.exoplayer2.offline.DownloadManager;
import com.google.android.exoplayer2.ui.DownloadNotificationHelper; import com.google.android.exoplayer2.ui.DownloadNotificationHelper;
import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource; import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;
import com.google.android.exoplayer2.upstream.HttpDataSource; import com.google.android.exoplayer2.upstream.HttpDataSource;
import com.google.android.exoplayer2.upstream.cache.Cache; import com.google.android.exoplayer2.upstream.cache.Cache;
...@@ -127,8 +127,8 @@ public final class DemoUtil { ...@@ -127,8 +127,8 @@ public final class DemoUtil {
public static synchronized DataSource.Factory getDataSourceFactory(Context context) { public static synchronized DataSource.Factory getDataSourceFactory(Context context) {
if (dataSourceFactory == null) { if (dataSourceFactory == null) {
context = context.getApplicationContext(); context = context.getApplicationContext();
DefaultDataSourceFactory upstreamFactory = DefaultDataSource.Factory upstreamFactory =
new DefaultDataSourceFactory(context, getHttpDataSourceFactory(context)); new DefaultDataSource.Factory(context, getHttpDataSourceFactory(context));
dataSourceFactory = buildReadOnlyCacheDataSource(upstreamFactory, getDownloadCache(context)); dataSourceFactory = buildReadOnlyCacheDataSource(upstreamFactory, getDownloadCache(context));
} }
return dataSourceFactory; return dataSourceFactory;
......
...@@ -40,8 +40,8 @@ import com.google.android.exoplayer2.source.ProgressiveMediaSource; ...@@ -40,8 +40,8 @@ import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.source.dash.DashMediaSource; import com.google.android.exoplayer2.source.dash.DashMediaSource;
import com.google.android.exoplayer2.ui.PlayerControlView; import com.google.android.exoplayer2.ui.PlayerControlView;
import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;
import com.google.android.exoplayer2.upstream.HttpDataSource; import com.google.android.exoplayer2.upstream.HttpDataSource;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
...@@ -189,7 +189,7 @@ public final class MainActivity extends Activity { ...@@ -189,7 +189,7 @@ public final class MainActivity extends Activity {
String drmScheme = Assertions.checkNotNull(intent.getStringExtra(DRM_SCHEME_EXTRA)); String drmScheme = Assertions.checkNotNull(intent.getStringExtra(DRM_SCHEME_EXTRA));
String drmLicenseUrl = Assertions.checkNotNull(intent.getStringExtra(DRM_LICENSE_URL_EXTRA)); String drmLicenseUrl = Assertions.checkNotNull(intent.getStringExtra(DRM_LICENSE_URL_EXTRA));
UUID drmSchemeUuid = Assertions.checkNotNull(Util.getDrmUuid(drmScheme)); UUID drmSchemeUuid = Assertions.checkNotNull(Util.getDrmUuid(drmScheme));
HttpDataSource.Factory licenseDataSourceFactory = new DefaultHttpDataSourceFactory(); HttpDataSource.Factory licenseDataSourceFactory = new DefaultHttpDataSource.Factory();
HttpMediaDrmCallback drmCallback = HttpMediaDrmCallback drmCallback =
new HttpMediaDrmCallback(drmLicenseUrl, licenseDataSourceFactory); new HttpMediaDrmCallback(drmLicenseUrl, licenseDataSourceFactory);
drmSessionManager = drmSessionManager =
...@@ -200,7 +200,7 @@ public final class MainActivity extends Activity { ...@@ -200,7 +200,7 @@ public final class MainActivity extends Activity {
drmSessionManager = DrmSessionManager.DRM_UNSUPPORTED; drmSessionManager = DrmSessionManager.DRM_UNSUPPORTED;
} }
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this); DataSource.Factory dataSourceFactory = new DefaultDataSource.Factory(this);
MediaSource mediaSource; MediaSource mediaSource;
@C.ContentType int type = Util.inferContentType(uri, intent.getStringExtra(EXTENSION_EXTRA)); @C.ContentType int type = Util.inferContentType(uri, intent.getStringExtra(EXTENSION_EXTRA));
if (type == C.TYPE_DASH) { if (type == C.TYPE_DASH) {
......
...@@ -53,10 +53,10 @@ default network stack with cross-protocol redirects enabled: ...@@ -53,10 +53,10 @@ default network stack with cross-protocol redirects enabled:
HttpDataSource.Factory httpDataSourceFactory = HttpDataSource.Factory httpDataSourceFactory =
new DefaultHttpDataSource.Factory().setAllowCrossProtocolRedirects(true); new DefaultHttpDataSource.Factory().setAllowCrossProtocolRedirects(true);
// Wrap the HttpDataSource.Factory in a DefaultDataSourceFactory, which adds in // Wrap the HttpDataSource.Factory in a DefaultDataSource.Factory, which adds in
// support for requesting data from other sources (e.g., files, resources, etc). // support for requesting data from other sources (e.g., files, resources, etc).
DefaultDataSourceFactory dataSourceFactory = DefaultDataSource.Factory dataSourceFactory =
new DefaultDataSourceFactory(context, httpDataSourceFactory); new DefaultDataSource.Factory(context, httpDataSourceFactory);
// Inject the DefaultDataSourceFactory when creating the player. // Inject the DefaultDataSourceFactory when creating the player.
SimpleExoPlayer player = SimpleExoPlayer player =
......
...@@ -40,11 +40,11 @@ the Cronet network stack and also support playback of non-http(s) content. ...@@ -40,11 +40,11 @@ the Cronet network stack and also support playback of non-http(s) content.
CronetDataSource.Factory cronetDataSourceFactory = CronetDataSource.Factory cronetDataSourceFactory =
new CronetDataSource.Factory(cronetEngine, executor); new CronetDataSource.Factory(cronetEngine, executor);
// Wrap the CronetDataSource.Factory in a DefaultDataSourceFactory, which adds // Wrap the CronetDataSource.Factory in a DefaultDataSource.Factory, which adds
// in support for requesting data from other sources (e.g., files, resources, // in support for requesting data from other sources (e.g., files, resources,
// etc). // etc).
DefaultDataSourceFactory dataSourceFactory = DefaultDataSource.Factory dataSourceFactory =
new DefaultDataSourceFactory( new DefaultDataSource.Factory(
context, context,
/* baseDataSourceFactory= */ cronetDataSourceFactory); /* baseDataSourceFactory= */ cronetDataSourceFactory);
......
...@@ -26,7 +26,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput; ...@@ -26,7 +26,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput;
import com.google.android.exoplayer2.testutil.FakeTrackOutput; import com.google.android.exoplayer2.testutil.FakeTrackOutput;
import com.google.android.exoplayer2.testutil.TestUtil; import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
...@@ -43,10 +42,10 @@ public final class FlacExtractorSeekTest { ...@@ -43,10 +42,10 @@ public final class FlacExtractorSeekTest {
"media/flac/bear_no_seek_table_no_num_samples.flac"; "media/flac/bear_no_seek_table_no_num_samples.flac";
private static final int DURATION_US = 2_741_000; private static final int DURATION_US = 2_741_000;
private FlacExtractor extractor = new FlacExtractor(); private final FlacExtractor extractor = new FlacExtractor();
private FakeExtractorOutput extractorOutput = new FakeExtractorOutput(); private final FakeExtractorOutput extractorOutput = new FakeExtractorOutput();
private DefaultDataSource dataSource = private final DefaultDataSource dataSource =
new DefaultDataSourceFactory(ApplicationProvider.getApplicationContext()).createDataSource(); new DefaultDataSource.Factory(ApplicationProvider.getApplicationContext()).createDataSource();
@Test @Test
public void flacExtractorReads_seekTable_returnSeekableSeekMap() throws IOException { public void flacExtractorReads_seekTable_returnSeekableSeekMap() throws IOException {
......
...@@ -37,7 +37,7 @@ import com.google.android.exoplayer2.source.MediaSource; ...@@ -37,7 +37,7 @@ import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.ProgressiveMediaSource; import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.testutil.CapturingAudioSink; import com.google.android.exoplayer2.testutil.CapturingAudioSink;
import com.google.android.exoplayer2.testutil.DumpFileAsserts; import com.google.android.exoplayer2.testutil.DumpFileAsserts;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -120,7 +120,7 @@ public class FlacPlaybackTest { ...@@ -120,7 +120,7 @@ public class FlacPlaybackTest {
player.addListener(this); player.addListener(this);
MediaSource mediaSource = MediaSource mediaSource =
new ProgressiveMediaSource.Factory( new ProgressiveMediaSource.Factory(
new DefaultDataSourceFactory(context), MatroskaExtractor.FACTORY) new DefaultDataSource.Factory(context), MatroskaExtractor.FACTORY)
.createMediaSource(MediaItem.fromUri(uri)); .createMediaSource(MediaItem.fromUri(uri));
player.setMediaSource(mediaSource); player.setMediaSource(mediaSource);
player.prepare(); player.prepare();
......
...@@ -44,7 +44,7 @@ import com.google.android.exoplayer2.testutil.TestUtil; ...@@ -44,7 +44,7 @@ import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.trackselection.MappingTrackSelector; import com.google.android.exoplayer2.trackselection.MappingTrackSelector;
import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DataSpec; import com.google.android.exoplayer2.upstream.DataSpec;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -235,7 +235,7 @@ public final class ImaPlaybackTest { ...@@ -235,7 +235,7 @@ public final class ImaPlaybackTest {
protected MediaSource buildSource( protected MediaSource buildSource(
HostActivity host, DrmSessionManager drmSessionManager, FrameLayout overlayFrameLayout) { HostActivity host, DrmSessionManager drmSessionManager, FrameLayout overlayFrameLayout) {
Context context = host.getApplicationContext(); Context context = host.getApplicationContext();
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context); DataSource.Factory dataSourceFactory = new DefaultDataSource.Factory(context);
MediaSource contentMediaSource = MediaSource contentMediaSource =
new DefaultMediaSourceFactory(context).createMediaSource(MediaItem.fromUri(contentUri)); new DefaultMediaSourceFactory(context).createMediaSource(MediaItem.fromUri(contentUri));
return new AdsMediaSource( return new AdsMediaSource(
......
...@@ -25,7 +25,7 @@ import com.google.android.exoplayer2.SimpleExoPlayer; ...@@ -25,7 +25,7 @@ import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.source.DefaultMediaSourceFactory; import com.google.android.exoplayer2.source.DefaultMediaSourceFactory;
import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DataSpec; import com.google.android.exoplayer2.upstream.DataSpec;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.TransferListener; import com.google.android.exoplayer2.upstream.TransferListener;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
...@@ -116,10 +116,10 @@ import org.junit.rules.ExternalResource; ...@@ -116,10 +116,10 @@ import org.junit.rules.ExternalResource;
private final class InstrumentingDataSourceFactory implements DataSource.Factory { private final class InstrumentingDataSourceFactory implements DataSource.Factory {
private final DefaultDataSourceFactory defaultDataSourceFactory; private final DefaultDataSource.Factory defaultDataSourceFactory;
public InstrumentingDataSourceFactory(Context context) { public InstrumentingDataSourceFactory(Context context) {
defaultDataSourceFactory = new DefaultDataSourceFactory(context); defaultDataSourceFactory = new DefaultDataSource.Factory(context);
} }
@Override @Override
......
...@@ -32,7 +32,7 @@ import com.google.android.exoplayer2.SimpleExoPlayer; ...@@ -32,7 +32,7 @@ import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor; import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor;
import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.ProgressiveMediaSource; import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -100,7 +100,7 @@ public class OpusPlaybackTest { ...@@ -100,7 +100,7 @@ public class OpusPlaybackTest {
player.addListener(this); player.addListener(this);
MediaSource mediaSource = MediaSource mediaSource =
new ProgressiveMediaSource.Factory( new ProgressiveMediaSource.Factory(
new DefaultDataSourceFactory(context), MatroskaExtractor.FACTORY) new DefaultDataSource.Factory(context), MatroskaExtractor.FACTORY)
.createMediaSource(MediaItem.fromUri(uri)); .createMediaSource(MediaItem.fromUri(uri));
player.setMediaSource(mediaSource); player.setMediaSource(mediaSource);
player.prepare(); player.prepare();
......
...@@ -33,7 +33,7 @@ import com.google.android.exoplayer2.SimpleExoPlayer; ...@@ -33,7 +33,7 @@ import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor; import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor;
import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.ProgressiveMediaSource; import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.util.Log; import com.google.android.exoplayer2.util.Log;
import com.google.android.exoplayer2.video.VideoDecoderGLSurfaceView; import com.google.android.exoplayer2.video.VideoDecoderGLSurfaceView;
import org.junit.Before; import org.junit.Before;
...@@ -134,7 +134,7 @@ public class VpxPlaybackTest { ...@@ -134,7 +134,7 @@ public class VpxPlaybackTest {
player.addListener(this); player.addListener(this);
MediaSource mediaSource = MediaSource mediaSource =
new ProgressiveMediaSource.Factory( new ProgressiveMediaSource.Factory(
new DefaultDataSourceFactory(context), MatroskaExtractor.FACTORY) new DefaultDataSource.Factory(context), MatroskaExtractor.FACTORY)
.createMediaSource(MediaItem.fromUri(uri)); .createMediaSource(MediaItem.fromUri(uri));
player.setVideoSurfaceView(new VideoDecoderGLSurfaceView(context)); player.setVideoSurfaceView(new VideoDecoderGLSurfaceView(context));
player.setMediaSource(mediaSource); player.setMediaSource(mediaSource);
......
...@@ -32,7 +32,7 @@ import com.google.android.exoplayer2.source.ads.AdsMediaSource; ...@@ -32,7 +32,7 @@ import com.google.android.exoplayer2.source.ads.AdsMediaSource;
import com.google.android.exoplayer2.ui.AdViewProvider; import com.google.android.exoplayer2.ui.AdViewProvider;
import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DataSpec; import com.google.android.exoplayer2.upstream.DataSpec;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.HttpDataSource; import com.google.android.exoplayer2.upstream.HttpDataSource;
import com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy; import com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
...@@ -119,7 +119,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { ...@@ -119,7 +119,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
* @param context Any context. * @param context Any context.
*/ */
public DefaultMediaSourceFactory(Context context) { public DefaultMediaSourceFactory(Context context) {
this(new DefaultDataSourceFactory(context)); this(new DefaultDataSource.Factory(context));
} }
/** /**
...@@ -130,7 +130,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { ...@@ -130,7 +130,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
* its container. * its container.
*/ */
public DefaultMediaSourceFactory(Context context, ExtractorsFactory extractorsFactory) { public DefaultMediaSourceFactory(Context context, ExtractorsFactory extractorsFactory) {
this(new DefaultDataSourceFactory(context), extractorsFactory); this(new DefaultDataSource.Factory(context), extractorsFactory);
} }
/** /**
......
...@@ -55,6 +55,63 @@ import java.util.Map; ...@@ -55,6 +55,63 @@ import java.util.Map;
*/ */
public final class DefaultDataSource implements DataSource { public final class DefaultDataSource implements DataSource {
/** {@link DataSource.Factory} for {@link DefaultDataSource} instances. */
public static final class Factory implements DataSource.Factory {
private final Context context;
private final DataSource.Factory baseDataSourceFactory;
@Nullable private TransferListener transferListener;
/**
* Creates an instance.
*
* @param context A context.
*/
public Factory(Context context) {
this(context, new DefaultHttpDataSource.Factory());
}
/**
* Creates an instance.
*
* @param context A context.
* @param baseDataSourceFactory The {@link DataSource.Factory} to be used to create base {@link
* DataSource DataSources} for {@link DefaultDataSource} instances. The base {@link
* DataSource} is normally an {@link HttpDataSource}, and is responsible for fetching data
* over HTTP and HTTPS, as well as any other URI schemes not otherwise supported by {@link
* DefaultDataSource}.
*/
public Factory(Context context, DataSource.Factory baseDataSourceFactory) {
this.context = context.getApplicationContext();
this.baseDataSourceFactory = baseDataSourceFactory;
}
/**
* Sets the {@link TransferListener} that will be used.
*
* <p>The default is {@code null}.
*
* <p>See {@link DataSource#addTransferListener(TransferListener)}.
*
* @param transferListener The listener that will be used.
* @return This factory.
*/
public Factory setTransferListener(@Nullable TransferListener transferListener) {
this.transferListener = transferListener;
return this;
}
@Override
public DefaultDataSource createDataSource() {
DefaultDataSource dataSource =
new DefaultDataSource(context, baseDataSourceFactory.createDataSource());
if (transferListener != null) {
dataSource.addTransferListener(transferListener);
}
return dataSource;
}
}
private static final String TAG = "DefaultDataSource"; private static final String TAG = "DefaultDataSource";
private static final String SCHEME_ASSET = "asset"; private static final String SCHEME_ASSET = "asset";
......
...@@ -19,10 +19,8 @@ import android.content.Context; ...@@ -19,10 +19,8 @@ import android.content.Context;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.android.exoplayer2.upstream.DataSource.Factory; import com.google.android.exoplayer2.upstream.DataSource.Factory;
/** /** @deprecated Use {@link DefaultDataSource.Factory} instead. */
* A {@link Factory} that produces {@link DefaultDataSource} instances that delegate to {@link @Deprecated
* DefaultHttpDataSource}s for non-file/asset/content URIs.
*/
public final class DefaultDataSourceFactory implements Factory { public final class DefaultDataSourceFactory implements Factory {
private final Context context; private final Context context;
......
...@@ -38,6 +38,37 @@ import java.util.Map; ...@@ -38,6 +38,37 @@ import java.util.Map;
*/ */
public final class PriorityDataSource implements DataSource { public final class PriorityDataSource implements DataSource {
/** {@link DataSource.Factory} for {@link PriorityDataSource} instances. */
public static final class Factory implements DataSource.Factory {
private final DataSource.Factory upstreamFactory;
private final PriorityTaskManager priorityTaskManager;
private final int priority;
/**
* Creates an instance.
*
* @param upstreamFactory A {@link DataSource.Factory} that provides upstream {@link DataSource
* DataSources} for {@link PriorityDataSource} instances created by the factory.
* @param priorityTaskManager The {@link PriorityTaskManager} to which tasks using {@link
* PriorityDataSource} instances created by this factory will be registered.
* @param priority The priority of the tasks using {@link PriorityDataSource} instances created
* by this factory.
*/
public Factory(
DataSource.Factory upstreamFactory, PriorityTaskManager priorityTaskManager, int priority) {
this.upstreamFactory = upstreamFactory;
this.priorityTaskManager = priorityTaskManager;
this.priority = priority;
}
@Override
public PriorityDataSource createDataSource() {
return new PriorityDataSource(
upstreamFactory.createDataSource(), priorityTaskManager, priority);
}
}
private final DataSource upstream; private final DataSource upstream;
private final PriorityTaskManager priorityTaskManager; private final PriorityTaskManager priorityTaskManager;
private final int priority; private final int priority;
......
...@@ -18,7 +18,8 @@ package com.google.android.exoplayer2.upstream; ...@@ -18,7 +18,8 @@ package com.google.android.exoplayer2.upstream;
import com.google.android.exoplayer2.upstream.DataSource.Factory; import com.google.android.exoplayer2.upstream.DataSource.Factory;
import com.google.android.exoplayer2.util.PriorityTaskManager; import com.google.android.exoplayer2.util.PriorityTaskManager;
/** A {@link DataSource.Factory} that produces {@link PriorityDataSource} instances. */ /** @deprecated Use {@link PriorityDataSource.Factory}. */
@Deprecated
public final class PriorityDataSourceFactory implements Factory { public final class PriorityDataSourceFactory implements Factory {
private final Factory upstreamFactory; private final Factory upstreamFactory;
......
...@@ -25,7 +25,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput; ...@@ -25,7 +25,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput;
import com.google.android.exoplayer2.testutil.FakeTrackOutput; import com.google.android.exoplayer2.testutil.FakeTrackOutput;
import com.google.android.exoplayer2.testutil.TestUtil; import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
...@@ -51,7 +50,7 @@ public final class AmrExtractorSeekTest { ...@@ -51,7 +50,7 @@ public final class AmrExtractorSeekTest {
@Before @Before
public void setUp() { public void setUp() {
dataSource = dataSource =
new DefaultDataSourceFactory(ApplicationProvider.getApplicationContext()) new DefaultDataSource.Factory(ApplicationProvider.getApplicationContext())
.createDataSource(); .createDataSource();
} }
......
...@@ -26,7 +26,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput; ...@@ -26,7 +26,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput;
import com.google.android.exoplayer2.testutil.FakeTrackOutput; import com.google.android.exoplayer2.testutil.FakeTrackOutput;
import com.google.android.exoplayer2.testutil.TestUtil; import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
...@@ -43,10 +42,10 @@ public class FlacExtractorSeekTest { ...@@ -43,10 +42,10 @@ public class FlacExtractorSeekTest {
"media/flac/bear_no_seek_table_no_num_samples.flac"; "media/flac/bear_no_seek_table_no_num_samples.flac";
private static final int DURATION_US = 2_741_000; private static final int DURATION_US = 2_741_000;
private FlacExtractor extractor = new FlacExtractor(); private final FlacExtractor extractor = new FlacExtractor();
private FakeExtractorOutput extractorOutput = new FakeExtractorOutput(); private final FakeExtractorOutput extractorOutput = new FakeExtractorOutput();
private DefaultDataSource dataSource = private final DefaultDataSource dataSource =
new DefaultDataSourceFactory(ApplicationProvider.getApplicationContext()).createDataSource(); new DefaultDataSource.Factory(ApplicationProvider.getApplicationContext()).createDataSource();
@Test @Test
public void flacExtractorReads_seekTable_returnSeekableSeekMap() throws IOException { public void flacExtractorReads_seekTable_returnSeekableSeekMap() throws IOException {
......
...@@ -27,7 +27,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput; ...@@ -27,7 +27,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput;
import com.google.android.exoplayer2.testutil.FakeTrackOutput; import com.google.android.exoplayer2.testutil.FakeTrackOutput;
import com.google.android.exoplayer2.testutil.TestUtil; import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
...@@ -53,7 +52,7 @@ public class FlvExtractorSeekTest { ...@@ -53,7 +52,7 @@ public class FlvExtractorSeekTest {
extractor = new FlvExtractor(); extractor = new FlvExtractor();
extractorOutput = new FakeExtractorOutput(); extractorOutput = new FakeExtractorOutput();
dataSource = dataSource =
new DefaultDataSourceFactory(ApplicationProvider.getApplicationContext()) new DefaultDataSource.Factory(ApplicationProvider.getApplicationContext())
.createDataSource(); .createDataSource();
} }
......
...@@ -26,7 +26,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput; ...@@ -26,7 +26,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput;
import com.google.android.exoplayer2.testutil.FakeTrackOutput; import com.google.android.exoplayer2.testutil.FakeTrackOutput;
import com.google.android.exoplayer2.testutil.TestUtil; import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
...@@ -52,7 +51,7 @@ public class ConstantBitrateSeekerTest { ...@@ -52,7 +51,7 @@ public class ConstantBitrateSeekerTest {
extractor = new Mp3Extractor(); extractor = new Mp3Extractor();
extractorOutput = new FakeExtractorOutput(); extractorOutput = new FakeExtractorOutput();
dataSource = dataSource =
new DefaultDataSourceFactory(ApplicationProvider.getApplicationContext()) new DefaultDataSource.Factory(ApplicationProvider.getApplicationContext())
.createDataSource(); .createDataSource();
} }
......
...@@ -28,7 +28,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput; ...@@ -28,7 +28,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput;
import com.google.android.exoplayer2.testutil.FakeTrackOutput; import com.google.android.exoplayer2.testutil.FakeTrackOutput;
import com.google.android.exoplayer2.testutil.TestUtil; import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
...@@ -52,7 +51,7 @@ public class IndexSeekerTest { ...@@ -52,7 +51,7 @@ public class IndexSeekerTest {
extractor = new Mp3Extractor(FLAG_ENABLE_INDEX_SEEKING); extractor = new Mp3Extractor(FLAG_ENABLE_INDEX_SEEKING);
extractorOutput = new FakeExtractorOutput(); extractorOutput = new FakeExtractorOutput();
dataSource = dataSource =
new DefaultDataSourceFactory(ApplicationProvider.getApplicationContext()) new DefaultDataSource.Factory(ApplicationProvider.getApplicationContext())
.createDataSource(); .createDataSource();
} }
......
...@@ -25,7 +25,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput; ...@@ -25,7 +25,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput;
import com.google.android.exoplayer2.testutil.FakeTrackOutput; import com.google.android.exoplayer2.testutil.FakeTrackOutput;
import com.google.android.exoplayer2.testutil.TestUtil; import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Random; import java.util.Random;
...@@ -49,7 +48,7 @@ public final class AdtsExtractorSeekTest { ...@@ -49,7 +48,7 @@ public final class AdtsExtractorSeekTest {
@Before @Before
public void setUp() { public void setUp() {
dataSource = dataSource =
new DefaultDataSourceFactory(ApplicationProvider.getApplicationContext()) new DefaultDataSource.Factory(ApplicationProvider.getApplicationContext())
.createDataSource(); .createDataSource();
} }
......
...@@ -33,7 +33,6 @@ import com.google.android.exoplayer2.testutil.FakeTrackOutput; ...@@ -33,7 +33,6 @@ import com.google.android.exoplayer2.testutil.FakeTrackOutput;
import com.google.android.exoplayer2.testutil.TestUtil; import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.upstream.DataSpec; import com.google.android.exoplayer2.upstream.DataSpec;
import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
...@@ -68,7 +67,7 @@ public final class PsExtractorSeekTest { ...@@ -68,7 +67,7 @@ public final class PsExtractorSeekTest {
expectedTrackOutput = expectedOutput.trackOutputs.get(VIDEO_TRACK_ID); expectedTrackOutput = expectedOutput.trackOutputs.get(VIDEO_TRACK_ID);
dataSource = dataSource =
new DefaultDataSourceFactory(ApplicationProvider.getApplicationContext()) new DefaultDataSource.Factory(ApplicationProvider.getApplicationContext())
.createDataSource(); .createDataSource();
totalInputLength = readInputLength(); totalInputLength = readInputLength();
} }
......
...@@ -28,7 +28,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput; ...@@ -28,7 +28,6 @@ import com.google.android.exoplayer2.testutil.FakeExtractorOutput;
import com.google.android.exoplayer2.testutil.FakeTrackOutput; import com.google.android.exoplayer2.testutil.FakeTrackOutput;
import com.google.android.exoplayer2.testutil.TestUtil; import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
...@@ -62,7 +61,7 @@ public final class TsExtractorSeekTest { ...@@ -62,7 +61,7 @@ public final class TsExtractorSeekTest {
.get(AUDIO_TRACK_ID); .get(AUDIO_TRACK_ID);
dataSource = dataSource =
new DefaultDataSourceFactory(ApplicationProvider.getApplicationContext()) new DefaultDataSource.Factory(ApplicationProvider.getApplicationContext())
.createDataSource(); .createDataSource();
} }
......
...@@ -51,8 +51,8 @@ import com.google.android.exoplayer2.trackselection.ExoTrackSelection; ...@@ -51,8 +51,8 @@ import com.google.android.exoplayer2.trackselection.ExoTrackSelection;
import com.google.android.exoplayer2.trackselection.MappingTrackSelector; import com.google.android.exoplayer2.trackselection.MappingTrackSelector;
import com.google.android.exoplayer2.trackselection.RandomTrackSelection; import com.google.android.exoplayer2.trackselection.RandomTrackSelection;
import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;
import com.google.android.exoplayer2.upstream.DefaultLoadErrorHandlingPolicy; import com.google.android.exoplayer2.upstream.DefaultLoadErrorHandlingPolicy;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Log; import com.google.android.exoplayer2.util.Log;
...@@ -286,7 +286,7 @@ import java.util.List; ...@@ -286,7 +286,7 @@ import java.util.List;
return DrmSessionManager.DRM_UNSUPPORTED; return DrmSessionManager.DRM_UNSUPPORTED;
} }
MediaDrmCallback drmCallback = MediaDrmCallback drmCallback =
new HttpMediaDrmCallback(widevineLicenseUrl, new DefaultHttpDataSourceFactory()); new HttpMediaDrmCallback(widevineLicenseUrl, new DefaultHttpDataSource.Factory());
DefaultDrmSessionManager drmSessionManager = DefaultDrmSessionManager drmSessionManager =
new DefaultDrmSessionManager.Builder() new DefaultDrmSessionManager.Builder()
.setUuidAndExoMediaDrmProvider( .setUuidAndExoMediaDrmProvider(
...@@ -327,7 +327,7 @@ import java.util.List; ...@@ -327,7 +327,7 @@ import java.util.List;
DataSource.Factory dataSourceFactory = DataSource.Factory dataSourceFactory =
this.dataSourceFactory != null this.dataSourceFactory != null
? this.dataSourceFactory ? this.dataSourceFactory
: new DefaultDataSourceFactory(host); : new DefaultDataSource.Factory(host);
return new DashMediaSource.Factory(dataSourceFactory) return new DashMediaSource.Factory(dataSourceFactory)
.setDrmSessionManager(drmSessionManager) .setDrmSessionManager(drmSessionManager)
.setLoadErrorHandlingPolicy(new DefaultLoadErrorHandlingPolicy(MIN_LOADABLE_RETRY_COUNT)) .setLoadErrorHandlingPolicy(new DefaultLoadErrorHandlingPolicy(MIN_LOADABLE_RETRY_COUNT))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment