Delete deprecated method VideoFrame::CreateFrame.

BUG=webrtc:6591

Review-Url: https://codereview.webrtc.org/2444383009
Cr-Commit-Position: refs/heads/master@{#14849}
This commit is contained in:
nisse 2016-10-31 05:48:07 -07:00 committed by Commit bot
parent 626bc952aa
commit f0a7c5ac16
5 changed files with 30 additions and 122 deletions

View File

@ -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<webrtc::WrappedI420Buffer>(
width, height,
buffer_y, stride_y,
buffer_u, stride_u,
buffer_v, stride_v,
rtc::Callback0<void>([](){}))),
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(

View File

@ -51,48 +51,6 @@ VideoFrame::VideoFrame(const rtc::scoped_refptr<VideoFrameBuffer>& 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<I420Buffer> 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_;

View File

@ -16,6 +16,7 @@
#include <memory>
#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(
&current_source_frame_->video_frame_buffer()->DataY()[offset_y],
&current_source_frame_->video_frame_buffer()->DataU()[offset_u],
&current_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<VideoFrameBuffer> frame_buffer(
current_source_frame_->video_frame_buffer());
current_frame_ = webrtc::VideoFrame(
new rtc::RefCountedObject<webrtc::WrappedI420Buffer>(
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_;

View File

@ -1686,9 +1686,9 @@ VideoFrame CreateVideoFrame(int width, int height, uint8_t data) {
const int kSizeY = width * height * 2;
std::unique_ptr<uint8_t[]> 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;

View File

@ -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