diff --git a/api/test/loopback_media_transport_unittest.cc b/api/test/loopback_media_transport_unittest.cc index 13373558f2..b827405d51 100644 --- a/api/test/loopback_media_transport_unittest.cc +++ b/api/test/loopback_media_transport_unittest.cc @@ -103,9 +103,10 @@ TEST(LoopbackMediaTransport, VideoDeliveredToSink) { thread->Start(); MediaTransportPair transport_pair(thread.get()); testing::StrictMock sink; - uint8_t encoded_data[] = {1, 2, 3}; + constexpr uint8_t encoded_data[] = {1, 2, 3}; EncodedImage encoded_image; - encoded_image.set_buffer(encoded_data, sizeof(encoded_data)); + encoded_image.Allocate(sizeof(encoded_data)); + memcpy(encoded_image.data(), encoded_data, sizeof(encoded_data)); encoded_image.set_size(sizeof(encoded_data)); EXPECT_CALL(sink, OnData(1, testing::Property( diff --git a/call/rtp_video_sender_unittest.cc b/call/rtp_video_sender_unittest.cc index ede5b1d0d2..4d1964efad 100644 --- a/call/rtp_video_sender_unittest.cc +++ b/call/rtp_video_sender_unittest.cc @@ -133,12 +133,13 @@ class RtpVideoSenderTestFixture { } // namespace TEST(RtpVideoSenderTest, SendOnOneModule) { - uint8_t payload = 'a'; + constexpr uint8_t kPayload = 'a'; EncodedImage encoded_image; encoded_image.SetTimestamp(1); encoded_image.capture_time_ms_ = 2; encoded_image._frameType = kVideoFrameKey; - encoded_image.set_buffer(&payload, 1); + encoded_image.Allocate(1); + encoded_image.data()[0] = kPayload; encoded_image.set_size(1); RtpVideoSenderTestFixture test({kSsrc1}, kPayloadType, {}); @@ -163,12 +164,13 @@ TEST(RtpVideoSenderTest, SendOnOneModule) { } TEST(RtpVideoSenderTest, SendSimulcastSetActive) { - uint8_t payload = 'a'; + constexpr uint8_t kPayload = 'a'; EncodedImage encoded_image_1; encoded_image_1.SetTimestamp(1); encoded_image_1.capture_time_ms_ = 2; encoded_image_1._frameType = kVideoFrameKey; - encoded_image_1.set_buffer(&payload, 1); + encoded_image_1.Allocate(1); + encoded_image_1.data()[0] = kPayload; encoded_image_1.set_size(1); RtpVideoSenderTestFixture test({kSsrc1, kSsrc2}, kPayloadType, {}); @@ -207,12 +209,13 @@ TEST(RtpVideoSenderTest, SendSimulcastSetActive) { // that outgoing data can be sent on this module, and checks that no data can // be sent if both modules are inactive. TEST(RtpVideoSenderTest, SendSimulcastSetActiveModules) { - uint8_t payload = 'a'; + constexpr uint8_t kPayload = 'a'; EncodedImage encoded_image_1; encoded_image_1.SetTimestamp(1); encoded_image_1.capture_time_ms_ = 2; encoded_image_1._frameType = kVideoFrameKey; - encoded_image_1.set_buffer(&payload, 1); + encoded_image_1.Allocate(1); + encoded_image_1.data()[0] = kPayload; encoded_image_1.set_size(1); EncodedImage encoded_image_2(encoded_image_1); @@ -296,12 +299,13 @@ TEST(RtpVideoSenderTest, FrameCountCallbacks) { RtpVideoSenderTestFixture test({kSsrc1}, kPayloadType, {}, &callback); - uint8_t payload = 'a'; + constexpr uint8_t kPayload = 'a'; EncodedImage encoded_image; encoded_image.SetTimestamp(1); encoded_image.capture_time_ms_ = 2; encoded_image._frameType = kVideoFrameKey; - encoded_image.set_buffer(&payload, 1); + encoded_image.Allocate(1); + encoded_image.data()[0] = kPayload; encoded_image.set_size(1); encoded_image._frameType = kVideoFrameKey; diff --git a/modules/video_coding/codecs/test/videoprocessor.cc b/modules/video_coding/codecs/test/videoprocessor.cc index c64d2905c0..fafb6760f7 100644 --- a/modules/video_coding/codecs/test/videoprocessor.cc +++ b/modules/video_coding/codecs/test/videoprocessor.cc @@ -246,14 +246,6 @@ VideoProcessor::~VideoProcessor() { // Sanity check. RTC_CHECK_LE(input_frames_.size(), kMaxBufferedInputFrames); - - // Deal with manual memory management of EncodedImage's. - for (size_t i = 0; i < num_simulcast_or_spatial_layers_; ++i) { - uint8_t* data = merged_encoded_frames_.at(i).data(); - if (data) { - delete[] data; - } - } } void VideoProcessor::ProcessFrame() { @@ -571,27 +563,19 @@ const webrtc::EncodedImage* VideoProcessor::BuildAndStoreSuperframe( const size_t buffer_size_bytes = payload_size_bytes + EncodedImage::GetBufferPaddingBytes(codec); - uint8_t* copied_buffer = new uint8_t[buffer_size_bytes]; - RTC_CHECK(copied_buffer); - + EncodedImage copied_image = encoded_image; + copied_image.Allocate(buffer_size_bytes); if (base_image.size()) { RTC_CHECK(base_image.data()); - memcpy(copied_buffer, base_image.data(), base_image.size()); + memcpy(copied_image.data(), base_image.data(), base_image.size()); } - memcpy(copied_buffer + 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 = encoded_image; - copied_image.set_buffer(copied_buffer, buffer_size_bytes); copied_image.set_size(payload_size_bytes); // Replace previous EncodedImage for this spatial layer. - uint8_t* old_buffer = merged_encoded_frames_.at(spatial_idx).buffer(); - if (old_buffer) { - delete[] old_buffer; - } - merged_encoded_frames_.at(spatial_idx) = copied_image; + merged_encoded_frames_.at(spatial_idx) = std::move(copied_image); return &merged_encoded_frames_.at(spatial_idx); } diff --git a/modules/video_coding/codecs/test/videoprocessor.h b/modules/video_coding/codecs/test/videoprocessor.h index 303e1d4b73..e691478c41 100644 --- a/modules/video_coding/codecs/test/videoprocessor.h +++ b/modules/video_coding/codecs/test/videoprocessor.h @@ -109,10 +109,9 @@ class VideoProcessor { const webrtc::EncodedImage& encoded_image, const webrtc::CodecSpecificInfo* codec_specific_info) : video_processor_(video_processor), - buffer_(encoded_image.data(), encoded_image.size()), encoded_image_(encoded_image), codec_specific_info_(*codec_specific_info) { - encoded_image_.set_buffer(buffer_.data(), buffer_.size()); + encoded_image_.Retain(); } bool Run() override { @@ -122,7 +121,6 @@ class VideoProcessor { private: VideoProcessor* const video_processor_; - rtc::Buffer buffer_; webrtc::EncodedImage encoded_image_; const webrtc::CodecSpecificInfo codec_specific_info_; }; diff --git a/modules/video_coding/generic_encoder_unittest.cc b/modules/video_coding/generic_encoder_unittest.cc index 4ea2506355..0be0c75913 100644 --- a/modules/video_coding/generic_encoder_unittest.cc +++ b/modules/video_coding/generic_encoder_unittest.cc @@ -82,7 +82,6 @@ std::vector> GetTimingFrames( {delay_ms, kDefaultOutlierFrameSizePercent}); callback.OnFrameRateChanged(kFramerate); int s, i; - std::vector frame_data(max_frame_size); std::vector> result(num_streams); for (s = 0; s < num_streams; ++s) callback.OnTargetBitrateChanged(average_frame_sizes[s] * kFramerate, s); @@ -95,7 +94,7 @@ std::vector> GetTimingFrames( EncodedImage image; CodecSpecificInfo codec_specific; - image.set_buffer(frame_data.data(), frame_data.size()); + image.Allocate(max_frame_size); image.set_size(FrameSize(min_frame_size, max_frame_size, s, i)); image.capture_time_ms_ = current_timestamp; image.SetTimestamp(static_cast(current_timestamp * 90)); @@ -189,9 +188,9 @@ TEST(TestVCMEncodedFrameCallback, NoTimingFrameIfNoEncodeStartTime) { EncodedImage image; CodecSpecificInfo codec_specific; int64_t timestamp = 1; - uint8_t frame_data[500]; - image.set_buffer(frame_data, sizeof(frame_data)); - image.set_size(sizeof(frame_data)); + constexpr size_t kFrameSize = 500; + image.Allocate(kFrameSize); + image.set_size(kFrameSize); image.capture_time_ms_ = timestamp; image.SetTimestamp(static_cast(timestamp * 90)); codec_specific.codecType = kVideoCodecGeneric; @@ -222,9 +221,9 @@ TEST(TestVCMEncodedFrameCallback, AdjustsCaptureTimeForInternalSourceEncoder) { const int64_t kEncodeStartDelayMs = 2; const int64_t kEncodeFinishDelayMs = 10; int64_t timestamp = 1; - uint8_t frame_data[500]; - image.set_buffer(frame_data, sizeof(frame_data)); - image.set_size(sizeof(frame_data)); + constexpr size_t kFrameSize = 500; + image.Allocate(kFrameSize); + image.set_size(kFrameSize); image.capture_time_ms_ = timestamp; image.SetTimestamp(static_cast(timestamp * 90)); codec_specific.codecType = kVideoCodecGeneric; diff --git a/modules/video_coding/utility/ivf_file_writer_unittest.cc b/modules/video_coding/utility/ivf_file_writer_unittest.cc index 80a83d5ff4..365fc4aa68 100644 --- a/modules/video_coding/utility/ivf_file_writer_unittest.cc +++ b/modules/video_coding/utility/ivf_file_writer_unittest.cc @@ -41,7 +41,8 @@ class IvfFileWriterTest : public ::testing::Test { int num_frames, bool use_capture_tims_ms) { EncodedImage frame; - frame.set_buffer(dummy_payload, sizeof(dummy_payload)); + frame.Allocate(sizeof(dummy_payload)); + memcpy(frame.data(), dummy_payload, sizeof(dummy_payload)); frame._encodedWidth = width; frame._encodedHeight = height; for (int i = 1; i <= num_frames; ++i) {