Avoid swallowing exceptions when switching AssetLoader

Exceptions thrown when switching AssetLoader were not reported through
the error listener. Therefore, the resources were not released and the
export was not ending.

PiperOrigin-RevId: 530626300
This commit is contained in:
kimvde 2023-05-09 16:10:26 +00:00 committed by Tofunmi Adigun-Hameed
parent 7875131e2a
commit 1105f194ca

View File

@ -470,22 +470,27 @@ import java.util.concurrent.atomic.AtomicInteger;
private void switchAssetLoader() {
handler.post(
() -> {
addCurrentProcessedInput();
totalDurationUs += currentAssetDurationUs;
currentAssetLoader.release();
isCurrentAssetFirstAsset = false;
currentMediaItemIndex++;
if (currentMediaItemIndex == editedMediaItems.size()) {
currentMediaItemIndex = 0;
sequenceLoopCount++;
try {
addCurrentProcessedInput();
totalDurationUs += currentAssetDurationUs;
currentAssetLoader.release();
isCurrentAssetFirstAsset = false;
currentMediaItemIndex++;
if (currentMediaItemIndex == editedMediaItems.size()) {
currentMediaItemIndex = 0;
sequenceLoopCount++;
}
EditedMediaItem editedMediaItem = editedMediaItems.get(currentMediaItemIndex);
currentAssetLoader =
assetLoaderFactory.createAssetLoader(
editedMediaItem,
checkNotNull(Looper.myLooper()),
/* listener= */ SequenceAssetLoader.this);
currentAssetLoader.start();
} catch (RuntimeException e) {
onError(
ExportException.createForAssetLoader(e, ExportException.ERROR_CODE_UNSPECIFIED));
}
EditedMediaItem editedMediaItem = editedMediaItems.get(currentMediaItemIndex);
currentAssetLoader =
assetLoaderFactory.createAssetLoader(
editedMediaItem,
checkNotNull(Looper.myLooper()),
/* listener= */ SequenceAssetLoader.this);
currentAssetLoader.start();
});
}