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

This commit is contained in:
Oliver Woodman 2015-09-28 12:22:12 +01:00
parent e4e02f9189
commit c3e0d34aa1
6 changed files with 25 additions and 29 deletions

View file

@ -97,7 +97,7 @@ public class EventLogger implements DemoPlayer.Listener, DemoPlayer.InfoListener
@Override
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();
if (VerboseLogUtil.isTagEnabled(TAG)) {
Log.v(TAG, "loadStart [" + getSessionTimeString() + ", " + sourceId + ", " + type
@ -107,7 +107,7 @@ public class EventLogger implements DemoPlayer.Listener, DemoPlayer.InfoListener
@Override
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)) {
long downloadTime = SystemClock.elapsedRealtime() - loadStartTimeMs[sourceId];
Log.v(TAG, "loadEnd [" + getSessionTimeString() + ", " + sourceId + ", " + downloadTime
@ -116,13 +116,13 @@ public class EventLogger implements DemoPlayer.Listener, DemoPlayer.InfoListener
}
@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 + ", "
+ Integer.toString(trigger) + "]");
}
@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 + ", "
+ Integer.toString(trigger) + "]");
}

View file

@ -115,14 +115,14 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
* A listener for debugging information.
*/
public interface InfoListener {
void onVideoFormatEnabled(Format format, int trigger, int mediaTimeMs);
void onAudioFormatEnabled(Format format, int trigger, int mediaTimeMs);
void onVideoFormatEnabled(Format format, int trigger, long mediaTimeMs);
void onAudioFormatEnabled(Format format, int trigger, long mediaTimeMs);
void onDroppedFrames(int count, long elapsed);
void onBandwidthSample(int elapsedMs, long bytes, long bitrateEstimate);
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,
int mediaStartTimeMs, int mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs);
long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs);
void onDecoderInitialized(String decoderName, long elapsedRealtimeMs,
long initializationDurationMs);
void onAvailableRangeChanged(TimeRange availableRange);
@ -435,7 +435,8 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
}
@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) {
return;
}
@ -447,11 +448,6 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
}
}
@Override
public void onDrmKeysLoaded() {
// Do nothing.
}
@Override
public void onDrmSessionManagerError(Exception e) {
if (internalErrorListener != null) {
@ -535,7 +531,7 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
@Override
public void onLoadStarted(int sourceId, long length, int type, int trigger, Format format,
int mediaStartTimeMs, int mediaEndTimeMs) {
long mediaStartTimeMs, long mediaEndTimeMs) {
if (infoListener != null) {
infoListener.onLoadStarted(sourceId, length, type, trigger, format, mediaStartTimeMs,
mediaEndTimeMs);
@ -544,7 +540,7 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
@Override
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) {
infoListener.onLoadCompleted(sourceId, bytesLoaded, type, trigger, format, mediaStartTimeMs,
mediaEndTimeMs, elapsedRealtimeMs, loadDurationMs);
@ -557,7 +553,7 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
}
@Override
public void onUpstreamDiscarded(int sourceId, int mediaStartTimeMs, int mediaEndTimeMs) {
public void onUpstreamDiscarded(int sourceId, long mediaStartTimeMs, long mediaEndTimeMs) {
// Do nothing.
}

View file

@ -42,7 +42,7 @@ public interface BaseChunkSampleSourceEventListener {
* load is for initialization data.
*/
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.
@ -61,7 +61,7 @@ public interface BaseChunkSampleSourceEventListener {
* @param loadDurationMs Amount of time taken to load the data.
*/
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.
@ -87,7 +87,7 @@ public interface BaseChunkSampleSourceEventListener {
* @param mediaStartTimeMs The media time of the start 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
@ -99,6 +99,6 @@ public interface BaseChunkSampleSourceEventListener {
* {@link ChunkSource}.
* @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);
}

View file

@ -574,8 +574,8 @@ public class ChunkSampleSource implements SampleSource, SampleSourceReader, Load
return Math.min((errorCount - 1) * 1000, 5000);
}
protected final int usToMs(long timeUs) {
return (int) (timeUs / 1000);
protected final long usToMs(long timeUs) {
return timeUs / 1000;
}
private void notifyLoadStarted(final long length, final int type, final int trigger,

View file

@ -599,8 +599,8 @@ public final class HlsSampleSource implements SampleSource, SampleSourceReader,
return Math.min((errorCount - 1) * 1000, 5000);
}
/* package */ int usToMs(long timeUs) {
return (int) (timeUs / 1000);
/* package */ long usToMs(long timeUs) {
return timeUs / 1000;
}
private void notifyLoadStarted(final long length, final int type, final int trigger,

View file

@ -117,7 +117,7 @@ public final class LogcatLogger implements ExoPlayer.Listener,
@Override
public void onDownstreamFormatChanged(int sourceId, Format format, int trigger,
int mediaTimeMs) {
long mediaTimeMs) {
Log.i(tag, "Downstream format changed (" + sourceId + "): " + format.id);
}
@ -129,18 +129,18 @@ public final class LogcatLogger implements ExoPlayer.Listener,
@Override
public void onLoadStarted(int sourceId, long length, int type, int trigger, Format format,
int mediaStartTimeMs, int mediaEndTimeMs) {}
long mediaStartTimeMs, long mediaEndTimeMs) {}
@Override
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) {}
@Override
public void onLoadCanceled(int sourceId, long bytesLoaded) {}
@Override
public void onUpstreamDiscarded(int sourceId, int mediaStartTimeMs, int mediaEndTimeMs) {}
public void onUpstreamDiscarded(int sourceId, long mediaStartTimeMs, long mediaEndTimeMs) {}
@Override
public void onDrawnToSurface(Surface surface) {}