mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
fix nits and enhance DefaultVideoFrameProcessorImageFrameOutputTest
resolving comments from 71e92f7512.
PiperOrigin-RevId: 510457401
This commit is contained in:
parent
ba49b6b81b
commit
1308e22813
2 changed files with 21 additions and 12 deletions
|
|
@ -22,6 +22,8 @@ import static com.google.common.truth.Truth.assertThat;
|
||||||
import androidx.media3.common.C;
|
import androidx.media3.common.C;
|
||||||
import androidx.media3.test.utils.VideoFrameProcessorTestRunner;
|
import androidx.media3.test.utils.VideoFrameProcessorTestRunner;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
import java.util.Queue;
|
||||||
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import org.checkerframework.checker.nullness.qual.EnsuresNonNull;
|
import org.checkerframework.checker.nullness.qual.EnsuresNonNull;
|
||||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||||
|
|
@ -57,8 +59,8 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest {
|
||||||
|
|
||||||
@RequiresNonNull("framesProduced")
|
@RequiresNonNull("framesProduced")
|
||||||
@Test
|
@Test
|
||||||
public void imageInput_queueThreeBitmaps_outputsAllFrames() throws Exception {
|
public void imageInput_queueThreeBitmaps_outputsCorrectNumberOfFrames() throws Exception {
|
||||||
String testId = "imageInput_withThreeBitmaps_outputsAllFrames";
|
String testId = "imageInput_queueThreeBitmaps_outputsCorrectNumberOfFrames";
|
||||||
videoFrameProcessorTestRunner = getDefaultFrameProcessorTestRunnerBuilder(testId).build();
|
videoFrameProcessorTestRunner = getDefaultFrameProcessorTestRunnerBuilder(testId).build();
|
||||||
|
|
||||||
videoFrameProcessorTestRunner.queueInputBitmap(
|
videoFrameProcessorTestRunner.queueInputBitmap(
|
||||||
|
|
@ -75,8 +77,8 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest {
|
||||||
|
|
||||||
@RequiresNonNull("framesProduced")
|
@RequiresNonNull("framesProduced")
|
||||||
@Test
|
@Test
|
||||||
public void imageInput_queueTwentyBitmaps_outputsAllFrames() throws Exception {
|
public void imageInput_queueTwentyBitmaps_outputsCorrectNumberOfFrames() throws Exception {
|
||||||
String testId = "imageInput_queueTwentyBitmaps_outputsAllFrames";
|
String testId = "imageInput_queueTwentyBitmaps_outputsCorrectNumberOfFrames";
|
||||||
videoFrameProcessorTestRunner = getDefaultFrameProcessorTestRunnerBuilder(testId).build();
|
videoFrameProcessorTestRunner = getDefaultFrameProcessorTestRunnerBuilder(testId).build();
|
||||||
|
|
||||||
for (int i = 0; i < 20; i++) {
|
for (int i = 0; i < 20; i++) {
|
||||||
|
|
@ -93,9 +95,16 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest {
|
||||||
|
|
||||||
@RequiresNonNull("framesProduced")
|
@RequiresNonNull("framesProduced")
|
||||||
@Test
|
@Test
|
||||||
public void imageInput_queueEndAndQueueAgain_outputsFirstSetOfFramesOnly() throws Exception {
|
public void
|
||||||
String testId = "imageInput_queueEndAndQueueAgain_outputsFirstSetOfFramesOnly";
|
imageInput_queueEndAndQueueAgain_outputsFirstSetOfFramesOnlyAtTheCorrectPresentationTimesUs()
|
||||||
videoFrameProcessorTestRunner = getDefaultFrameProcessorTestRunnerBuilder(testId).build();
|
throws Exception {
|
||||||
|
String testId =
|
||||||
|
"imageInput_queueEndAndQueueAgain_outputsFirstSetOfFramesOnlyAtTheCorrectPresentationTimesUs";
|
||||||
|
Queue<Long> actualPresentationTimesUs = new ConcurrentLinkedQueue<>();
|
||||||
|
videoFrameProcessorTestRunner =
|
||||||
|
getDefaultFrameProcessorTestRunnerBuilder(testId)
|
||||||
|
.setOnOutputFrameAvailableListener(actualPresentationTimesUs::add)
|
||||||
|
.build();
|
||||||
|
|
||||||
videoFrameProcessorTestRunner.queueInputBitmap(
|
videoFrameProcessorTestRunner.queueInputBitmap(
|
||||||
readBitmap(ORIGINAL_PNG_ASSET_PATH),
|
readBitmap(ORIGINAL_PNG_ASSET_PATH),
|
||||||
|
|
@ -107,8 +116,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest {
|
||||||
/* durationUs= */ 2 * C.MICROS_PER_SECOND,
|
/* durationUs= */ 2 * C.MICROS_PER_SECOND,
|
||||||
/* frameRate= */ 3);
|
/* frameRate= */ 3);
|
||||||
|
|
||||||
int actualFrameCount = framesProduced.get();
|
assertThat(actualPresentationTimesUs).containsExactly(0L, C.MICROS_PER_SECOND / 2).inOrder();
|
||||||
assertThat(actualFrameCount).isEqualTo(/* expected= */ 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private VideoFrameProcessorTestRunner.Builder getDefaultFrameProcessorTestRunnerBuilder(
|
private VideoFrameProcessorTestRunner.Builder getDefaultFrameProcessorTestRunnerBuilder(
|
||||||
|
|
@ -117,6 +125,7 @@ public class DefaultVideoFrameProcessorImageFrameOutputTest {
|
||||||
.setTestId(testId)
|
.setTestId(testId)
|
||||||
.setVideoFrameProcessorFactory(new DefaultVideoFrameProcessor.Factory())
|
.setVideoFrameProcessorFactory(new DefaultVideoFrameProcessor.Factory())
|
||||||
.setIsInputTextureExternal(false)
|
.setIsInputTextureExternal(false)
|
||||||
.setOnFrameAvailableListener((unused) -> checkNotNull(framesProduced).incrementAndGet());
|
.setOnOutputFrameAvailableListener(
|
||||||
|
unused -> checkNotNull(framesProduced).incrementAndGet());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ public final class VideoFrameProcessorTestRunner {
|
||||||
public Builder() {
|
public Builder() {
|
||||||
pixelWidthHeightRatio = DEFAULT_PIXEL_WIDTH_HEIGHT_RATIO;
|
pixelWidthHeightRatio = DEFAULT_PIXEL_WIDTH_HEIGHT_RATIO;
|
||||||
isInputTextureExternal = true;
|
isInputTextureExternal = true;
|
||||||
onOutputFrameAvailableListener = (unused) -> {};
|
onOutputFrameAvailableListener = unused -> {};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -191,7 +191,7 @@ public final class VideoFrameProcessorTestRunner {
|
||||||
* <p>The default value is a no-op.
|
* <p>The default value is a no-op.
|
||||||
*/
|
*/
|
||||||
@CanIgnoreReturnValue
|
@CanIgnoreReturnValue
|
||||||
public Builder setOnFrameAvailableListener(
|
public Builder setOnOutputFrameAvailableListener(
|
||||||
OnOutputFrameAvailableListener onOutputFrameAvailableListener) {
|
OnOutputFrameAvailableListener onOutputFrameAvailableListener) {
|
||||||
this.onOutputFrameAvailableListener = onOutputFrameAvailableListener;
|
this.onOutputFrameAvailableListener = onOutputFrameAvailableListener;
|
||||||
return this;
|
return this;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue