Commit 0774ee1d by aquilescanta Committed by Oliver Woodman

Merge LoadErrorHandlingPolicy cleanup methods

Issue: #7309
PiperOrigin-RevId: 309387483
parent 956514ad
......@@ -563,7 +563,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
elapsedRealtimeMs,
loadDurationMs,
dataSource.getBytesRead());
loadErrorHandlingPolicy.onLoadCompleted(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
eventDispatcher.loadCompleted(
loadEventInfo,
C.DATA_TYPE_MEDIA,
......@@ -591,7 +591,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
elapsedRealtimeMs,
loadDurationMs,
dataSource.getBytesRead());
loadErrorHandlingPolicy.onLoadCanceled(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
eventDispatcher.loadCanceled(
loadEventInfo,
C.DATA_TYPE_MEDIA,
......@@ -635,6 +635,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
}
StatsDataSource dataSource = loadable.dataSource;
boolean wasCanceled = !loadErrorAction.isRetry();
eventDispatcher.loadError(
new LoadEventInfo(
loadable.loadTaskId,
......@@ -652,7 +653,10 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
/* mediaStartTimeUs= */ loadable.seekTimeUs,
durationUs,
error,
!loadErrorAction.isRetry());
wasCanceled);
if (wasCanceled) {
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
}
return loadErrorAction;
}
......
......@@ -227,7 +227,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
elapsedRealtimeMs,
loadDurationMs,
sampleSize);
loadErrorHandlingPolicy.onLoadCompleted(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
eventDispatcher.loadCompleted(
loadEventInfo,
C.DATA_TYPE_MEDIA,
......@@ -252,7 +252,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
elapsedRealtimeMs,
loadDurationMs,
dataSource.getBytesRead());
loadErrorHandlingPolicy.onLoadCanceled(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
eventDispatcher.loadCanceled(
loadEventInfo,
C.DATA_TYPE_MEDIA,
......@@ -290,6 +290,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
: Loader.DONT_RETRY_FATAL;
}
StatsDataSource dataSource = loadable.dataSource;
boolean wasCanceled = !action.isRetry();
eventDispatcher.loadError(
new LoadEventInfo(
loadable.loadTaskId,
......@@ -307,7 +308,10 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
/* mediaStartTimeUs= */ 0,
durationUs,
error,
/* wasCanceled= */ !action.isRetry());
wasCanceled);
if (wasCanceled) {
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
}
return action;
}
......
......@@ -414,7 +414,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCompleted(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
eventDispatcher.loadCompleted(
loadEventInfo,
loadable.type,
......@@ -439,7 +439,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCanceled(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
eventDispatcher.loadCanceled(
loadEventInfo,
loadable.type,
......@@ -522,6 +522,7 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
error,
canceled);
if (canceled) {
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
callback.onContinueLoadingRequested(this);
}
return loadErrorAction;
......
......@@ -137,20 +137,12 @@ public interface LoadErrorHandlingPolicy {
}
/**
* Called when the load associated with the given {@link LoadEventInfo} completes.
* Called once {@code loadTaskId} will not be associated with any more load errors.
*
* <p>Implementations of this interface should avoid resource leaks by releasing resources
* associated to the given {@link LoadEventInfo#loadTaskId}.
* <p>Implementations should clean up any resources associated with {@code loadTaskId} when this
* method is called.
*/
default void onLoadCompleted(LoadEventInfo loadEventInfo) {}
/**
* Called when the load associated with the given {@link LoadEventInfo} is canceled.
*
* <p>Implementations of this interface should avoid resource leaks by releasing resources
* associated to the given {@link LoadEventInfo#loadTaskId}.
*/
default void onLoadCanceled(LoadEventInfo loadEventInfo) {}
default void onLoadTaskConcluded(long loadTaskId) {}
/**
* Returns the minimum number of times to retry a load in the case of a load error, before
......
......@@ -763,7 +763,7 @@ public final class DashMediaSource extends BaseMediaSource {
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCompleted(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
manifestEventDispatcher.loadCompleted(loadEventInfo, loadable.type);
DashManifest newManifest = loadable.getResult();
......@@ -859,6 +859,7 @@ public final class DashMediaSource extends BaseMediaSource {
retryDelayMs == C.TIME_UNSET
? Loader.DONT_RETRY_FATAL
: Loader.createRetryAction(/* resetErrorCount= */ false, retryDelayMs);
boolean wasCanceled = !loadErrorAction.isRetry();
manifestEventDispatcher.loadError(
new LoadEventInfo(
loadable.loadTaskId,
......@@ -870,7 +871,10 @@ public final class DashMediaSource extends BaseMediaSource {
loadable.bytesLoaded()),
loadable.type,
error,
!loadErrorAction.isRetry());
wasCanceled);
if (wasCanceled) {
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
}
return loadErrorAction;
}
......@@ -885,7 +889,7 @@ public final class DashMediaSource extends BaseMediaSource {
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCompleted(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
manifestEventDispatcher.loadCompleted(loadEventInfo, loadable.type);
onUtcTimestampResolved(loadable.getResult() - elapsedRealtimeMs);
}
......@@ -907,6 +911,7 @@ public final class DashMediaSource extends BaseMediaSource {
loadable.type,
error,
/* wasCanceled= */ true);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
onUtcTimestampResolutionError(error);
return Loader.DONT_RETRY;
}
......@@ -922,7 +927,7 @@ public final class DashMediaSource extends BaseMediaSource {
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCanceled(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
manifestEventDispatcher.loadCanceled(loadEventInfo, loadable.type);
}
......
......@@ -711,7 +711,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCompleted(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
eventDispatcher.loadCompleted(
loadEventInfo,
loadable.type,
......@@ -740,7 +740,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCanceled(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
eventDispatcher.loadCanceled(
loadEventInfo,
loadable.type,
......@@ -796,6 +796,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
: Loader.DONT_RETRY_FATAL;
}
boolean wasCanceled = !loadErrorAction.isRetry();
eventDispatcher.loadError(
new LoadEventInfo(
loadable.loadTaskId,
......@@ -813,7 +814,10 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
loadable.startTimeUs,
loadable.endTimeUs,
error,
/* wasCanceled= */ !loadErrorAction.isRetry());
wasCanceled);
if (wasCanceled) {
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
}
if (blacklistSucceeded) {
if (!prepared) {
......
......@@ -251,7 +251,7 @@ public final class DefaultHlsPlaylistTracker
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCompleted(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
eventDispatcher.loadCompleted(loadEventInfo, C.DATA_TYPE_MANIFEST);
}
......@@ -270,7 +270,7 @@ public final class DefaultHlsPlaylistTracker
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCanceled(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
eventDispatcher.loadCanceled(loadEventInfo, C.DATA_TYPE_MANIFEST);
}
......@@ -297,6 +297,9 @@ public final class DefaultHlsPlaylistTracker
C.DATA_TYPE_MANIFEST,
error,
isFatal);
if (isFatal) {
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
}
return isFatal
? Loader.DONT_RETRY_FATAL
: Loader.createRetryAction(/* resetErrorCount= */ false, retryDelayMs);
......@@ -536,7 +539,7 @@ public final class DefaultHlsPlaylistTracker
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCompleted(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
if (result instanceof HlsMediaPlaylist) {
processLoadedPlaylist((HlsMediaPlaylist) result, loadDurationMs);
eventDispatcher.loadCompleted(loadEventInfo, C.DATA_TYPE_MANIFEST);
......@@ -560,7 +563,7 @@ public final class DefaultHlsPlaylistTracker
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCanceled(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
eventDispatcher.loadCanceled(loadEventInfo, C.DATA_TYPE_MANIFEST);
}
......@@ -596,6 +599,7 @@ public final class DefaultHlsPlaylistTracker
loadErrorAction = Loader.DONT_RETRY;
}
boolean wasCanceled = !loadErrorAction.isRetry();
eventDispatcher.loadError(
new LoadEventInfo(
loadable.loadTaskId,
......@@ -607,8 +611,10 @@ public final class DefaultHlsPlaylistTracker
loadable.bytesLoaded()),
C.DATA_TYPE_MANIFEST,
error,
/* wasCanceled= */ !loadErrorAction.isRetry());
wasCanceled);
if (wasCanceled) {
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
}
return loadErrorAction;
}
......
......@@ -630,7 +630,7 @@ public final class SsMediaSource extends BaseMediaSource
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCompleted(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
manifestEventDispatcher.loadCompleted(loadEventInfo, loadable.type);
manifest = loadable.getResult();
manifestLoadStartTimestamp = elapsedRealtimeMs - loadDurationMs;
......@@ -653,7 +653,7 @@ public final class SsMediaSource extends BaseMediaSource
elapsedRealtimeMs,
loadDurationMs,
loadable.bytesLoaded());
loadErrorHandlingPolicy.onLoadCanceled(loadEventInfo);
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
manifestEventDispatcher.loadCanceled(loadEventInfo, loadable.type);
}
......@@ -671,6 +671,7 @@ public final class SsMediaSource extends BaseMediaSource
retryDelayMs == C.TIME_UNSET
? Loader.DONT_RETRY_FATAL
: Loader.createRetryAction(/* resetErrorCount= */ false, retryDelayMs);
boolean wasCanceled = !loadErrorAction.isRetry();
manifestEventDispatcher.loadError(
new LoadEventInfo(
loadable.loadTaskId,
......@@ -682,7 +683,10 @@ public final class SsMediaSource extends BaseMediaSource
loadable.bytesLoaded()),
loadable.type,
error,
!loadErrorAction.isRetry());
wasCanceled);
if (wasCanceled) {
loadErrorHandlingPolicy.onLoadTaskConcluded(loadable.loadTaskId);
}
return loadErrorAction;
}
......
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