From f0a7c5ac16752e3408f551162cb3aad8a7864e78 Mon Sep 17 00:00:00 2001 From: nisse Date: Mon, 31 Oct 2016 05:48:07 -0700 Subject: [PATCH] Delete deprecated method VideoFrame::CreateFrame. BUG=webrtc:6591 Review-Url: https://codereview.webrtc.org/2444383009 Cr-Commit-Position: refs/heads/master@{#14849} --- .../common_video/i420_video_frame_unittest.cc | 58 +++++-------------- webrtc/common_video/video_frame.cc | 42 -------------- webrtc/test/frame_generator.cc | 20 ++++--- webrtc/video/video_send_stream_tests.cc | 6 +- webrtc/video_frame.h | 26 --------- 5 files changed, 30 insertions(+), 122 deletions(-) diff --git a/webrtc/common_video/i420_video_frame_unittest.cc b/webrtc/common_video/i420_video_frame_unittest.cc index 5f8d9596f4..420ae4e152 100644 --- a/webrtc/common_video/i420_video_frame_unittest.cc +++ b/webrtc/common_video/i420_video_frame_unittest.cc @@ -151,25 +151,26 @@ TEST(TestVideoFrame, ShallowCopy) { memset(buffer_y, 16, kSizeY); memset(buffer_u, 8, kSizeU); memset(buffer_v, 4, kSizeV); - VideoFrame frame1; - frame1.CreateFrame(buffer_y, buffer_u, buffer_v, width, height, - stride_y, stride_u, stride_v, kRotation); + VideoFrame frame1( + I420Buffer::Copy(new rtc::RefCountedObject( + width, height, + buffer_y, stride_y, + buffer_u, stride_u, + buffer_v, stride_v, + rtc::Callback0([](){}))), + kRotation, 0); frame1.set_timestamp(timestamp); frame1.set_ntp_time_ms(ntp_time_ms); frame1.set_render_time_ms(render_time_ms); - VideoFrame frame2; - frame2.ShallowCopy(frame1); + VideoFrame frame2(frame1); - // To be able to access the buffers, we need const pointers to the frames. - const VideoFrame* const_frame1_ptr = &frame1; - const VideoFrame* const_frame2_ptr = &frame2; - - EXPECT_TRUE(const_frame1_ptr->video_frame_buffer()->DataY() == - const_frame2_ptr->video_frame_buffer()->DataY()); - EXPECT_TRUE(const_frame1_ptr->video_frame_buffer()->DataU() == - const_frame2_ptr->video_frame_buffer()->DataU()); - EXPECT_TRUE(const_frame1_ptr->video_frame_buffer()->DataV() == - const_frame2_ptr->video_frame_buffer()->DataV()); + EXPECT_EQ(frame1.video_frame_buffer(), frame2.video_frame_buffer()); + EXPECT_EQ(frame1.video_frame_buffer()->DataY(), + frame2.video_frame_buffer()->DataY()); + EXPECT_EQ(frame1.video_frame_buffer()->DataU(), + frame2.video_frame_buffer()->DataU()); + EXPECT_EQ(frame1.video_frame_buffer()->DataV(), + frame2.video_frame_buffer()->DataV()); EXPECT_EQ(frame2.timestamp(), frame1.timestamp()); EXPECT_EQ(frame2.ntp_time_ms(), frame1.ntp_time_ms()); @@ -187,33 +188,6 @@ TEST(TestVideoFrame, ShallowCopy) { EXPECT_NE(frame2.rotation(), frame1.rotation()); } -TEST(TestVideoFrame, CopyBuffer) { - VideoFrame frame1, frame2; - int width = 15; - int height = 15; - int stride_y = 15; - int stride_uv = 10; - const int kSizeY = 225; - const int kSizeUv = 80; - - uint8_t buffer_y[kSizeY]; - uint8_t buffer_u[kSizeUv]; - uint8_t buffer_v[kSizeUv]; - memset(buffer_y, 16, kSizeY); - memset(buffer_u, 8, kSizeUv); - memset(buffer_v, 4, kSizeUv); - frame2.CreateFrame(buffer_y, buffer_u, buffer_v, - width, height, stride_y, stride_uv, stride_uv, - kVideoRotation_0); - // Expect exactly the same pixel data. - EXPECT_TRUE(test::EqualPlane(buffer_y, frame2.video_frame_buffer()->DataY(), - stride_y, 15, 15)); - EXPECT_TRUE(test::EqualPlane(buffer_u, frame2.video_frame_buffer()->DataU(), - stride_uv, 8, 8)); - EXPECT_TRUE(test::EqualPlane(buffer_v, frame2.video_frame_buffer()->DataV(), - stride_uv, 8, 8)); -} - TEST(TestVideoFrame, TextureInitialValues) { test::FakeNativeHandle* handle = new test::FakeNativeHandle(); VideoFrame frame = test::FakeNativeHandle::CreateFrame( diff --git a/webrtc/common_video/video_frame.cc b/webrtc/common_video/video_frame.cc index 7145a623e6..3e408d5627 100644 --- a/webrtc/common_video/video_frame.cc +++ b/webrtc/common_video/video_frame.cc @@ -51,48 +51,6 @@ VideoFrame::VideoFrame(const rtc::scoped_refptr& buffer, RTC_DCHECK(buffer); } -void VideoFrame::CreateFrame(const uint8_t* buffer_y, - const uint8_t* buffer_u, - const uint8_t* buffer_v, - int width, - int height, - int stride_y, - int stride_u, - int stride_v, - VideoRotation rotation) { - const int half_height = (height + 1) / 2; - const int expected_size_y = height * stride_y; - const int expected_size_u = half_height * stride_u; - const int expected_size_v = half_height * stride_v; - // Allocate a new buffer. - rtc::scoped_refptr buffer_ = - I420Buffer::Create(width, height, stride_y, stride_u, stride_v); - - memcpy(buffer_->MutableDataY(), buffer_y, expected_size_y); - memcpy(buffer_->MutableDataU(), buffer_u, expected_size_u); - memcpy(buffer_->MutableDataV(), buffer_v, expected_size_v); - - video_frame_buffer_ = buffer_; - timestamp_rtp_ = 0; - ntp_time_ms_ = 0; - timestamp_us_ = 0; - rotation_ = rotation; -} - -void VideoFrame::CreateFrame(const uint8_t* buffer, - int width, - int height, - VideoRotation rotation) { - const int stride_y = width; - const int stride_uv = (width + 1) / 2; - - const uint8_t* buffer_y = buffer; - const uint8_t* buffer_u = buffer_y + stride_y * height; - const uint8_t* buffer_v = buffer_u + stride_uv * ((height + 1) / 2); - CreateFrame(buffer_y, buffer_u, buffer_v, width, height, stride_y, - stride_uv, stride_uv, rotation); -} - void VideoFrame::ShallowCopy(const VideoFrame& videoFrame) { video_frame_buffer_ = videoFrame.video_frame_buffer(); timestamp_rtp_ = videoFrame.timestamp_rtp_; diff --git a/webrtc/test/frame_generator.cc b/webrtc/test/frame_generator.cc index 302eafc0a4..2ae739a01f 100644 --- a/webrtc/test/frame_generator.cc +++ b/webrtc/test/frame_generator.cc @@ -16,6 +16,7 @@ #include #include "webrtc/base/checks.h" +#include "webrtc/base/keep_ref_until_done.h" #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" #include "webrtc/system_wrappers/include/clock.h" #include "webrtc/test/frame_utils.h" @@ -216,15 +217,16 @@ class ScrollingImageFrameGenerator : public FrameGenerator { (pixels_scrolled_y / 2)) + (pixels_scrolled_x / 2); - current_frame_.CreateFrame( - ¤t_source_frame_->video_frame_buffer()->DataY()[offset_y], - ¤t_source_frame_->video_frame_buffer()->DataU()[offset_u], - ¤t_source_frame_->video_frame_buffer()->DataV()[offset_v], - target_width_, target_height_, - current_source_frame_->video_frame_buffer()->StrideY(), - current_source_frame_->video_frame_buffer()->StrideU(), - current_source_frame_->video_frame_buffer()->StrideV(), - kVideoRotation_0); + rtc::scoped_refptr frame_buffer( + current_source_frame_->video_frame_buffer()); + current_frame_ = webrtc::VideoFrame( + new rtc::RefCountedObject( + target_width_, target_height_, + &frame_buffer->DataY()[offset_y], frame_buffer->StrideY(), + &frame_buffer->DataU()[offset_u], frame_buffer->StrideU(), + &frame_buffer->DataV()[offset_v], frame_buffer->StrideV(), + KeepRefUntilDone(frame_buffer)), + kVideoRotation_0, 0); } Clock* const clock_; diff --git a/webrtc/video/video_send_stream_tests.cc b/webrtc/video/video_send_stream_tests.cc index b28f12a83c..f729654cc7 100644 --- a/webrtc/video/video_send_stream_tests.cc +++ b/webrtc/video/video_send_stream_tests.cc @@ -1686,9 +1686,9 @@ VideoFrame CreateVideoFrame(int width, int height, uint8_t data) { const int kSizeY = width * height * 2; std::unique_ptr buffer(new uint8_t[kSizeY]); memset(buffer.get(), data, kSizeY); - VideoFrame frame; - frame.CreateFrame(buffer.get(), buffer.get(), buffer.get(), width, height, - width, width / 2, width / 2, kVideoRotation_0); + VideoFrame frame( + I420Buffer::Create(width, height, width, width / 2, width / 2), + kVideoRotation_0, data); frame.set_timestamp(data); frame.set_render_time_ms(data); return frame; diff --git a/webrtc/video_frame.h b/webrtc/video_frame.h index 857eaa0540..ff120a6f4c 100644 --- a/webrtc/video_frame.h +++ b/webrtc/video_frame.h @@ -44,32 +44,6 @@ class VideoFrame { int64_t render_time_ms, VideoRotation rotation); - // CreateFrame: Sets the frame's members and buffers. If required size is - // bigger than allocated one, new buffers of adequate size will be allocated. - - // TODO(nisse): Deprecated. Should be deleted in the cricket::VideoFrame and - // webrtc::VideoFrame merge. Instead, create a VideoFrameBuffer and pass to - // the constructor. E.g, use I420Buffer::Copy(WrappedI420Buffer(...)). - void CreateFrame(const uint8_t* buffer_y, - const uint8_t* buffer_u, - const uint8_t* buffer_v, - int width, - int height, - int stride_y, - int stride_u, - int stride_v, - VideoRotation rotation); - - // CreateFrame: Sets the frame's members and buffers. If required size is - // bigger than allocated one, new buffers of adequate size will be allocated. - // |buffer| must be a packed I420 buffer. - - // TODO(nisse): Deprecated, see above method for advice. - void CreateFrame(const uint8_t* buffer, - int width, - int height, - VideoRotation rotation); - // Creates a shallow copy of |videoFrame|, i.e, the this object will retain a // reference to the video buffer also retained by |videoFrame|. // TODO(nisse): Deprecated. Should be deleted in the cricket::VideoFrame and