summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2012-11-19 09:36:07 +0100
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-11-19 09:36:07 +0100
commit464a8347742bcd1bc547d19e64c4ef7034ac5a76 (patch)
treee4a4ddfa0b8e5ad14821ad6cf34a91e894864a3b
parent47eae0e44a6c1896c42b4e23f23e389111e03696 (diff)
downloadgstreamer-plugins-base-464a8347742bcd1bc547d19e64c4ef7034ac5a76.tar.gz
ffmpegcolorspace: Fix shifts, we're having 10 bits per component, not 16
-rw-r--r--gst/ffmpegcolorspace/imgconvert.c221
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);