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....@amd.com>

Reviewed-by: Christian König <christian.koe...@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 */


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to