From c24a699b340a53024b3556dccb166f8b59420eae Mon Sep 17 00:00:00 2001 From: tonihei Date: Mon, 23 Jul 2018 04:37:37 -0700 Subject: [PATCH] Update demo apps to use player-provided default bandwidth meter. This simplifies the player setup and prevents using deprecated methods in the demo. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=205642981 --- .../exoplayer2/castdemo/PlayerManager.java | 6 ++-- .../exoplayer2/imademo/PlayerManager.java | 25 ++++---------- .../exoplayer2/demo/DemoApplication.java | 15 ++++----- .../exoplayer2/demo/PlayerActivity.java | 33 +++++++------------ 4 files changed, 26 insertions(+), 53 deletions(-) diff --git a/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/PlayerManager.java b/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/PlayerManager.java index eeee101478..675e14de3d 100644 --- a/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/PlayerManager.java +++ b/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/PlayerManager.java @@ -43,7 +43,6 @@ import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource; import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; import com.google.android.exoplayer2.ui.PlayerControlView; import com.google.android.exoplayer2.ui.PlayerView; -import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory; import com.google.android.gms.cast.MediaInfo; import com.google.android.gms.cast.MediaMetadata; @@ -68,9 +67,8 @@ import java.util.ArrayList; } private static final String USER_AGENT = "ExoCastDemoPlayer"; - private static final DefaultBandwidthMeter BANDWIDTH_METER = new DefaultBandwidthMeter(); private static final DefaultHttpDataSourceFactory DATA_SOURCE_FACTORY = - new DefaultHttpDataSourceFactory(USER_AGENT, BANDWIDTH_METER); + new DefaultHttpDataSourceFactory(USER_AGENT); private final PlayerView localPlayerView; private final PlayerControlView castControlView; @@ -117,7 +115,7 @@ import java.util.ArrayList; currentItemIndex = C.INDEX_UNSET; concatenatingMediaSource = new ConcatenatingMediaSource(); - DefaultTrackSelector trackSelector = new DefaultTrackSelector(BANDWIDTH_METER); + DefaultTrackSelector trackSelector = new DefaultTrackSelector(); RenderersFactory renderersFactory = new DefaultRenderersFactory(context); exoPlayer = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector); exoPlayer.addListener(this); diff --git a/demos/ima/src/main/java/com/google/android/exoplayer2/imademo/PlayerManager.java b/demos/ima/src/main/java/com/google/android/exoplayer2/imademo/PlayerManager.java index 4fab1966fe..b8cd43cdc9 100644 --- a/demos/ima/src/main/java/com/google/android/exoplayer2/imademo/PlayerManager.java +++ b/demos/ima/src/main/java/com/google/android/exoplayer2/imademo/PlayerManager.java @@ -36,9 +36,7 @@ import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; import com.google.android.exoplayer2.trackselection.TrackSelection; import com.google.android.exoplayer2.trackselection.TrackSelector; import com.google.android.exoplayer2.ui.PlayerView; -import com.google.android.exoplayer2.upstream.BandwidthMeter; import com.google.android.exoplayer2.upstream.DataSource; -import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.util.Util; @@ -46,8 +44,7 @@ import com.google.android.exoplayer2.util.Util; /* package */ final class PlayerManager implements AdsMediaSource.MediaSourceFactory { private final ImaAdsLoader adsLoader; - private final DataSource.Factory manifestDataSourceFactory; - private final DataSource.Factory mediaDataSourceFactory; + private final DataSource.Factory dataSourceFactory; private SimpleExoPlayer player; private long contentPosition; @@ -55,21 +52,14 @@ import com.google.android.exoplayer2.util.Util; public PlayerManager(Context context) { String adTag = context.getString(R.string.ad_tag_url); adsLoader = new ImaAdsLoader(context, Uri.parse(adTag)); - manifestDataSourceFactory = + dataSourceFactory = new DefaultDataSourceFactory( context, Util.getUserAgent(context, context.getString(R.string.application_name))); - mediaDataSourceFactory = - new DefaultDataSourceFactory( - context, - Util.getUserAgent(context, context.getString(R.string.application_name)), - new DefaultBandwidthMeter()); } public void init(Context context, PlayerView playerView) { // Create a default track selector. - BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(); - TrackSelection.Factory videoTrackSelectionFactory = - new AdaptiveTrackSelection.Factory(bandwidthMeter); + TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(); TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory); // Create a player instance. @@ -134,17 +124,16 @@ import com.google.android.exoplayer2.util.Util; switch (type) { case C.TYPE_DASH: return new DashMediaSource.Factory( - new DefaultDashChunkSource.Factory(mediaDataSourceFactory), - manifestDataSourceFactory) + new DefaultDashChunkSource.Factory(dataSourceFactory), dataSourceFactory) .createMediaSource(uri); case C.TYPE_SS: return new SsMediaSource.Factory( - new DefaultSsChunkSource.Factory(mediaDataSourceFactory), manifestDataSourceFactory) + new DefaultSsChunkSource.Factory(dataSourceFactory), dataSourceFactory) .createMediaSource(uri); case C.TYPE_HLS: - return new HlsMediaSource.Factory(mediaDataSourceFactory).createMediaSource(uri); + return new HlsMediaSource.Factory(dataSourceFactory).createMediaSource(uri); case C.TYPE_OTHER: - return new ExtractorMediaSource.Factory(mediaDataSourceFactory).createMediaSource(uri); + return new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(uri); default: throw new IllegalStateException("Unsupported type: " + type); } diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/DemoApplication.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/DemoApplication.java index 12707817db..ac8be7dc16 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/DemoApplication.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/DemoApplication.java @@ -23,7 +23,6 @@ import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory; import com.google.android.exoplayer2.upstream.FileDataSourceFactory; import com.google.android.exoplayer2.upstream.HttpDataSource; -import com.google.android.exoplayer2.upstream.TransferListener; import com.google.android.exoplayer2.upstream.cache.Cache; import com.google.android.exoplayer2.upstream.cache.CacheDataSource; import com.google.android.exoplayer2.upstream.cache.CacheDataSourceFactory; @@ -56,16 +55,15 @@ public class DemoApplication extends Application { } /** Returns a {@link DataSource.Factory}. */ - public DataSource.Factory buildDataSourceFactory(TransferListener listener) { + public DataSource.Factory buildDataSourceFactory() { DefaultDataSourceFactory upstreamFactory = - new DefaultDataSourceFactory(this, listener, buildHttpDataSourceFactory(listener)); + new DefaultDataSourceFactory(this, buildHttpDataSourceFactory()); return buildReadOnlyCacheDataSource(upstreamFactory, getDownloadCache()); } /** Returns a {@link HttpDataSource.Factory}. */ - public HttpDataSource.Factory buildHttpDataSourceFactory( - TransferListener listener) { - return new DefaultHttpDataSourceFactory(userAgent, listener); + public HttpDataSource.Factory buildHttpDataSourceFactory() { + return new DefaultHttpDataSourceFactory(userAgent); } /** Returns whether extension renderers should be used. */ @@ -86,8 +84,7 @@ public class DemoApplication extends Application { private synchronized void initDownloadManager() { if (downloadManager == null) { DownloaderConstructorHelper downloaderConstructorHelper = - new DownloaderConstructorHelper( - getDownloadCache(), buildHttpDataSourceFactory(/* listener= */ null)); + new DownloaderConstructorHelper(getDownloadCache(), buildHttpDataSourceFactory()); downloadManager = new DownloadManager( downloaderConstructorHelper, @@ -97,7 +94,7 @@ public class DemoApplication extends Application { downloadTracker = new DownloadTracker( /* context= */ this, - buildDataSourceFactory(/* listener= */ null), + buildDataSourceFactory(), new File(getDownloadDirectory(), DOWNLOAD_TRACKER_ACTION_FILE)); downloadManager.addListener(downloadTracker); } diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java index 641bcca86b..2e6d2b4bf8 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java @@ -76,7 +76,6 @@ import com.google.android.exoplayer2.ui.PlayerControlView; import com.google.android.exoplayer2.ui.PlayerView; import com.google.android.exoplayer2.ui.TrackSelectionView; import com.google.android.exoplayer2.upstream.DataSource; -import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import com.google.android.exoplayer2.upstream.HttpDataSource; import com.google.android.exoplayer2.util.ErrorMessageProvider; import com.google.android.exoplayer2.util.EventLogger; @@ -121,7 +120,6 @@ public class PlayerActivity extends Activity private static final String KEY_POSITION = "position"; private static final String KEY_AUTO_PLAY = "auto_play"; - private static final DefaultBandwidthMeter BANDWIDTH_METER = new DefaultBandwidthMeter(); private static final CookieManager DEFAULT_COOKIE_MANAGER; static { DEFAULT_COOKIE_MANAGER = new CookieManager(); @@ -132,7 +130,7 @@ public class PlayerActivity extends Activity private LinearLayout debugRootView; private TextView debugTextView; - private DataSource.Factory mediaDataSourceFactory; + private DataSource.Factory dataSourceFactory; private SimpleExoPlayer player; private FrameworkMediaDrm mediaDrm; private MediaSource mediaSource; @@ -156,7 +154,7 @@ public class PlayerActivity extends Activity @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mediaDataSourceFactory = buildDataSourceFactory(true); + dataSourceFactory = buildDataSourceFactory(); if (CookieHandler.getDefault() != DEFAULT_COOKIE_MANAGER) { CookieHandler.setDefault(DEFAULT_COOKIE_MANAGER); } @@ -367,7 +365,7 @@ public class PlayerActivity extends Activity TrackSelection.Factory trackSelectionFactory; String abrAlgorithm = intent.getStringExtra(ABR_ALGORITHM_EXTRA); if (abrAlgorithm == null || ABR_ALGORITHM_DEFAULT.equals(abrAlgorithm)) { - trackSelectionFactory = new AdaptiveTrackSelection.Factory(BANDWIDTH_METER); + trackSelectionFactory = new AdaptiveTrackSelection.Factory(); } else if (ABR_ALGORITHM_RANDOM.equals(abrAlgorithm)) { trackSelectionFactory = new RandomTrackSelection.Factory(); } else { @@ -441,25 +439,23 @@ public class PlayerActivity extends Activity switch (type) { case C.TYPE_DASH: return new DashMediaSource.Factory( - new DefaultDashChunkSource.Factory(mediaDataSourceFactory), - buildDataSourceFactory(false)) + new DefaultDashChunkSource.Factory(dataSourceFactory), dataSourceFactory) .setManifestParser( new FilteringManifestParser<>(new DashManifestParser(), getOfflineStreamKeys(uri))) .createMediaSource(uri); case C.TYPE_SS: return new SsMediaSource.Factory( - new DefaultSsChunkSource.Factory(mediaDataSourceFactory), - buildDataSourceFactory(false)) + new DefaultSsChunkSource.Factory(dataSourceFactory), dataSourceFactory) .setManifestParser( new FilteringManifestParser<>(new SsManifestParser(), getOfflineStreamKeys(uri))) .createMediaSource(uri); case C.TYPE_HLS: - return new HlsMediaSource.Factory(mediaDataSourceFactory) + return new HlsMediaSource.Factory(dataSourceFactory) .setPlaylistParser( new FilteringManifestParser<>(new HlsPlaylistParser(), getOfflineStreamKeys(uri))) .createMediaSource(uri); case C.TYPE_OTHER: - return new ExtractorMediaSource.Factory(mediaDataSourceFactory).createMediaSource(uri); + return new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(uri); default: { throw new IllegalStateException("Unsupported type: " + type); } @@ -474,7 +470,7 @@ public class PlayerActivity extends Activity UUID uuid, String licenseUrl, String[] keyRequestPropertiesArray, boolean multiSession) throws UnsupportedDrmException { HttpDataSource.Factory licenseDataSourceFactory = - ((DemoApplication) getApplication()).buildHttpDataSourceFactory(/* listener= */ null); + ((DemoApplication) getApplication()).buildHttpDataSourceFactory(); HttpMediaDrmCallback drmCallback = new HttpMediaDrmCallback(licenseUrl, licenseDataSourceFactory); if (keyRequestPropertiesArray != null) { @@ -538,16 +534,9 @@ public class PlayerActivity extends Activity startPosition = C.TIME_UNSET; } - /** - * Returns a new DataSource factory. - * - * @param useBandwidthMeter Whether to set {@link #BANDWIDTH_METER} as a listener to the new - * DataSource factory. - * @return A new DataSource factory. - */ - private DataSource.Factory buildDataSourceFactory(boolean useBandwidthMeter) { - return ((DemoApplication) getApplication()) - .buildDataSourceFactory(useBandwidthMeter ? BANDWIDTH_METER : null); + /** Returns a new DataSource factory. */ + private DataSource.Factory buildDataSourceFactory() { + return ((DemoApplication) getApplication()).buildDataSourceFactory(); } /** Returns an ads media source, reusing the ads loader if one exists. */