On Tue, Dec 22, 2015 at 8:59 PM, Bill Spitzak <spit...@gmail.com> wrote: > > > On Tue, Dec 22, 2015 at 4:44 AM, Oded Gabbay <oded.gab...@gmail.com> wrote: >> >> On Sat, Dec 12, 2015 at 8:06 PM, <spit...@gmail.com> wrote: >> > From: Bill Spitzak <spit...@gmail.com> >> > >> > If sample is IMPULSE and reconstruct is BOX or IMPULSE the sub-pixel >> > position of the sample is not relevant, so only one subsample is needed. >> Why ? >> I mean why it is not relevant ? and why only one subsample is needed ? > > > Because all the filters for all the subsample positions are the same (a > single 1). > > Actually though, the code is indicating this is happening by returning a > width of zero. But I think that is not necessary: if the filter width is 1, > and the filters are normalized so they sum to 1, then all the filters must > be equal and be a single 1. So I think the filter_width function can return > 1 and the caller treats all values <= 1 as an indication that subsampling is > not needed. hmm, so I guess you will send a modified version of this patch then ?
> >> Oded >> > --- >> > pixman/pixman-filter.c | 12 +++++++----- >> > 1 file changed, 7 insertions(+), 5 deletions(-) >> > >> > diff --git a/pixman/pixman-filter.c b/pixman/pixman-filter.c >> > index 64981cd..7e10108 100644 >> > --- a/pixman/pixman-filter.c >> > +++ b/pixman/pixman-filter.c >> > @@ -230,6 +230,8 @@ filter_width (pixman_kernel_t reconstruct, >> > pixman_kernel_t sample, >> > double scale) >> > { >> > + if (reconstruct == PIXMAN_KERNEL_BOX && sample == >> > PIXMAN_KERNEL_IMPULSE) >> > + return 0; >> > return ceil (scale * filters[sample].width + >> > filters[reconstruct].width); >> > } >> > >> > @@ -323,13 +325,13 @@ pixman_filter_create_separable_convolution (int >> > *n_values, >> > int subsample_x, subsample_y; >> > int width, height; >> > >> > - subsample_x = (1 << subsample_bits_x); >> > - subsample_y = (1 << subsample_bits_y); >> > - >> > width = filter_width (reconstruct_x, sample_x, sx); >> > - if (width < 1) width = 1; >> > + if (width < 1) { width = 1; subsample_bits_x = 0; } >> > height = filter_width (reconstruct_y, sample_y, sy); >> > - if (height < 1) height = 1; >> > + if (height < 1) { height = 1; subsample_bits_y = 0; } >> > + >> > + subsample_x = (1 << subsample_bits_x); >> > + subsample_y = (1 << subsample_bits_y); >> > >> > *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 > > _______________________________________________ Pixman mailing list Pixman@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pixman