Update MultiplexEncoderAdapter to use EncodedImage::Allocate
Bug: webrtc:9378
Change-Id: Icb09478c7035ec4ddbcb11f402db140a838721f3
Reviewed-on: https://webrtc-review.googlesource.com/c/122881
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26663}
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 1afdf28..dcba67e 100644
--- a/modules/video_coding/codecs/multiplex/multiplex_encoded_image_packer.cc
+++ b/modules/video_coding/codecs/multiplex/multiplex_encoded_image_packer.cc
@@ -188,7 +188,7 @@
frame_headers.push_back(frame_header);
}
- combined_image.set_buffer(new uint8_t[bitstream_offset], bitstream_offset);
+ combined_image.Allocate(bitstream_offset);
combined_image.set_size(bitstream_offset);
// header
diff --git a/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc b/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc
index fb588eb..b93fd92 100644
--- a/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc
+++ b/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc
@@ -247,16 +247,8 @@
encoders_.clear();
adapter_callbacks_.clear();
rtc::CritScope cs(&crit_);
- for (auto& stashed_image : stashed_images_) {
- for (auto& image_component : stashed_image.second.image_components) {
- delete[] image_component.encoded_image.data();
- }
- }
stashed_images_.clear();
- if (combined_image_.buffer()) {
- delete[] combined_image_.buffer();
- combined_image_.set_buffer(nullptr, 0);
- }
+
return WEBRTC_VIDEO_CODEC_OK;
}
@@ -275,11 +267,9 @@
image_component.codec_type =
PayloadStringToCodecType(associated_format_.name);
image_component.encoded_image = encodedImage;
- image_component.encoded_image.set_buffer(new uint8_t[encodedImage.size()],
- encodedImage.size());
- image_component.encoded_image.set_size(encodedImage.size());
- std::memcpy(image_component.encoded_image.data(), encodedImage.data(),
- encodedImage.size());
+
+ // If we don't already own the buffer, make a copy.
+ image_component.encoded_image.Retain();
rtc::CritScope cs(&crit_);
const auto& stashed_image_itr =
@@ -302,8 +292,6 @@
// We have to send out those stashed frames, otherwise the delta frame
// dependency chain is broken.
- if (combined_image_.buffer())
- delete[] combined_image_.buffer();
combined_image_ =
MultiplexEncodedImagePacker::PackAndRelease(iter->second);