From 4f718363b5914036e82ade50efc00bda71e6bd2e Mon Sep 17 00:00:00 2001 From: olly Date: Wed, 13 Jul 2016 07:55:14 -0700 Subject: [PATCH] Remove BandwidthMeter from SimpleExoPlayer The BandwidthMeter should only be used by MediaSource instances and the objects they reference, so there's really no reason for the player to need to know about it. This change sacrifices DebugTextViewHelper showing the estimated bandwidth, but I think that's a price worth paying. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=127316755 --- .../android/exoplayer2/demo/PlayerActivity.java | 3 ++- .../android/exoplayer2/SimpleExoPlayer.java | 11 ----------- .../exoplayer2/util/DebugTextViewHelper.java | 15 ++------------- .../playbacktests/util/ExoHostedTest.java | 4 +++- 4 files changed, 7 insertions(+), 26 deletions(-) diff --git a/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java b/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java index e0388aa909..049bb77236 100644 --- a/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java +++ b/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java @@ -50,6 +50,7 @@ import com.google.android.exoplayer2.ui.AspectRatioFrameLayout; import com.google.android.exoplayer2.ui.PlayerControl; import com.google.android.exoplayer2.upstream.BandwidthMeter; import com.google.android.exoplayer2.upstream.DataSourceFactory; +import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.util.DebugTextViewHelper; import com.google.android.exoplayer2.util.Util; @@ -145,6 +146,7 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback, super.onCreate(savedInstanceState); String userAgent = Util.getUserAgent(this, "ExoPlayerDemo"); dataSourceFactory = new DefaultDataSourceFactory(this, userAgent); + bandwidthMeter = new DefaultBandwidthMeter(); mainHandler = new Handler(); setContentView(R.layout.player_activity); @@ -291,7 +293,6 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback, mediaController.setAnchorView(rootView); debugViewHelper = new DebugTextViewHelper(player, debugTextView); debugViewHelper.start(); - bandwidthMeter = player.getBandwidthMeter(); playerNeedsSource = true; } if (playerNeedsSource) { diff --git a/library/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java index c7ecd107dd..0633a12a11 100644 --- a/library/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java +++ b/library/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java @@ -25,8 +25,6 @@ import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.text.Cue; import com.google.android.exoplayer2.text.TextRenderer; import com.google.android.exoplayer2.trackselection.TrackSelector; -import com.google.android.exoplayer2.upstream.BandwidthMeter; -import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import android.annotation.TargetApi; import android.content.Context; @@ -95,7 +93,6 @@ public final class SimpleExoPlayer implements ExoPlayer { private static final int MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY = 50; private final ExoPlayer player; - private final BandwidthMeter bandwidthMeter; private final Renderer[] renderers; private final ComponentListener componentListener; private final Handler mainHandler; @@ -117,7 +114,6 @@ public final class SimpleExoPlayer implements ExoPlayer { LoadControl loadControl, DrmSessionManager drmSessionManager, boolean preferExtensionDecoders, long allowedVideoJoiningTimeMs) { mainHandler = new Handler(); - bandwidthMeter = new DefaultBandwidthMeter(); componentListener = new ComponentListener(); // Build the renderers. @@ -225,13 +221,6 @@ public final class SimpleExoPlayer implements ExoPlayer { player.sendMessages(messages); } - /** - * @return The {@link BandwidthMeter} being used by the player. - */ - public BandwidthMeter getBandwidthMeter() { - return bandwidthMeter; - } - /** * @return The video format currently being played, or null if there is no video component to the * current media. diff --git a/library/src/main/java/com/google/android/exoplayer2/util/DebugTextViewHelper.java b/library/src/main/java/com/google/android/exoplayer2/util/DebugTextViewHelper.java index 9b6221a271..c8940364f2 100644 --- a/library/src/main/java/com/google/android/exoplayer2/util/DebugTextViewHelper.java +++ b/library/src/main/java/com/google/android/exoplayer2/util/DebugTextViewHelper.java @@ -20,7 +20,6 @@ import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.SimpleExoPlayer; -import com.google.android.exoplayer2.upstream.BandwidthMeter; import android.widget.TextView; @@ -81,8 +80,8 @@ public final class DebugTextViewHelper implements Runnable, ExoPlayer.EventListe } private void updateTextView() { - textView.setText(getPlayerStateString() + getPlayerPeriodIndexString() + getBandwidthString() - + getVideoString() + getAudioString()); + textView.setText(getPlayerStateString() + getPlayerPeriodIndexString() + getVideoString() + + getAudioString()); } private String getPlayerStateString() { @@ -111,16 +110,6 @@ public final class DebugTextViewHelper implements Runnable, ExoPlayer.EventListe return " period:" + player.getCurrentPeriodIndex(); } - private String getBandwidthString() { - BandwidthMeter bandwidthMeter = player.getBandwidthMeter(); - if (bandwidthMeter == null - || bandwidthMeter.getBitrateEstimate() == BandwidthMeter.NO_ESTIMATE) { - return " bw:?"; - } else { - return " bw:" + (bandwidthMeter.getBitrateEstimate() / 1000); - } - } - private String getVideoString() { Format format = player.getVideoFormat(); if (format == null) { diff --git a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ExoHostedTest.java b/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ExoHostedTest.java index 5281579d31..b4e0a36c1c 100644 --- a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ExoHostedTest.java +++ b/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ExoHostedTest.java @@ -28,6 +28,7 @@ import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; import com.google.android.exoplayer2.trackselection.MappingTrackSelector; import com.google.android.exoplayer2.upstream.BandwidthMeter; import com.google.android.exoplayer2.upstream.DataSourceFactory; +import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.util.Util; @@ -127,7 +128,8 @@ public abstract class ExoHostedTest implements HostedTest, ExoPlayer.EventListen player = buildExoPlayer(host, surface, trackSelector); DataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(host, Util .getUserAgent(host, "ExoPlayerPlaybackTests")); - player.setMediaSource(buildSource(host, dataSourceFactory, player.getBandwidthMeter())); + BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(); + player.setMediaSource(buildSource(host, dataSourceFactory, bandwidthMeter)); player.addListener(this); player.setDebugListener(this); player.setPlayWhenReady(true);