Revert 8538 "Reland "Fix CVO in androidvideocapturer."""
> Reland "Fix CVO in androidvideocapturer.""
> This reverts commit b8bcf8cbbf
.
> after I fixed a rebase mistake. The fix is the delta between patchset 1 and 2.
>
> The original cl was reviewed here:
> https://webrtc-codereview.appspot.com/40759004/
>
> TBR=magjed@webrtc.org
>
> BUG=4145
>
> Review URL: https://webrtc-codereview.appspot.com/45409004
TBR=perkj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/44439004
Cr-Commit-Position: refs/heads/master@{#8539}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8539 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
3a93e33c56
commit
73acc15c69
@ -85,7 +85,7 @@ class AndroidVideoCapturer::FrameFactory : public cricket::VideoFrameFactory {
|
||||
// Check that captured_frame is actually our frame.
|
||||
DCHECK(captured_frame == &captured_frame_);
|
||||
scoped_ptr<WebRtcVideoFrame> frame(new WebRtcVideoFrame());
|
||||
frame->Init(captured_frame, dst_width, dst_height, apply_rotation_);
|
||||
frame->Init(captured_frame, dst_width, dst_height);
|
||||
return frame.release();
|
||||
}
|
||||
|
||||
|
@ -100,7 +100,7 @@ class VideoAdapterTest : public testing::Test {
|
||||
const CapturedFrame* captured_frame) {
|
||||
WebRtcVideoFrame temp_i420;
|
||||
EXPECT_TRUE(temp_i420.Init(captured_frame,
|
||||
captured_frame->width, abs(captured_frame->height), true));
|
||||
captured_frame->width, abs(captured_frame->height)));
|
||||
VideoFrame* out_frame = NULL;
|
||||
rtc::CritScope lock(&crit_);
|
||||
EXPECT_TRUE(video_adapter_->AdaptFrame(&temp_i420, &out_frame));
|
||||
|
@ -62,8 +62,7 @@ class VideoFrame {
|
||||
size_t pixel_height,
|
||||
int64_t elapsed_time,
|
||||
int64_t time_stamp,
|
||||
webrtc::VideoRotation rotation,
|
||||
bool apply_rotation) {
|
||||
webrtc::VideoRotation rotation) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -81,7 +80,7 @@ class VideoFrame {
|
||||
int rotation) {
|
||||
return Reset(fourcc, w, h, dw, dh, sample, sample_size, pixel_width,
|
||||
pixel_height, elapsed_time, time_stamp,
|
||||
static_cast<webrtc::VideoRotation>(rotation), true);
|
||||
static_cast<webrtc::VideoRotation>(rotation));
|
||||
}
|
||||
|
||||
// Basic accessors.
|
||||
@ -124,6 +123,8 @@ class VideoFrame {
|
||||
virtual webrtc::VideoRotation GetVideoRotation() const {
|
||||
return webrtc::kVideoRotation_0;
|
||||
}
|
||||
// TODO(guoweis): Remove the skeleton implementation once chrome is updated.
|
||||
virtual void SetRotation(webrtc::VideoRotation rotation) {}
|
||||
|
||||
// Make a shallow copy of the frame. The frame buffer itself is not copied.
|
||||
// Both the current and new VideoFrame will share a single reference-counted
|
||||
|
@ -1428,8 +1428,7 @@ class VideoFrameTest : public testing::Test {
|
||||
EXPECT_TRUE(IsEqual(frame1, frame2, 0));
|
||||
EXPECT_TRUE(frame1.Reset(cricket::FOURCC_I420, kWidth, kHeight, kWidth,
|
||||
kHeight, reinterpret_cast<uint8*>(ms->GetBuffer()),
|
||||
data_size, 1, 1, 0, 0, webrtc::kVideoRotation_0,
|
||||
true));
|
||||
data_size, 1, 1, 0, 0, webrtc::kVideoRotation_0));
|
||||
EXPECT_FALSE(IsBlack(frame1));
|
||||
EXPECT_FALSE(IsEqual(frame1, frame2, 0));
|
||||
}
|
||||
|
@ -112,8 +112,7 @@ const webrtc::VideoFrame* WebRtcVideoFrame::FrameBuffer::frame() const {
|
||||
}
|
||||
|
||||
WebRtcVideoFrame::WebRtcVideoFrame()
|
||||
: video_buffer_(new RefCountedBuffer()),
|
||||
rotation_(webrtc::kVideoRotation_0) {}
|
||||
: video_buffer_(new RefCountedBuffer()) {}
|
||||
|
||||
WebRtcVideoFrame::~WebRtcVideoFrame() {}
|
||||
|
||||
@ -130,18 +129,14 @@ bool WebRtcVideoFrame::Init(uint32 format,
|
||||
int64_t time_stamp,
|
||||
webrtc::VideoRotation rotation) {
|
||||
return Reset(format, w, h, dw, dh, sample, sample_size, pixel_width,
|
||||
pixel_height, elapsed_time, time_stamp, rotation,
|
||||
true /*apply_rotation*/);
|
||||
pixel_height, elapsed_time, time_stamp, rotation);
|
||||
}
|
||||
|
||||
bool WebRtcVideoFrame::Init(const CapturedFrame* frame, int dw, int dh,
|
||||
bool apply_rotation) {
|
||||
bool WebRtcVideoFrame::Init(const CapturedFrame* frame, int dw, int dh) {
|
||||
return Reset(frame->fourcc, frame->width, frame->height, dw, dh,
|
||||
static_cast<uint8*>(frame->data), frame->data_size,
|
||||
frame->pixel_width, frame->pixel_height, frame->elapsed_time,
|
||||
frame->time_stamp,
|
||||
frame->GetRotation(),
|
||||
apply_rotation);
|
||||
frame->time_stamp, frame->GetRotation());
|
||||
}
|
||||
|
||||
bool WebRtcVideoFrame::Alias(const CapturedFrame* frame,
|
||||
@ -153,7 +148,7 @@ bool WebRtcVideoFrame::Alias(const CapturedFrame* frame,
|
||||
frame->GetRotation() != webrtc::kVideoRotation_0) ||
|
||||
frame->width != dw || frame->height != dh) {
|
||||
// TODO(fbarchard): Enable aliasing of more formats.
|
||||
return Init(frame, dw, dh, apply_rotation);
|
||||
return Init(frame, dw, dh);
|
||||
} else {
|
||||
Alias(static_cast<uint8*>(frame->data), frame->data_size, frame->width,
|
||||
frame->height, frame->pixel_width, frame->pixel_height,
|
||||
@ -307,8 +302,7 @@ bool WebRtcVideoFrame::Reset(uint32 format,
|
||||
size_t pixel_height,
|
||||
int64_t elapsed_time,
|
||||
int64_t time_stamp,
|
||||
webrtc::VideoRotation rotation,
|
||||
bool apply_rotation) {
|
||||
webrtc::VideoRotation rotation) {
|
||||
if (!Validate(format, w, h, sample, sample_size)) {
|
||||
return false;
|
||||
}
|
||||
@ -325,8 +319,7 @@ bool WebRtcVideoFrame::Reset(uint32 format,
|
||||
// TODO(fbarchard): Support lazy allocation.
|
||||
int new_width = dw;
|
||||
int new_height = dh;
|
||||
// If rotated swap width, height.
|
||||
if (apply_rotation && (rotation == 90 || rotation == 270)) {
|
||||
if (rotation == 90 || rotation == 270) { // If rotated swap width, height.
|
||||
new_width = dh;
|
||||
new_height = dw;
|
||||
}
|
||||
@ -340,8 +333,7 @@ bool WebRtcVideoFrame::Reset(uint32 format,
|
||||
// Since the libyuv::ConvertToI420 will handle the rotation, so the
|
||||
// new frame's rotation should always be 0.
|
||||
Attach(video_buffer.get(), desired_size, new_width, new_height, pixel_width,
|
||||
pixel_height, elapsed_time, time_stamp,
|
||||
apply_rotation ? webrtc::kVideoRotation_0 : rotation);
|
||||
pixel_height, elapsed_time, time_stamp, webrtc::kVideoRotation_0);
|
||||
}
|
||||
|
||||
int horiz_crop = ((w - dw) / 2) & ~1;
|
||||
@ -358,9 +350,7 @@ bool WebRtcVideoFrame::Reset(uint32 format,
|
||||
int v_stride = GetVPitch();
|
||||
int r = libyuv::ConvertToI420(
|
||||
sample, sample_size, y, y_stride, u, u_stride, v, v_stride, horiz_crop,
|
||||
vert_crop, w, h, dw, idh,
|
||||
static_cast<libyuv::RotationMode>(
|
||||
apply_rotation ? rotation : webrtc::kVideoRotation_0),
|
||||
vert_crop, w, h, dw, idh, static_cast<libyuv::RotationMode>(rotation),
|
||||
format);
|
||||
if (r) {
|
||||
LOG(LS_ERROR) << "Error parsing format: " << GetFourccName(format)
|
||||
@ -417,8 +407,7 @@ bool WebRtcVideoRenderFrame::Reset(uint32 fourcc,
|
||||
size_t pixel_height,
|
||||
int64_t elapsed_time,
|
||||
int64_t time_stamp,
|
||||
webrtc::VideoRotation rotation,
|
||||
bool apply_rotation) {
|
||||
webrtc::VideoRotation rotation) {
|
||||
UNIMPLEMENTED;
|
||||
return false;
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ class WebRtcVideoFrame : public VideoFrame {
|
||||
int64_t time_stamp,
|
||||
webrtc::VideoRotation rotation);
|
||||
|
||||
bool Init(const CapturedFrame* frame, int dw, int dh, bool apply_rotation);
|
||||
bool Init(const CapturedFrame* frame, int dw, int dh);
|
||||
|
||||
void InitToEmptyBuffer(int w, int h, size_t pixel_width, size_t pixel_height,
|
||||
int64_t elapsed_time, int64_t time_stamp);
|
||||
@ -107,8 +107,7 @@ class WebRtcVideoFrame : public VideoFrame {
|
||||
size_t pixel_height,
|
||||
int64_t elapsed_time,
|
||||
int64_t time_stamp,
|
||||
webrtc::VideoRotation rotation,
|
||||
bool apply_rotation);
|
||||
webrtc::VideoRotation rotation);
|
||||
|
||||
virtual size_t GetWidth() const;
|
||||
virtual size_t GetHeight() const;
|
||||
@ -133,6 +132,9 @@ class WebRtcVideoFrame : public VideoFrame {
|
||||
virtual void SetTimeStamp(int64_t time_stamp) { time_stamp_ = time_stamp; }
|
||||
|
||||
virtual webrtc::VideoRotation GetVideoRotation() const { return rotation_; }
|
||||
virtual void SetRotation(webrtc::VideoRotation rotation) {
|
||||
rotation_ = rotation;
|
||||
}
|
||||
|
||||
virtual VideoFrame* Copy() const;
|
||||
virtual bool MakeExclusive();
|
||||
@ -192,8 +194,7 @@ class WebRtcVideoRenderFrame : public VideoFrame {
|
||||
size_t pixel_height,
|
||||
int64_t elapsed_time,
|
||||
int64_t time_stamp,
|
||||
webrtc::VideoRotation rotation,
|
||||
bool apply_rotation) OVERRIDE;
|
||||
webrtc::VideoRotation rotation) OVERRIDE;
|
||||
virtual size_t GetWidth() const OVERRIDE;
|
||||
virtual size_t GetHeight() const OVERRIDE;
|
||||
virtual const uint8* GetYPlane() const OVERRIDE;
|
||||
|
@ -33,9 +33,7 @@ class WebRtcVideoFrameTest : public VideoFrameTest<cricket::WebRtcVideoFrame> {
|
||||
WebRtcVideoFrameTest() {
|
||||
}
|
||||
|
||||
void TestInit(int cropped_width, int cropped_height,
|
||||
webrtc::VideoRotation frame_rotation,
|
||||
bool apply_rotation) {
|
||||
void TestInit(int cropped_width, int cropped_height) {
|
||||
const int frame_width = 1920;
|
||||
const int frame_height = 1080;
|
||||
|
||||
@ -46,7 +44,7 @@ class WebRtcVideoFrameTest : public VideoFrameTest<cricket::WebRtcVideoFrame> {
|
||||
captured_frame.pixel_height = 1;
|
||||
captured_frame.elapsed_time = 1234;
|
||||
captured_frame.time_stamp = 5678;
|
||||
captured_frame.rotation = frame_rotation;
|
||||
captured_frame.rotation = webrtc::kVideoRotation_0;
|
||||
captured_frame.width = frame_width;
|
||||
captured_frame.height = frame_height;
|
||||
captured_frame.data_size = (frame_width * frame_height) +
|
||||
@ -57,31 +55,18 @@ class WebRtcVideoFrameTest : public VideoFrameTest<cricket::WebRtcVideoFrame> {
|
||||
|
||||
// Create the new frame from the CapturedFrame.
|
||||
cricket::WebRtcVideoFrame frame;
|
||||
EXPECT_TRUE(
|
||||
frame.Init(&captured_frame, cropped_width, cropped_height,
|
||||
apply_rotation));
|
||||
EXPECT_TRUE(frame.Init(&captured_frame, cropped_width, cropped_height));
|
||||
|
||||
// Verify the new frame.
|
||||
EXPECT_EQ(1u, frame.GetPixelWidth());
|
||||
EXPECT_EQ(1u, frame.GetPixelHeight());
|
||||
EXPECT_EQ(1234, frame.GetElapsedTime());
|
||||
EXPECT_EQ(5678, frame.GetTimeStamp());
|
||||
if (apply_rotation)
|
||||
EXPECT_EQ(webrtc::kVideoRotation_0, frame.GetRotation());
|
||||
else
|
||||
EXPECT_EQ(frame_rotation, frame.GetRotation());
|
||||
// The size of the new frame should have been cropped to multiple of 4.
|
||||
// If |apply_rotation| and the frame rotation is 90 or 270, width and
|
||||
// height are flipped.
|
||||
if (apply_rotation && (frame_rotation == webrtc::kVideoRotation_90
|
||||
|| frame_rotation == webrtc::kVideoRotation_270)) {
|
||||
EXPECT_EQ(static_cast<size_t>(cropped_width & ~3), frame.GetHeight());
|
||||
EXPECT_EQ(static_cast<size_t>(cropped_height & ~3), frame.GetWidth() );
|
||||
} else {
|
||||
EXPECT_EQ(static_cast<size_t>(cropped_width & ~3), frame.GetWidth());
|
||||
EXPECT_EQ(static_cast<size_t>(cropped_height & ~3), frame.GetHeight());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#define TEST_WEBRTCVIDEOFRAME(X) TEST_F(WebRtcVideoFrameTest, X) { \
|
||||
@ -289,25 +274,17 @@ TEST_F(WebRtcVideoFrameTest, Alias) {
|
||||
|
||||
// Tests the Init function with different cropped size.
|
||||
TEST_F(WebRtcVideoFrameTest, InitEvenSize) {
|
||||
TestInit(640, 360, webrtc::kVideoRotation_0, true);
|
||||
TestInit(640, 360);
|
||||
}
|
||||
|
||||
TEST_F(WebRtcVideoFrameTest, InitOddWidth) {
|
||||
TestInit(601, 480, webrtc::kVideoRotation_0, true);
|
||||
TestInit(601, 480);
|
||||
}
|
||||
|
||||
TEST_F(WebRtcVideoFrameTest, InitOddHeight) {
|
||||
TestInit(360, 765, webrtc::kVideoRotation_0, true);
|
||||
TestInit(360, 765);
|
||||
}
|
||||
|
||||
TEST_F(WebRtcVideoFrameTest, InitOddWidthHeight) {
|
||||
TestInit(355, 1021, webrtc::kVideoRotation_0, true);
|
||||
}
|
||||
|
||||
TEST_F(WebRtcVideoFrameTest, InitRotated90ApplyRotation) {
|
||||
TestInit(640, 360, webrtc::kVideoRotation_90, true);
|
||||
}
|
||||
|
||||
TEST_F(WebRtcVideoFrameTest, InitRotated90DontApplyRotation) {
|
||||
TestInit(640, 360, webrtc::kVideoRotation_90, false);
|
||||
TestInit(355, 1021);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user