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

Unified Diff: webrtc/modules/desktop_capture/differ.h

Issue 2202443002: [WebRTC] Add ScreenCapturerDifferWrapper to share Differ across ScreenCapturers (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 4 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
Index: webrtc/modules/desktop_capture/differ.h
diff --git a/webrtc/modules/desktop_capture/differ.h b/webrtc/modules/desktop_capture/differ.h
index 9ab059bcaa24cdb8491b86791e954423dcd95cc6..dca38676fe831ba5a64445d685ef76ebbb8a9a9a 100644
--- a/webrtc/modules/desktop_capture/differ.h
+++ b/webrtc/modules/desktop_capture/differ.h
@@ -15,10 +15,13 @@
#include <vector>
#include "webrtc/base/constructormagic.h"
-#include "webrtc/modules/desktop_capture/desktop_region.h"
+#include "webrtc/typedefs.h"
namespace webrtc {
+class DesktopRect;
+class DesktopRegion;
+
// TODO(sergeyu): Simplify differ now that we are working with DesktopRegion.
// diff_info_ should no longer be needed, as we can put our data directly into
// the region that we are calculating.
@@ -37,22 +40,33 @@ class Differ {
int bytes_per_pixel() { return bytes_per_pixel_; }
int bytes_per_row() { return bytes_per_row_; }
- // Given the previous and current screen buffer, calculate the dirty region
+ // Given the previous and current screen buffer, calculates the dirty region
Jamie 2016/08/03 23:52:25 FWIW, either calculate or calculates would be appr
Hzj_jie 2016/08/04 02:28:07 Done.
// that encloses all of the changed pixels in the new screen.
- void CalcDirtyRegion(const uint8_t* prev_buffer, const uint8_t* curr_buffer,
+ void CalcDirtyRegion(const uint8_t* prev_buffer,
+ const uint8_t* curr_buffer,
DesktopRegion* region);
+ // Given the previous and current screen buffer, and a superset of dirty
+ // region as hint, calculates the dirty region that encloses all the changed
+ // pixels in the new screen.
+ void CalcDirtyRegionWithHints(const uint8_t* prev_buffer,
+ const uint8_t* curr_buffer,
+ const DesktopRegion& hints,
+ DesktopRegion* region);
+
private:
// Allow tests to access our private parts.
friend class DifferTest;
- // Identify all of the blocks that contain changed pixels.
- void MarkDirtyBlocks(const uint8_t* prev_buffer, const uint8_t* curr_buffer);
+ // Identify all of the blocks that contain changed pixels in the |rect|.
+ void MarkDirtyBlocks(const uint8_t* prev_buffer,
+ const uint8_t* curr_buffer,
+ const DesktopRect& rect);
// After the dirty blocks have been identified, this routine merges adjacent
// blocks into a region.
// The goal is to minimize the region that covers the dirty blocks.
- void MergeBlocks(DesktopRegion* region);
+ void MergeBlocks(DesktopRegion* region) const;
Jamie 2016/08/03 23:52:25 Optional: I'm not sure it's worth adding these con
Hzj_jie 2016/08/04 02:28:07 IMO, a const indeed tells the reader, this functio
// Checks whether the upper-left portions of the buffers are equal. The size
// of the portion to check is specified by the |width| and |height| values.
@@ -64,23 +78,23 @@ class Differ {
int width, int height);
// Dimensions of screen.
- int width_;
- int height_;
+ const int width_;
+ const int height_;
// Number of bytes for each pixel in source and dest bitmap.
// (Yes, they must match.)
- int bytes_per_pixel_;
+ const int bytes_per_pixel_;
// Number of bytes in each row of the image (AKA: stride).
- int bytes_per_row_;
-
- // Diff information for each block in the image.
- std::unique_ptr<bool[]> diff_info_;
+ const int bytes_per_row_;
// Dimensions and total size of diff info array.
- int diff_info_width_;
- int diff_info_height_;
- int diff_info_size_;
+ const int diff_info_width_;
+ const int diff_info_height_;
+ const int diff_info_size_;
+
+ // Diff information for each block in the image.
+ const std::unique_ptr<bool[]> diff_info_;
RTC_DISALLOW_COPY_AND_ASSIGN(Differ);
};

Powered by Google App Engine
This is Rietveld 408576698