Re: [Pixman] [PATCH 11/15] pixman-filter: made IMPULSE.IMPULSE not produce a zero-wide filter

2015-12-22 Thread Bill Spitzak
On Tue, Dec 22, 2015 at 4:21 AM, Oded Gabbay  wrote:

> On Sat, Dec 12, 2015 at 8:06 PM,   wrote:
> > From: Bill Spitzak 
> >
> > With the other patch to put error on the center pixel, this produces
> > the same result as BOX.IMPULSE filter.
> > ---
> >  pixman/pixman-filter.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/pixman/pixman-filter.c b/pixman/pixman-filter.c
> > index 00126cd..64981cd 100644
> > --- a/pixman/pixman-filter.c
> > +++ b/pixman/pixman-filter.c
> > @@ -327,7 +327,9 @@ pixman_filter_create_separable_convolution (int
>*n_values,
> >  subsample_y = (1 << subsample_bits_y);
> >
> >  width = filter_width (reconstruct_x, sample_x, sx);
> > +if (width < 1) width = 1;
>
> Please put the assignment in a new line
>

Okay I will get these.

>
> >  height = filter_width (reconstruct_y, sample_y, sy);
> > +if (height < 1) height = 1;
>
> Same comment
>
> >
> >  *n_values = 4 + width * subsample_x + height * subsample_y;
> >
> > --
> > 1.9.1
> >
> > ___
> > Pixman mailing list
> > Pixman@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/pixman
>
> I have the same request as with the other patch (center pixel). I can
> see the visual difference - the picture in scale demo doesn't
> disappear when reconstruct & sample are IMPLUSE - but I would like
> some additional explanation to better understand.
>
> In which cases width/height are smaller than 1 ? How does that happen
> ? How this patch solves it ?
>

The impulse filters have a width of zero (if you could actually plot them
they are an infinitely thin and infinitely tall line with an area of 1.0).
Once convolved with any other filter you will get a filter of width 1, with
a value equal to the other filter at the center of the impulse filter. The
convolving code detects the impulse filters and calculates this directly
(it is possible the impulse filter calculating function, which returns 1.0,
is not necessary as it is never called?).

The proper result of impulse+impulse is 1.0 when the subsample is in the
pixel center and 0.0 otherwise. But I don't think the result is useful (it
means there are dots where the pixel centers line up). Also it would
require the code to handle un-normalized filters which would complicate it
a good deal. So I just made it produce the same as BOX.IMPULSE (ie nearest
pixel).


>
>Oded
>
___
Pixman mailing list
Pixman@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pixman


Re: [Pixman] [PATCH 11/15] pixman-filter: made IMPULSE.IMPULSE not produce a zero-wide filter

2015-12-22 Thread Oded Gabbay
On Sat, Dec 12, 2015 at 8:06 PM,   wrote:
> From: Bill Spitzak 
>
> With the other patch to put error on the center pixel, this produces
> the same result as BOX.IMPULSE filter.
> ---
>  pixman/pixman-filter.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/pixman/pixman-filter.c b/pixman/pixman-filter.c
> index 00126cd..64981cd 100644
> --- a/pixman/pixman-filter.c
> +++ b/pixman/pixman-filter.c
> @@ -327,7 +327,9 @@ pixman_filter_create_separable_convolution (int   
>   *n_values,
>  subsample_y = (1 << subsample_bits_y);
>
>  width = filter_width (reconstruct_x, sample_x, sx);
> +if (width < 1) width = 1;

Please put the assignment in a new line

>  height = filter_width (reconstruct_y, sample_y, sy);
> +if (height < 1) height = 1;

Same comment

>
>  *n_values = 4 + width * subsample_x + height * subsample_y;
>
> --
> 1.9.1
>
> ___
> Pixman mailing list
> Pixman@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/pixman

I have the same request as with the other patch (center pixel). I can
see the visual difference - the picture in scale demo doesn't
disappear when reconstruct & sample are IMPLUSE - but I would like
some additional explanation to better understand.

In which cases width/height are smaller than 1 ? How does that happen
? How this patch solves it ?

   Oded
___
Pixman mailing list
Pixman@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pixman


[Pixman] [PATCH 11/15] pixman-filter: made IMPULSE.IMPULSE not produce a zero-wide filter

2015-12-12 Thread spitzak
From: Bill Spitzak 

With the other patch to put error on the center pixel, this produces
the same result as BOX.IMPULSE filter.
---
 pixman/pixman-filter.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pixman/pixman-filter.c b/pixman/pixman-filter.c
index 00126cd..64981cd 100644
--- a/pixman/pixman-filter.c
+++ b/pixman/pixman-filter.c
@@ -327,7 +327,9 @@ pixman_filter_create_separable_convolution (int 
*n_values,
 subsample_y = (1 << subsample_bits_y);
 
 width = filter_width (reconstruct_x, sample_x, sx);
+if (width < 1) width = 1;
 height = filter_width (reconstruct_y, sample_y, sy);
+if (height < 1) height = 1;
 
 *n_values = 4 + width * subsample_x + height * subsample_y;
 
-- 
1.9.1

___
Pixman mailing list
Pixman@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pixman