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;