Convert all webrtc code to not access EncodedImage::_size directly.

Read using capacity() method, write using set_buffer() method. This is
a preparation for making the member private, and renaming it to
capacity_.

Bug: webrtc:9378
Change-Id: I2f96679d052a83fe81be40301bd9863c87074640
Reviewed-on: https://webrtc-review.googlesource.com/c/113520
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@{#25934}
diff --git a/modules/video_coding/codecs/h264/h264_decoder_impl.cc b/modules/video_coding/codecs/h264/h264_decoder_impl.cc
index e213223..fa0d925 100644
--- a/modules/video_coding/codecs/h264/h264_decoder_impl.cc
+++ b/modules/video_coding/codecs/h264/h264_decoder_impl.cc
@@ -250,7 +250,8 @@
 
   // FFmpeg requires padding due to some optimized bitstream readers reading 32
   // or 64 bits at once and could read over the end. See avcodec_decode_video2.
-  RTC_CHECK_GE(input_image._size, input_image._length +
+  RTC_CHECK_GE(input_image.capacity(),
+               input_image._length +
                    EncodedImage::GetBufferPaddingBytes(kVideoCodecH264));
   // "If the first 23 bits of the additional bytes are not 0, then damaged MPEG
   // bitstreams could cause overread and segfault." See
diff --git a/modules/video_coding/codecs/h264/h264_encoder_impl.cc b/modules/video_coding/codecs/h264/h264_encoder_impl.cc
index 77137b7..c33e451 100644
--- a/modules/video_coding/codecs/h264/h264_encoder_impl.cc
+++ b/modules/video_coding/codecs/h264/h264_encoder_impl.cc
@@ -99,34 +99,34 @@
                            SFrameBSInfo* info,
                            RTPFragmentationHeader* frag_header) {
   // Calculate minimum buffer size required to hold encoded data.
-  size_t required_size = 0;
+  size_t required_capacity = 0;
   size_t fragments_count = 0;
   for (int layer = 0; layer < info->iLayerNum; ++layer) {
     const SLayerBSInfo& layerInfo = info->sLayerInfo[layer];
     for (int nal = 0; nal < layerInfo.iNalCount; ++nal, ++fragments_count) {
       RTC_CHECK_GE(layerInfo.pNalLengthInByte[nal], 0);
-      // Ensure |required_size| will not overflow.
+      // Ensure |required_capacity| will not overflow.
       RTC_CHECK_LE(layerInfo.pNalLengthInByte[nal],
-                   std::numeric_limits<size_t>::max() - required_size);
-      required_size += layerInfo.pNalLengthInByte[nal];
+                   std::numeric_limits<size_t>::max() - required_capacity);
+      required_capacity += layerInfo.pNalLengthInByte[nal];
     }
   }
-  if (encoded_image->_size < required_size) {
+  if (encoded_image->capacity() < required_capacity) {
     // Increase buffer size. Allocate enough to hold an unencoded image, this
     // should be more than enough to hold any encoded data of future frames of
     // the same size (avoiding possible future reallocation due to variations in
     // required size).
-    encoded_image->_size = CalcBufferSize(
-        VideoType::kI420, frame_buffer.width(), frame_buffer.height());
-    if (encoded_image->_size < required_size) {
+    size_t new_capacity = CalcBufferSize(VideoType::kI420, frame_buffer.width(),
+                                         frame_buffer.height());
+    if (new_capacity < required_capacity) {
       // Encoded data > unencoded data. Allocate required bytes.
       RTC_LOG(LS_WARNING)
           << "Encoding produced more bytes than the original image "
-          << "data! Original bytes: " << encoded_image->_size
-          << ", encoded bytes: " << required_size << ".";
-      encoded_image->_size = required_size;
+          << "data! Original bytes: " << new_capacity
+          << ", encoded bytes: " << required_capacity << ".";
+      new_capacity = required_capacity;
     }
-    encoded_image->_buffer = new uint8_t[encoded_image->_size];
+    encoded_image->set_buffer(new uint8_t[new_capacity], new_capacity);
     encoded_image_buffer->reset(encoded_image->_buffer);
   }
 
@@ -141,7 +141,7 @@
     // Iterate NAL units making up this layer, noting fragments.
     size_t layer_len = 0;
     for (int nal = 0; nal < layerInfo.iNalCount; ++nal, ++frag) {
-      // Because the sum of all layer lengths, |required_size|, fits in a
+      // Because the sum of all layer lengths, |required_capacity|, fits in a
       // |size_t|, we know that any indices in-between will not overflow.
       RTC_DCHECK_GE(layerInfo.pNalLengthInByte[nal], 4);
       RTC_DCHECK_EQ(layerInfo.pBsBuf[layer_len + 0], start_code[0]);
@@ -299,10 +299,11 @@
     openh264_encoder->SetOption(ENCODER_OPTION_DATAFORMAT, &video_format);
 
     // Initialize encoded image. Default buffer size: size of unencoded data.
-    encoded_images_[i]._size =
+
+    const size_t new_capacity =
         CalcBufferSize(VideoType::kI420, codec_.simulcastStream[idx].width,
                        codec_.simulcastStream[idx].height);
-    encoded_images_[i]._buffer = new uint8_t[encoded_images_[i]._size];
+    encoded_images_[i].set_buffer(new uint8_t[new_capacity], new_capacity);
     encoded_image_buffers_[i].reset(encoded_images_[i]._buffer);
     encoded_images_[i]._completeFrame = true;
     encoded_images_[i]._encodedWidth = codec_.simulcastStream[idx].width;
diff --git a/modules/video_coding/codecs/i420/i420.cc b/modules/video_coding/codecs/i420/i420.cc
index 7c498b1..c552a29 100644
--- a/modules/video_coding/codecs/i420/i420.cc
+++ b/modules/video_coding/codecs/i420/i420.cc
@@ -55,18 +55,17 @@
   // Allocating encoded memory.
   if (_encodedImage._buffer != NULL) {
     delete[] _encodedImage._buffer;
-    _encodedImage._buffer = NULL;
-    _encodedImage._size = 0;
+    _encodedImage.set_buffer(NULL, 0);
   }
-  const size_t newSize = CalcBufferSize(VideoType::kI420, codecSettings->width,
-                                        codecSettings->height) +
-                         kI420HeaderSize;
-  uint8_t* newBuffer = new uint8_t[newSize];
+  const size_t newCapacity =
+      CalcBufferSize(VideoType::kI420, codecSettings->width,
+                     codecSettings->height) +
+      kI420HeaderSize;
+  uint8_t* newBuffer = new uint8_t[newCapacity];
   if (newBuffer == NULL) {
     return WEBRTC_VIDEO_CODEC_MEMORY;
   }
-  _encodedImage._size = newSize;
-  _encodedImage._buffer = newBuffer;
+  _encodedImage.set_buffer(newBuffer, newCapacity);
 
   // If no memory allocation, no point to init.
   _inited = true;
@@ -97,15 +96,13 @@
     return WEBRTC_VIDEO_CODEC_ERR_SIZE;
   }
 
-  size_t req_length = CalcBufferSize(VideoType::kI420, inputImage.width(),
-                                     inputImage.height()) +
-                      kI420HeaderSize;
-  if (_encodedImage._size > req_length) {
+  size_t req_capacity = CalcBufferSize(VideoType::kI420, inputImage.width(),
+                                       inputImage.height()) +
+                        kI420HeaderSize;
+  if (_encodedImage.capacity() < req_capacity) {
     // Reallocate buffer.
     delete[] _encodedImage._buffer;
-
-    _encodedImage._buffer = new uint8_t[req_length];
-    _encodedImage._size = req_length;
+    _encodedImage.set_buffer(new uint8_t[req_capacity], req_capacity);
   }
 
   uint8_t* buffer = _encodedImage._buffer;
@@ -113,7 +110,7 @@
   buffer = InsertHeader(buffer, width, height);
 
   int ret_length =
-      ExtractBuffer(inputImage, req_length - kI420HeaderSize, buffer);
+      ExtractBuffer(inputImage, req_capacity - kI420HeaderSize, buffer);
   if (ret_length < 0)
     return WEBRTC_VIDEO_CODEC_MEMORY;
   _encodedImage._length = ret_length + kI420HeaderSize;
@@ -175,10 +172,10 @@
   buffer = ExtractHeader(buffer, &width, &height);
 
   // Verify that the available length is sufficient:
-  size_t req_length =
+  size_t req_capacity =
       CalcBufferSize(VideoType::kI420, width, height) + kI420HeaderSize;
 
-  if (req_length > inputImage._length) {
+  if (req_capacity > inputImage._length) {
     return WEBRTC_VIDEO_CODEC_ERROR;
   }
   // Set decoded image parameters.
diff --git a/modules/video_coding/codecs/multiplex/multiplex_encoded_image_packer.cc b/modules/video_coding/codecs/multiplex/multiplex_encoded_image_packer.cc
index 04103b9..65146d7 100644
--- a/modules/video_coding/codecs/multiplex/multiplex_encoded_image_packer.cc
+++ b/modules/video_coding/codecs/multiplex/multiplex_encoded_image_packer.cc
@@ -188,8 +188,9 @@
     frame_headers.push_back(frame_header);
   }
 
-  combined_image._length = combined_image._size = bitstream_offset;
-  combined_image._buffer = new uint8_t[combined_image._length];
+  combined_image._length = bitstream_offset;
+  combined_image.set_buffer(new uint8_t[combined_image._length],
+                            combined_image._length);
 
   // header
   header_offset = PackHeader(combined_image._buffer, header);
@@ -262,13 +263,12 @@
     EncodedImage encoded_image = combined_image;
     encoded_image.SetTimestamp(combined_image.Timestamp());
     encoded_image._frameType = frame_headers[i].frame_type;
-    encoded_image._size =
-        static_cast<size_t>(frame_headers[i].bitstream_length);
+    encoded_image.set_buffer(
+        combined_image._buffer + frame_headers[i].bitstream_offset,
+        static_cast<size_t>(frame_headers[i].bitstream_length));
     const size_t padding =
         EncodedImage::GetBufferPaddingBytes(image_component.codec_type);
-    encoded_image._length = encoded_image._size - padding;
-    encoded_image._buffer =
-        combined_image._buffer + frame_headers[i].bitstream_offset;
+    encoded_image._length = encoded_image.capacity() - padding;
 
     image_component.encoded_image = encoded_image;
 
diff --git a/modules/video_coding/codecs/test/videoprocessor.cc b/modules/video_coding/codecs/test/videoprocessor.cc
index 5510876..ac13f94 100644
--- a/modules/video_coding/codecs/test/videoprocessor.cc
+++ b/modules/video_coding/codecs/test/videoprocessor.cc
@@ -575,9 +575,8 @@
 
   EncodedImage copied_image = encoded_image;
   copied_image = encoded_image;
-  copied_image._buffer = copied_buffer;
+  copied_image.set_buffer(copied_buffer, buffer_size_bytes);
   copied_image._length = payload_size_bytes;
-  copied_image._size = buffer_size_bytes;
 
   // Replace previous EncodedImage for this spatial layer.
   uint8_t* old_buffer = merged_encoded_frames_.at(spatial_idx)._buffer;
diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
index e8c446a..9114d95 100644
--- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
+++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
@@ -379,9 +379,9 @@
     if (encoded_images_[i]._buffer != NULL) {
       delete[] encoded_images_[i]._buffer;
     }
-    encoded_images_[i]._size =
+    size_t frame_capacity =
         CalcBufferSize(VideoType::kI420, codec_.width, codec_.height);
-    encoded_images_[i]._buffer = new uint8_t[encoded_images_[i]._size];
+    encoded_images_[i].set_buffer(new uint8_t[frame_capacity], frame_capacity);
     encoded_images_[i]._completeFrame = true;
   }
   // populate encoder configuration with default values
@@ -861,17 +861,17 @@
         case VPX_CODEC_CX_FRAME_PKT: {
           size_t length = encoded_images_[encoder_idx]._length;
           if (pkt->data.frame.sz + length >
-              encoded_images_[encoder_idx]._size) {
+              encoded_images_[encoder_idx].capacity()) {
             uint8_t* buffer = new uint8_t[pkt->data.frame.sz + length];
             memcpy(buffer, encoded_images_[encoder_idx]._buffer, length);
             delete[] encoded_images_[encoder_idx]._buffer;
-            encoded_images_[encoder_idx]._buffer = buffer;
-            encoded_images_[encoder_idx]._size = pkt->data.frame.sz + length;
+            encoded_images_[encoder_idx].set_buffer(
+                buffer, pkt->data.frame.sz + length);
           }
           memcpy(&encoded_images_[encoder_idx]._buffer[length],
                  pkt->data.frame.buf, pkt->data.frame.sz);
           encoded_images_[encoder_idx]._length += pkt->data.frame.sz;
-          assert(length <= encoded_images_[encoder_idx]._size);
+          assert(length <= encoded_images_[encoder_idx].capacity());
           break;
         }
         default:
diff --git a/modules/video_coding/codecs/vp9/vp9_impl.cc b/modules/video_coding/codecs/vp9/vp9_impl.cc
index 7bb2ea2..3fc0cd8 100644
--- a/modules/video_coding/codecs/vp9/vp9_impl.cc
+++ b/modules/video_coding/codecs/vp9/vp9_impl.cc
@@ -395,9 +395,9 @@
   if (encoded_image_._buffer != nullptr) {
     delete[] encoded_image_._buffer;
   }
-  encoded_image_._size =
+  size_t frame_capacity =
       CalcBufferSize(VideoType::kI420, codec_.width, codec_.height);
-  encoded_image_._buffer = new uint8_t[encoded_image_._size];
+  encoded_image_.set_buffer(new uint8_t[frame_capacity], frame_capacity);
   encoded_image_._completeFrame = true;
   // Populate encoder configuration with default values.
   if (vpx_codec_enc_config_default(vpx_codec_vp9_cx(), config_, 0)) {
@@ -1257,10 +1257,10 @@
     DeliverBufferedFrame(end_of_picture);
   }
 
-  if (pkt->data.frame.sz > encoded_image_._size) {
+  if (pkt->data.frame.sz > encoded_image_.capacity()) {
     delete[] encoded_image_._buffer;
-    encoded_image_._size = pkt->data.frame.sz;
-    encoded_image_._buffer = new uint8_t[encoded_image_._size];
+    encoded_image_.set_buffer(new uint8_t[pkt->data.frame.sz],
+                              pkt->data.frame.sz);
   }
   memcpy(encoded_image_._buffer, pkt->data.frame.buf, pkt->data.frame.sz);
   encoded_image_._length = pkt->data.frame.sz;
@@ -1276,7 +1276,7 @@
     encoded_image_._frameType = kVideoFrameKey;
     force_key_frame_ = false;
   }
-  RTC_DCHECK_LE(encoded_image_._length, encoded_image_._size);
+  RTC_DCHECK_LE(encoded_image_._length, encoded_image_.capacity());
 
   memset(&codec_specific_, 0, sizeof(codec_specific_));
   absl::optional<int> spatial_index;