[PATCH] screenshooter: correct output ordering of screencast recording when Y-flip is off
Giulio Camuffo
giuliocamuffo at gmail.com
Sun Oct 4 07:39:43 PDT 2015
2015-07-07 13:06 GMT+03:00 Tomohito Esaki <etom at igel.co.jp>:
> The screenshooter encoder wrote the output from either top-to-bottom or
> bottom-to-top, depending on the Y-flip setting, but wcap-decode only
> decodes from bottom-to-top. Make the encoder always output from
> bottom-to-top, to match the decoder, and flip the input (source)
> according to the Y-flip setting.
I tried removing the WESTON_CAP_CAPTURE_YFLIP cap in the gl-renderer
and manually flipping the image after the glReadPixels and indeed the
output of wcap-decode was inverted. This patch fixes the issue and
looks good to me.
Reviewed-by: Giulio Camuffo <giuliocamuffo at gmail.com>
>
> Signed-off-by: Tomohito Esaki <etom at igel.co.jp>
> ---
> src/screenshooter.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/screenshooter.c b/src/screenshooter.c
> index b7b8dce..6dae12f 100644
> --- a/src/screenshooter.c
> +++ b/src/screenshooter.c
> @@ -417,14 +417,14 @@ weston_recorder_frame_notify(struct wl_listener *listener, void *data)
> compositor->read_format, recorder->rect,
> r[i].x1, y_orig, width, height);
>
> - s = recorder->rect;
> p = outbuf;
> run = prev = 0; /* quiet gcc */
> for (j = 0; j < height; j++) {
> if (do_yflip)
> - y_orig = r[i].y2 - j - 1;
> + s = recorder->rect + width * j;
> else
> - y_orig = r[i].y1 + j;
> + s = recorder->rect + width * (height - j - 1);
> + y_orig = r[i].y2 - j - 1;
> d = recorder->frame + stride * y_orig + r[i].x1;
>
> for (k = 0; k < width; k++) {
> --
> 1.8.0
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list