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

Christian König christian.koenig at amd.com
Fri Aug 19 12:27:33 UTC 2016


Hi Nayan,

double check the width/height of the surface and also how many you got 
with a debugger.

Actually thinking more about it it could be that top/bottom fields are 
separated and so you got width&height/2 and width/2&height/4 compared to 
the video mixer.

Maybe try your idea instead of caching the initialized filters with the 
different sizes.

Regards,
Christian.

Am 18.08.2016 um 18:58 schrieb Nayan Deshmukh:
> Hi Christian,
>
> I tried using 3 instances of the filter with original height & width,
> height/2 & width and height/2 and width/2.
> I am applying the 3 filters by checking the width and height of
> surfaces respectively.
>
> The chroma artifacts are still present, different from the initial
> ones. Any suggestion for the fixup?
> I tried debugging, but I think I am missing something.
>
> Regards,
> Nayan.
>
> On Wed, Aug 17, 2016 at 2:59 PM, Andy Furniss <adf.lists at gmail.com> wrote:
>> Christian König wrote:
>>> Top and Bottom field are separated in this representation.
>>>
>>> So you got a maximum of 3 planes multiplied by two fields.
>>
>> Ahh, thanks.
>>
>>
>>> Regards,
>>> Christian.
>>>
>>> Am 17.08.2016 um 11:11 schrieb Andy Furniss:
>>>> Nayan Deshmukh wrote:
>>>>
>>>>> Sorry for the misleading language. What I meant was that the filter
>>>>> should only
>>>>> be applied to first resource i.e. use only first sampler_view and
>>>>> surface. As you
>>>>> replaced i by 0 the filter gets applied multiple times. I tried doing
>>>>> that and I am
>>>>> experiencing same problems i.e. artifacts with positive sharpen.
>>>>>
>>>>> So can you please it try it again by replacing VL_MAX_SURFACES with 1
>>>>> in the
>>>>> for loop. It should probably fix the problems.
>>>>
>>>> Possibly a stupid question, because I don't know how this stuff works,
>>>> but why does it loop 6 times per frame rather than 3?
>>>>
>>>> I mean as seen if I put a printf as below.
>>>>
>>>>>>>>>> +   for(i = 0; i < VL_MAX_SURFACES; ++i) {
>>>>>>>>>> +      if(sampler_views[i] != NULL && surfaces[i] != NULL) {
>>>>                   fprintf(stderr,"ADF: i = %d\n", i);
>>>>>>>>>> +         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]);
>>>>
>>>



More information about the mesa-dev mailing list