diff --git a/src/pixfmt_conv.c b/src/pixfmt_conv.c index b20f3aaf2..12403cb27 100644 --- a/src/pixfmt_conv.c +++ b/src/pixfmt_conv.c @@ -2365,6 +2365,7 @@ static void vc_copylineRG48toV210(unsigned char * __restrict dst, const unsigned #undef FETCH_BLOCK } + static void vc_copylineRG48toY216(unsigned char * __restrict dst, const unsigned char * __restrict src, int dst_len, int rshift, int gshift, int bshift) { enum { @@ -2392,14 +2393,14 @@ static void vc_copylineRG48toY216(unsigned char * __restrict dst, const unsigned r = *in++; g = *in++; b = *in++; - u = (u + (RGB_TO_CB(cfs, r, g, b) >> COMP_BASE) / + u = ((u + (RGB_TO_CB(cfs, r, g, b) >> COMP_BASE)) / 2) + (1 << 15); *d++ = CLAMP_LIMITED_CBCR(u, 16); y = (RGB_TO_Y(cfs, r, g, b) >> COMP_BASE) + (1 << 12); *d++ = CLAMP_LIMITED_Y(y, 16); - v = (v + (RGB_TO_CR(cfs, r, g, b) >> COMP_BASE) / + v = ((v + (RGB_TO_CR(cfs, r, g, b) >> COMP_BASE)) / 2) + (1 << 15); *d++ = CLAMP_LIMITED_CBCR(v, 16);