mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Add an errorCount argument to onLoadError
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=202313695
This commit is contained in:
parent
93cbae5bff
commit
fc2168eb61
8 changed files with 39 additions and 16 deletions
|
|
@ -534,7 +534,11 @@ import java.util.Arrays;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoadErrorAction onLoadError(
|
public LoadErrorAction onLoadError(
|
||||||
ExtractingLoadable loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error) {
|
ExtractingLoadable loadable,
|
||||||
|
long elapsedRealtimeMs,
|
||||||
|
long loadDurationMs,
|
||||||
|
IOException error,
|
||||||
|
int errorCount) {
|
||||||
boolean isErrorFatal = isLoadableExceptionFatal(error);
|
boolean isErrorFatal = isLoadableExceptionFatal(error);
|
||||||
eventDispatcher.loadError(
|
eventDispatcher.loadError(
|
||||||
loadable.dataSpec,
|
loadable.dataSpec,
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,6 @@ import java.util.Arrays;
|
||||||
/* package */ boolean loadingSucceeded;
|
/* package */ boolean loadingSucceeded;
|
||||||
/* package */ byte[] sampleData;
|
/* package */ byte[] sampleData;
|
||||||
/* package */ int sampleSize;
|
/* package */ int sampleSize;
|
||||||
private int errorCount;
|
|
||||||
|
|
||||||
public SingleSampleMediaPeriod(
|
public SingleSampleMediaPeriod(
|
||||||
DataSpec dataSpec,
|
DataSpec dataSpec,
|
||||||
|
|
@ -230,8 +229,11 @@ import java.util.Arrays;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoadErrorAction onLoadError(
|
public LoadErrorAction onLoadError(
|
||||||
SourceLoadable loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error) {
|
SourceLoadable loadable,
|
||||||
errorCount++;
|
long elapsedRealtimeMs,
|
||||||
|
long loadDurationMs,
|
||||||
|
IOException error,
|
||||||
|
int errorCount) {
|
||||||
boolean cancel = treatLoadErrorsAsEndOfStream && errorCount >= minLoadableRetryCount;
|
boolean cancel = treatLoadErrorsAsEndOfStream && errorCount >= minLoadableRetryCount;
|
||||||
eventDispatcher.loadError(
|
eventDispatcher.loadError(
|
||||||
loadable.dataSpec,
|
loadable.dataSpec,
|
||||||
|
|
|
||||||
|
|
@ -411,7 +411,11 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoadErrorAction onLoadError(
|
public LoadErrorAction onLoadError(
|
||||||
Chunk loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error) {
|
Chunk loadable,
|
||||||
|
long elapsedRealtimeMs,
|
||||||
|
long loadDurationMs,
|
||||||
|
IOException error,
|
||||||
|
int errorCount) {
|
||||||
long bytesLoaded = loadable.bytesLoaded();
|
long bytesLoaded = loadable.bytesLoaded();
|
||||||
boolean isMediaChunk = isMediaChunk(loadable);
|
boolean isMediaChunk = isMediaChunk(loadable);
|
||||||
int lastChunkIndex = mediaChunks.size() - 1;
|
int lastChunkIndex = mediaChunks.size() - 1;
|
||||||
|
|
|
||||||
|
|
@ -111,12 +111,13 @@ public final class Loader implements LoaderErrorThrower {
|
||||||
* @param elapsedRealtimeMs {@link SystemClock#elapsedRealtime} when the error occurred.
|
* @param elapsedRealtimeMs {@link SystemClock#elapsedRealtime} when the error occurred.
|
||||||
* @param loadDurationMs The duration of the load up to the point at which the error occurred.
|
* @param loadDurationMs The duration of the load up to the point at which the error occurred.
|
||||||
* @param error The load error.
|
* @param error The load error.
|
||||||
|
* @param errorCount The number of errors this load has encountered, including this one.
|
||||||
* @return The desired error handling action. One of {@link Loader#RETRY}, {@link
|
* @return The desired error handling action. One of {@link Loader#RETRY}, {@link
|
||||||
* Loader#RETRY_RESET_ERROR_COUNT}, {@link Loader#DONT_RETRY}, {@link
|
* Loader#RETRY_RESET_ERROR_COUNT}, {@link Loader#DONT_RETRY}, {@link
|
||||||
* 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);
|
T loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error, int errorCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -164,7 +165,7 @@ public final class Loader implements LoaderErrorThrower {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Action that can be taken in response to {@link Callback#onLoadError(Loadable, long, long,
|
* Action that can be taken in response to {@link Callback#onLoadError(Loadable, long, long,
|
||||||
* IOException)}.
|
* IOException, int)}.
|
||||||
*/
|
*/
|
||||||
public static final class LoadErrorAction {
|
public static final class LoadErrorAction {
|
||||||
|
|
||||||
|
|
@ -445,12 +446,15 @@ public final class Loader implements LoaderErrorThrower {
|
||||||
break;
|
break;
|
||||||
case MSG_IO_EXCEPTION:
|
case MSG_IO_EXCEPTION:
|
||||||
currentError = (IOException) msg.obj;
|
currentError = (IOException) msg.obj;
|
||||||
LoadErrorAction action = callback.onLoadError(loadable, nowMs, durationMs, currentError);
|
errorCount++;
|
||||||
|
LoadErrorAction action =
|
||||||
|
callback.onLoadError(loadable, 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) {
|
||||||
errorCount =
|
if (action.type == ACTION_TYPE_RETRY_AND_RESET_ERROR_COUNT) {
|
||||||
action.type == ACTION_TYPE_RETRY_AND_RESET_ERROR_COUNT ? 1 : errorCount + 1;
|
errorCount = 1;
|
||||||
|
}
|
||||||
start(
|
start(
|
||||||
action.retryDelayMillis != C.TIME_UNSET
|
action.retryDelayMillis != C.TIME_UNSET
|
||||||
? action.retryDelayMillis
|
? action.retryDelayMillis
|
||||||
|
|
|
||||||
|
|
@ -1175,7 +1175,8 @@ public final class DashMediaSource extends BaseMediaSource {
|
||||||
ParsingLoadable<DashManifest> loadable,
|
ParsingLoadable<DashManifest> loadable,
|
||||||
long elapsedRealtimeMs,
|
long elapsedRealtimeMs,
|
||||||
long loadDurationMs,
|
long loadDurationMs,
|
||||||
IOException error) {
|
IOException error,
|
||||||
|
int errorCount) {
|
||||||
return onManifestLoadError(loadable, elapsedRealtimeMs, loadDurationMs, error);
|
return onManifestLoadError(loadable, elapsedRealtimeMs, loadDurationMs, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1200,7 +1201,8 @@ public final class DashMediaSource extends BaseMediaSource {
|
||||||
ParsingLoadable<Long> loadable,
|
ParsingLoadable<Long> loadable,
|
||||||
long elapsedRealtimeMs,
|
long elapsedRealtimeMs,
|
||||||
long loadDurationMs,
|
long loadDurationMs,
|
||||||
IOException error) {
|
IOException error,
|
||||||
|
int errorCount) {
|
||||||
return onUtcTimestampLoadError(loadable, elapsedRealtimeMs, loadDurationMs, error);
|
return onUtcTimestampLoadError(loadable, elapsedRealtimeMs, loadDurationMs, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -604,7 +604,11 @@ import java.util.Arrays;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoadErrorAction onLoadError(
|
public LoadErrorAction onLoadError(
|
||||||
Chunk loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error) {
|
Chunk loadable,
|
||||||
|
long elapsedRealtimeMs,
|
||||||
|
long loadDurationMs,
|
||||||
|
IOException error,
|
||||||
|
int errorCount) {
|
||||||
long bytesLoaded = loadable.bytesLoaded();
|
long bytesLoaded = loadable.bytesLoaded();
|
||||||
boolean isMediaChunk = isMediaChunk(loadable);
|
boolean isMediaChunk = isMediaChunk(loadable);
|
||||||
boolean cancelable = !isMediaChunk || bytesLoaded == 0;
|
boolean cancelable = !isMediaChunk || bytesLoaded == 0;
|
||||||
|
|
|
||||||
|
|
@ -234,7 +234,8 @@ public final class DefaultHlsPlaylistTracker
|
||||||
ParsingLoadable<HlsPlaylist> loadable,
|
ParsingLoadable<HlsPlaylist> loadable,
|
||||||
long elapsedRealtimeMs,
|
long elapsedRealtimeMs,
|
||||||
long loadDurationMs,
|
long loadDurationMs,
|
||||||
IOException error) {
|
IOException error,
|
||||||
|
int errorCount) {
|
||||||
boolean isFatal = error instanceof ParserException;
|
boolean isFatal = error instanceof ParserException;
|
||||||
eventDispatcher.loadError(
|
eventDispatcher.loadError(
|
||||||
loadable.dataSpec,
|
loadable.dataSpec,
|
||||||
|
|
@ -490,7 +491,8 @@ public final class DefaultHlsPlaylistTracker
|
||||||
ParsingLoadable<HlsPlaylist> loadable,
|
ParsingLoadable<HlsPlaylist> loadable,
|
||||||
long elapsedRealtimeMs,
|
long elapsedRealtimeMs,
|
||||||
long loadDurationMs,
|
long loadDurationMs,
|
||||||
IOException error) {
|
IOException error,
|
||||||
|
int errorCount) {
|
||||||
boolean isFatal = error instanceof ParserException;
|
boolean isFatal = error instanceof ParserException;
|
||||||
eventDispatcher.loadError(
|
eventDispatcher.loadError(
|
||||||
loadable.dataSpec,
|
loadable.dataSpec,
|
||||||
|
|
|
||||||
|
|
@ -545,7 +545,8 @@ public final class SsMediaSource extends BaseMediaSource
|
||||||
ParsingLoadable<SsManifest> loadable,
|
ParsingLoadable<SsManifest> loadable,
|
||||||
long elapsedRealtimeMs,
|
long elapsedRealtimeMs,
|
||||||
long loadDurationMs,
|
long loadDurationMs,
|
||||||
IOException error) {
|
IOException error,
|
||||||
|
int errorCount) {
|
||||||
boolean isFatal = error instanceof ParserException;
|
boolean isFatal = error instanceof ParserException;
|
||||||
manifestEventDispatcher.loadError(
|
manifestEventDispatcher.loadError(
|
||||||
loadable.dataSpec,
|
loadable.dataSpec,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue