diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-11-19 09:36:07 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-11-19 09:36:07 +0100 |
commit | 464a8347742bcd1bc547d19e64c4ef7034ac5a76 (patch) | |
tree | e4a4ddfa0b8e5ad14821ad6cf34a91e894864a3b | |
parent | 47eae0e44a6c1896c42b4e23f23e389111e03696 (diff) | |
download | gstreamer-plugins-base-464a8347742bcd1bc547d19e64c4ef7034ac5a76.tar.gz |
ffmpegcolorspace: Fix shifts, we're having 10 bits per component, not 16
-rw-r--r-- | gst/ffmpegcolorspace/imgconvert.c | 221 |
1 files changed, 113 insertions, 108 deletions
diff --git a/gst/ffmpegcolorspace/imgconvert.c b/gst/ffmpegcolorspace/imgconvert.c index 64f1d34b3..1bdf2d70a 100644 --- a/gst/ffmpegcolorspace/imgconvert.c +++ b/gst/ffmpegcolorspace/imgconvert.c @@ -1880,10 +1880,10 @@ yuv420p10be_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cr = *src_cr1++; y1 = *lum1++; y2 = *lum2++; - cb = GUINT16_FROM_BE (cb) >> 6; - cr = GUINT16_FROM_BE (cr) >> 6; - y1 = GUINT16_FROM_BE (y1) >> 6; - y2 = GUINT16_FROM_BE (y2) >> 6; + cb = GUINT16_FROM_BE (cb) >> 2; + cr = GUINT16_FROM_BE (cr) >> 2; + y1 = GUINT16_FROM_BE (y1) >> 2; + y2 = GUINT16_FROM_BE (y2) >> 2; *dst_lum1++ = y1; *dst_lum2++ = y2; @@ -1892,8 +1892,8 @@ yuv420p10be_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, y1 = *lum1++; y2 = *lum2++; - y1 = GUINT16_FROM_BE (y1) >> 6; - y2 = GUINT16_FROM_BE (y2) >> 6; + y1 = GUINT16_FROM_BE (y1) >> 2; + y2 = GUINT16_FROM_BE (y2) >> 2; *dst_lum1++ = y1; *dst_lum2++ = y2; @@ -1906,10 +1906,10 @@ yuv420p10be_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cr = *src_cr1++; y1 = *lum1++; y2 = *lum2++; - cb = GUINT16_FROM_BE (cb) >> 6; - cr = GUINT16_FROM_BE (cr) >> 6; - y1 = GUINT16_FROM_BE (y1) >> 6; - y2 = GUINT16_FROM_BE (y2) >> 6; + cb = GUINT16_FROM_BE (cb) >> 2; + cr = GUINT16_FROM_BE (cr) >> 2; + y1 = GUINT16_FROM_BE (y1) >> 2; + y2 = GUINT16_FROM_BE (y2) >> 2; *dst_lum1++ = y1; *dst_lum2++ = y2; @@ -1938,29 +1938,29 @@ yuv420p10be_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = GUINT16_FROM_BE (cb) >> 6; - cr = GUINT16_FROM_BE (cr) >> 6; - y1 = GUINT16_FROM_BE (y1) >> 6; + cb = GUINT16_FROM_BE (cb) >> 2; + cr = GUINT16_FROM_BE (cr) >> 2; + y1 = GUINT16_FROM_BE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb; *dst_cr1++ = cr; y1 = *lum1++; - y1 = GUINT16_FROM_BE (y1) >> 6; + y1 = GUINT16_FROM_BE (y1) >> 2; *dst_lum1++ = y1; - *dst_cb1++ = cb >> 6; - *dst_cr1++ = cr >> 6; + *dst_cb1++ = cb >> 2; + *dst_cr1++ = cr >> 2; } /* odd width */ if (width % 2 != 0) { cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = GUINT16_FROM_BE (cb) >> 6; - cr = GUINT16_FROM_BE (cr) >> 6; - y1 = GUINT16_FROM_BE (y1) >> 6; + cb = GUINT16_FROM_BE (cb) >> 2; + cr = GUINT16_FROM_BE (cr) >> 2; + y1 = GUINT16_FROM_BE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb; *dst_cr1++ = cr; @@ -2001,10 +2001,10 @@ yuv420p10le_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cr = *src_cr1++; y1 = *lum1++; y2 = *lum2++; - cb = GUINT16_FROM_LE (cb) >> 6; - cr = GUINT16_FROM_LE (cr) >> 6; - y1 = GUINT16_FROM_LE (y1) >> 6; - y2 = GUINT16_FROM_LE (y2) >> 6; + cb = GUINT16_FROM_LE (cb) >> 2; + cr = GUINT16_FROM_LE (cr) >> 2; + y1 = GUINT16_FROM_LE (y1) >> 2; + y2 = GUINT16_FROM_LE (y2) >> 2; *dst_lum1++ = y1; *dst_lum2++ = y2; @@ -2013,8 +2013,8 @@ yuv420p10le_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, y1 = *lum1++; y2 = *lum2++; - y1 = GUINT16_FROM_LE (y1) >> 6; - y2 = GUINT16_FROM_LE (y2) >> 6; + y1 = GUINT16_FROM_LE (y1) >> 2; + y2 = GUINT16_FROM_LE (y2) >> 2; *dst_lum1++ = y1; *dst_lum2++ = y2; @@ -2027,10 +2027,10 @@ yuv420p10le_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cr = *src_cr1++; y1 = *lum1++; y2 = *lum2++; - cb = GUINT16_FROM_LE (cb) >> 6; - cr = GUINT16_FROM_LE (cr) >> 6; - y1 = GUINT16_FROM_LE (y1) >> 6; - y2 = GUINT16_FROM_LE (y2) >> 6; + cb = GUINT16_FROM_LE (cb) >> 2; + cr = GUINT16_FROM_LE (cr) >> 2; + y1 = GUINT16_FROM_LE (y1) >> 2; + y2 = GUINT16_FROM_LE (y2) >> 2; *dst_lum1++ = y1; *dst_lum2++ = y2; @@ -2059,16 +2059,16 @@ yuv420p10le_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = GUINT16_FROM_LE (cb) >> 6; - cr = GUINT16_FROM_LE (cr) >> 6; - y1 = GUINT16_FROM_LE (y1) >> 6; + cb = GUINT16_FROM_LE (cb) >> 2; + cr = GUINT16_FROM_LE (cr) >> 2; + y1 = GUINT16_FROM_LE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb; *dst_cr1++ = cr; y1 = *lum1++; - y1 = GUINT16_FROM_LE (y1) >> 6; + y1 = GUINT16_FROM_LE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb >> 6; @@ -2079,9 +2079,9 @@ yuv420p10le_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = GUINT16_FROM_LE (cb) >> 6; - cr = GUINT16_FROM_LE (cr) >> 6; - y1 = GUINT16_FROM_LE (y1) >> 6; + cb = GUINT16_FROM_LE (cb) >> 2; + cr = GUINT16_FROM_LE (cr) >> 2; + y1 = GUINT16_FROM_LE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb; *dst_cr1++ = cr; @@ -2128,10 +2128,10 @@ yuv444p_to_yuv420p10be (AVPicture * dst, const AVPicture * src, int width, cr += *src_cr2++; y1 = *lum1++; y2 = *lum1++; - cb = cb << 4; - cr = cr << 4; - y1 = y1 << 6; - y2 = y2 << 6; + cb = cb << 0; + cr = cr << 0; + y1 = y1 << 2; + y2 = y2 << 2; *dst_lum1++ = GUINT16_TO_BE (y1); *dst_lum1++ = GUINT16_TO_BE (y2); @@ -2140,8 +2140,8 @@ yuv444p_to_yuv420p10be (AVPicture * dst, const AVPicture * src, int width, y1 = *lum2++; y2 = *lum2++; - y1 = y1 << 6; - y2 = y2 << 6; + y1 = y1 << 2; + y2 = y2 << 2; *dst_lum2++ = GUINT16_TO_BE (y1); *dst_lum2++ = GUINT16_TO_BE (y2); @@ -2155,9 +2155,9 @@ yuv444p_to_yuv420p10be (AVPicture * dst, const AVPicture * src, int width, cr += *src_cr2++; y1 = *lum1++; - cb = cb << 5; - cr = cr << 5; - y1 = y1 << 6; + cb = cb << 1; + cr = cr << 1; + y1 = y1 << 2; *dst_lum1++ = GUINT16_TO_BE (y1); *dst_cb1++ = GUINT16_TO_BE (cb); @@ -2188,10 +2188,10 @@ yuv444p_to_yuv420p10be (AVPicture * dst, const AVPicture * src, int width, cr += *src_cr1++; y1 = *lum1++; y2 = *lum1++; - cb = cb << 5; - cr = cr << 5; - y1 = y1 << 6; - y2 = y2 << 6; + cb = cb << 1; + cr = cr << 1; + y1 = y1 << 2; + y2 = y2 << 2; *dst_lum1++ = GUINT16_TO_BE (y1); *dst_lum1++ = GUINT16_TO_BE (y2); @@ -2205,9 +2205,9 @@ yuv444p_to_yuv420p10be (AVPicture * dst, const AVPicture * src, int width, cr = *src_cr1++; y1 = *lum1++; - cb = cb << 6; - cr = cr << 6; - y1 = y1 << 6; + cb = cb << 2; + cr = cr << 2; + y1 = y1 << 2; *dst_lum1++ = GUINT16_TO_BE (y1); *dst_cb1++ = GUINT16_TO_BE (cb); @@ -2255,10 +2255,10 @@ yuv444p_to_yuv420p10le (AVPicture * dst, const AVPicture * src, int width, cr += *src_cr2++; y1 = *lum1++; y2 = *lum1++; - cb = cb << 4; - cr = cr << 4; - y1 = y1 << 6; - y2 = y2 << 6; + cb = cb << 0; + cr = cr << 0; + y1 = y1 << 2; + y2 = y2 << 2; *dst_lum1++ = GUINT16_TO_LE (y1); *dst_lum1++ = GUINT16_TO_LE (y2); @@ -2267,8 +2267,8 @@ yuv444p_to_yuv420p10le (AVPicture * dst, const AVPicture * src, int width, y1 = *lum2++; y2 = *lum2++; - y1 = y1 << 6; - y2 = y2 << 6; + y1 = y1 << 2; + y2 = y2 << 2; *dst_lum2++ = GUINT16_TO_LE (y1); *dst_lum2++ = GUINT16_TO_LE (y2); @@ -2282,9 +2282,9 @@ yuv444p_to_yuv420p10le (AVPicture * dst, const AVPicture * src, int width, cr += *src_cr2++; y1 = *lum1++; - cb = cb << 5; - cr = cr << 5; - y1 = y1 << 6; + cb = cb << 1; + cr = cr << 1; + y1 = y1 << 2; *dst_lum1++ = GUINT16_TO_LE (y1); *dst_cb1++ = GUINT16_TO_LE (cb); @@ -2315,10 +2315,10 @@ yuv444p_to_yuv420p10le (AVPicture * dst, const AVPicture * src, int width, cr += *src_cr1++; y1 = *lum1++; y2 = *lum1++; - cb = cb << 5; - cr = cr << 5; - y1 = y1 << 6; - y2 = y2 << 6; + cb = cb << 1; + cr = cr << 1; + y1 = y1 << 2; + y2 = y2 << 2; *dst_lum1++ = GUINT16_TO_LE (y1); *dst_lum1++ = GUINT16_TO_LE (y2); @@ -2332,9 +2332,9 @@ yuv444p_to_yuv420p10le (AVPicture * dst, const AVPicture * src, int width, cr = *src_cr1++; y1 = *lum1++; - cb = cb << 6; - cr = cr << 6; - y1 = y1 << 6; + cb = cb << 2; + cr = cr << 2; + y1 = y1 << 2; *dst_lum1++ = GUINT16_TO_LE (y1); *dst_cb1++ = GUINT16_TO_LE (cb); @@ -2371,16 +2371,16 @@ yuv422p10be_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = GUINT16_FROM_BE (cb) >> 6; - cr = GUINT16_FROM_BE (cr) >> 6; - y1 = GUINT16_FROM_BE (y1) >> 6; + cb = GUINT16_FROM_BE (cb) >> 2; + cr = GUINT16_FROM_BE (cr) >> 2; + y1 = GUINT16_FROM_BE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb; *dst_cr1++ = cr; y1 = *lum1++; - y1 = GUINT16_FROM_BE (y1) >> 6; + y1 = GUINT16_FROM_BE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb; @@ -2391,9 +2391,9 @@ yuv422p10be_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = GUINT16_FROM_BE (cb) >> 6; - cr = GUINT16_FROM_BE (cr) >> 6; - y1 = GUINT16_FROM_BE (y1) >> 6; + cb = GUINT16_FROM_BE (cb) >> 2; + cr = GUINT16_FROM_BE (cr) >> 2; + y1 = GUINT16_FROM_BE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb; @@ -2437,16 +2437,16 @@ yuv422p10le_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = GUINT16_FROM_LE (cb) >> 6; - cr = GUINT16_FROM_LE (cr) >> 6; - y1 = GUINT16_FROM_LE (y1) >> 6; + cb = GUINT16_FROM_LE (cb) >> 2; + cr = GUINT16_FROM_LE (cr) >> 2; + y1 = GUINT16_FROM_LE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb; *dst_cr1++ = cr; y1 = *lum1++; - y1 = GUINT16_FROM_LE (y1) >> 6; + y1 = GUINT16_FROM_LE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb; @@ -2457,9 +2457,9 @@ yuv422p10le_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = GUINT16_FROM_LE (cb) >> 6; - cr = GUINT16_FROM_LE (cr) >> 6; - y1 = GUINT16_FROM_LE (y1) >> 6; + cb = GUINT16_FROM_LE (cb) >> 2; + cr = GUINT16_FROM_LE (cr) >> 2; + y1 = GUINT16_FROM_LE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb; @@ -2506,10 +2506,10 @@ yuv444p_to_yuv422p10be (AVPicture * dst, const AVPicture * src, int width, cr += *src_cr1++; y1 = *lum1++; y2 = *lum1++; - cb = cb << 5; - cr = cr << 5; - y1 = y1 << 6; - y2 = y2 << 6; + cb = cb << 1; + cr = cr << 1; + y1 = y1 << 2; + y2 = y2 << 2; *dst_lum1++ = GUINT16_TO_BE (y1); *dst_lum1++ = GUINT16_TO_BE (y2); @@ -2523,9 +2523,9 @@ yuv444p_to_yuv422p10be (AVPicture * dst, const AVPicture * src, int width, cr = *src_cr1++; y1 = *lum1++; - cb = cb << 6; - cr = cr << 6; - y1 = y1 << 6; + cb = cb << 2; + cr = cr << 2; + y1 = y1 << 2; *dst_lum1++ = GUINT16_TO_BE (y1); *dst_cb1++ = GUINT16_TO_BE (cb); @@ -2572,10 +2572,10 @@ yuv444p_to_yuv422p10le (AVPicture * dst, const AVPicture * src, int width, cr += *src_cr1++; y1 = *lum1++; y2 = *lum1++; - cb = cb << 5; - cr = cr << 5; - y1 = y1 << 6; - y2 = y2 << 6; + cb = cb << 1; + cr = cr << 1; + y1 = y1 << 2; + y2 = y2 << 2; *dst_lum1++ = GUINT16_TO_LE (y1); *dst_lum1++ = GUINT16_TO_LE (y2); @@ -2589,9 +2589,9 @@ yuv444p_to_yuv422p10le (AVPicture * dst, const AVPicture * src, int width, cr = *src_cr1++; y1 = *lum1++; - cb = cb << 6; - cr = cr << 6; - y1 = y1 << 6; + cb = cb << 2; + cr = cr << 2; + y1 = y1 << 2; *dst_lum1++ = GUINT16_TO_LE (y1); *dst_cb1++ = GUINT16_TO_LE (cb); @@ -2635,9 +2635,9 @@ yuv444p10be_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = GUINT16_FROM_BE (cb) >> 6; - cr = GUINT16_FROM_BE (cr) >> 6; - y1 = GUINT16_FROM_BE (y1) >> 6; + cb = GUINT16_FROM_BE (cb) >> 2; + cr = GUINT16_FROM_BE (cr) >> 2; + y1 = GUINT16_FROM_BE (y1) >> 2; *dst_lum1++ = y1; *dst_cb1++ = cb; @@ -2681,9 +2681,14 @@ yuv444p10le_to_yuv444p (AVPicture * dst, const AVPicture * src, int width, cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = GUINT16_FROM_LE (cb) >> 6; - cr = GUINT16_FROM_LE (cr) >> 6; - y1 = GUINT16_FROM_LE (y1) >> 6; + + cb = GUINT16_FROM_LE (cb); + cr = GUINT16_FROM_LE (cr); + y1 = GUINT16_FROM_LE (y1); + + y1 >>= 2; + cb >>= 2; + cr >>= 2; *dst_lum1++ = y1; *dst_cb1++ = cb; @@ -2727,9 +2732,9 @@ yuv444p_to_yuv444p10be (AVPicture * dst, const AVPicture * src, int width, cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = cb << 6; - cr = cr << 6; - y1 = y1 << 6; + cb = cb << 2; + cr = cr << 2; + y1 = y1 << 2; *dst_lum1++ = GUINT16_TO_BE (y1); *dst_cb1++ = GUINT16_TO_BE (cb); @@ -2773,9 +2778,9 @@ yuv444p_to_yuv444p10le (AVPicture * dst, const AVPicture * src, int width, cb = *src_cb1++; cr = *src_cr1++; y1 = *lum1++; - cb = cb << 6; - cr = cr << 6; - y1 = y1 << 6; + cb = cb << 2; + cr = cr << 2; + y1 = y1 << 2; *dst_lum1++ = GUINT16_TO_LE (y1); *dst_cb1++ = GUINT16_TO_LE (cb); |