[Mesa-dev] [PATCH v3] st/vdpau: change the order in which filters are applied(v3)

Andy Furniss adf.lists at gmail.com
Tue Aug 16 09:50:05 UTC 2016


Christian König wrote:
> Am 12.08.2016 um 16:02 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.
>>
>> v2: apply the filters on all the surfaces (Christian)
>> v3: use get_sampler_view_planes() instead of
>>      get_sampler_view_components() and iterate over
>>      VL_MAX_SURFACES (Christian)
>>
>> Signed-off-by: Nayan Deshmukh <nayan26deshmukh at gmail.com>
>
> Reviewed and pushed, thanks for the help.

Sorry I didn't get to test this until now.

It messes up chroma when sharpen or denoise are used.

>
> Christian.
>
>> ---
>>   src/gallium/state_trackers/vdpau/mixer.c | 28
>> ++++++++++++++++++----------
>>   1 file changed, 18 insertions(+), 10 deletions(-)
>>
>> diff --git a/src/gallium/state_trackers/vdpau/mixer.c
>> b/src/gallium/state_trackers/vdpau/mixer.c
>> index cb0ef03..56b667d 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,22 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
>>         }
>>      }
>> +   surfaces = video_buffer->get_surfaces(video_buffer);
>> +   sampler_views = video_buffer->get_sampler_view_planes(video_buffer);
>> +
>> +   for(i = 0; i < VL_MAX_SURFACES; ++i) {
>> +      if(sampler_views[i] != NULL && surfaces[i] != NULL) {
>> +         if (vmixer->noise_reduction.filter)
>> +            vl_median_filter_render(vmixer->noise_reduction.filter,
>> +                                    sampler_views[i], surfaces[i]);
>> +
>> +         if (vmixer->sharpness.filter)
>> +            vl_matrix_filter_render(vmixer->sharpness.filter,
>> +                                    sampler_views[i], surfaces[i]);
>> +
>> +      }
>> +   }
>> +
>>      prect = RectToPipe(video_source_rect, &rect);
>>      if (!prect) {
>>         rect.x0 = 0;
>> @@ -394,14 +410,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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev



More information about the mesa-dev mailing list