Add loadTaskId to Loader.Callback

PiperOrigin-RevId: 303447837
This commit is contained in:
aquilescanta 2020-03-28 01:47:18 +00:00 committed by Oliver Woodman
parent 1c11febf3f
commit ca799716b8
11 changed files with 129 additions and 42 deletions

View File

@ -20,10 +20,19 @@ import android.os.SystemClock;
import com.google.android.exoplayer2.upstream.DataSpec; import com.google.android.exoplayer2.upstream.DataSpec;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;
/** {@link MediaSource} load event information. */ /** {@link MediaSource} load event information. */
public final class LoadEventInfo { public final class LoadEventInfo {
/** Used for the generation of unique ids. */
private static final AtomicLong idSource = new AtomicLong();
/** Returns an non-negative identifier which is unique to the JVM instance. */
public static long getNewId() {
return idSource.getAndIncrement();
}
/** Defines the requested data. */ /** Defines the requested data. */
public final DataSpec dataSpec; public final DataSpec dataSpec;
/** /**

View File

@ -543,8 +543,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
// Loader.Callback implementation. // Loader.Callback implementation.
@Override @Override
public void onLoadCompleted(ExtractingLoadable loadable, long elapsedRealtimeMs, public void onLoadCompleted(
long loadDurationMs) { ExtractingLoadable loadable, long loadTaskId, long elapsedRealtimeMs, long loadDurationMs) {
if (durationUs == C.TIME_UNSET && seekMap != null) { if (durationUs == C.TIME_UNSET && seekMap != null) {
boolean isSeekable = seekMap.isSeekable(); boolean isSeekable = seekMap.isSeekable();
long largestQueuedTimestampUs = getLargestQueuedTimestampUs(); long largestQueuedTimestampUs = getLargestQueuedTimestampUs();
@ -572,8 +572,12 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
} }
@Override @Override
public void onLoadCanceled(ExtractingLoadable loadable, long elapsedRealtimeMs, public void onLoadCanceled(
long loadDurationMs, boolean released) { ExtractingLoadable loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs,
boolean released) {
eventDispatcher.loadCanceled( eventDispatcher.loadCanceled(
loadable.dataSpec, loadable.dataSpec,
loadable.dataSource.getLastOpenedUri(), loadable.dataSource.getLastOpenedUri(),
@ -602,6 +606,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
ExtractingLoadable loadable, ExtractingLoadable loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error, IOException error,

View File

@ -212,8 +212,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
// Loader.Callback implementation. // Loader.Callback implementation.
@Override @Override
public void onLoadCompleted(SourceLoadable loadable, long elapsedRealtimeMs, public void onLoadCompleted(
long loadDurationMs) { SourceLoadable loadable, long loadTaskId, long elapsedRealtimeMs, long loadDurationMs) {
sampleSize = (int) loadable.dataSource.getBytesRead(); sampleSize = (int) loadable.dataSource.getBytesRead();
sampleData = Assertions.checkNotNull(loadable.sampleData); sampleData = Assertions.checkNotNull(loadable.sampleData);
loadingFinished = true; loadingFinished = true;
@ -234,7 +234,11 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
} }
@Override @Override
public void onLoadCanceled(SourceLoadable loadable, long elapsedRealtimeMs, long loadDurationMs, public void onLoadCanceled(
SourceLoadable loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs,
boolean released) { boolean released) {
eventDispatcher.loadCanceled( eventDispatcher.loadCanceled(
loadable.dataSpec, loadable.dataSpec,
@ -255,6 +259,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
SourceLoadable loadable, SourceLoadable loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error, IOException error,

View File

@ -393,7 +393,8 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
// Loader.Callback implementation. // Loader.Callback implementation.
@Override @Override
public void onLoadCompleted(Chunk loadable, long elapsedRealtimeMs, long loadDurationMs) { public void onLoadCompleted(
Chunk loadable, long loadTaskId, long elapsedRealtimeMs, long loadDurationMs) {
chunkSource.onChunkLoadCompleted(loadable); chunkSource.onChunkLoadCompleted(loadable);
eventDispatcher.loadCompleted( eventDispatcher.loadCompleted(
loadable.dataSpec, loadable.dataSpec,
@ -413,7 +414,11 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
} }
@Override @Override
public void onLoadCanceled(Chunk loadable, long elapsedRealtimeMs, long loadDurationMs, public void onLoadCanceled(
Chunk loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs,
boolean released) { boolean released) {
eventDispatcher.loadCanceled( eventDispatcher.loadCanceled(
loadable.dataSpec, loadable.dataSpec,
@ -441,6 +446,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
Chunk loadable, Chunk loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error, IOException error,

View File

@ -23,6 +23,7 @@ import android.os.SystemClock;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.source.LoadEventInfo;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Log; import com.google.android.exoplayer2.util.Log;
import com.google.android.exoplayer2.util.TraceUtil; import com.google.android.exoplayer2.util.TraceUtil;
@ -79,11 +80,12 @@ public final class Loader implements LoaderErrorThrower {
* and this callback being called. * and this callback being called.
* *
* @param loadable The loadable whose load has completed. * @param loadable The loadable whose load has completed.
* @param loadTaskId A non-negative identifier for the load task. Remains associated to the load
* task after retries until completion or cancellation.
* @param elapsedRealtimeMs {@link SystemClock#elapsedRealtime} when the load ended. * @param elapsedRealtimeMs {@link SystemClock#elapsedRealtime} when the load ended.
* @param loadDurationMs The duration in milliseconds of the load since {@link #startLoading} * @param loadDurationMs The duration in milliseconds of the load since {@link #startLoading}
* was called.
*/ */
void onLoadCompleted(T loadable, long elapsedRealtimeMs, long loadDurationMs); void onLoadCompleted(T loadable, long loadTaskId, long elapsedRealtimeMs, long loadDurationMs);
/** /**
* Called when a load has been canceled. * Called when a load has been canceled.
@ -94,13 +96,15 @@ public final class Loader implements LoaderErrorThrower {
* exits. * exits.
* *
* @param loadable The loadable whose load has been canceled. * @param loadable The loadable whose load has been canceled.
* @param loadTaskId A non-negative identifier for the load task. Remains associated to the load
* task after retries until completion or cancellation.
* @param elapsedRealtimeMs {@link SystemClock#elapsedRealtime} when the load was canceled. * @param elapsedRealtimeMs {@link SystemClock#elapsedRealtime} when the load was canceled.
* @param loadDurationMs The duration in milliseconds of the load since {@link #startLoading} * @param loadDurationMs The duration in milliseconds of the load since {@link #startLoading}
* was called up to the point at which it was canceled. * was called up to the point at which it was canceled.
* @param released True if the load was canceled because the {@link Loader} was released. False * @param released True if the load was canceled because the {@link Loader} was released. False
* otherwise.
*/ */
void onLoadCanceled(T loadable, long elapsedRealtimeMs, long loadDurationMs, boolean released); void onLoadCanceled(
T loadable, long loadTaskId, long elapsedRealtimeMs, long loadDurationMs, boolean released);
/** /**
* Called when a load encounters an error. * Called when a load encounters an error.
@ -109,6 +113,8 @@ public final class Loader implements LoaderErrorThrower {
* and this callback being called. * and this callback being called.
* *
* @param loadable The loadable whose load has encountered an error. * @param loadable The loadable whose load has encountered an error.
* @param loadTaskId A non-negative identifier for the load task. Remains associated to the load
* task after retries until completion or cancellation.
* @param elapsedRealtimeMs {@link SystemClock#elapsedRealtime} when the error occurred. * @param elapsedRealtimeMs {@link SystemClock#elapsedRealtime} when the error occurred.
* @param loadDurationMs The duration in milliseconds of the load since {@link #startLoading} * @param loadDurationMs The duration in milliseconds of the load since {@link #startLoading}
* was called up to the point at which the error occurred. * was called up to the point at which the error occurred.
@ -119,7 +125,12 @@ public final class Loader implements LoaderErrorThrower {
* Loader#DONT_RETRY_FATAL} or a retry action created by {@link #createRetryAction}. * Loader#DONT_RETRY_FATAL} or a retry action created by {@link #createRetryAction}.
*/ */
LoadErrorAction onLoadError( LoadErrorAction onLoadError(
T loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error, int errorCount); T loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs,
IOException error,
int errorCount);
} }
/** /**
@ -166,10 +177,7 @@ public final class Loader implements LoaderErrorThrower {
public static final LoadErrorAction DONT_RETRY_FATAL = public static final LoadErrorAction DONT_RETRY_FATAL =
new LoadErrorAction(ACTION_TYPE_DONT_RETRY_FATAL, C.TIME_UNSET); new LoadErrorAction(ACTION_TYPE_DONT_RETRY_FATAL, C.TIME_UNSET);
/** /** Action that can be taken in response to {@link Callback#onLoadError}. */
* Action that can be taken in response to {@link Callback#onLoadError(Loadable, long, long,
* IOException, int)}.
*/
public static final class LoadErrorAction { public static final class LoadErrorAction {
private final @RetryActionType int type; private final @RetryActionType int type;
@ -315,6 +323,7 @@ public final class Loader implements LoaderErrorThrower {
public final int defaultMinRetryCount; public final int defaultMinRetryCount;
private final T loadable; private final T loadable;
private final long id;
private final long startTimeMs; private final long startTimeMs;
@Nullable private Loader.Callback<T> callback; @Nullable private Loader.Callback<T> callback;
@ -328,6 +337,7 @@ public final class Loader implements LoaderErrorThrower {
public LoadTask(Looper looper, T loadable, Loader.Callback<T> callback, public LoadTask(Looper looper, T loadable, Loader.Callback<T> callback,
int defaultMinRetryCount, long startTimeMs) { int defaultMinRetryCount, long startTimeMs) {
super(looper); super(looper);
id = LoadEventInfo.getNewId();
this.loadable = loadable; this.loadable = loadable;
this.callback = callback; this.callback = callback;
this.defaultMinRetryCount = defaultMinRetryCount; this.defaultMinRetryCount = defaultMinRetryCount;
@ -370,7 +380,7 @@ public final class Loader implements LoaderErrorThrower {
finish(); finish();
long nowMs = SystemClock.elapsedRealtime(); long nowMs = SystemClock.elapsedRealtime();
Assertions.checkNotNull(callback) Assertions.checkNotNull(callback)
.onLoadCanceled(loadable, nowMs, nowMs - startTimeMs, true); .onLoadCanceled(loadable, id, nowMs, nowMs - startTimeMs, true);
// If loading, this task will be referenced from a GC root (the loading thread) until // If loading, this task will be referenced from a GC root (the loading thread) until
// cancellation completes. The time taken for cancellation to complete depends on the // cancellation completes. The time taken for cancellation to complete depends on the
// implementation of the Loadable that the task is loading. We null the callback reference // implementation of the Loadable that the task is loading. We null the callback reference
@ -441,16 +451,16 @@ public final class Loader implements LoaderErrorThrower {
long durationMs = nowMs - startTimeMs; long durationMs = nowMs - startTimeMs;
Loader.Callback<T> callback = Assertions.checkNotNull(this.callback); Loader.Callback<T> callback = Assertions.checkNotNull(this.callback);
if (canceled) { if (canceled) {
callback.onLoadCanceled(loadable, nowMs, durationMs, false); callback.onLoadCanceled(loadable, id, nowMs, durationMs, false);
return; return;
} }
switch (msg.what) { switch (msg.what) {
case MSG_CANCEL: case MSG_CANCEL:
callback.onLoadCanceled(loadable, nowMs, durationMs, false); callback.onLoadCanceled(loadable, id, nowMs, durationMs, false);
break; break;
case MSG_END_OF_SOURCE: case MSG_END_OF_SOURCE:
try { try {
callback.onLoadCompleted(loadable, nowMs, durationMs); callback.onLoadCompleted(loadable, id, nowMs, durationMs);
} catch (RuntimeException e) { } catch (RuntimeException e) {
// This should never happen, but handle it anyway. // This should never happen, but handle it anyway.
Log.e(TAG, "Unexpected exception handling load completed", e); Log.e(TAG, "Unexpected exception handling load completed", e);
@ -461,7 +471,7 @@ public final class Loader implements LoaderErrorThrower {
currentError = (IOException) msg.obj; currentError = (IOException) msg.obj;
errorCount++; errorCount++;
LoadErrorAction action = LoadErrorAction action =
callback.onLoadError(loadable, nowMs, durationMs, currentError, errorCount); callback.onLoadError(loadable, id, nowMs, durationMs, currentError, errorCount);
if (action.type == ACTION_TYPE_DONT_RETRY_FATAL) { if (action.type == ACTION_TYPE_DONT_RETRY_FATAL) {
fatalError = currentError; fatalError = currentError;
} else if (action.type != ACTION_TYPE_DONT_RETRY) { } else if (action.type != ACTION_TYPE_DONT_RETRY) {

View File

@ -281,7 +281,8 @@ public final class SntpClient {
} }
@Override @Override
public void onLoadCompleted(Loadable loadable, long elapsedRealtimeMs, long loadDurationMs) { public void onLoadCompleted(
Loadable loadable, long loadTaskId, long elapsedRealtimeMs, long loadDurationMs) {
Assertions.checkState(SntpClient.isInitialized()); Assertions.checkState(SntpClient.isInitialized());
if (callback != null) { if (callback != null) {
callback.onInitialized(); callback.onInitialized();
@ -290,13 +291,18 @@ public final class SntpClient {
@Override @Override
public void onLoadCanceled( public void onLoadCanceled(
Loadable loadable, long elapsedRealtimeMs, long loadDurationMs, boolean released) { Loadable loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs,
boolean released) {
// Ignore. // Ignore.
} }
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
Loadable loadable, Loadable loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error, IOException error,

View File

@ -73,6 +73,7 @@ import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
import com.google.android.exoplayer2.upstream.Allocation; import com.google.android.exoplayer2.upstream.Allocation;
import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.Allocator;
import com.google.android.exoplayer2.upstream.Loader; import com.google.android.exoplayer2.upstream.Loader;
import com.google.android.exoplayer2.upstream.Loader.Loadable;
import com.google.android.exoplayer2.upstream.TransferListener; import com.google.android.exoplayer2.upstream.TransferListener;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Clock; import com.google.android.exoplayer2.util.Clock;
@ -6363,15 +6364,20 @@ public final class ExoPlayerTest {
private static final class DummyLoaderCallback implements Loader.Callback<Loader.Loadable> { private static final class DummyLoaderCallback implements Loader.Callback<Loader.Loadable> {
@Override @Override
public void onLoadCompleted( public void onLoadCompleted(
Loader.Loadable loadable, long elapsedRealtimeMs, long loadDurationMs) {} Loadable loadable, long loadTaskId, long elapsedRealtimeMs, long loadDurationMs) {}
@Override @Override
public void onLoadCanceled( public void onLoadCanceled(
Loader.Loadable loadable, long elapsedRealtimeMs, long loadDurationMs, boolean released) {} Loadable loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs,
boolean released) {}
@Override @Override
public Loader.LoadErrorAction onLoadError( public Loader.LoadErrorAction onLoadError(
Loader.Loadable loadable, Loadable loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error, IOException error,

View File

@ -1347,20 +1347,28 @@ public final class DashMediaSource extends BaseMediaSource {
private final class ManifestCallback implements Loader.Callback<ParsingLoadable<DashManifest>> { private final class ManifestCallback implements Loader.Callback<ParsingLoadable<DashManifest>> {
@Override @Override
public void onLoadCompleted(ParsingLoadable<DashManifest> loadable, public void onLoadCompleted(
long elapsedRealtimeMs, long loadDurationMs) { ParsingLoadable<DashManifest> loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs) {
onManifestLoadCompleted(loadable, elapsedRealtimeMs, loadDurationMs); onManifestLoadCompleted(loadable, elapsedRealtimeMs, loadDurationMs);
} }
@Override @Override
public void onLoadCanceled(ParsingLoadable<DashManifest> loadable, public void onLoadCanceled(
long elapsedRealtimeMs, long loadDurationMs, boolean released) { ParsingLoadable<DashManifest> loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs,
boolean released) {
DashMediaSource.this.onLoadCanceled(loadable, elapsedRealtimeMs, loadDurationMs); DashMediaSource.this.onLoadCanceled(loadable, elapsedRealtimeMs, loadDurationMs);
} }
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
ParsingLoadable<DashManifest> loadable, ParsingLoadable<DashManifest> loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error, IOException error,
@ -1373,20 +1381,28 @@ public final class DashMediaSource extends BaseMediaSource {
private final class UtcTimestampCallback implements Loader.Callback<ParsingLoadable<Long>> { private final class UtcTimestampCallback implements Loader.Callback<ParsingLoadable<Long>> {
@Override @Override
public void onLoadCompleted(ParsingLoadable<Long> loadable, long elapsedRealtimeMs, public void onLoadCompleted(
ParsingLoadable<Long> loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs) { long loadDurationMs) {
onUtcTimestampLoadCompleted(loadable, elapsedRealtimeMs, loadDurationMs); onUtcTimestampLoadCompleted(loadable, elapsedRealtimeMs, loadDurationMs);
} }
@Override @Override
public void onLoadCanceled(ParsingLoadable<Long> loadable, long elapsedRealtimeMs, public void onLoadCanceled(
long loadDurationMs, boolean released) { ParsingLoadable<Long> loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs,
boolean released) {
DashMediaSource.this.onLoadCanceled(loadable, elapsedRealtimeMs, loadDurationMs); DashMediaSource.this.onLoadCanceled(loadable, elapsedRealtimeMs, loadDurationMs);
} }
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
ParsingLoadable<Long> loadable, ParsingLoadable<Long> loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error, IOException error,

View File

@ -703,7 +703,8 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
// Loader.Callback implementation. // Loader.Callback implementation.
@Override @Override
public void onLoadCompleted(Chunk loadable, long elapsedRealtimeMs, long loadDurationMs) { public void onLoadCompleted(
Chunk loadable, long loadTaskId, long elapsedRealtimeMs, long loadDurationMs) {
chunkSource.onChunkLoadCompleted(loadable); chunkSource.onChunkLoadCompleted(loadable);
eventDispatcher.loadCompleted( eventDispatcher.loadCompleted(
loadable.dataSpec, loadable.dataSpec,
@ -727,7 +728,11 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
} }
@Override @Override
public void onLoadCanceled(Chunk loadable, long elapsedRealtimeMs, long loadDurationMs, public void onLoadCanceled(
Chunk loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs,
boolean released) { boolean released) {
eventDispatcher.loadCanceled( eventDispatcher.loadCanceled(
loadable.dataSpec, loadable.dataSpec,
@ -754,6 +759,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
Chunk loadable, Chunk loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error, IOException error,

View File

@ -221,7 +221,10 @@ public final class DefaultHlsPlaylistTracker
@Override @Override
public void onLoadCompleted( public void onLoadCompleted(
ParsingLoadable<HlsPlaylist> loadable, long elapsedRealtimeMs, long loadDurationMs) { ParsingLoadable<HlsPlaylist> loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs) {
HlsPlaylist result = loadable.getResult(); HlsPlaylist result = loadable.getResult();
HlsMasterPlaylist masterPlaylist; HlsMasterPlaylist masterPlaylist;
boolean isMediaPlaylist = result instanceof HlsMediaPlaylist; boolean isMediaPlaylist = result instanceof HlsMediaPlaylist;
@ -254,6 +257,7 @@ public final class DefaultHlsPlaylistTracker
@Override @Override
public void onLoadCanceled( public void onLoadCanceled(
ParsingLoadable<HlsPlaylist> loadable, ParsingLoadable<HlsPlaylist> loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
boolean released) { boolean released) {
@ -270,6 +274,7 @@ public final class DefaultHlsPlaylistTracker
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
ParsingLoadable<HlsPlaylist> loadable, ParsingLoadable<HlsPlaylist> loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error, IOException error,
@ -516,7 +521,10 @@ public final class DefaultHlsPlaylistTracker
@Override @Override
public void onLoadCompleted( public void onLoadCompleted(
ParsingLoadable<HlsPlaylist> loadable, long elapsedRealtimeMs, long loadDurationMs) { ParsingLoadable<HlsPlaylist> loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs) {
HlsPlaylist result = loadable.getResult(); HlsPlaylist result = loadable.getResult();
if (result instanceof HlsMediaPlaylist) { if (result instanceof HlsMediaPlaylist) {
processLoadedPlaylist((HlsMediaPlaylist) result, loadDurationMs); processLoadedPlaylist((HlsMediaPlaylist) result, loadDurationMs);
@ -536,6 +544,7 @@ public final class DefaultHlsPlaylistTracker
@Override @Override
public void onLoadCanceled( public void onLoadCanceled(
ParsingLoadable<HlsPlaylist> loadable, ParsingLoadable<HlsPlaylist> loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
boolean released) { boolean released) {
@ -552,6 +561,7 @@ public final class DefaultHlsPlaylistTracker
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
ParsingLoadable<HlsPlaylist> loadable, ParsingLoadable<HlsPlaylist> loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error, IOException error,

View File

@ -618,7 +618,10 @@ public final class SsMediaSource extends BaseMediaSource
// Loader.Callback implementation // Loader.Callback implementation
@Override @Override
public void onLoadCompleted(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs, public void onLoadCompleted(
ParsingLoadable<SsManifest> loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs) { long loadDurationMs) {
manifestEventDispatcher.loadCompleted( manifestEventDispatcher.loadCompleted(
loadable.dataSpec, loadable.dataSpec,
@ -635,8 +638,12 @@ public final class SsMediaSource extends BaseMediaSource
} }
@Override @Override
public void onLoadCanceled(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs, public void onLoadCanceled(
long loadDurationMs, boolean released) { ParsingLoadable<SsManifest> loadable,
long loadTaskId,
long elapsedRealtimeMs,
long loadDurationMs,
boolean released) {
manifestEventDispatcher.loadCanceled( manifestEventDispatcher.loadCanceled(
loadable.dataSpec, loadable.dataSpec,
loadable.getUri(), loadable.getUri(),
@ -650,6 +657,7 @@ public final class SsMediaSource extends BaseMediaSource
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
ParsingLoadable<SsManifest> loadable, ParsingLoadable<SsManifest> loadable,
long loadTaskId,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error, IOException error,