• Nigel Tao's avatar
    image/color: tweak the YCbCr to RGBA conversion formula. · c2023a07
    Nigel Tao authored
    Before, calling the RGBA method of YCbCr color would return red values
    in the range [0x0080, 0xff80]. After, the range is [0x0000, 0xffff] and
    is consistent with what Gray colors' RGBA method returns. In particular,
    pure black, pure white and every Gray color in between are now exactly
    representable as a YCbCr color.
    
    This fixes a regression from Go 1.4 (where YCbCr{0x00, 0x80, 0x80} was
    no longer equivalent to pure black), introduced by golang.org/cl/8073 in
    the Go 1.5 development cycle. In Go 1.4, the +0x80 rounding was not
    noticable when Cb == 0x80 && Cr == 0x80, because the YCbCr to RGBA
    conversion truncated to 8 bits before multiplying by 0x101, so the
    output range was [0x0000, 0xffff].
    
    The TestYCbCrRoundtrip fuzzy-match tolerance grows from 1 to 2 because
    the YCbCr to RGB conversion now maps to an ever-so-slightly larger
    range, along with the usual imprecision of accumulating rounding errors.
    
    Also s/int/int32/ in ycbcr.go. The conversion shouldn't overflow either
    way, as int is always at least 32 bits, but it does make it clearer that
    the computation doesn't depend on sizeof(int).
    
    Fixes #11691
    
    Change-Id: I538ca0adf7e040fa96c5bc8b3aef4454535126b9
    Reviewed-on: https://go-review.googlesource.com/12220Reviewed-by: 's avatarRob Pike <r@golang.org>
    c2023a07
Name
Last commit
Last update
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...