mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Fix availableFrameCount semantic
`availableFrameCount` tracks the number of frames that is avilable on the `SurfaceTexture`, but haven't been used (by `updateTexImage()`) yet. Thus semantically this counter should only be decremented after calling `updateTexImage()`, not before it. Also reworded `getPendingFrameCount()` javadoc, "external texture" is an internal state that is not publicised anywhere. PiperOrigin-RevId: 488765174
This commit is contained in:
parent
53cff556bf
commit
b4efd20843
@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package androidx.media3.effect;
|
package androidx.media3.effect;
|
||||||
|
|
||||||
import static androidx.media3.common.util.Assertions.checkNotNull;
|
import static androidx.media3.common.util.Assertions.checkStateNotNull;
|
||||||
|
|
||||||
import android.graphics.SurfaceTexture;
|
import android.graphics.SurfaceTexture;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@ -118,7 +118,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the number of {@linkplain #registerInputFrame(FrameInfo) registered} frames that have
|
* Returns the number of {@linkplain #registerInputFrame(FrameInfo) registered} frames that have
|
||||||
* not been rendered to the external texture yet.
|
* not been sent to the downstream {@link ExternalTextureProcessor} yet.
|
||||||
*
|
*
|
||||||
* <p>Can be called on any thread.
|
* <p>Can be called on any thread.
|
||||||
*/
|
*/
|
||||||
@ -151,11 +151,11 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
availableFrameCount.getAndDecrement();
|
|
||||||
surfaceTexture.updateTexImage();
|
surfaceTexture.updateTexImage();
|
||||||
this.currentFrame = pendingFrames.remove();
|
availableFrameCount.getAndDecrement();
|
||||||
|
this.currentFrame = pendingFrames.peek();
|
||||||
|
|
||||||
FrameInfo currentFrame = checkNotNull(this.currentFrame);
|
FrameInfo currentFrame = checkStateNotNull(this.currentFrame);
|
||||||
externalTextureProcessorInputCapacity.getAndDecrement();
|
externalTextureProcessorInputCapacity.getAndDecrement();
|
||||||
surfaceTexture.getTransformMatrix(textureTransformMatrix);
|
surfaceTexture.getTransformMatrix(textureTransformMatrix);
|
||||||
externalTextureProcessor.setTextureTransformMatrix(textureTransformMatrix);
|
externalTextureProcessor.setTextureTransformMatrix(textureTransformMatrix);
|
||||||
@ -173,6 +173,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
new TextureInfo(
|
new TextureInfo(
|
||||||
externalTexId, /* fboId= */ C.INDEX_UNSET, currentFrame.width, currentFrame.height),
|
externalTexId, /* fboId= */ C.INDEX_UNSET, currentFrame.width, currentFrame.height),
|
||||||
presentationTimeUs);
|
presentationTimeUs);
|
||||||
|
checkStateNotNull(pendingFrames.remove());
|
||||||
|
|
||||||
if (inputStreamEnded && pendingFrames.isEmpty()) {
|
if (inputStreamEnded && pendingFrames.isEmpty()) {
|
||||||
externalTextureProcessor.signalEndOfCurrentInputStream();
|
externalTextureProcessor.signalEndOfCurrentInputStream();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user