Fix/suppress all javac warnings.
This is done in preparation to make all javac warnings into errors for WebRTC targets. Bug: webrtc:6597 Change-Id: I402043157bd75943adf0de52111e5a1bb179c6d1 Reviewed-on: https://webrtc-review.googlesource.com/15104 Commit-Queue: Sami Kalliomäki <sakal@webrtc.org> Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20450}
This commit is contained in:
parent
ef5df1ae52
commit
9828bebee6
@ -10,8 +10,6 @@
|
||||
|
||||
package org.appspot.apprtc;
|
||||
|
||||
import org.appspot.apprtc.util.AppRTCUtils;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@ -23,12 +21,11 @@ import android.media.AudioManager;
|
||||
import android.os.Build;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.Log;
|
||||
|
||||
import org.webrtc.ThreadUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import org.appspot.apprtc.util.AppRTCUtils;
|
||||
import org.webrtc.ThreadUtils;
|
||||
|
||||
/**
|
||||
* AppRTCAudioManager manages all audio related parts of the AppRTC demo.
|
||||
@ -195,6 +192,7 @@ public class AppRTCAudioManager {
|
||||
AppRTCUtils.logDeviceInfo(TAG);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation") // TODO(henrika): audioManager.requestAudioFocus() is deprecated.
|
||||
public void start(AudioManagerEvents audioManagerEvents) {
|
||||
Log.d(TAG, "start");
|
||||
ThreadUtils.checkIsOnMainThread();
|
||||
@ -292,6 +290,7 @@ public class AppRTCAudioManager {
|
||||
Log.d(TAG, "AudioManager started");
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation") // TODO(henrika): audioManager.abandonAudioFocus() is deprecated.
|
||||
public void stop() {
|
||||
Log.d(TAG, "stop");
|
||||
ThreadUtils.checkIsOnMainThread();
|
||||
|
||||
@ -725,6 +725,7 @@ public class PeerConnectionClient {
|
||||
return rootEglBase.getEglBaseContext();
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation") // TODO(sakal): getStats is deprecated.
|
||||
private void getStats() {
|
||||
if (peerConnection == null || isError) {
|
||||
return;
|
||||
|
||||
@ -243,41 +243,58 @@ public class PeerConnectionClientTest implements PeerConnectionEvents {
|
||||
// Helper wait functions.
|
||||
private boolean waitForLocalSDP(int timeoutMs) throws InterruptedException {
|
||||
synchronized (localSdpEvent) {
|
||||
if (localSdp == null) {
|
||||
localSdpEvent.wait(timeoutMs);
|
||||
final long endTimeMs = System.currentTimeMillis() + timeoutMs;
|
||||
while (localSdp == null) {
|
||||
final long waitTimeMs = endTimeMs - System.currentTimeMillis();
|
||||
if (waitTimeMs < 0) {
|
||||
return false;
|
||||
}
|
||||
localSdpEvent.wait(waitTimeMs);
|
||||
}
|
||||
return (localSdp != null);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean waitForIceCandidates(int timeoutMs) throws InterruptedException {
|
||||
synchronized (iceCandidateEvent) {
|
||||
if (iceCandidates.size() == 0) {
|
||||
final long endTimeMs = System.currentTimeMillis() + timeoutMs;
|
||||
while (iceCandidates.size() == 0) {
|
||||
final long waitTimeMs = endTimeMs - System.currentTimeMillis();
|
||||
if (waitTimeMs < 0) {
|
||||
return false;
|
||||
}
|
||||
iceCandidateEvent.wait(timeoutMs);
|
||||
}
|
||||
return (iceCandidates.size() > 0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean waitForIceConnected(int timeoutMs) throws InterruptedException {
|
||||
synchronized (iceConnectedEvent) {
|
||||
if (!isIceConnected) {
|
||||
final long endTimeMs = System.currentTimeMillis() + timeoutMs;
|
||||
while (!isIceConnected) {
|
||||
final long waitTimeMs = endTimeMs - System.currentTimeMillis();
|
||||
if (waitTimeMs < 0) {
|
||||
Log.e(TAG, "ICE connection failure");
|
||||
return false;
|
||||
}
|
||||
iceConnectedEvent.wait(timeoutMs);
|
||||
}
|
||||
if (!isIceConnected) {
|
||||
Log.e(TAG, "ICE connection failure");
|
||||
}
|
||||
|
||||
return isIceConnected;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean waitForPeerConnectionClosed(int timeoutMs) throws InterruptedException {
|
||||
synchronized (closeEvent) {
|
||||
if (!isClosed) {
|
||||
final long endTimeMs = System.currentTimeMillis() + timeoutMs;
|
||||
while (!isClosed) {
|
||||
final long waitTimeMs = endTimeMs - System.currentTimeMillis();
|
||||
if (waitTimeMs < 0) {
|
||||
return false;
|
||||
}
|
||||
closeEvent.wait(timeoutMs);
|
||||
}
|
||||
return isClosed;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -143,6 +143,8 @@ public class ThreadUtils {
|
||||
return result;
|
||||
}
|
||||
|
||||
// TODO(sakal): This method is broken. It should be removed: crbug.com/webrtc/8456
|
||||
@SuppressWarnings("WaitNotInLoop")
|
||||
public static void waitUninterruptibly(final Object object) {
|
||||
executeUninterruptibly(new BlockingOperation() {
|
||||
@Override
|
||||
|
||||
@ -176,13 +176,13 @@ public class GlRectDrawer implements RendererCommon.GlDrawer {
|
||||
shaders.put(fragmentShader, shader);
|
||||
shader.glShader.useProgram();
|
||||
// Initialize fragment shader uniform values.
|
||||
if (fragmentShader == YUV_FRAGMENT_SHADER_STRING) {
|
||||
if (YUV_FRAGMENT_SHADER_STRING.equals(fragmentShader)) {
|
||||
GLES20.glUniform1i(shader.glShader.getUniformLocation("y_tex"), 0);
|
||||
GLES20.glUniform1i(shader.glShader.getUniformLocation("u_tex"), 1);
|
||||
GLES20.glUniform1i(shader.glShader.getUniformLocation("v_tex"), 2);
|
||||
} else if (fragmentShader == RGB_FRAGMENT_SHADER_STRING) {
|
||||
} else if (RGB_FRAGMENT_SHADER_STRING.equals(fragmentShader)) {
|
||||
GLES20.glUniform1i(shader.glShader.getUniformLocation("rgb_tex"), 0);
|
||||
} else if (fragmentShader == OES_FRAGMENT_SHADER_STRING) {
|
||||
} else if (OES_FRAGMENT_SHADER_STRING.equals(fragmentShader)) {
|
||||
GLES20.glUniform1i(shader.glShader.getUniformLocation("oes_tex"), 0);
|
||||
} else {
|
||||
throw new IllegalStateException("Unknown fragment shader: " + fragmentShader);
|
||||
|
||||
@ -18,7 +18,6 @@ import android.media.MediaFormat;
|
||||
import android.os.Build;
|
||||
import android.os.SystemClock;
|
||||
import android.view.Surface;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
@ -562,6 +561,7 @@ public class MediaCodecVideoDecoder {
|
||||
}
|
||||
|
||||
// Dequeues and returns a DecodedTextureBuffer if available, or null otherwise.
|
||||
@SuppressWarnings("WaitNotInLoop")
|
||||
public DecodedTextureBuffer dequeueTextureBuffer(int timeoutMs) {
|
||||
synchronized (newFrameLock) {
|
||||
if (renderedBuffer == null && timeoutMs > 0 && isWaitingForTexture()) {
|
||||
|
||||
@ -315,7 +315,7 @@ public class PeerConnection {
|
||||
bundlePolicy = BundlePolicy.BALANCED;
|
||||
rtcpMuxPolicy = RtcpMuxPolicy.REQUIRE;
|
||||
tcpCandidatePolicy = TcpCandidatePolicy.ENABLED;
|
||||
candidateNetworkPolicy = candidateNetworkPolicy.ALL;
|
||||
candidateNetworkPolicy = CandidateNetworkPolicy.ALL;
|
||||
this.iceServers = iceServers;
|
||||
audioJitterBufferMaxPackets = 50;
|
||||
audioJitterBufferFastAccelerate = false;
|
||||
|
||||
@ -84,6 +84,9 @@ public class VideoFileRenderer implements VideoRenderer.Callbacks {
|
||||
});
|
||||
}
|
||||
|
||||
// TODO(sakal): yuvConverter.convert is deprecated. This will be removed once this file is updated
|
||||
// to implement VideoSink instead of VideoRenderer.Callbacks.
|
||||
@SuppressWarnings("deprecation")
|
||||
private void renderFrameOnRenderThread(VideoRenderer.I420Frame frame) {
|
||||
final float frameAspectRatio = (float) frame.rotatedWidth() / (float) frame.rotatedHeight();
|
||||
|
||||
|
||||
@ -59,9 +59,6 @@ public class Camera1CapturerUsingByteBufferTest {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
// Enable VideoFrame capture.
|
||||
PeerConnectionFactory.initializeFieldTrials(PeerConnectionFactory.VIDEO_FRAME_EMIT_TRIAL + "/"
|
||||
+ PeerConnectionFactory.TRIAL_ENABLED + "/");
|
||||
fixtures = new CameraVideoCapturerTestFixtures(new TestObjectFactory());
|
||||
}
|
||||
|
||||
|
||||
@ -54,9 +54,6 @@ public class Camera1CapturerUsingTextureTest {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
// Enable VideoFrame capture.
|
||||
PeerConnectionFactory.initializeFieldTrials(PeerConnectionFactory.VIDEO_FRAME_EMIT_TRIAL + "/"
|
||||
+ PeerConnectionFactory.TRIAL_ENABLED + "/");
|
||||
fixtures = new CameraVideoCapturerTestFixtures(new TestObjectFactory());
|
||||
}
|
||||
|
||||
|
||||
@ -183,9 +183,6 @@ public class Camera2CapturerTest {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
// Enable VideoFrame capture.
|
||||
PeerConnectionFactory.initializeFieldTrials(PeerConnectionFactory.VIDEO_FRAME_EMIT_TRIAL + "/"
|
||||
+ PeerConnectionFactory.TRIAL_ENABLED + "/");
|
||||
fixtures = new CameraVideoCapturerTestFixtures(new TestObjectFactory());
|
||||
}
|
||||
|
||||
|
||||
@ -38,8 +38,8 @@ class CameraVideoCapturerTestFixtures {
|
||||
static final int DEFAULT_FPS = 15;
|
||||
|
||||
static private class RendererCallbacks implements VideoRenderer.Callbacks {
|
||||
private final Object frameLock = new Object();
|
||||
private int framesRendered = 0;
|
||||
private Object frameLock = 0;
|
||||
private int width = 0;
|
||||
private int height = 0;
|
||||
|
||||
@ -69,7 +69,10 @@ class CameraVideoCapturerTestFixtures {
|
||||
public int waitForNextFrameToRender() throws InterruptedException {
|
||||
Logging.d(TAG, "Waiting for the next frame to render");
|
||||
synchronized (frameLock) {
|
||||
frameLock.wait();
|
||||
final int framesRenderedStart = framesRendered;
|
||||
while (framesRendered == framesRenderedStart) {
|
||||
frameLock.wait();
|
||||
}
|
||||
return framesRendered;
|
||||
}
|
||||
}
|
||||
@ -103,7 +106,7 @@ class CameraVideoCapturerTestFixtures {
|
||||
private VideoFrame videoFrame;
|
||||
final private Object frameLock = new Object();
|
||||
final private Object capturerStartLock = new Object();
|
||||
private boolean capturerStartResult = false;
|
||||
private Boolean capturerStartResult;
|
||||
final private List<Long> timestamps = new ArrayList<Long>();
|
||||
|
||||
@Override
|
||||
@ -150,7 +153,9 @@ class CameraVideoCapturerTestFixtures {
|
||||
public boolean waitForCapturerToStart() throws InterruptedException {
|
||||
Logging.d(TAG, "Waiting for the capturer to start");
|
||||
synchronized (capturerStartLock) {
|
||||
capturerStartLock.wait();
|
||||
while (capturerStartResult == null) {
|
||||
capturerStartLock.wait();
|
||||
}
|
||||
return capturerStartResult;
|
||||
}
|
||||
}
|
||||
@ -158,7 +163,10 @@ class CameraVideoCapturerTestFixtures {
|
||||
public int waitForNextCapturedFrame() throws InterruptedException {
|
||||
Logging.d(TAG, "Waiting for the next captured frame");
|
||||
synchronized (frameLock) {
|
||||
frameLock.wait();
|
||||
final int framesCapturedStart = framesCaptured;
|
||||
while (framesCaptured == framesCapturedStart) {
|
||||
frameLock.wait();
|
||||
}
|
||||
return framesCaptured;
|
||||
}
|
||||
}
|
||||
@ -196,9 +204,9 @@ class CameraVideoCapturerTestFixtures {
|
||||
static class CameraEvents implements CameraVideoCapturer.CameraEventsHandler {
|
||||
public boolean onCameraOpeningCalled;
|
||||
public boolean onFirstFrameAvailableCalled;
|
||||
public final Object onCameraFreezedLock = new Object();
|
||||
private final Object onCameraFreezedLock = new Object();
|
||||
private String onCameraFreezedDescription;
|
||||
public final Object cameraClosedLock = new Object();
|
||||
private final Object cameraClosedLock = new Object();
|
||||
private boolean cameraClosed = true;
|
||||
|
||||
@Override
|
||||
@ -242,7 +250,9 @@ class CameraVideoCapturerTestFixtures {
|
||||
public String waitForCameraFreezed() throws InterruptedException {
|
||||
Logging.d(TAG, "Waiting for the camera to freeze");
|
||||
synchronized (onCameraFreezedLock) {
|
||||
onCameraFreezedLock.wait();
|
||||
while (onCameraFreezedDescription == null) {
|
||||
onCameraFreezedLock.wait();
|
||||
}
|
||||
return onCameraFreezedDescription;
|
||||
}
|
||||
}
|
||||
@ -334,7 +344,11 @@ class CameraVideoCapturerTestFixtures {
|
||||
private TestObjectFactory testObjectFactory;
|
||||
|
||||
CameraVideoCapturerTestFixtures(TestObjectFactory testObjectFactory) {
|
||||
PeerConnectionFactory.initializeAndroidGlobals(testObjectFactory.getAppContext(), true);
|
||||
PeerConnectionFactory.initialize(
|
||||
PeerConnectionFactory.InitializationOptions.builder(testObjectFactory.getAppContext())
|
||||
.setFieldTrials(PeerConnectionFactory.VIDEO_FRAME_EMIT_TRIAL + "/"
|
||||
+ PeerConnectionFactory.TRIAL_ENABLED + "/")
|
||||
.createInitializationOptions());
|
||||
|
||||
this.peerConnectionFactory = new PeerConnectionFactory(null /* options */);
|
||||
this.testObjectFactory = testObjectFactory;
|
||||
|
||||
@ -81,10 +81,15 @@ public class EglRendererTest {
|
||||
}
|
||||
|
||||
public synchronized boolean waitForBitmap(int timeoutMs) throws InterruptedException {
|
||||
if (!bitmapReceived) {
|
||||
final long endTimeMs = System.currentTimeMillis() + timeoutMs;
|
||||
while (!bitmapReceived) {
|
||||
final long waitTimeMs = endTimeMs - System.currentTimeMillis();
|
||||
if (waitTimeMs < 0) {
|
||||
return false;
|
||||
}
|
||||
wait(timeoutMs);
|
||||
}
|
||||
return bitmapReceived;
|
||||
return true;
|
||||
}
|
||||
|
||||
public synchronized Bitmap resetAndGetBitmap() {
|
||||
@ -102,8 +107,9 @@ public class EglRendererTest {
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
PeerConnectionFactory.initializeAndroidGlobals(
|
||||
InstrumentationRegistry.getTargetContext(), true /* videoHwAcceleration */);
|
||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||
.builder(InstrumentationRegistry.getTargetContext())
|
||||
.createInitializationOptions());
|
||||
eglRenderer = new EglRenderer("TestRenderer: ");
|
||||
eglRenderer.init(null /* sharedContext */, EglBase.CONFIG_RGBA, new GlRectDrawer());
|
||||
oesTextureId = GlUtil.generateTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES);
|
||||
|
||||
@ -243,7 +243,7 @@ public class HardwareVideoEncoderTest {
|
||||
}
|
||||
|
||||
// # Test fields
|
||||
private Object referencedFramesLock = new Object();
|
||||
private final Object referencedFramesLock = new Object();
|
||||
private int referencedFrames = 0;
|
||||
|
||||
private Runnable releaseFrameCallback = new Runnable() {
|
||||
|
||||
@ -181,7 +181,7 @@ public class NetworkMonitorTest {
|
||||
|
||||
private NetworkMonitorAutoDetect.ConnectionType getCurrentConnectionType() {
|
||||
final NetworkMonitorAutoDetect.NetworkState networkState = receiver.getCurrentNetworkState();
|
||||
return receiver.getConnectionType(networkState);
|
||||
return NetworkMonitorAutoDetect.getConnectionType(networkState);
|
||||
}
|
||||
|
||||
@Before
|
||||
|
||||
@ -50,7 +50,9 @@ public class PeerConnectionTest {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
PeerConnectionFactory.initializeAndroidGlobals(InstrumentationRegistry.getContext(), true);
|
||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||
.builder(InstrumentationRegistry.getTargetContext())
|
||||
.createInitializationOptions());
|
||||
}
|
||||
|
||||
private static class ObserverExpectations
|
||||
@ -575,9 +577,12 @@ public class PeerConnectionTest {
|
||||
public void testCreationWithConfig() throws Exception {
|
||||
PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
|
||||
PeerConnectionFactory factory = new PeerConnectionFactory(options);
|
||||
List<PeerConnection.IceServer> iceServers =
|
||||
Arrays.asList(new PeerConnection.IceServer("stun:stun.l.google.com:19302"),
|
||||
new PeerConnection.IceServer("turn:fake.example.com", "fakeUsername", "fakePassword"));
|
||||
List<PeerConnection.IceServer> iceServers = Arrays.asList(
|
||||
PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer(),
|
||||
PeerConnection.IceServer.builder("turn:fake.example.com")
|
||||
.setUsername("fakeUsername")
|
||||
.setPassword("fakePassword")
|
||||
.createIceServer());
|
||||
PeerConnection.RTCConfiguration config = new PeerConnection.RTCConfiguration(iceServers);
|
||||
|
||||
// Test configuration options.
|
||||
@ -605,9 +610,12 @@ public class PeerConnectionTest {
|
||||
pcConstraints.mandatory.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));
|
||||
|
||||
LinkedList<PeerConnection.IceServer> iceServers = new LinkedList<PeerConnection.IceServer>();
|
||||
iceServers.add(new PeerConnection.IceServer("stun:stun.l.google.com:19302"));
|
||||
iceServers.add(
|
||||
new PeerConnection.IceServer("turn:fake.example.com", "fakeUsername", "fakePassword"));
|
||||
PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer());
|
||||
iceServers.add(PeerConnection.IceServer.builder("turn:fake.example.com")
|
||||
.setUsername("fakeUsername")
|
||||
.setPassword("fakePassword")
|
||||
.createIceServer());
|
||||
ObserverExpectations offeringExpectations = new ObserverExpectations("PCTest:offerer");
|
||||
PeerConnection offeringPC =
|
||||
factory.createPeerConnection(iceServers, pcConstraints, offeringExpectations);
|
||||
@ -842,9 +850,12 @@ public class PeerConnectionTest {
|
||||
pcConstraints.mandatory.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));
|
||||
|
||||
LinkedList<PeerConnection.IceServer> iceServers = new LinkedList<PeerConnection.IceServer>();
|
||||
iceServers.add(new PeerConnection.IceServer("stun:stun.l.google.com:19302"));
|
||||
iceServers.add(
|
||||
new PeerConnection.IceServer("turn:fake.example.com", "fakeUsername", "fakePassword"));
|
||||
PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer());
|
||||
iceServers.add(PeerConnection.IceServer.builder("turn:fake.example.com")
|
||||
.setUsername("fakeUsername")
|
||||
.setPassword("fakePassword")
|
||||
.createIceServer());
|
||||
ObserverExpectations offeringExpectations = new ObserverExpectations("PCTest:offerer");
|
||||
PeerConnection offeringPC =
|
||||
factory.createPeerConnection(iceServers, pcConstraints, offeringExpectations);
|
||||
@ -994,7 +1005,8 @@ public class PeerConnectionTest {
|
||||
pcConstraints.mandatory.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));
|
||||
|
||||
LinkedList<PeerConnection.IceServer> iceServers = new LinkedList<PeerConnection.IceServer>();
|
||||
iceServers.add(new PeerConnection.IceServer("stun:stun.l.google.com:19302"));
|
||||
iceServers.add(
|
||||
PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer());
|
||||
|
||||
ObserverExpectations offeringExpectations = new ObserverExpectations("PCTest:offerer");
|
||||
PeerConnection offeringPC =
|
||||
@ -1351,6 +1363,7 @@ public class PeerConnectionTest {
|
||||
assertTrue(info.samples.size() > 0);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation") // TODO(sakal): getStats is deprecated
|
||||
private static void shutdownPC(PeerConnection pc, ObserverExpectations expectations) {
|
||||
if (expectations.dataChannel != null) {
|
||||
expectations.dataChannel.unregisterObserver();
|
||||
|
||||
@ -25,8 +25,9 @@ public class WebRtcJniBootTest {
|
||||
@Test
|
||||
@SmallTest
|
||||
public void testJniLoadsWithoutError() throws InterruptedException {
|
||||
PeerConnectionFactory.initializeAndroidGlobals(InstrumentationRegistry.getTargetContext(),
|
||||
false /* videoCodecHwAcceleration */);
|
||||
PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
|
||||
.builder(InstrumentationRegistry.getTargetContext())
|
||||
.createInitializationOptions());
|
||||
|
||||
PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
|
||||
new PeerConnectionFactory(options);
|
||||
|
||||
@ -122,7 +122,7 @@ class HardwareVideoDecoder
|
||||
}
|
||||
|
||||
// Metadata for the last frame rendered to the texture.
|
||||
private Object renderedTextureMetadataLock = new Object();
|
||||
private final Object renderedTextureMetadataLock = new Object();
|
||||
private DecodedTextureMetadata renderedTextureMetadata;
|
||||
|
||||
// Decoding proceeds asynchronously. This callback returns decoded frames to the caller. Valid
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user