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