Move size() method to EncodedImage base class
Deleted from subclass video_coding::EncodedFrame. Also delete Length
and SetLength methods on the intermediate class
video_coding::VCMEncodedFrame.
Bug: webrtc:9378
Change-Id: I3c90b14735f622f50b2f403f79072e22fc025d11
Reviewed-on: https://webrtc-review.googlesource.com/c/112131
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25838}
diff --git a/api/video/encoded_frame.h b/api/video/encoded_frame.h
index 47fb91c..c5a0042 100644
--- a/api/video/encoded_frame.h
+++ b/api/video/encoded_frame.h
@@ -74,8 +74,6 @@
// been implemented.
virtual bool delayed_by_retransmission() const;
- size_t size() const { return _length; }
-
bool is_keyframe() const { return num_references == 0; }
VideoLayerFrameId id;
diff --git a/api/video/encoded_image.h b/api/video/encoded_image.h
index a7c719c..fe5716a 100644
--- a/api/video/encoded_image.h
+++ b/api/video/encoded_image.h
@@ -67,6 +67,9 @@
color_space ? absl::make_optional(*color_space) : absl::nullopt;
}
+ size_t size() const { return _length; }
+ size_t capacity() const { return _size; }
+
uint32_t _encodedWidth = 0;
uint32_t _encodedHeight = 0;
// NTP time of the capture time in local timebase in milliseconds.
@@ -74,6 +77,7 @@
int64_t capture_time_ms_ = 0;
FrameType _frameType = kVideoFrameDelta;
uint8_t* _buffer;
+ // TODO(bugs.webrtc.org/9378): Rename to size_, capacity_ and make private.
size_t _length;
size_t _size;
VideoRotation rotation_ = kVideoRotation_0;
diff --git a/modules/video_coding/encoded_frame.h b/modules/video_coding/encoded_frame.h
index c7efd40..124ed44 100644
--- a/modules/video_coding/encoded_frame.h
+++ b/modules/video_coding/encoded_frame.h
@@ -65,21 +65,11 @@
*/
uint8_t* MutableBuffer() { return _buffer; }
/**
- * Get frame length
- */
- size_t Length() const { return _length; }
- /**
- * Set frame length
- */
- void SetLength(size_t length) {
- RTC_DCHECK(length <= _size);
- _length = length;
- }
- /**
* Frame RTP timestamp (90kHz)
*/
using EncodedImage::Timestamp;
using EncodedImage::SetTimestamp;
+ using EncodedImage::size;
/**
* Get render time in milliseconds
*/
diff --git a/modules/video_coding/frame_buffer.cc b/modules/video_coding/frame_buffer.cc
index b623dd6..e1abb64 100644
--- a/modules/video_coding/frame_buffer.cc
+++ b/modules/video_coding/frame_buffer.cc
@@ -102,7 +102,7 @@
}
uint32_t requiredSizeBytes =
- Length() + packet.sizeBytes +
+ size() + packet.sizeBytes +
(packet.insertStartCode ? kH264StartCodeLengthBytes : 0) +
EncodedImage::GetBufferPaddingBytes(packet.codec);
if (requiredSizeBytes >= _size) {
@@ -139,7 +139,7 @@
return kOutOfBoundsPacket;
}
// update length
- _length = Length() + static_cast<uint32_t>(retVal);
+ _length = size() + static_cast<uint32_t>(retVal);
_latestPacketTimeMs = timeInMs;
diff --git a/modules/video_coding/frame_object.cc b/modules/video_coding/frame_object.cc
index 5ccf0b7..d27b9e1 100644
--- a/modules/video_coding/frame_object.cc
+++ b/modules/video_coding/frame_object.cc
@@ -135,6 +135,11 @@
return _renderTimeMs;
}
+void RtpFrameObject::SetSize(size_t size) {
+ RTC_DCHECK_LE(size, _size);
+ _length = size;
+}
+
bool RtpFrameObject::delayed_by_retransmission() const {
return times_nacked() > 0;
}
diff --git a/modules/video_coding/frame_object.h b/modules/video_coding/frame_object.h
index a65a4b4..b5a35e7 100644
--- a/modules/video_coding/frame_object.h
+++ b/modules/video_coding/frame_object.h
@@ -39,6 +39,7 @@
VideoCodecType codec_type() const;
int64_t ReceivedTime() const override;
int64_t RenderTime() const override;
+ void SetSize(size_t size);
bool delayed_by_retransmission() const override;
absl::optional<RTPVideoHeader> GetRtpVideoHeader() const;
absl::optional<RtpGenericFrameDescriptor> GetGenericFrameDescriptor() const;
diff --git a/modules/video_coding/jitter_buffer.cc b/modules/video_coding/jitter_buffer.cc
index 4a0622a..2805fbb 100644
--- a/modules/video_coding/jitter_buffer.cc
+++ b/modules/video_coding/jitter_buffer.cc
@@ -553,7 +553,7 @@
if (retransmitted) {
if (WaitForRetransmissions())
jitter_estimate_.FrameNacked();
- } else if (frame->Length() > 0) {
+ } else if (frame->size() > 0) {
// Ignore retransmitted and empty frames.
if (waiting_for_completion_.latest_packet_time >= 0) {
UpdateJitterEstimate(waiting_for_completion_, true);
@@ -562,7 +562,7 @@
UpdateJitterEstimate(*frame, false);
} else {
// Wait for this one to get complete.
- waiting_for_completion_.frame_size = frame->Length();
+ waiting_for_completion_.frame_size = frame->size();
waiting_for_completion_.latest_packet_time = frame->LatestPacketTimeMs();
waiting_for_completion_.timestamp = frame->Timestamp();
}
@@ -1264,7 +1264,7 @@
// No retransmitted frames should be a part of the jitter
// estimate.
UpdateJitterEstimate(frame.LatestPacketTimeMs(), frame.Timestamp(),
- frame.Length(), incomplete_frame);
+ frame.size(), incomplete_frame);
}
// Must be called under the critical section |crit_sect_|. Should never be
diff --git a/modules/video_coding/jitter_buffer_unittest.cc b/modules/video_coding/jitter_buffer_unittest.cc
index 3ed18a9..e95a312 100644
--- a/modules/video_coding/jitter_buffer_unittest.cc
+++ b/modules/video_coding/jitter_buffer_unittest.cc
@@ -283,7 +283,7 @@
i += 4;
}
- EXPECT_EQ(size, frame_out->Length());
+ EXPECT_EQ(size, frame_out->size());
int count = 3;
for (; i < size; i++) {
if (outData[i] == 0 && outData[i + 1] == 0 && outData[i + 2] == 0x80) {
diff --git a/video/rtp_video_stream_receiver.cc b/video/rtp_video_stream_receiver.cc
index fdf02ff..4116cad 100644
--- a/video/rtp_video_stream_receiver.cc
+++ b/video/rtp_video_stream_receiver.cc
@@ -430,7 +430,7 @@
RTC_CHECK(bytes_written <= max_plaintext_byte_size);
// Update the frame to contain just the written bytes.
- frame->SetLength(bytes_written);
+ frame->SetSize(bytes_written);
} else if (config_.crypto_options.sframe.require_frame_encryption) {
RTC_LOG(LS_WARNING) << "Frame decryption required but not attached to this "
"stream. Dropping frame.";
diff --git a/video/rtp_video_stream_receiver_unittest.cc b/video/rtp_video_stream_receiver_unittest.cc
index 53c1eb3..478f716 100644
--- a/video/rtp_video_stream_receiver_unittest.cc
+++ b/video/rtp_video_stream_receiver_unittest.cc
@@ -80,7 +80,7 @@
DoOnCompleteFrameFailLength(frame.get());
return;
}
- if (frame->Length() != buffer_.Length() ||
+ if (frame->size() != buffer_.Length() ||
memcmp(buffer_.Data(), frame->Buffer(), buffer_.Length()) != 0) {
DoOnCompleteFrameFailBitstream(frame.get());
return;
diff --git a/video/video_receive_stream.cc b/video/video_receive_stream.cc
index e478028..3175711 100644
--- a/video/video_receive_stream.cc
+++ b/video/video_receive_stream.cc
@@ -460,7 +460,7 @@
// Current OnPreDecode only cares about QP for VP8.
int qp = -1;
if (frame->CodecSpecific()->codecType == kVideoCodecVP8) {
- if (!vp8::GetQp(frame->Buffer(), frame->Length(), &qp)) {
+ if (!vp8::GetQp(frame->Buffer(), frame->size(), &qp)) {
RTC_LOG(LS_WARNING) << "Failed to extract QP from VP8 video frame";
}
}