Change externalShaderProgramInputCapacity to int
The field is only accessed on the GL thread. PiperOrigin-RevId: 641273595
This commit is contained in:
parent
b1c6d9ff04
commit
b42b63f3a3
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user