diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/VideoFrameProcessorTestRunner.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/VideoFrameProcessorTestRunner.java index e7c692dc3d..81f17e46f9 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/VideoFrameProcessorTestRunner.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/VideoFrameProcessorTestRunner.java @@ -306,6 +306,7 @@ public final class VideoFrameProcessorTestRunner { @Override public void onError(VideoFrameProcessingException exception) { videoFrameProcessingException.set(exception); + checkNotNull(videoFrameProcessingEndedLatch).countDown(); } @Override @@ -376,15 +377,18 @@ public final class VideoFrameProcessorTestRunner { public void endFrameProcessing(long videoFrameProcessingWaitTimeMs) throws InterruptedException { videoFrameProcessor.signalEndOfInput(); + @Nullable Exception endFrameProcessingException = null; try { - checkNotNull(videoFrameProcessingEndedLatch) - .await(videoFrameProcessingWaitTimeMs, MILLISECONDS); + if (!checkNotNull(videoFrameProcessingEndedLatch) + .await(videoFrameProcessingWaitTimeMs, MILLISECONDS)) { + endFrameProcessingException = + new IllegalStateException("Video frame processing timed out."); + } } catch (InterruptedException e) { - // Report videoFrameProcessingException before potentially reporting a timeout - // InterruptedException. - assertThat(videoFrameProcessingException.get()).isNull(); - throw e; + endFrameProcessingException = e; } + assertThat(videoFrameProcessingException.get()).isNull(); + assertThat(endFrameProcessingException).isNull(); } /**