Change externalShaderProgramInputCapacity to int

The field is only accessed on the GL thread.

PiperOrigin-RevId: 641273595
This commit is contained in:
claincly 2024-06-07 09:32:05 -07:00 committed by Copybara-Service
parent b1c6d9ff04
commit b42b63f3a3

View File

@ -46,7 +46,6 @@ import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.atomic.AtomicInteger;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull; import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
/** /**
@ -88,10 +87,11 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
private final float[] textureTransformMatrix; private final float[] textureTransformMatrix;
private final Queue<FrameInfo> pendingFrames; private final Queue<FrameInfo> pendingFrames;
private final ScheduledExecutorService scheduledExecutorService; private final ScheduledExecutorService scheduledExecutorService;
private final AtomicInteger externalShaderProgramInputCapacity;
private final boolean repeatLastRegisteredFrame; private final boolean repeatLastRegisteredFrame;
private final boolean experimentalAdjustSurfaceTextureTransformationMatrix; private final boolean experimentalAdjustSurfaceTextureTransformationMatrix;
// Must be accessed on the GL thread.
private int externalShaderProgramInputCapacity;
private int availableFrameCount; private int availableFrameCount;
private boolean currentInputStreamEnded; private boolean currentInputStreamEnded;
@ -143,7 +143,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
textureTransformMatrix = new float[16]; textureTransformMatrix = new float[16];
pendingFrames = new ConcurrentLinkedQueue<>(); pendingFrames = new ConcurrentLinkedQueue<>();
scheduledExecutorService = Util.newSingleThreadScheduledExecutor(TIMER_THREAD_NAME); scheduledExecutorService = Util.newSingleThreadScheduledExecutor(TIMER_THREAD_NAME);
externalShaderProgramInputCapacity = new AtomicInteger();
surfaceTexture.setOnFrameAvailableListener( surfaceTexture.setOnFrameAvailableListener(
unused -> unused ->
videoFrameProcessingTaskExecutor.submit( videoFrameProcessingTaskExecutor.submit(
@ -193,7 +192,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
checkState(samplingGlShaderProgram instanceof ExternalShaderProgram); checkState(samplingGlShaderProgram instanceof ExternalShaderProgram);
videoFrameProcessingTaskExecutor.submit( videoFrameProcessingTaskExecutor.submit(
() -> { () -> {
externalShaderProgramInputCapacity.set(0); externalShaderProgramInputCapacity = 0;
this.externalShaderProgram = (ExternalShaderProgram) samplingGlShaderProgram; this.externalShaderProgram = (ExternalShaderProgram) samplingGlShaderProgram;
}); });
} }
@ -212,7 +211,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
public void onReadyToAcceptInputFrame() { public void onReadyToAcceptInputFrame() {
videoFrameProcessingTaskExecutor.submit( videoFrameProcessingTaskExecutor.submit(
() -> { () -> {
externalShaderProgramInputCapacity.incrementAndGet(); externalShaderProgramInputCapacity++;
maybeQueueFrameToExternalShaderProgram(); maybeQueueFrameToExternalShaderProgram();
}); });
} }
@ -290,7 +289,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
@Override @Override
protected void flush() throws VideoFrameProcessingException { protected void flush() throws VideoFrameProcessingException {
externalShaderProgramInputCapacity.set(0); externalShaderProgramInputCapacity = 0;
currentFrame = null; currentFrame = null;
pendingFrames.clear(); pendingFrames.clear();
lastRegisteredFrame = null; lastRegisteredFrame = null;
@ -369,7 +368,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
} }
private void maybeQueueFrameToExternalShaderProgram() { private void maybeQueueFrameToExternalShaderProgram() {
if (externalShaderProgramInputCapacity.get() == 0 if (externalShaderProgramInputCapacity == 0
|| availableFrameCount == 0 || availableFrameCount == 0
|| currentFrame != null) { || currentFrame != null) {
return; return;
@ -382,7 +381,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
repeatLastRegisteredFrame ? checkNotNull(lastRegisteredFrame) : pendingFrames.element(); repeatLastRegisteredFrame ? checkNotNull(lastRegisteredFrame) : pendingFrames.element();
this.currentFrame = currentFrame; this.currentFrame = currentFrame;
externalShaderProgramInputCapacity.decrementAndGet(); externalShaderProgramInputCapacity--;
surfaceTexture.getTransformMatrix(textureTransformMatrix); surfaceTexture.getTransformMatrix(textureTransformMatrix);
long frameTimeNs = surfaceTexture.getTimestamp(); long frameTimeNs = surfaceTexture.getTimestamp();
long offsetToAddUs = currentFrame.offsetToAddUs; long offsetToAddUs = currentFrame.offsetToAddUs;