Revert "Delete the non-const version of the EncodedImage::data() method."
This reverts commit f2969fa868f4913583e79f74ceced5cc6b7d6b7d.
Reason for revert: Breaks blink_platform_unittests; sample failure:
https://ci.chromium.org/p/chromium/builders/try/linux-rel/500046
Original change's description:
> Delete the non-const version of the EncodedImage::data() method.
>
> Bug: webrtc:9378
> Change-Id: I84ace3ca6a2eb4d0f7c3d4e62f815d77df581bfa
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/185122
> Reviewed-by: Artem Titov <titovartem@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#32197}
TBR=ilnik@webrtc.org,nisse@webrtc.org,philipel@webrtc.org,titovartem@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:9378
Change-Id: I6374d263e2ee10da318ab1e040ed18bed7a96edd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/185507
Reviewed-by: Marina Ciocea <marinaciocea@webrtc.org>
Commit-Queue: Marina Ciocea <marinaciocea@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32205}
diff --git a/modules/video_coding/codecs/h264/h264_encoder_impl.cc b/modules/video_coding/codecs/h264/h264_encoder_impl.cc
index b869abe..83f1f51 100644
--- a/modules/video_coding/codecs/h264/h264_encoder_impl.cc
+++ b/modules/video_coding/codecs/h264/h264_encoder_impl.cc
@@ -110,8 +110,7 @@
}
}
// TODO(nisse): Use a cache or buffer pool to avoid allocation?
- auto buffer = EncodedImageBuffer::Create(required_capacity);
- encoded_image->SetEncodedData(buffer);
+ encoded_image->SetEncodedData(EncodedImageBuffer::Create(required_capacity));
// Iterate layers and NAL units, note each NAL unit as a fragment and copy
// the data to |encoded_image->_buffer|.
@@ -133,7 +132,8 @@
layer_len += layerInfo.pNalLengthInByte[nal];
}
// Copy the entire layer's data (including start codes).
- memcpy(buffer->data() + encoded_image->size(), layerInfo.pBsBuf, layer_len);
+ memcpy(encoded_image->data() + encoded_image->size(), layerInfo.pBsBuf,
+ layer_len);
encoded_image->set_size(encoded_image->size() + layer_len);
}
}
diff --git a/modules/video_coding/codecs/test/videoprocessor.cc b/modules/video_coding/codecs/test/videoprocessor.cc
index f495bdd..8fbbe4a 100644
--- a/modules/video_coding/codecs/test/videoprocessor.cc
+++ b/modules/video_coding/codecs/test/videoprocessor.cc
@@ -571,16 +571,16 @@
}
const size_t payload_size_bytes = base_image.size() + encoded_image.size();
- auto buffer = EncodedImageBuffer::Create(payload_size_bytes);
+ EncodedImage copied_image = encoded_image;
+ copied_image.SetEncodedData(EncodedImageBuffer::Create(payload_size_bytes));
if (base_image.size()) {
RTC_CHECK(base_image.data());
- memcpy(buffer->data(), base_image.data(), base_image.size());
+ memcpy(copied_image.data(), base_image.data(), base_image.size());
}
- memcpy(buffer->data() + base_image.size(), encoded_image.data(),
+ memcpy(copied_image.data() + base_image.size(), encoded_image.data(),
encoded_image.size());
- EncodedImage copied_image = encoded_image;
- copied_image.SetEncodedData(buffer);
+ copied_image.set_size(payload_size_bytes);
// Replace previous EncodedImage for this spatial layer.
merged_encoded_frames_.at(spatial_idx) = std::move(copied_image);
diff --git a/modules/video_coding/frame_buffer.cc b/modules/video_coding/frame_buffer.cc
index 09c2733..d30170a 100644
--- a/modules/video_coding/frame_buffer.cc
+++ b/modules/video_coding/frame_buffer.cc
@@ -134,9 +134,7 @@
if (packet.sizeBytes > 0)
CopyCodecSpecific(&packet.video_header);
- int retVal = _sessionInfo.InsertPacket(
- packet, encoded_image_buffer_ ? encoded_image_buffer_->data() : nullptr,
- frame_data);
+ int retVal = _sessionInfo.InsertPacket(packet, data(), frame_data);
if (retVal == -1) {
return kSizeError;
} else if (retVal == -2) {
diff --git a/modules/video_coding/frame_object.cc b/modules/video_coding/frame_object.cc
index d58aa10..bdb43f7 100644
--- a/modules/video_coding/frame_object.cc
+++ b/modules/video_coding/frame_object.cc
@@ -38,8 +38,7 @@
const absl::optional<webrtc::ColorSpace>& color_space,
RtpPacketInfos packet_infos,
rtc::scoped_refptr<EncodedImageBuffer> image_buffer)
- : image_buffer_(image_buffer),
- first_seq_num_(first_seq_num),
+ : first_seq_num_(first_seq_num),
last_seq_num_(last_seq_num),
last_packet_received_time_(last_packet_received_time),
times_nacked_(times_nacked) {
@@ -61,7 +60,7 @@
// as of the first packet's.
SetPlayoutDelay(rtp_video_header_.playout_delay);
- SetEncodedData(image_buffer_);
+ SetEncodedData(std::move(image_buffer));
_encodedWidth = rtp_video_header_.width;
_encodedHeight = rtp_video_header_.height;
diff --git a/modules/video_coding/frame_object.h b/modules/video_coding/frame_object.h
index d812b8f..831b444 100644
--- a/modules/video_coding/frame_object.h
+++ b/modules/video_coding/frame_object.h
@@ -48,11 +48,7 @@
bool delayed_by_retransmission() const override;
const RTPVideoHeader& GetRtpVideoHeader() const;
- uint8_t* mutable_data() { return image_buffer_->data(); }
-
private:
- // Reference for mutable access.
- rtc::scoped_refptr<EncodedImageBuffer> image_buffer_;
RTPVideoHeader rtp_video_header_;
VideoCodecType codec_type_;
uint16_t first_seq_num_;
diff --git a/modules/video_coding/utility/simulcast_test_fixture_impl.cc b/modules/video_coding/utility/simulcast_test_fixture_impl.cc
index f7d81bf..b60f6881 100644
--- a/modules/video_coding/utility/simulcast_test_fixture_impl.cc
+++ b/modules/video_coding/utility/simulcast_test_fixture_impl.cc
@@ -81,13 +81,20 @@
// Only store the base layer.
if (encoded_image.SpatialIndex().value_or(0) == 0) {
if (encoded_image._frameType == VideoFrameType::kVideoFrameKey) {
- encoded_key_frame_.SetEncodedData(EncodedImageBuffer::Create(
- encoded_image.data(), encoded_image.size()));
+ // TODO(nisse): Why not size() ?
+ encoded_key_frame_.SetEncodedData(
+ EncodedImageBuffer::Create(encoded_image.size()));
+ encoded_key_frame_.set_size(encoded_image.size());
encoded_key_frame_._frameType = VideoFrameType::kVideoFrameKey;
encoded_key_frame_._completeFrame = encoded_image._completeFrame;
+ memcpy(encoded_key_frame_.data(), encoded_image.data(),
+ encoded_image.size());
} else {
- encoded_frame_.SetEncodedData(EncodedImageBuffer::Create(
- encoded_image.data(), encoded_image.size()));
+ encoded_frame_.SetEncodedData(
+ EncodedImageBuffer::Create(encoded_image.size()));
+ encoded_frame_.set_size(encoded_image.size());
+ memcpy(encoded_frame_.data(), encoded_image.data(),
+ encoded_image.size());
}
}
if (is_vp8) {
@@ -866,10 +873,13 @@
EXPECT_EQ(encoded_image._frameType, VideoFrameType::kVideoFrameKey);
size_t index = encoded_image.SpatialIndex().value_or(0);
- encoded_frame[index].SetEncodedData(EncodedImageBuffer::Create(
- encoded_image.data(), encoded_image.size()));
+ encoded_frame[index].SetEncodedData(
+ EncodedImageBuffer::Create(encoded_image.size()));
+ encoded_frame[index].set_size(encoded_image.size());
encoded_frame[index]._frameType = encoded_image._frameType;
encoded_frame[index]._completeFrame = encoded_image._completeFrame;
+ memcpy(encoded_frame[index].data(), encoded_image.data(),
+ encoded_image.size());
return EncodedImageCallback::Result(
EncodedImageCallback::Result::OK, 0);
}));