On Fri, Apr 27, 2018 at 4:47 PM, Jerome Borsboom
<[email protected]> wrote:
> In the put_no_rnd_pixels functions, the psubusb instruction subtracts one
> from each
> unsigned byte to correct for the rouding that the PAVGB instruction performs.
> The psubusb
> instruction, however, uses saturation when the value does not fit in the
> operand type,
> i.e. an unsigned byte. In this particular case, this means that when the
> value of a pixel
> is 0, the psubusb instruction will return 0 instead of -1 as this value does
> not fit in
> an unsigned byte and is saturated to 0. The result is that the interpolated
> value is not
> corrected for the rounding that PAVGB performs and that the result will be
> off by one.
Looks correct. You could put it in a macro though instead of
duplicating the code, e.g.
%macro PAVGB_NO_RND 4 ; dst/src1, src2, tmp, pb_1
pxor %3, %1, %2
pand %3, %4
PAVGB %1, %2
psubb %1, %3
%endmacro
_______________________________________________
ffmpeg-devel mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel