diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2012-05-29 12:15:47 -0400 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2012-05-29 12:15:47 -0400 |
commit | 053be42a4ed4910e5d1f4c89c94a8d04da4842b9 (patch) | |
tree | bb0546b0e6a80643c93dc2eaaba7be2b66919ab0 /src/screenshooter.c | |
parent | db0623a5f054324b27aa9cf40474aa9f283e6723 (diff) | |
download | weston-053be42a4ed4910e5d1f4c89c94a8d04da4842b9.tar.gz |
wcap: Compute per-component deltas
Diffstat (limited to 'src/screenshooter.c')
-rw-r--r-- | src/screenshooter.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/screenshooter.c b/src/screenshooter.c index da06ae3a..246796eb 100644 --- a/src/screenshooter.c +++ b/src/screenshooter.c @@ -240,6 +240,18 @@ output_run(uint32_t *p, uint32_t delta, int run) return p; } +static uint32_t +component_delta(uint32_t next, uint32_t prev) +{ + unsigned char dr, dg, db; + + dr = (next >> 16) - (prev >> 16); + dg = (next >> 8) - (prev >> 8); + db = (next >> 0) - (prev >> 0); + + return (dr << 16) | (dg << 8) | (db << 0); +} + static void weston_recorder_frame_notify(struct wl_listener *listener, void *data) { @@ -295,7 +307,7 @@ weston_recorder_frame_notify(struct wl_listener *listener, void *data) stride * (r[i].y2 - j - 1) + r[i].x1; for (k = 0; k < width; k++) { next = *s++; - delta = (next - *d) & 0x00ffffff; + delta = component_delta(next, *d); *d++ = next; if (run == 0 || delta == prev) { run++; |