Index: remoting/base/encoder_vp8.cc |
diff --git a/remoting/base/encoder_vp8.cc b/remoting/base/encoder_vp8.cc |
index 4aae5503b063b3f696c38a7d7b0c19e00b698ea9..eea1a5277123bd358bb075e80d2399dc1c765d0c 100644 |
--- a/remoting/base/encoder_vp8.cc |
+++ b/remoting/base/encoder_vp8.cc |
@@ -33,7 +33,7 @@ EncoderVp8::EncoderVp8() |
active_map_width_(0), |
active_map_height_(0), |
last_timestamp_(0), |
- size_(0, 0) { |
+ size_(SkISize::Make(0, 0)) { |
} |
EncoderVp8::~EncoderVp8() { |
@@ -48,7 +48,7 @@ void EncoderVp8::Destroy() { |
} |
} |
-bool EncoderVp8::Init(const gfx::Size& size) { |
+bool EncoderVp8::Init(const SkISize& size) { |
Destroy(); |
size_ = size; |
codec_.reset(new vpx_codec_ctx_t()); |
@@ -134,14 +134,18 @@ bool EncoderVp8::Init(const gfx::Size& size) { |
} |
// static |
-gfx::Rect EncoderVp8::AlignAndClipRect(const gfx::Rect& rect, |
- int width, int height) { |
- gfx::Rect screen(RoundToTwosMultiple(width), RoundToTwosMultiple(height)); |
- return screen.Intersect(AlignRect(rect)); |
+SkIRect EncoderVp8::AlignAndClipRect(const SkIRect& rect, |
+ int width, int height) { |
+ SkIRect screen(SkIRect::MakeWH(RoundToTwosMultiple(width), |
+ RoundToTwosMultiple(height))); |
+ if (!screen.intersect(AlignRect(rect))) { |
+ screen = SkIRect::MakeWH(0, 0); |
+ } |
+ return screen; |
} |
bool EncoderVp8::PrepareImage(scoped_refptr<CaptureData> capture_data, |
- std::vector<gfx::Rect>* updated_rects) { |
+ RectVector* updated_rects) { |
// Perform RGB->YUV conversion. |
if (capture_data->pixel_format() != media::VideoFrame::RGB32) { |
LOG(ERROR) << "Only RGB32 is supported"; |
@@ -162,18 +166,17 @@ bool EncoderVp8::PrepareImage(scoped_refptr<CaptureData> capture_data, |
DCHECK(updated_rects->empty()); |
for (SkRegion::Iterator r(region); !r.done(); r.next()) { |
// Align the rectangle, report it as updated. |
- SkIRect skRect = r.rect(); |
- gfx::Rect rect(skRect.fLeft, skRect.fTop, skRect.width(), skRect.height()); |
+ SkIRect rect = r.rect(); |
rect = AlignAndClipRect(rect, image_->w, image_->h); |
- if (!rect.IsEmpty()) |
+ if (!rect.isEmpty()) |
updated_rects->push_back(rect); |
ConvertRGB32ToYUVWithRect(in, |
y_out, |
u_out, |
v_out, |
- rect.x(), |
- rect.y(), |
+ rect.fLeft, |
+ rect.fTop, |
rect.width(), |
rect.height(), |
in_stride, |
@@ -183,20 +186,19 @@ bool EncoderVp8::PrepareImage(scoped_refptr<CaptureData> capture_data, |
return true; |
} |
-void EncoderVp8::PrepareActiveMap( |
- const std::vector<gfx::Rect>& updated_rects) { |
+void EncoderVp8::PrepareActiveMap(const RectVector& updated_rects) { |
// Clear active map first. |
memset(active_map_.get(), 0, active_map_width_ * active_map_height_); |
// Mark blocks at active. |
for (size_t i = 0; i < updated_rects.size(); ++i) { |
- const gfx::Rect& r = updated_rects[i]; |
+ const SkIRect& r = updated_rects[i]; |
CHECK(r.width() && r.height()); |
- int left = r.x() / kMacroBlockSize; |
- int right = (r.right() - 1) / kMacroBlockSize; |
- int top = r.y() / kMacroBlockSize; |
- int bottom = (r.bottom() - 1) / kMacroBlockSize; |
+ int left = r.fLeft / kMacroBlockSize; |
+ int right = (r.fRight - 1) / kMacroBlockSize; |
+ int top = r.fTop / kMacroBlockSize; |
+ int bottom = (r.fBottom - 1) / kMacroBlockSize; |
CHECK(right < active_map_width_); |
CHECK(bottom < active_map_height_); |
@@ -219,7 +221,7 @@ void EncoderVp8::Encode(scoped_refptr<CaptureData> capture_data, |
initialized_ = ret; |
} |
- std::vector<gfx::Rect> updated_rects; |
+ RectVector updated_rects; |
if (!PrepareImage(capture_data, &updated_rects)) { |
NOTREACHED() << "Can't image data for encoding"; |
} |
@@ -282,8 +284,8 @@ void EncoderVp8::Encode(scoped_refptr<CaptureData> capture_data, |
message->set_client_sequence_number(capture_data->client_sequence_number()); |
for (size_t i = 0; i < updated_rects.size(); ++i) { |
Rect* rect = message->add_dirty_rects(); |
- rect->set_x(updated_rects[i].x()); |
- rect->set_y(updated_rects[i].y()); |
+ rect->set_x(updated_rects[i].fLeft); |
+ rect->set_y(updated_rects[i].fTop); |
rect->set_width(updated_rects[i].width()); |
rect->set_height(updated_rects[i].height()); |
} |