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";
       }
     }