Commit c3e0d34a by Oliver Woodman

Fixed int overflow issue with callbacks on very long-running streams.

parent e4e02f91
...@@ -97,7 +97,7 @@ public class EventLogger implements DemoPlayer.Listener, DemoPlayer.InfoListener ...@@ -97,7 +97,7 @@ public class EventLogger implements DemoPlayer.Listener, DemoPlayer.InfoListener
@Override @Override
public void onLoadStarted(int sourceId, long length, int type, int trigger, Format format, public void onLoadStarted(int sourceId, long length, int type, int trigger, Format format,
int mediaStartTimeMs, int mediaEndTimeMs) { long mediaStartTimeMs, long mediaEndTimeMs) {
loadStartTimeMs[sourceId] = SystemClock.elapsedRealtime(); loadStartTimeMs[sourceId] = SystemClock.elapsedRealtime();
if (VerboseLogUtil.isTagEnabled(TAG)) { if (VerboseLogUtil.isTagEnabled(TAG)) {
Log.v(TAG, "loadStart [" + getSessionTimeString() + ", " + sourceId + ", " + type Log.v(TAG, "loadStart [" + getSessionTimeString() + ", " + sourceId + ", " + type
...@@ -107,7 +107,7 @@ public class EventLogger implements DemoPlayer.Listener, DemoPlayer.InfoListener ...@@ -107,7 +107,7 @@ public class EventLogger implements DemoPlayer.Listener, DemoPlayer.InfoListener
@Override @Override
public void onLoadCompleted(int sourceId, long bytesLoaded, int type, int trigger, Format format, public void onLoadCompleted(int sourceId, long bytesLoaded, int type, int trigger, Format format,
int mediaStartTimeMs, int mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs) { long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs) {
if (VerboseLogUtil.isTagEnabled(TAG)) { if (VerboseLogUtil.isTagEnabled(TAG)) {
long downloadTime = SystemClock.elapsedRealtime() - loadStartTimeMs[sourceId]; long downloadTime = SystemClock.elapsedRealtime() - loadStartTimeMs[sourceId];
Log.v(TAG, "loadEnd [" + getSessionTimeString() + ", " + sourceId + ", " + downloadTime Log.v(TAG, "loadEnd [" + getSessionTimeString() + ", " + sourceId + ", " + downloadTime
...@@ -116,13 +116,13 @@ public class EventLogger implements DemoPlayer.Listener, DemoPlayer.InfoListener ...@@ -116,13 +116,13 @@ public class EventLogger implements DemoPlayer.Listener, DemoPlayer.InfoListener
} }
@Override @Override
public void onVideoFormatEnabled(Format format, int trigger, int mediaTimeMs) { public void onVideoFormatEnabled(Format format, int trigger, long mediaTimeMs) {
Log.d(TAG, "videoFormat [" + getSessionTimeString() + ", " + format.id + ", " Log.d(TAG, "videoFormat [" + getSessionTimeString() + ", " + format.id + ", "
+ Integer.toString(trigger) + "]"); + Integer.toString(trigger) + "]");
} }
@Override @Override
public void onAudioFormatEnabled(Format format, int trigger, int mediaTimeMs) { public void onAudioFormatEnabled(Format format, int trigger, long mediaTimeMs) {
Log.d(TAG, "audioFormat [" + getSessionTimeString() + ", " + format.id + ", " Log.d(TAG, "audioFormat [" + getSessionTimeString() + ", " + format.id + ", "
+ Integer.toString(trigger) + "]"); + Integer.toString(trigger) + "]");
} }
......
...@@ -115,14 +115,14 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi ...@@ -115,14 +115,14 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
* A listener for debugging information. * A listener for debugging information.
*/ */
public interface InfoListener { public interface InfoListener {
void onVideoFormatEnabled(Format format, int trigger, int mediaTimeMs); void onVideoFormatEnabled(Format format, int trigger, long mediaTimeMs);
void onAudioFormatEnabled(Format format, int trigger, int mediaTimeMs); void onAudioFormatEnabled(Format format, int trigger, long mediaTimeMs);
void onDroppedFrames(int count, long elapsed); void onDroppedFrames(int count, long elapsed);
void onBandwidthSample(int elapsedMs, long bytes, long bitrateEstimate); void onBandwidthSample(int elapsedMs, long bytes, long bitrateEstimate);
void onLoadStarted(int sourceId, long length, int type, int trigger, Format format, void onLoadStarted(int sourceId, long length, int type, int trigger, Format format,
int mediaStartTimeMs, int mediaEndTimeMs); long mediaStartTimeMs, long mediaEndTimeMs);
void onLoadCompleted(int sourceId, long bytesLoaded, int type, int trigger, Format format, void onLoadCompleted(int sourceId, long bytesLoaded, int type, int trigger, Format format,
int mediaStartTimeMs, int mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs); long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs);
void onDecoderInitialized(String decoderName, long elapsedRealtimeMs, void onDecoderInitialized(String decoderName, long elapsedRealtimeMs,
long initializationDurationMs); long initializationDurationMs);
void onAvailableRangeChanged(TimeRange availableRange); void onAvailableRangeChanged(TimeRange availableRange);
...@@ -435,7 +435,8 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi ...@@ -435,7 +435,8 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
} }
@Override @Override
public void onDownstreamFormatChanged(int sourceId, Format format, int trigger, int mediaTimeMs) { public void onDownstreamFormatChanged(int sourceId, Format format, int trigger,
long mediaTimeMs) {
if (infoListener == null) { if (infoListener == null) {
return; return;
} }
...@@ -448,11 +449,6 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi ...@@ -448,11 +449,6 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
} }
@Override @Override
public void onDrmKeysLoaded() {
// Do nothing.
}
@Override
public void onDrmSessionManagerError(Exception e) { public void onDrmSessionManagerError(Exception e) {
if (internalErrorListener != null) { if (internalErrorListener != null) {
internalErrorListener.onDrmSessionManagerError(e); internalErrorListener.onDrmSessionManagerError(e);
...@@ -535,7 +531,7 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi ...@@ -535,7 +531,7 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
@Override @Override
public void onLoadStarted(int sourceId, long length, int type, int trigger, Format format, public void onLoadStarted(int sourceId, long length, int type, int trigger, Format format,
int mediaStartTimeMs, int mediaEndTimeMs) { long mediaStartTimeMs, long mediaEndTimeMs) {
if (infoListener != null) { if (infoListener != null) {
infoListener.onLoadStarted(sourceId, length, type, trigger, format, mediaStartTimeMs, infoListener.onLoadStarted(sourceId, length, type, trigger, format, mediaStartTimeMs,
mediaEndTimeMs); mediaEndTimeMs);
...@@ -544,7 +540,7 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi ...@@ -544,7 +540,7 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
@Override @Override
public void onLoadCompleted(int sourceId, long bytesLoaded, int type, int trigger, Format format, public void onLoadCompleted(int sourceId, long bytesLoaded, int type, int trigger, Format format,
int mediaStartTimeMs, int mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs) { long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs) {
if (infoListener != null) { if (infoListener != null) {
infoListener.onLoadCompleted(sourceId, bytesLoaded, type, trigger, format, mediaStartTimeMs, infoListener.onLoadCompleted(sourceId, bytesLoaded, type, trigger, format, mediaStartTimeMs,
mediaEndTimeMs, elapsedRealtimeMs, loadDurationMs); mediaEndTimeMs, elapsedRealtimeMs, loadDurationMs);
...@@ -557,7 +553,7 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi ...@@ -557,7 +553,7 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
} }
@Override @Override
public void onUpstreamDiscarded(int sourceId, int mediaStartTimeMs, int mediaEndTimeMs) { public void onUpstreamDiscarded(int sourceId, long mediaStartTimeMs, long mediaEndTimeMs) {
// Do nothing. // Do nothing.
} }
......
...@@ -42,7 +42,7 @@ public interface BaseChunkSampleSourceEventListener { ...@@ -42,7 +42,7 @@ public interface BaseChunkSampleSourceEventListener {
* load is for initialization data. * load is for initialization data.
*/ */
void onLoadStarted(int sourceId, long length, int type, int trigger, Format format, void onLoadStarted(int sourceId, long length, int type, int trigger, Format format,
int mediaStartTimeMs, int mediaEndTimeMs); long mediaStartTimeMs, long mediaEndTimeMs);
/** /**
* Invoked when the current load operation completes. * Invoked when the current load operation completes.
...@@ -61,7 +61,7 @@ public interface BaseChunkSampleSourceEventListener { ...@@ -61,7 +61,7 @@ public interface BaseChunkSampleSourceEventListener {
* @param loadDurationMs Amount of time taken to load the data. * @param loadDurationMs Amount of time taken to load the data.
*/ */
void onLoadCompleted(int sourceId, long bytesLoaded, int type, int trigger, Format format, void onLoadCompleted(int sourceId, long bytesLoaded, int type, int trigger, Format format,
int mediaStartTimeMs, int mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs); long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs);
/** /**
* Invoked when the current upstream load operation is canceled. * Invoked when the current upstream load operation is canceled.
...@@ -87,7 +87,7 @@ public interface BaseChunkSampleSourceEventListener { ...@@ -87,7 +87,7 @@ public interface BaseChunkSampleSourceEventListener {
* @param mediaStartTimeMs The media time of the start of the discarded data. * @param mediaStartTimeMs The media time of the start of the discarded data.
* @param mediaEndTimeMs The media time of the end of the discarded data. * @param mediaEndTimeMs The media time of the end of the discarded data.
*/ */
void onUpstreamDiscarded(int sourceId, int mediaStartTimeMs, int mediaEndTimeMs); void onUpstreamDiscarded(int sourceId, long mediaStartTimeMs, long mediaEndTimeMs);
/** /**
* Invoked when the downstream format changes (i.e. when the format being supplied to the * Invoked when the downstream format changes (i.e. when the format being supplied to the
...@@ -99,6 +99,6 @@ public interface BaseChunkSampleSourceEventListener { ...@@ -99,6 +99,6 @@ public interface BaseChunkSampleSourceEventListener {
* {@link ChunkSource}. * {@link ChunkSource}.
* @param mediaTimeMs The media time at which the change occurred. * @param mediaTimeMs The media time at which the change occurred.
*/ */
void onDownstreamFormatChanged(int sourceId, Format format, int trigger, int mediaTimeMs); void onDownstreamFormatChanged(int sourceId, Format format, int trigger, long mediaTimeMs);
} }
...@@ -574,8 +574,8 @@ public class ChunkSampleSource implements SampleSource, SampleSourceReader, Load ...@@ -574,8 +574,8 @@ public class ChunkSampleSource implements SampleSource, SampleSourceReader, Load
return Math.min((errorCount - 1) * 1000, 5000); return Math.min((errorCount - 1) * 1000, 5000);
} }
protected final int usToMs(long timeUs) { protected final long usToMs(long timeUs) {
return (int) (timeUs / 1000); return timeUs / 1000;
} }
private void notifyLoadStarted(final long length, final int type, final int trigger, private void notifyLoadStarted(final long length, final int type, final int trigger,
......
...@@ -599,8 +599,8 @@ public final class HlsSampleSource implements SampleSource, SampleSourceReader, ...@@ -599,8 +599,8 @@ public final class HlsSampleSource implements SampleSource, SampleSourceReader,
return Math.min((errorCount - 1) * 1000, 5000); return Math.min((errorCount - 1) * 1000, 5000);
} }
/* package */ int usToMs(long timeUs) { /* package */ long usToMs(long timeUs) {
return (int) (timeUs / 1000); return timeUs / 1000;
} }
private void notifyLoadStarted(final long length, final int type, final int trigger, private void notifyLoadStarted(final long length, final int type, final int trigger,
......
...@@ -117,7 +117,7 @@ public final class LogcatLogger implements ExoPlayer.Listener, ...@@ -117,7 +117,7 @@ public final class LogcatLogger implements ExoPlayer.Listener,
@Override @Override
public void onDownstreamFormatChanged(int sourceId, Format format, int trigger, public void onDownstreamFormatChanged(int sourceId, Format format, int trigger,
int mediaTimeMs) { long mediaTimeMs) {
Log.i(tag, "Downstream format changed (" + sourceId + "): " + format.id); Log.i(tag, "Downstream format changed (" + sourceId + "): " + format.id);
} }
...@@ -129,18 +129,18 @@ public final class LogcatLogger implements ExoPlayer.Listener, ...@@ -129,18 +129,18 @@ public final class LogcatLogger implements ExoPlayer.Listener,
@Override @Override
public void onLoadStarted(int sourceId, long length, int type, int trigger, Format format, public void onLoadStarted(int sourceId, long length, int type, int trigger, Format format,
int mediaStartTimeMs, int mediaEndTimeMs) {} long mediaStartTimeMs, long mediaEndTimeMs) {}
@Override @Override
public void onLoadCompleted(int sourceId, long bytesLoaded, int type, int trigger, public void onLoadCompleted(int sourceId, long bytesLoaded, int type, int trigger,
Format format, int mediaStartTimeMs, int mediaEndTimeMs, long elapsedRealtimeMs, Format format, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs,
long loadDurationMs) {} long loadDurationMs) {}
@Override @Override
public void onLoadCanceled(int sourceId, long bytesLoaded) {} public void onLoadCanceled(int sourceId, long bytesLoaded) {}
@Override @Override
public void onUpstreamDiscarded(int sourceId, int mediaStartTimeMs, int mediaEndTimeMs) {} public void onUpstreamDiscarded(int sourceId, long mediaStartTimeMs, long mediaEndTimeMs) {}
@Override @Override
public void onDrawnToSurface(Surface surface) {} public void onDrawnToSurface(Surface surface) {}
......
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