From cbf5949fff2ef3f4167db90bc07f49775aa6ba70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Wed, 13 Feb 2019 11:56:14 +0100 Subject: [PATCH] Update MultiplexEncoderAdapter to use EncodedImage::Allocate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:9378 Change-Id: Icb09478c7035ec4ddbcb11f402db140a838721f3 Reviewed-on: https://webrtc-review.googlesource.com/c/122881 Reviewed-by: Erik Språng Commit-Queue: Niels Moller Cr-Commit-Position: refs/heads/master@{#26663} --- .../multiplex_encoded_image_packer.cc | 2 +- .../multiplex/multiplex_encoder_adapter.cc | 20 ++++--------------- 2 files changed, 5 insertions(+), 17 deletions(-) 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 1afdf289eb..dcba67e1c6 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 @@ EncodedImage MultiplexEncodedImagePacker::PackAndRelease( 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 fb588eba46..b93fd92814 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 @@ int MultiplexEncoderAdapter::Release() { 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 @@ EncodedImageCallback::Result MultiplexEncoderAdapter::OnEncodedImage( 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 @@ EncodedImageCallback::Result MultiplexEncoderAdapter::OnEncodedImage( // 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);