Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(685)

Unified Diff: remoting/base/decoder_vp8.cc

Issue 9146030: Revert 118790 - Compile error due to missing operator== on SkRegion (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/base/decoder_vp8.h ('k') | remoting/client/frame_consumer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/base/decoder_vp8.cc
===================================================================
--- remoting/base/decoder_vp8.cc (revision 118791)
+++ remoting/base/decoder_vp8.cc (working copy)
@@ -92,22 +92,22 @@
}
last_image_ = image;
- SkRegion region;
+ RectVector rects;
+ rects.reserve(packet->dirty_rects_size());
for (int i = 0; i < packet->dirty_rects_size(); ++i) {
Rect remoting_rect = packet->dirty_rects(i);
- SkIRect rect = SkIRect::MakeXYWH(remoting_rect.x(),
- remoting_rect.y(),
- remoting_rect.width(),
- remoting_rect.height());
- region.op(rect, SkRegion::kUnion_Op);
+ rects.push_back(SkIRect::MakeXYWH(remoting_rect.x(),
+ remoting_rect.y(),
+ remoting_rect.width(),
+ remoting_rect.height()));
}
- RefreshRegion(region);
+ RefreshRects(rects);
return DECODE_DONE;
}
-void DecoderVp8::GetUpdatedRegion(SkRegion* region) {
- region->swap(updated_region_);
+void DecoderVp8::GetUpdatedRects(RectVector* rects) {
+ rects->swap(updated_rects_);
}
void DecoderVp8::Reset() {
@@ -131,7 +131,7 @@
clip_rect_ = clip_rect;
}
-void DecoderVp8::RefreshRegion(const SkRegion& region) {
+void DecoderVp8::RefreshRects(const RectVector& rects) {
// TODO(wez): Fix the rest of the decode pipeline not to assume the frame
// size is the host dimensions, since it's not when scaling. If the host
// gets smaller, then the output size will be too big and we'll overrun the
@@ -142,11 +142,10 @@
if (output_size_.height() > static_cast<int>(frame_->height()))
output_size_.set(output_size_.width(), frame_->height());
- if (!DoScaling()) {
- ConvertRegion(region, &updated_region_);
- } else {
- ScaleAndConvertRegion(region, &updated_region_);
- }
+ if (!DoScaling())
+ ConvertRects(rects, &updated_rects_);
+ else
+ ScaleAndConvertRects(rects, &updated_rects_);
}
bool DecoderVp8::DoScaling() const {
@@ -154,12 +153,12 @@
return !output_size_.equals(last_image_->d_w, last_image_->d_h);
}
-void DecoderVp8::ConvertRegion(const SkRegion& input_region,
- SkRegion* output_region) {
+void DecoderVp8::ConvertRects(const RectVector& input_rects,
+ RectVector* output_rects) {
if (!last_image_)
return;
- output_region->setEmpty();
+ output_rects->clear();
// Clip based on both the output dimensions and Pepper clip rect.
// ConvertYUVToRGB32WithRect() requires even X and Y coordinates, so we align
@@ -172,11 +171,12 @@
uint8* output_rgb_buf = frame_->data(media::VideoFrame::kRGBPlane);
const int output_stride = frame_->stride(media::VideoFrame::kRGBPlane);
+ output_rects->reserve(input_rects.size());
- for (SkRegion::Iterator i(input_region); !i.done(); i.next()) {
+ for (size_t i = 0; i < input_rects.size(); ++i) {
// Align the rectangle so the top-left coordinates are even, for
// ConvertYUVToRGB32WithRect().
- SkIRect dest_rect(AlignRect(i.rect()));
+ SkIRect dest_rect(AlignRect(input_rects[i]));
// Clip the rectangle, preserving alignment since |clip_rect| is aligned.
if (!dest_rect.intersect(clip_rect))
@@ -191,19 +191,19 @@
last_image_->stride[1],
output_stride);
- output_region->op(dest_rect, SkRegion::kUnion_Op);
+ output_rects->push_back(dest_rect);
}
}
-void DecoderVp8::ScaleAndConvertRegion(const SkRegion& input_region,
- SkRegion* output_region) {
+void DecoderVp8::ScaleAndConvertRects(const RectVector& input_rects,
+ RectVector* output_rects) {
if (!last_image_)
return;
DCHECK(output_size_.width() <= static_cast<int>(frame_->width()));
DCHECK(output_size_.height() <= static_cast<int>(frame_->height()));
- output_region->setEmpty();
+ output_rects->clear();
// Clip based on both the output dimensions and Pepper clip rect.
SkIRect clip_rect = clip_rect_;
@@ -214,9 +214,11 @@
uint8* output_rgb_buf = frame_->data(media::VideoFrame::kRGBPlane);
const int output_stride = frame_->stride(media::VideoFrame::kRGBPlane);
- for (SkRegion::Iterator i(input_region); !i.done(); i.next()) {
+ output_rects->reserve(input_rects.size());
+
+ for (size_t i = 0; i < input_rects.size(); ++i) {
// Determine the scaled area affected by this rectangle changing.
- SkIRect output_rect = ScaleRect(i.rect(), image_size, output_size_);
+ SkIRect output_rect = ScaleRect(input_rects[i], image_size, output_size_);
if (!output_rect.intersect(clip_rect))
continue;
@@ -236,8 +238,7 @@
last_image_->stride[0],
last_image_->stride[1],
output_stride);
-
- output_region->op(output_rect, SkRegion::kUnion_Op);
+ output_rects->push_back(output_rect);
}
}
« no previous file with comments | « remoting/base/decoder_vp8.h ('k') | remoting/client/frame_consumer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698