mirror of
https://github.com/androidx/media.git
synced 2025-05-16 20:19:57 +08:00
Merge LoadErrorHandlingPolicy cleanup methods
Issue: #7309 PiperOrigin-RevId: 309387483
This commit is contained in:
parent
956514ad9b
commit
0774ee1da9
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user