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
This commit is contained in:
olly 2016-07-13 07:55:14 -07:00 committed by Oliver Woodman
parent 4a5bb55920
commit 4f718363b5
4 changed files with 7 additions and 26 deletions

View File

@ -50,6 +50,7 @@ import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
import com.google.android.exoplayer2.ui.PlayerControl; import com.google.android.exoplayer2.ui.PlayerControl;
import com.google.android.exoplayer2.upstream.BandwidthMeter; import com.google.android.exoplayer2.upstream.BandwidthMeter;
import com.google.android.exoplayer2.upstream.DataSourceFactory; 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.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.DebugTextViewHelper; import com.google.android.exoplayer2.util.DebugTextViewHelper;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
@ -145,6 +146,7 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback,
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
String userAgent = Util.getUserAgent(this, "ExoPlayerDemo"); String userAgent = Util.getUserAgent(this, "ExoPlayerDemo");
dataSourceFactory = new DefaultDataSourceFactory(this, userAgent); dataSourceFactory = new DefaultDataSourceFactory(this, userAgent);
bandwidthMeter = new DefaultBandwidthMeter();
mainHandler = new Handler(); mainHandler = new Handler();
setContentView(R.layout.player_activity); setContentView(R.layout.player_activity);
@ -291,7 +293,6 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback,
mediaController.setAnchorView(rootView); mediaController.setAnchorView(rootView);
debugViewHelper = new DebugTextViewHelper(player, debugTextView); debugViewHelper = new DebugTextViewHelper(player, debugTextView);
debugViewHelper.start(); debugViewHelper.start();
bandwidthMeter = player.getBandwidthMeter();
playerNeedsSource = true; playerNeedsSource = true;
} }
if (playerNeedsSource) { if (playerNeedsSource) {

View File

@ -25,8 +25,6 @@ import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.text.Cue; import com.google.android.exoplayer2.text.Cue;
import com.google.android.exoplayer2.text.TextRenderer; import com.google.android.exoplayer2.text.TextRenderer;
import com.google.android.exoplayer2.trackselection.TrackSelector; 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.annotation.TargetApi;
import android.content.Context; 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 static final int MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY = 50;
private final ExoPlayer player; private final ExoPlayer player;
private final BandwidthMeter bandwidthMeter;
private final Renderer[] renderers; private final Renderer[] renderers;
private final ComponentListener componentListener; private final ComponentListener componentListener;
private final Handler mainHandler; private final Handler mainHandler;
@ -117,7 +114,6 @@ public final class SimpleExoPlayer implements ExoPlayer {
LoadControl loadControl, DrmSessionManager drmSessionManager, LoadControl loadControl, DrmSessionManager drmSessionManager,
boolean preferExtensionDecoders, long allowedVideoJoiningTimeMs) { boolean preferExtensionDecoders, long allowedVideoJoiningTimeMs) {
mainHandler = new Handler(); mainHandler = new Handler();
bandwidthMeter = new DefaultBandwidthMeter();
componentListener = new ComponentListener(); componentListener = new ComponentListener();
// Build the renderers. // Build the renderers.
@ -225,13 +221,6 @@ public final class SimpleExoPlayer implements ExoPlayer {
player.sendMessages(messages); 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 * @return The video format currently being played, or null if there is no video component to the
* current media. * current media.

View File

@ -20,7 +20,6 @@ import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.upstream.BandwidthMeter;
import android.widget.TextView; import android.widget.TextView;
@ -81,8 +80,8 @@ public final class DebugTextViewHelper implements Runnable, ExoPlayer.EventListe
} }
private void updateTextView() { private void updateTextView() {
textView.setText(getPlayerStateString() + getPlayerPeriodIndexString() + getBandwidthString() textView.setText(getPlayerStateString() + getPlayerPeriodIndexString() + getVideoString()
+ getVideoString() + getAudioString()); + getAudioString());
} }
private String getPlayerStateString() { private String getPlayerStateString() {
@ -111,16 +110,6 @@ public final class DebugTextViewHelper implements Runnable, ExoPlayer.EventListe
return " period:" + player.getCurrentPeriodIndex(); 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() { private String getVideoString() {
Format format = player.getVideoFormat(); Format format = player.getVideoFormat();
if (format == null) { if (format == null) {

View File

@ -28,6 +28,7 @@ import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.MappingTrackSelector; import com.google.android.exoplayer2.trackselection.MappingTrackSelector;
import com.google.android.exoplayer2.upstream.BandwidthMeter; import com.google.android.exoplayer2.upstream.BandwidthMeter;
import com.google.android.exoplayer2.upstream.DataSourceFactory; 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.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
@ -127,7 +128,8 @@ public abstract class ExoHostedTest implements HostedTest, ExoPlayer.EventListen
player = buildExoPlayer(host, surface, trackSelector); player = buildExoPlayer(host, surface, trackSelector);
DataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(host, Util DataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(host, Util
.getUserAgent(host, "ExoPlayerPlaybackTests")); .getUserAgent(host, "ExoPlayerPlaybackTests"));
player.setMediaSource(buildSource(host, dataSourceFactory, player.getBandwidthMeter())); BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
player.setMediaSource(buildSource(host, dataSourceFactory, bandwidthMeter));
player.addListener(this); player.addListener(this);
player.setDebugListener(this); player.setDebugListener(this);
player.setPlayWhenReady(true); player.setPlayWhenReady(true);