Removed _completeFrame since we never allow incomplete frames.

In the old jitter buffer the two VCMVideoProtection modes |kProtectionNone| and |kProtectionFEC| could be set on the jitter buffer for it to not wait for NACK and instead generate incomplete frames. This has not been possible for a long time.

Bug: webrtc:9378, webrtc:7408
Change-Id: I0a2d3ec34d721126c1128306d5fad88314f8d59f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/190680
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32513}
diff --git a/sdk/android/api/org/webrtc/EncodedImage.java b/sdk/android/api/org/webrtc/EncodedImage.java
index b50136c..5824231 100644
--- a/sdk/android/api/org/webrtc/EncodedImage.java
+++ b/sdk/android/api/org/webrtc/EncodedImage.java
@@ -54,6 +54,7 @@
   public final long captureTimeNs;
   public final FrameType frameType;
   public final int rotation;
+  // TODO(philipel): Remove when downstream has been updated.
   public final boolean completeFrame;
   public final @Nullable Integer qp;
 
@@ -71,7 +72,7 @@
   @CalledByNative
   private EncodedImage(ByteBuffer buffer, @Nullable Runnable releaseCallback, int encodedWidth,
       int encodedHeight, long captureTimeNs, FrameType frameType, int rotation,
-      boolean completeFrame, @Nullable Integer qp) {
+      @Nullable Integer qp) {
     this.buffer = buffer;
     this.encodedWidth = encodedWidth;
     this.encodedHeight = encodedHeight;
@@ -79,7 +80,7 @@
     this.captureTimeNs = captureTimeNs;
     this.frameType = frameType;
     this.rotation = rotation;
-    this.completeFrame = completeFrame;
+    this.completeFrame = true;
     this.qp = qp;
     this.refCountDelegate = new RefCountDelegate(releaseCallback);
   }
@@ -115,11 +116,6 @@
   }
 
   @CalledByNative
-  private boolean getCompleteFrame() {
-    return completeFrame;
-  }
-
-  @CalledByNative
   private @Nullable Integer getQp() {
     return qp;
   }
@@ -136,7 +132,6 @@
     private long captureTimeNs;
     private EncodedImage.FrameType frameType;
     private int rotation;
-    private boolean completeFrame;
     private @Nullable Integer qp;
 
     private Builder() {}
@@ -178,8 +173,8 @@
       return this;
     }
 
+    // TODO(philipel): Remove when downstream has been updated.
     public Builder setCompleteFrame(boolean completeFrame) {
-      this.completeFrame = completeFrame;
       return this;
     }
 
@@ -190,7 +185,7 @@
 
     public EncodedImage createEncodedImage() {
       return new EncodedImage(buffer, releaseCallback, encodedWidth, encodedHeight, captureTimeNs,
-          frameType, rotation, completeFrame, qp);
+          frameType, rotation, qp);
     }
   }
 }
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java b/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java
index 1591cae..4eb033b 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java
@@ -101,7 +101,6 @@
                            .setCaptureTimeNs(frame.captureTimeNs)
                            .setFrameType(frame.frameType)
                            .setRotation(frame.rotation)
-                           .setCompleteFrame(frame.completeFrame)
                            .setQp(frame.qp)
                            .createEncodedImage());
     }
diff --git a/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java b/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java
index d9e1d36..dcb045f 100644
--- a/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java
+++ b/sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java
@@ -246,10 +246,6 @@
         Logging.e(TAG, "decode() - key frame required first");
         return VideoCodecStatus.NO_OUTPUT;
       }
-      if (!frame.completeFrame) {
-        Logging.e(TAG, "decode() - complete frame required first");
-        return VideoCodecStatus.NO_OUTPUT;
-      }
     }
 
     int index;
diff --git a/sdk/android/src/jni/encoded_image.cc b/sdk/android/src/jni/encoded_image.cc
index e13653c..839f6a8 100644
--- a/sdk/android/src/jni/encoded_image.cc
+++ b/sdk/android/src/jni/encoded_image.cc
@@ -70,7 +70,7 @@
       static_cast<int>(image._encodedWidth),
       static_cast<int>(image._encodedHeight),
       image.capture_time_ms_ * rtc::kNumNanosecsPerMillisec, frame_type,
