Am 11.08.2016 um 16:27 schrieb Nayan Deshmukh:
Apply the median and matrix filter before the compostioning
we apply the deinterlacing first to avoid the extra overhead
in processing the past and the future surfaces in deinterlacing.

Signed-off-by: Nayan Deshmukh <nayan26deshm...@gmail.com>
---
  src/gallium/state_trackers/vdpau/mixer.c | 23 +++++++++++++----------
  1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/gallium/state_trackers/vdpau/mixer.c 
b/src/gallium/state_trackers/vdpau/mixer.c
index cb0ef03..89453d1 100644
--- a/src/gallium/state_trackers/vdpau/mixer.c
+++ b/src/gallium/state_trackers/vdpau/mixer.c
@@ -240,8 +240,8 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
     struct u_rect rect, clip, *prect, dirty_area;
     unsigned i, layer = 0;
     struct pipe_video_buffer *video_buffer;
-   struct pipe_sampler_view *sampler_view;
-   struct pipe_surface *surface;
+   struct pipe_sampler_view *sampler_view, **sampler_views;
+   struct pipe_surface *surface, **surfaces;
vlVdpVideoMixer *vmixer;
     vlVdpSurface *surf;
@@ -325,6 +325,17 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
        }
     }
+ surfaces = video_buffer->get_surfaces(video_buffer);
+   sampler_views = video_buffer->get_sampler_view_components(video_buffer);
+
+   if (vmixer->noise_reduction.filter)
+      vl_median_filter_render(vmixer->noise_reduction.filter,
+                              sampler_views[0], surfaces[0]);
+
+   if (vmixer->sharpness.filter)
+      vl_matrix_filter_render(vmixer->sharpness.filter,
+                              sampler_views[0], surfaces[0]);
+

You need to apply the filter to all surfaces, not just the first one.

E.g. you need to loop from 0 to VL_MAX_SURFACES and apply the filter to each surface which is present.

Regards,
Christian.

     prect = RectToPipe(video_source_rect, &rect);
     if (!prect) {
        rect.x0 = 0;
@@ -394,14 +405,6 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
     else {
        vl_compositor_render(&vmixer->cstate, compositor, surface, &dirty_area, 
true);
- if (vmixer->noise_reduction.filter)
-         vl_median_filter_render(vmixer->noise_reduction.filter,
-                                 sampler_view, surface);
-
-      if (vmixer->sharpness.filter)
-         vl_matrix_filter_render(vmixer->sharpness.filter,
-                                 sampler_view, surface);
-
        if (vmixer->bicubic.filter)
           vl_bicubic_filter_render(vmixer->bicubic.filter,
                                   sampler_view, dst->surface,


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

Reply via email to