[Mesa-dev] [PATCH 1/6] vl/compositor: make a helper function for YUV deinterlacing
Christian König
deathsimple at vodafone.de
Tue Aug 29 09:42:09 UTC 2017
Am 29.08.2017 um 05:23 schrieb Leo Liu:
> The similar function is in OMX, and only used by OMX. Now have it
> to vl/compositor for other state tracker to use later.
>
> Signed-off-by: Leo Liu <leo.liu at amd.com>
Reviewed-by: Christian König <christian.koenig at amd.com> for the entire
series.
> ---
> src/gallium/auxiliary/vl/vl_compositor.c | 31 +++++++++++++++++++++++++++++++
> src/gallium/auxiliary/vl/vl_compositor.h | 9 +++++++++
> 2 files changed, 40 insertions(+)
>
> diff --git a/src/gallium/auxiliary/vl/vl_compositor.c b/src/gallium/auxiliary/vl/vl_compositor.c
> index a79bf11264..6963a56507 100644
> --- a/src/gallium/auxiliary/vl/vl_compositor.c
> +++ b/src/gallium/auxiliary/vl/vl_compositor.c
> @@ -1215,6 +1215,37 @@ vl_compositor_render(struct vl_compositor_state *s,
> draw_layers(c, s, dirty_area);
> }
>
> +void
> +vl_compositor_yuv_deint(struct vl_compositor_state *s,
> + struct vl_compositor *c,
> + struct pipe_video_buffer *src,
> + struct pipe_video_buffer *dst)
> +{
> + struct pipe_surface **dst_surfaces;
> + struct u_rect dst_rect;
> +
> + dst_surfaces = dst->get_surfaces(dst);
> + vl_compositor_clear_layers(s);
> +
> + dst_rect.x0 = 0;
> + dst_rect.x1 = src->width;
> + dst_rect.y0 = 0;
> + dst_rect.y1 = src->height;
> +
> + vl_compositor_set_yuv_layer(s, c, 0, src, NULL, NULL, true);
> + vl_compositor_set_layer_dst_area(s, 0, &dst_rect);
> + vl_compositor_render(s, c, dst_surfaces[0], NULL, false);
> +
> + dst_rect.x1 /= 2;
> + dst_rect.y1 /= 2;
> +
> + vl_compositor_set_yuv_layer(s, c, 0, src, NULL, NULL, false);
> + vl_compositor_set_layer_dst_area(s, 0, &dst_rect);
> + vl_compositor_render(s, c, dst_surfaces[1], NULL, false);
> +
> + s->pipe->flush(s->pipe, NULL, 0);
> +}
> +
> bool
> vl_compositor_init(struct vl_compositor *c, struct pipe_context *pipe)
> {
> diff --git a/src/gallium/auxiliary/vl/vl_compositor.h b/src/gallium/auxiliary/vl/vl_compositor.h
> index 535abb75cd..88a54efdb8 100644
> --- a/src/gallium/auxiliary/vl/vl_compositor.h
> +++ b/src/gallium/auxiliary/vl/vl_compositor.h
> @@ -276,4 +276,13 @@ vl_compositor_cleanup(struct vl_compositor *compositor);
> void
> vl_compositor_cleanup_state(struct vl_compositor_state *state);
>
> +/**
> + * deinterlace yuv buffer
> + */
> +void
> +vl_compositor_yuv_deint(struct vl_compositor_state *state,
> + struct vl_compositor *compositor,
> + struct pipe_video_buffer *src,
> + struct pipe_video_buffer *dst);
> +
> #endif /* vl_compositor_h */
More information about the mesa-dev
mailing list