-      static_cast<jint>(image.rotation_), image._completeFrame, qp);
+      static_cast<jint>(image.rotation_), qp);
 }
 
 ScopedJavaLocalRef<jobjectArray> NativeToJavaFrameTypeArray(
@@ -98,8 +98,6 @@
       Java_EncodedImage_getEncodedHeight(env, j_encoded_image);
   frame.rotation_ =
       (VideoRotation)Java_EncodedImage_getRotation(env, j_encoded_image);
-  frame._completeFrame =
-      Java_EncodedImage_getCompleteFrame(env, j_encoded_image);
 
   frame.qp_ = JavaToNativeOptionalInt(
                   env, Java_EncodedImage_getQp(env, j_encoded_image))
diff --git a/sdk/android/tests/src/org/webrtc/HardwareVideoEncoderTest.java b/sdk/android/tests/src/org/webrtc/HardwareVideoEncoderTest.java
index 2eca89f..728e401 100644
--- a/sdk/android/tests/src/org/webrtc/HardwareVideoEncoderTest.java
+++ b/sdk/android/tests/src/org/webrtc/HardwareVideoEncoderTest.java
@@ -233,7 +233,6 @@
     assertThat(videoFrame.encodedHeight).isEqualTo(TEST_ENCODER_SETTINGS.height);
     assertThat(videoFrame.rotation).isEqualTo(0);
     assertThat(videoFrame.captureTimeNs).isEqualTo(42);
-    assertThat(videoFrame.completeFrame).isTrue();
     assertThat(videoFrame.frameType).isEqualTo(FrameType.VideoFrameKey);
     CodecTestHelper.assertEqualContents(
         outputData, videoFrame.buffer, /* offset= */ 0, videoFrame.buffer.capacity());
diff --git a/sdk/objc/api/peerconnection/RTCEncodedImage+Private.mm b/sdk/objc/api/peerconnection/RTCEncodedImage+Private.mm
index f9e4346..b3e0a7b 100644
--- a/sdk/objc/api/peerconnection/RTCEncodedImage+Private.mm
+++ b/sdk/objc/api/peerconnection/RTCEncodedImage+Private.mm
@@ -92,7 +92,6 @@
     self.encodeFinishMs = encodedImage.timing_.encode_finish_ms;
     self.frameType = static_cast<RTCFrameType>(encodedImage._frameType);
     self.rotation = static_cast<RTCVideoRotation>(encodedImage.rotation_);
-    self.completeFrame = encodedImage._completeFrame;
     self.qp = @(encodedImage.qp_);
     self.contentType = (encodedImage.content_type_ == webrtc::VideoContentType::SCREENSHARE) ?
         RTCVideoContentTypeScreenshare :
@@ -121,7 +120,6 @@
   encodedImage.timing_.encode_finish_ms = self.encodeFinishMs;
   encodedImage._frameType = webrtc::VideoFrameType(self.frameType);
   encodedImage.rotation_ = webrtc::VideoRotation(self.rotation);
-  encodedImage._completeFrame = self.completeFrame;
   encodedImage.qp_ = self.qp ? self.qp.intValue : -1;
   encodedImage.content_type_ = (self.contentType == RTCVideoContentTypeScreenshare) ?
       webrtc::VideoContentType::SCREENSHARE :
diff --git a/sdk/objc/base/RTCEncodedImage.h b/sdk/objc/base/RTCEncodedImage.h
index 5fec8a2..6d7a602 100644
--- a/sdk/objc/base/RTCEncodedImage.h
+++ b/sdk/objc/base/RTCEncodedImage.h
@@ -44,6 +44,7 @@
 @property(nonatomic, assign) int64_t encodeFinishMs;
 @property(nonatomic, assign) RTCFrameType frameType;
 @property(nonatomic, assign) RTCVideoRotation rotation;
+// TODO(philipel): Remove when downstream has been updated.
 @property(nonatomic, assign) BOOL completeFrame;
 @property(nonatomic, strong) NSNumber *qp;
 @property(nonatomic, assign) RTCVideoContentType contentType;
diff --git a/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm b/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm
index 0aa21f1..7a853e8 100644
--- a/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm
+++ b/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm
@@ -794,7 +794,6 @@
                                          }];
   frame.encodedWidth = width;
   frame.encodedHeight = height;
-  frame.completeFrame = YES;
   frame.frameType = isKeyframe ? RTCFrameTypeVideoFrameKey : RTCFrameTypeVideoFrameDelta;
   frame.captureTimeMs = renderTimeMs;
   frame.timeStamp = timestamp;