Annotate libjingle_peerconnection_java with @Nullable.
Bug: webrtc:8881
Change-Id: Ida2ef6c003567d19529c21629c916ed40e8de3a6
Reviewed-on: https://webrtc-review.googlesource.com/63380
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Paulina Hensman <phensman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22563}
diff --git a/sdk/android/api/org/webrtc/MediaCodecVideoDecoder.java b/sdk/android/api/org/webrtc/MediaCodecVideoDecoder.java
index def4299..8ab033d 100644
--- a/sdk/android/api/org/webrtc/MediaCodecVideoDecoder.java
+++ b/sdk/android/api/org/webrtc/MediaCodecVideoDecoder.java
@@ -10,6 +10,7 @@
package org.webrtc;
+import android.graphics.SurfaceTexture;
import android.media.MediaCodec;
import android.media.MediaCodecInfo;
import android.media.MediaCodecInfo.CodecCapabilities;
@@ -28,6 +29,7 @@
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import javax.annotation.Nullable;
// Java-side of peerconnection.cc:MediaCodecVideoDecoder.
// This class is an implementation detail of the Java PeerConnection API.
@@ -69,14 +71,14 @@
private static final int MAX_QUEUED_OUTPUTBUFFERS = 3;
// Active running decoder instance. Set in initDecode() (called from native code)
// and reset to null in release() call.
- private static MediaCodecVideoDecoder runningInstance = null;
- private static MediaCodecVideoDecoderErrorCallback errorCallback = null;
+ @Nullable private static MediaCodecVideoDecoder runningInstance = null;
+ @Nullable private static MediaCodecVideoDecoderErrorCallback errorCallback = null;
private static int codecErrors = 0;
// List of disabled codec types - can be set from application.
private static Set<String> hwDecoderDisabledTypes = new HashSet<String>();
- private Thread mediaCodecThread;
- private MediaCodec mediaCodec;
+ @Nullable private Thread mediaCodecThread;
+ @Nullable private MediaCodec mediaCodec;
private ByteBuffer[] inputBuffers;
private ByteBuffer[] outputBuffers;
private static final String VP8_MIME_TYPE = "video/x-vnd.on2.vp8";
@@ -139,9 +141,9 @@
private boolean useSurface;
// The below variables are only used when decoding to a Surface.
- private TextureListener textureListener;
+ @Nullable private TextureListener textureListener;
private int droppedFrames;
- private Surface surface = null;
+ @Nullable private Surface surface = null;
private final Queue<DecodedOutputBuffer> dequeuedSurfaceOutputBuffers =
new ArrayDeque<DecodedOutputBuffer>();
@@ -242,7 +244,8 @@
public final int colorFormat; // Color format supported by codec.
}
- private static DecoderProperties findDecoder(String mime, String[] supportedCodecPrefixes) {
+ private static @Nullable DecoderProperties findDecoder(
+ String mime, String[] supportedCodecPrefixes) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
return null; // MediaCodec.setParameters is missing.
}
@@ -319,8 +322,8 @@
// Pass null in |surfaceTextureHelper| to configure the codec for ByteBuffer output.
@CalledByNativeUnchecked
- private boolean initDecode(
- VideoCodecType type, int width, int height, SurfaceTextureHelper surfaceTextureHelper) {
+ private boolean initDecode(VideoCodecType type, int width, int height,
+ @Nullable SurfaceTextureHelper surfaceTextureHelper) {
if (mediaCodecThread != null) {
throw new RuntimeException("initDecode: Forgot to release()?");
}
@@ -356,7 +359,7 @@
stride = width;
sliceHeight = height;
- if (useSurface) {
+ if (useSurface && surfaceTextureHelper != null) {
textureListener = new TextureListener(surfaceTextureHelper);
surface = new Surface(surfaceTextureHelper.getSurfaceTexture());
}
@@ -638,8 +641,8 @@
private final Object newFrameLock = new Object();
// |bufferToRender| is non-null when waiting for transition between addBufferToRender() to
// onTextureFrameAvailable().
- private DecodedOutputBuffer bufferToRender;
- private DecodedTextureBuffer renderedBuffer;
+ @Nullable private DecodedOutputBuffer bufferToRender;
+ @Nullable private DecodedTextureBuffer renderedBuffer;
public TextureListener(SurfaceTextureHelper surfaceTextureHelper) {
this.surfaceTextureHelper = surfaceTextureHelper;
@@ -681,6 +684,7 @@
}
// Dequeues and returns a DecodedTextureBuffer if available, or null otherwise.
+ @Nullable
@SuppressWarnings("WaitNotInLoop")
public DecodedTextureBuffer dequeueTextureBuffer(int timeoutMs) {
synchronized (newFrameLock) {
@@ -717,7 +721,7 @@
// unsupported format, or if |mediaCodec| is not in the Executing state. Throws CodecException
// upon codec error.
@CalledByNativeUnchecked
- private DecodedOutputBuffer dequeueOutputBuffer(int dequeueTimeoutMs) {
+ private @Nullable DecodedOutputBuffer dequeueOutputBuffer(int dequeueTimeoutMs) {
checkOnMediaCodecThread();
if (decodeStartTimeMs.isEmpty()) {
return null;
@@ -801,7 +805,7 @@
// upon codec error. If |dequeueTimeoutMs| > 0, the oldest decoded frame will be dropped if
// a frame can't be returned.
@CalledByNativeUnchecked
- private DecodedTextureBuffer dequeueTextureBuffer(int dequeueTimeoutMs) {
+ private @Nullable DecodedTextureBuffer dequeueTextureBuffer(int dequeueTimeoutMs) {
checkOnMediaCodecThread();
if (!useSurface) {
throw new IllegalStateException("dequeueTexture() called for byte buffer decoding.");