<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 22, 2015 at 4:21 AM, Oded Gabbay <span dir="ltr"><<a href="mailto:oded.gabbay@gmail.com" target="_blank">oded.gabbay@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Sat, Dec 12, 2015 at 8:06 PM,  <<a href="mailto:spitzak@gmail.com">spitzak@gmail.com</a>> wrote:<br>
> From: Bill Spitzak <<a href="mailto:spitzak@gmail.com">spitzak@gmail.com</a>><br>
><br>
> With the other patch to put error on the center pixel, this produces<br>
> the same result as BOX.IMPULSE filter.<br>
> ---<br>
>  pixman/pixman-filter.c | 2 ++<br>
>  1 file changed, 2 insertions(+)<br>
><br>
> diff --git a/pixman/pixman-filter.c b/pixman/pixman-filter.c<br>
> index 00126cd..64981cd 100644<br>
> --- a/pixman/pixman-filter.c<br>
> +++ b/pixman/pixman-filter.c<br>
> @@ -327,7 +327,9 @@ pixman_filter_create_separable_convolution (int             *n_values,<br>
>      subsample_y = (1 << subsample_bits_y);<br>
><br>
>      width = filter_width (reconstruct_x, sample_x, sx);<br>
> +    if (width < 1) width = 1;<br>
<br>
</span>Please put the assignment in a new line<br></blockquote><div><br></div><div>Okay I will get these. <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
>      height = filter_width (reconstruct_y, sample_y, sy);<br>
> +    if (height < 1) height = 1;<br>
<br>
</span>Same comment<br>
<span class=""><br>
><br>
>      *n_values = 4 + width * subsample_x + height * subsample_y;<br>
><br>
> --<br>
> 1.9.1<br>
><br>
</span>> _______________________________________________<br>
> Pixman mailing list<br>
> <a href="mailto:Pixman@lists.freedesktop.org">Pixman@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/pixman" rel="noreferrer" target="_blank">http://lists.freedesktop.org/mailman/listinfo/pixman</a><br>
<br>
I have the same request as with the other patch (center pixel). I can<br>
see the visual difference - the picture in scale demo doesn't<br>
disappear when reconstruct & sample are IMPLUSE - but I would like<br>
some additional explanation to better understand.<br>
<br>
In which cases width/height are smaller than 1 ? How does that happen<br>
? How this patch solves it ?<br></blockquote><div><br></div><div>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?).<br><br></div><div>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).<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
       Oded<br>
</font></span></blockquote></div><br></div></div>