Commit e9bc5193 by tofunmi Committed by Marc Baechinger

Effect: split ending frame Processing and getting the output bitmap in tests

PiperOrigin-RevId: 527554408
parent e2119fbb
...@@ -80,7 +80,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest { ...@@ -80,7 +80,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest {
3 * C.MICROS_PER_SECOND, 3 * C.MICROS_PER_SECOND,
/* offsetToAddUs= */ 0L, /* offsetToAddUs= */ 0L,
/* frameRate= */ 4); /* frameRate= */ 4);
videoFrameProcessorTestRunner.endFrameProcessingAndGetImage(); videoFrameProcessorTestRunner.endFrameProcessing();
int actualFrameCount = framesProduced.get(); int actualFrameCount = framesProduced.get();
assertThat(actualFrameCount).isEqualTo(/* expected= */ 20); assertThat(actualFrameCount).isEqualTo(/* expected= */ 20);
...@@ -99,7 +99,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest { ...@@ -99,7 +99,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest {
/* offsetToAddUs= */ 0L, /* offsetToAddUs= */ 0L,
/* frameRate= */ 1); /* frameRate= */ 1);
} }
videoFrameProcessorTestRunner.endFrameProcessingAndGetImage(); videoFrameProcessorTestRunner.endFrameProcessing();
int actualFrameCount = framesProduced.get(); int actualFrameCount = framesProduced.get();
assertThat(actualFrameCount).isEqualTo(/* expected= */ 20); assertThat(actualFrameCount).isEqualTo(/* expected= */ 20);
...@@ -123,7 +123,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest { ...@@ -123,7 +123,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest {
/* durationUs= */ C.MICROS_PER_SECOND, /* durationUs= */ C.MICROS_PER_SECOND,
/* offsetToAddUs= */ offsetUs, /* offsetToAddUs= */ offsetUs,
/* frameRate= */ 2); /* frameRate= */ 2);
videoFrameProcessorTestRunner.endFrameProcessingAndGetImage(); videoFrameProcessorTestRunner.endFrameProcessing();
assertThat(actualPresentationTimesUs) assertThat(actualPresentationTimesUs)
.containsExactly(offsetUs, offsetUs + C.MICROS_PER_SECOND / 2) .containsExactly(offsetUs, offsetUs + C.MICROS_PER_SECOND / 2)
.inOrder(); .inOrder();
...@@ -152,7 +152,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest { ...@@ -152,7 +152,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest {
/* durationUs= */ C.MICROS_PER_SECOND, /* durationUs= */ C.MICROS_PER_SECOND,
/* offsetToAddUs= */ offsetUs2, /* offsetToAddUs= */ offsetUs2,
/* frameRate= */ 2); /* frameRate= */ 2);
videoFrameProcessorTestRunner.endFrameProcessingAndGetImage(); videoFrameProcessorTestRunner.endFrameProcessing();
assertThat(actualPresentationTimesUs) assertThat(actualPresentationTimesUs)
.containsExactly( .containsExactly(
offsetUs1, offsetUs1,
...@@ -180,7 +180,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest { ...@@ -180,7 +180,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest {
/* durationUs= */ C.MICROS_PER_SECOND, /* durationUs= */ C.MICROS_PER_SECOND,
/* offsetToAddUs= */ 0L, /* offsetToAddUs= */ 0L,
/* frameRate= */ 2); /* frameRate= */ 2);
videoFrameProcessorTestRunner.endFrameProcessingAndGetImage(); videoFrameProcessorTestRunner.endFrameProcessing();
videoFrameProcessorTestRunner.queueInputBitmap( videoFrameProcessorTestRunner.queueInputBitmap(
readBitmap(ORIGINAL_PNG_ASSET_PATH), readBitmap(ORIGINAL_PNG_ASSET_PATH),
/* durationUs= */ 2 * C.MICROS_PER_SECOND, /* durationUs= */ 2 * C.MICROS_PER_SECOND,
......
...@@ -109,7 +109,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest { ...@@ -109,7 +109,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
videoFrameProcessorTestRunner = getDefaultFrameProcessorTestRunnerBuilder(testId).build(); videoFrameProcessorTestRunner = getDefaultFrameProcessorTestRunnerBuilder(testId).build();
Bitmap expectedBitmap = readBitmap(ORIGINAL_PNG_ASSET_PATH); Bitmap expectedBitmap = readBitmap(ORIGINAL_PNG_ASSET_PATH);
Bitmap actualBitmap = videoFrameProcessorTestRunner.processFirstFrameAndEnd(); videoFrameProcessorTestRunner.processFirstFrameAndEnd();
Bitmap actualBitmap = videoFrameProcessorTestRunner.getOutputBitmap();
// TODO(b/207848601): Switch to using proper tooling for testing against golden data. // TODO(b/207848601): Switch to using proper tooling for testing against golden data.
float averagePixelAbsoluteDifference = float averagePixelAbsoluteDifference =
...@@ -135,8 +136,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest { ...@@ -135,8 +136,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
.setEffects(new OverlayEffect(ImmutableList.of(bitmapOverlay))) .setEffects(new OverlayEffect(ImmutableList.of(bitmapOverlay)))
.build(); .build();
Bitmap expectedBitmap = readBitmap(BITMAP_OVERLAY_PNG_ASSET_PATH); Bitmap expectedBitmap = readBitmap(BITMAP_OVERLAY_PNG_ASSET_PATH);
videoFrameProcessorTestRunner.processFirstFrameAndEnd();
Bitmap actualBitmap = videoFrameProcessorTestRunner.processFirstFrameAndEnd(); Bitmap actualBitmap = videoFrameProcessorTestRunner.getOutputBitmap();
// TODO(b/207848601): Switch to using proper tooling for testing against golden data. // TODO(b/207848601): Switch to using proper tooling for testing against golden data.
float averagePixelAbsoluteDifference = float averagePixelAbsoluteDifference =
...@@ -167,7 +168,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest { ...@@ -167,7 +168,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
.build(); .build();
Bitmap expectedBitmap = readBitmap(ORIGINAL_HLG10_PNG_ASSET_PATH); Bitmap expectedBitmap = readBitmap(ORIGINAL_HLG10_PNG_ASSET_PATH);
Bitmap actualBitmap = videoFrameProcessorTestRunner.processFirstFrameAndEnd(); videoFrameProcessorTestRunner.processFirstFrameAndEnd();
Bitmap actualBitmap = videoFrameProcessorTestRunner.getOutputBitmap();
// TODO(b/207848601): Switch to using proper tooling for testing against golden data. // TODO(b/207848601): Switch to using proper tooling for testing against golden data.
float averagePixelAbsoluteDifference = float averagePixelAbsoluteDifference =
...@@ -202,7 +204,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest { ...@@ -202,7 +204,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
.build(); .build();
Bitmap expectedBitmap = readBitmap(ORIGINAL_HLG10_PNG_ASSET_PATH); Bitmap expectedBitmap = readBitmap(ORIGINAL_HLG10_PNG_ASSET_PATH);
Bitmap actualBitmap = videoFrameProcessorTestRunner.processFirstFrameAndEnd(); videoFrameProcessorTestRunner.processFirstFrameAndEnd();
Bitmap actualBitmap = videoFrameProcessorTestRunner.getOutputBitmap();
// TODO(b/207848601): Switch to using proper tooling for testing against golden data. // TODO(b/207848601): Switch to using proper tooling for testing against golden data.
float averagePixelAbsoluteDifference = float averagePixelAbsoluteDifference =
...@@ -234,7 +237,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest { ...@@ -234,7 +237,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
.build(); .build();
Bitmap expectedBitmap = readBitmap(ORIGINAL_HDR10_PNG_ASSET_PATH); Bitmap expectedBitmap = readBitmap(ORIGINAL_HDR10_PNG_ASSET_PATH);
Bitmap actualBitmap = videoFrameProcessorTestRunner.processFirstFrameAndEnd(); videoFrameProcessorTestRunner.processFirstFrameAndEnd();
Bitmap actualBitmap = videoFrameProcessorTestRunner.getOutputBitmap();
// TODO(b/207848601): Switch to using proper tooling for testing against golden data. // TODO(b/207848601): Switch to using proper tooling for testing against golden data.
float averagePixelAbsoluteDifference = float averagePixelAbsoluteDifference =
...@@ -269,7 +273,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest { ...@@ -269,7 +273,8 @@ public final class DefaultVideoFrameProcessorTextureOutputPixelTest {
.build(); .build();
Bitmap expectedBitmap = readBitmap(ORIGINAL_HDR10_PNG_ASSET_PATH); Bitmap expectedBitmap = readBitmap(ORIGINAL_HDR10_PNG_ASSET_PATH);
Bitmap actualBitmap = videoFrameProcessorTestRunner.processFirstFrameAndEnd(); videoFrameProcessorTestRunner.processFirstFrameAndEnd();
Bitmap actualBitmap = videoFrameProcessorTestRunner.getOutputBitmap();
// TODO(b/207848601): Switch to using proper tooling for testing against golden data. // TODO(b/207848601): Switch to using proper tooling for testing against golden data.
float averagePixelAbsoluteDifference = float averagePixelAbsoluteDifference =
......
...@@ -124,7 +124,8 @@ public final class ToneMapHdrToSdrUsingOpenGlPixelTest { ...@@ -124,7 +124,8 @@ public final class ToneMapHdrToSdrUsingOpenGlPixelTest {
Bitmap actualBitmap; Bitmap actualBitmap;
try { try {
actualBitmap = videoFrameProcessorTestRunner.processFirstFrameAndEnd(); videoFrameProcessorTestRunner.processFirstFrameAndEnd();
actualBitmap = videoFrameProcessorTestRunner.getOutputBitmap();
} catch (UnsupportedOperationException e) { } catch (UnsupportedOperationException e) {
if (e.getMessage() != null if (e.getMessage() != null
&& e.getMessage().equals(DecodeOneFrameUtil.NO_DECODER_SUPPORT_ERROR_STRING)) { && e.getMessage().equals(DecodeOneFrameUtil.NO_DECODER_SUPPORT_ERROR_STRING)) {
...@@ -187,7 +188,8 @@ public final class ToneMapHdrToSdrUsingOpenGlPixelTest { ...@@ -187,7 +188,8 @@ public final class ToneMapHdrToSdrUsingOpenGlPixelTest {
Bitmap actualBitmap; Bitmap actualBitmap;
try { try {
actualBitmap = videoFrameProcessorTestRunner.processFirstFrameAndEnd(); videoFrameProcessorTestRunner.processFirstFrameAndEnd();
actualBitmap = videoFrameProcessorTestRunner.getOutputBitmap();
} catch (UnsupportedOperationException e) { } catch (UnsupportedOperationException e) {
if (e.getMessage() != null if (e.getMessage() != null
&& e.getMessage().equals(DecodeOneFrameUtil.NO_DECODER_SUPPORT_ERROR_STRING)) { && e.getMessage().equals(DecodeOneFrameUtil.NO_DECODER_SUPPORT_ERROR_STRING)) {
......
...@@ -234,7 +234,7 @@ public final class VideoFrameProcessorTestRunner { ...@@ -234,7 +234,7 @@ public final class VideoFrameProcessorTestRunner {
* Time to wait for the decoded frame to populate the {@link VideoFrameProcessor} instance's input * Time to wait for the decoded frame to populate the {@link VideoFrameProcessor} instance's input
* surface and the {@link VideoFrameProcessor} to finish processing the frame, in milliseconds. * surface and the {@link VideoFrameProcessor} to finish processing the frame, in milliseconds.
*/ */
private static final int VIDEO_FRAME_PROCESSING_WAIT_MS = 5000; public static final int VIDEO_FRAME_PROCESSING_WAIT_MS = 5000;
private final String testId; private final String testId;
private final @MonotonicNonNull String videoAssetPath; private final @MonotonicNonNull String videoAssetPath;
...@@ -311,7 +311,7 @@ public final class VideoFrameProcessorTestRunner { ...@@ -311,7 +311,7 @@ public final class VideoFrameProcessorTestRunner {
}); });
} }
public Bitmap processFirstFrameAndEnd() throws Exception { public void processFirstFrameAndEnd() throws Exception {
DecodeOneFrameUtil.decodeOneAssetFileFrame( DecodeOneFrameUtil.decodeOneAssetFileFrame(
checkNotNull(videoAssetPath), checkNotNull(videoAssetPath),
new DecodeOneFrameUtil.Listener() { new DecodeOneFrameUtil.Listener() {
...@@ -333,7 +333,7 @@ public final class VideoFrameProcessorTestRunner { ...@@ -333,7 +333,7 @@ public final class VideoFrameProcessorTestRunner {
} }
}, },
videoFrameProcessor.getInputSurface()); videoFrameProcessor.getInputSurface());
return endFrameProcessingAndGetImage(); endFrameProcessing();
} }
public void queueInputBitmap( public void queueInputBitmap(
...@@ -347,13 +347,24 @@ public final class VideoFrameProcessorTestRunner { ...@@ -347,13 +347,24 @@ public final class VideoFrameProcessorTestRunner {
videoFrameProcessor.queueInputBitmap(inputBitmap, durationUs, frameRate); videoFrameProcessor.queueInputBitmap(inputBitmap, durationUs, frameRate);
} }
public Bitmap endFrameProcessingAndGetImage() throws Exception { public void endFrameProcessing() throws InterruptedException {
endFrameProcessing(VIDEO_FRAME_PROCESSING_WAIT_MS);
}
public void endFrameProcessing(long videoFrameProcessingWaitTime) throws InterruptedException {
videoFrameProcessor.signalEndOfInput(); videoFrameProcessor.signalEndOfInput();
Thread.sleep(VIDEO_FRAME_PROCESSING_WAIT_MS); Thread.sleep(videoFrameProcessingWaitTime);
assertThat(videoFrameProcessingException.get()).isNull(); assertThat(videoFrameProcessingException.get()).isNull();
assertThat(videoFrameProcessingEnded).isTrue(); assertThat(videoFrameProcessingEnded).isTrue();
}
/**
* Returns the {@link Bitmap} from the provided {@link BitmapReader}.
*
* <p>Also saves the bitmap to the cache directory.
*/
public Bitmap getOutputBitmap() {
Bitmap outputBitmap = checkNotNull(bitmapReader).getBitmap(); Bitmap outputBitmap = checkNotNull(bitmapReader).getBitmap();
maybeSaveTestBitmap(testId, /* bitmapLabel= */ outputFileLabel, outputBitmap, /* path= */ null); maybeSaveTestBitmap(testId, /* bitmapLabel= */ outputFileLabel, outputBitmap, /* path= */ null);
return outputBitmap; return outputBitmap;
......
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