On Tue, Dec 22, 2015 at 4:21 AM, Oded Gabbay <[email protected]> wrote:
> On Sat, Dec 12, 2015 at 8:06 PM, <[email protected]> wrote: > > From: Bill Spitzak <[email protected]> > > > > 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 > > [email protected] > > 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 [email protected] http://lists.freedesktop.org/mailman/listinfo/pixman
