Browse code

swscale: Do not loose precission on yuv values after rgb->yuv.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>

Michael Niedermayer authored on 2011/05/26 22:32:33
Showing 17 changed files
... ...
@@ -1045,7 +1045,7 @@ static void fillPlane(uint8_t* plane, int stride, int width, int height, int y,
1045 1045
     }
1046 1046
 }
1047 1047
 
1048
-static inline void rgb48ToY(uint8_t *dst, const uint8_t *src, long width,
1048
+static inline void rgb48ToY(int16_t *dst, const uint8_t *src, long width,
1049 1049
                             uint32_t *unused)
1050 1050
 {
1051 1051
     int i;
... ...
@@ -1054,11 +1054,11 @@ static inline void rgb48ToY(uint8_t *dst, const uint8_t *src, long width,
1054 1054
         int g = src[i*6+2];
1055 1055
         int b = src[i*6+4];
1056 1056
 
1057
-        dst[i] = (RY*r + GY*g + BY*b + (33<<(RGB2YUV_SHIFT-1))) >> RGB2YUV_SHIFT;
1057
+        dst[i] = (RY*r + GY*g + BY*b + (32<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7))) >> (RGB2YUV_SHIFT-6);
1058 1058
     }
1059 1059
 }
1060 1060
 
1061
-static inline void rgb48ToUV(uint8_t *dstU, uint8_t *dstV,
1061
+static inline void rgb48ToUV(int16_t *dstU, int16_t *dstV,
1062 1062
                              const uint8_t *src1, const uint8_t *src2,
1063 1063
                              long width, uint32_t *unused)
1064 1064
 {
... ...
@@ -1069,12 +1069,12 @@ static inline void rgb48ToUV(uint8_t *dstU, uint8_t *dstV,
1069 1069
         int g = src1[6*i + 2];
1070 1070
         int b = src1[6*i + 4];
1071 1071
 
1072
-        dstU[i] = (RU*r + GU*g + BU*b + (257<<(RGB2YUV_SHIFT-1))) >> RGB2YUV_SHIFT;
1073
-        dstV[i] = (RV*r + GV*g + BV*b + (257<<(RGB2YUV_SHIFT-1))) >> RGB2YUV_SHIFT;
1072
+        dstU[i] = (RU*r + GU*g + BU*b + (256<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7))) >> (RGB2YUV_SHIFT-6);
1073
+        dstV[i] = (RV*r + GV*g + BV*b + (256<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7))) >> (RGB2YUV_SHIFT-6);
1074 1074
     }
1075 1075
 }
1076 1076
 
1077
-static inline void rgb48ToUV_half(uint8_t *dstU, uint8_t *dstV,
1077
+static inline void rgb48ToUV_half(int16_t *dstU, int16_t *dstV,
1078 1078
                                   const uint8_t *src1, const uint8_t *src2,
1079 1079
                                   long width, uint32_t *unused)
1080 1080
 {
... ...
@@ -1085,12 +1085,12 @@ static inline void rgb48ToUV_half(uint8_t *dstU, uint8_t *dstV,
1085 1085
         int g= src1[12*i + 2] + src1[12*i + 8];
1086 1086
         int b= src1[12*i + 4] + src1[12*i + 10];
1087 1087
 
1088
-        dstU[i]= (RU*r + GU*g + BU*b + (257<<RGB2YUV_SHIFT)) >> (RGB2YUV_SHIFT+1);
1089
-        dstV[i]= (RV*r + GV*g + BV*b + (257<<RGB2YUV_SHIFT)) >> (RGB2YUV_SHIFT+1);
1088
+        dstU[i]= (RU*r + GU*g + BU*b + (256<<(RGB2YUV_SHIFT)) + (1<<(RGB2YUV_SHIFT-6))) >> (RGB2YUV_SHIFT-5);
1089
+        dstV[i]= (RV*r + GV*g + BV*b + (256<<(RGB2YUV_SHIFT)) + (1<<(RGB2YUV_SHIFT-6))) >> (RGB2YUV_SHIFT-5);
1090 1090
     }
1091 1091
 }
1092 1092
 
1093
-static inline void bgr48ToY(uint8_t *dst, const uint8_t *src, long width,
1093
+static inline void bgr48ToY(int16_t *dst, const uint8_t *src, long width,
1094 1094
                             uint32_t *unused)
1095 1095
 {
1096 1096
     int i;
... ...
@@ -1099,11 +1099,11 @@ static inline void bgr48ToY(uint8_t *dst, const uint8_t *src, long width,
1099 1099
         int g = src[i*6+2];
1100 1100
         int r = src[i*6+4];
1101 1101
 
1102
-        dst[i] = (RY*r + GY*g + BY*b + (33<<(RGB2YUV_SHIFT-1))) >> RGB2YUV_SHIFT;
1102
+        dst[i] = (RY*r + GY*g + BY*b + (32<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7))) >> (RGB2YUV_SHIFT-6);
1103 1103
     }
1104 1104
 }
1105 1105
 
1106
-static inline void bgr48ToUV(uint8_t *dstU, uint8_t *dstV,
1106
+static inline void bgr48ToUV(int16_t *dstU, int16_t *dstV,
1107 1107
                              const uint8_t *src1, const uint8_t *src2,
1108 1108
                              long width, uint32_t *unused)
1109 1109
 {
... ...
@@ -1113,12 +1113,12 @@ static inline void bgr48ToUV(uint8_t *dstU, uint8_t *dstV,
1113 1113
         int g = src1[6*i + 2];
1114 1114
         int r = src1[6*i + 4];
1115 1115
 
1116
-        dstU[i] = (RU*r + GU*g + BU*b + (257<<(RGB2YUV_SHIFT-1))) >> RGB2YUV_SHIFT;
1117
-        dstV[i] = (RV*r + GV*g + BV*b + (257<<(RGB2YUV_SHIFT-1))) >> RGB2YUV_SHIFT;
1116
+        dstU[i] = (RU*r + GU*g + BU*b + (256<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7))) >> (RGB2YUV_SHIFT-6);
1117
+        dstV[i] = (RV*r + GV*g + BV*b + (256<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7))) >> (RGB2YUV_SHIFT-6);
1118 1118
     }
1119 1119
 }
1120 1120
 
1121
-static inline void bgr48ToUV_half(uint8_t *dstU, uint8_t *dstV,
1121
+static inline void bgr48ToUV_half(int16_t *dstU, int16_t *dstV,
1122 1122
                                   const uint8_t *src1, const uint8_t *src2,
1123 1123
                                   long width, uint32_t *unused)
1124 1124
 {
... ...
@@ -1128,13 +1128,13 @@ static inline void bgr48ToUV_half(uint8_t *dstU, uint8_t *dstV,
1128 1128
         int g= src1[12*i + 2] + src1[12*i + 8];
1129 1129
         int r= src1[12*i + 4] + src1[12*i + 10];
1130 1130
 
1131
-        dstU[i]= (RU*r + GU*g + BU*b + (257<<RGB2YUV_SHIFT)) >> (RGB2YUV_SHIFT+1);
1132
-        dstV[i]= (RV*r + GV*g + BV*b + (257<<RGB2YUV_SHIFT)) >> (RGB2YUV_SHIFT+1);
1131
+        dstU[i]= (RU*r + GU*g + BU*b + (256<<(RGB2YUV_SHIFT)) + (1<<(RGB2YUV_SHIFT-6))) >> (RGB2YUV_SHIFT-5);
1132
+        dstV[i]= (RV*r + GV*g + BV*b + (256<<(RGB2YUV_SHIFT)) + (1<<(RGB2YUV_SHIFT-6))) >> (RGB2YUV_SHIFT-5);
1133 1133
     }
1134 1134
 }
1135 1135
 
1136 1136
 #define BGR2Y(type, name, shr, shg, shb, maskr, maskg, maskb, RY, GY, BY, S)\
1137
-static inline void name(uint8_t *dst, const uint8_t *src, long width, uint32_t *unused)\
1137
+static inline void name(int16_t *dst, const uint8_t *src, long width, uint32_t *unused)\
1138 1138
 {\
1139 1139
     int i;\
1140 1140
     for (i=0; i<width; i++) {\
... ...
@@ -1142,7 +1142,7 @@ static inline void name(uint8_t *dst, const uint8_t *src, long width, uint32_t *
1142 1142
         int g= (((const type*)src)[i]>>shg)&maskg;\
1143 1143
         int r= (((const type*)src)[i]>>shr)&maskr;\
1144 1144
 \
1145
-        dst[i]= (((RY)*r + (GY)*g + (BY)*b + (33<<((S)-1)))>>(S));\
1145
+        dst[i]= (((RY)*r + (GY)*g + (BY)*b + (32<<((S)-1)) + (1<<(S-7)))>>((S)-6));\
1146 1146
     }\
1147 1147
 }
1148 1148
 
... ...
@@ -1155,16 +1155,16 @@ BGR2Y(uint16_t, bgr15ToY, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, RY<<10, GY<<5, BY
1155 1155
 BGR2Y(uint16_t, rgb16ToY, 0, 0, 0, 0xF800, 0x07E0, 0x001F, RY    , GY<<5, BY<<11, RGB2YUV_SHIFT+8)
1156 1156
 BGR2Y(uint16_t, rgb15ToY, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, RY    , GY<<5, BY<<10, RGB2YUV_SHIFT+7)
1157 1157
 
1158
-static inline void abgrToA(uint8_t *dst, const uint8_t *src, long width, uint32_t *unused)
1158
+static inline void abgrToA(int16_t *dst, const uint8_t *src, long width, uint32_t *unused)
1159 1159
 {
1160 1160
     int i;
1161 1161
     for (i=0; i<width; i++) {
1162
-        dst[i]= src[4*i];
1162
+        dst[i]= src[4*i]<<6;
1163 1163
     }
1164 1164
 }
1165 1165
 
1166 1166
 #define BGR2UV(type, name, shr, shg, shb, shp, maskr, maskg, maskb, RU, GU, BU, RV, GV, BV, S) \
1167
-static inline void name(uint8_t *dstU, uint8_t *dstV, const uint8_t *src, const uint8_t *dummy, long width, uint32_t *unused)\
1167
+static inline void name(int16_t *dstU, int16_t *dstV, const uint8_t *src, const uint8_t *dummy, long width, uint32_t *unused)\
1168 1168
 {\
1169 1169
     int i;\
1170 1170
     for (i=0; i<width; i++) {\
... ...
@@ -1172,11 +1172,11 @@ static inline void name(uint8_t *dstU, uint8_t *dstV, const uint8_t *src, const
1172 1172
         int g= ((((const type*)src)[i]>>shp)&maskg)>>shg;\
1173 1173
         int r= ((((const type*)src)[i]>>shp)&maskr)>>shr;\
1174 1174
 \
1175
-        dstU[i]= ((RU)*r + (GU)*g + (BU)*b + (257<<((S)-1)))>>(S);\
1176
-        dstV[i]= ((RV)*r + (GV)*g + (BV)*b + (257<<((S)-1)))>>(S);\
1175
+        dstU[i]= ((RU)*r + (GU)*g + (BU)*b + (256<<((S)-1)) + (1<<(S-7)))>>((S)-6);\
1176
+        dstV[i]= ((RV)*r + (GV)*g + (BV)*b + (256<<((S)-1)) + (1<<(S-7)))>>((S)-6);\
1177 1177
     }\
1178 1178
 }\
1179
-static inline void name ## _half(uint8_t *dstU, uint8_t *dstV, const uint8_t *src, const uint8_t *dummy, long width, uint32_t *unused)\
1179
+static inline void name ## _half(int16_t *dstU, int16_t *dstV, const uint8_t *src, const uint8_t *dummy, long width, uint32_t *unused)\
1180 1180
 {\
1181 1181
     int i;\
1182 1182
     for (i=0; i<width; i++) {\
... ...
@@ -1189,8 +1189,8 @@ static inline void name ## _half(uint8_t *dstU, uint8_t *dstV, const uint8_t *sr
1189 1189
 \
1190 1190
         g>>=shg;\
1191 1191
 \
1192
-        dstU[i]= ((RU)*r + (GU)*g + (BU)*b + (257<<(S)))>>((S)+1);\
1193
-        dstV[i]= ((RV)*r + (GV)*g + (BV)*b + (257<<(S)))>>((S)+1);\
1192
+        dstU[i]= ((RU)*r + (GU)*g + (BU)*b + (256U<<(S)) + (1<<(S-6)))>>((S)-6+1);\
1193
+        dstV[i]= ((RV)*r + (GV)*g + (BV)*b + (256U<<(S)) + (1<<(S-6)))>>((S)-6+1);\
1194 1194
     }\
1195 1195
 }
1196 1196
 
... ...
@@ -1203,27 +1203,27 @@ BGR2UV(uint16_t, bgr15ToUV, 0, 0, 0, 0,   0x001F, 0x03E0,   0x7C00, RU<<10, GU<<
1203 1203
 BGR2UV(uint16_t, rgb16ToUV, 0, 0, 0, 0,   0xF800, 0x07E0,   0x001F, RU    , GU<<5, BU<<11, RV    , GV<<5, BV<<11, RGB2YUV_SHIFT+8)
1204 1204
 BGR2UV(uint16_t, rgb15ToUV, 0, 0, 0, 0,   0x7C00, 0x03E0,   0x001F, RU    , GU<<5, BU<<10, RV    , GV<<5, BV<<10, RGB2YUV_SHIFT+7)
1205 1205
 
1206
-static inline void palToA(uint8_t *dst, const uint8_t *src, long width, uint32_t *pal)
1206
+static inline void palToA(int16_t *dst, const uint8_t *src, long width, uint32_t *pal)
1207 1207
 {
1208 1208
     int i;
1209 1209
     for (i=0; i<width; i++) {
1210 1210
         int d= src[i];
1211 1211
 
1212
-        dst[i]= pal[d] >> 24;
1212
+        dst[i]= (pal[d] >> 24)<<6;
1213 1213
     }
1214 1214
 }
1215 1215
 
1216
-static inline void palToY(uint8_t *dst, const uint8_t *src, long width, uint32_t *pal)
1216
+static inline void palToY(int16_t *dst, const uint8_t *src, long width, uint32_t *pal)
1217 1217
 {
1218 1218
     int i;
1219 1219
     for (i=0; i<width; i++) {
1220 1220
         int d= src[i];
1221 1221
 
1222
-        dst[i]= pal[d] & 0xFF;
1222
+        dst[i]= (pal[d] & 0xFF)<<6;
1223 1223
     }
1224 1224
 }
1225 1225
 
1226
-static inline void palToUV(uint8_t *dstU, uint8_t *dstV,
1226
+static inline void palToUV(uint16_t *dstU, int16_t *dstV,
1227 1227
                            const uint8_t *src1, const uint8_t *src2,
1228 1228
                            long width, uint32_t *pal)
1229 1229
 {
... ...
@@ -1232,28 +1232,28 @@ static inline void palToUV(uint8_t *dstU, uint8_t *dstV,
1232 1232
     for (i=0; i<width; i++) {
1233 1233
         int p= pal[src1[i]];
1234 1234
 
1235
-        dstU[i]= p>>8;
1236
-        dstV[i]= p>>16;
1235
+        dstU[i]= (uint8_t)(p>> 8)<<6;
1236
+        dstV[i]= (uint8_t)(p>>16)<<6;
1237 1237
     }
1238 1238
 }
1239 1239
 
1240
-static inline void monowhite2Y(uint8_t *dst, const uint8_t *src, long width, uint32_t *unused)
1240
+static inline void monowhite2Y(int16_t *dst, const uint8_t *src, long width, uint32_t *unused)
1241 1241
 {
1242 1242
     int i, j;
1243 1243
     for (i=0; i<width/8; i++) {
1244 1244
         int d= ~src[i];
1245 1245
         for(j=0; j<8; j++)
1246
-            dst[8*i+j]= ((d>>(7-j))&1)*255;
1246
+            dst[8*i+j]= ((d>>(7-j))&1)*16383;
1247 1247
     }
1248 1248
 }
1249 1249
 
1250
-static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, long width, uint32_t *unused)
1250
+static inline void monoblack2Y(int16_t *dst, const uint8_t *src, long width, uint32_t *unused)
1251 1251
 {
1252 1252
     int i, j;
1253 1253
     for (i=0; i<width/8; i++) {
1254 1254
         int d= src[i];
1255 1255
         for(j=0; j<8; j++)
1256
-            dst[8*i+j]= ((d>>(7-j))&1)*255;
1256
+            dst[8*i+j]= ((d>>(7-j))&1)*16383;
1257 1257
     }
1258 1258
 }
1259 1259
 
... ...
@@ -254,7 +254,7 @@ static inline void nv21ToUV_c(uint8_t *dstU, uint8_t *dstV,
254 254
     nvXXtoUV_c(dstV, dstU, src1, width);
255 255
 }
256 256
 
257
-static inline void bgr24ToY_c(uint8_t *dst, const uint8_t *src,
257
+static inline void bgr24ToY_c(int16_t *dst, const uint8_t *src,
258 258
                               long width, uint32_t *unused)
259 259
 {
260 260
     int i;
... ...
@@ -263,11 +263,11 @@ static inline void bgr24ToY_c(uint8_t *dst, const uint8_t *src,
263 263
         int g= src[i*3+1];
264 264
         int r= src[i*3+2];
265 265
 
266
-        dst[i]= ((RY*r + GY*g + BY*b + (33<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT);
266
+        dst[i]= ((RY*r + GY*g + BY*b + (32<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7)))>>(RGB2YUV_SHIFT-6));
267 267
     }
268 268
 }
269 269
 
270
-static inline void bgr24ToUV_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *src1,
270
+static inline void bgr24ToUV_c(int16_t *dstU, int16_t *dstV, const uint8_t *src1,
271 271
                                const uint8_t *src2, long width, uint32_t *unused)
272 272
 {
273 273
     int i;
... ...
@@ -276,13 +276,13 @@ static inline void bgr24ToUV_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *src1
276 276
         int g= src1[3*i + 1];
277 277
         int r= src1[3*i + 2];
278 278
 
279
-        dstU[i]= (RU*r + GU*g + BU*b + (257<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT;
280
-        dstV[i]= (RV*r + GV*g + BV*b + (257<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT;
279
+        dstU[i]= (RU*r + GU*g + BU*b + (256<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7)))>>(RGB2YUV_SHIFT-6);
280
+        dstV[i]= (RV*r + GV*g + BV*b + (256<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7)))>>(RGB2YUV_SHIFT-6);
281 281
     }
282 282
     assert(src1 == src2);
283 283
 }
284 284
 
285
-static inline void bgr24ToUV_half_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *src1,
285
+static inline void bgr24ToUV_half_c(int16_t *dstU, int16_t *dstV, const uint8_t *src1,
286 286
                                     const uint8_t *src2, long width, uint32_t *unused)
287 287
 {
288 288
     int i;
... ...
@@ -291,13 +291,13 @@ static inline void bgr24ToUV_half_c(uint8_t *dstU, uint8_t *dstV, const uint8_t
291 291
         int g= src1[6*i + 1] + src1[6*i + 4];
292 292
         int r= src1[6*i + 2] + src1[6*i + 5];
293 293
 
294
-        dstU[i]= (RU*r + GU*g + BU*b + (257<<RGB2YUV_SHIFT))>>(RGB2YUV_SHIFT+1);
295
-        dstV[i]= (RV*r + GV*g + BV*b + (257<<RGB2YUV_SHIFT))>>(RGB2YUV_SHIFT+1);
294
+        dstU[i]= (RU*r + GU*g + BU*b + (256<<RGB2YUV_SHIFT) + (1<<(RGB2YUV_SHIFT-6)))>>(RGB2YUV_SHIFT-5);
295
+        dstV[i]= (RV*r + GV*g + BV*b + (256<<RGB2YUV_SHIFT) + (1<<(RGB2YUV_SHIFT-6)))>>(RGB2YUV_SHIFT-5);
296 296
     }
297 297
     assert(src1 == src2);
298 298
 }
299 299
 
300
-static inline void rgb24ToY_c(uint8_t *dst, const uint8_t *src, long width,
300
+static inline void rgb24ToY_c(int16_t *dst, const uint8_t *src, long width,
301 301
                               uint32_t *unused)
302 302
 {
303 303
     int i;
... ...
@@ -306,11 +306,11 @@ static inline void rgb24ToY_c(uint8_t *dst, const uint8_t *src, long width,
306 306
         int g= src[i*3+1];
307 307
         int b= src[i*3+2];
308 308
 
309
-        dst[i]= ((RY*r + GY*g + BY*b + (33<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT);
309
+        dst[i]= ((RY*r + GY*g + BY*b + (32<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7)))>>(RGB2YUV_SHIFT-6));
310 310
     }
311 311
 }
312 312
 
313
-static inline void rgb24ToUV_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *src1,
313
+static inline void rgb24ToUV_c(int16_t *dstU, int16_t *dstV, const uint8_t *src1,
314 314
                                const uint8_t *src2, long width, uint32_t *unused)
315 315
 {
316 316
     int i;
... ...
@@ -320,12 +320,12 @@ static inline void rgb24ToUV_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *src1
320 320
         int g= src1[3*i + 1];
321 321
         int b= src1[3*i + 2];
322 322
 
323
-        dstU[i]= (RU*r + GU*g + BU*b + (257<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT;
324
-        dstV[i]= (RV*r + GV*g + BV*b + (257<<(RGB2YUV_SHIFT-1)))>>RGB2YUV_SHIFT;
323
+        dstU[i]= (RU*r + GU*g + BU*b + (256<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7)))>>(RGB2YUV_SHIFT-6);
324
+        dstV[i]= (RV*r + GV*g + BV*b + (256<<(RGB2YUV_SHIFT-1)) + (1<<(RGB2YUV_SHIFT-7)))>>(RGB2YUV_SHIFT-6);
325 325
     }
326 326
 }
327 327
 
328
-static inline void rgb24ToUV_half_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *src1,
328
+static inline void rgb24ToUV_half_c(int16_t *dstU, int16_t *dstV, const uint8_t *src1,
329 329
                                     const uint8_t *src2, long width, uint32_t *unused)
330 330
 {
331 331
     int i;
... ...
@@ -335,8 +335,8 @@ static inline void rgb24ToUV_half_c(uint8_t *dstU, uint8_t *dstV, const uint8_t
335 335
         int g= src1[6*i + 1] + src1[6*i + 4];
336 336
         int b= src1[6*i + 2] + src1[6*i + 5];
337 337
 
338
-        dstU[i]= (RU*r + GU*g + BU*b + (257<<RGB2YUV_SHIFT))>>(RGB2YUV_SHIFT+1);
339
-        dstV[i]= (RV*r + GV*g + BV*b + (257<<RGB2YUV_SHIFT))>>(RGB2YUV_SHIFT+1);
338
+        dstU[i]= (RU*r + GU*g + BU*b + (256<<RGB2YUV_SHIFT) + (1<<(RGB2YUV_SHIFT-6)))>>(RGB2YUV_SHIFT-5);
339
+        dstV[i]= (RV*r + GV*g + BV*b + (256<<RGB2YUV_SHIFT) + (1<<(RGB2YUV_SHIFT-6)))>>(RGB2YUV_SHIFT-5);
340 340
     }
341 341
 }
342 342
 
... ...
@@ -455,7 +455,8 @@ static inline void hyscale_c(SwsContext *c, uint16_t *dst, long dstWidth,
455 455
     }
456 456
 
457 457
     if (c->hScale16) {
458
-        c->hScale16(dst, dstWidth, (uint16_t*)src, srcW, xInc, hLumFilter, hLumFilterPos, hLumFilterSize, av_pix_fmt_descriptors[c->srcFormat].comp[0].depth_minus1);
458
+        int shift= isAnyRGB(c->srcFormat) || c->srcFormat==PIX_FMT_PAL8 ? 13 : av_pix_fmt_descriptors[c->srcFormat].comp[0].depth_minus1;
459
+        c->hScale16(dst, dstWidth, (uint16_t*)src, srcW, xInc, hLumFilter, hLumFilterPos, hLumFilterSize, shift);
459 460
     } else if (!c->hyscale_fast) {
460 461
         c->hScale(dst, dstWidth, src, srcW, xInc, hLumFilter, hLumFilterPos, hLumFilterSize);
461 462
     } else { // fast bilinear upscale / crap downscale
... ...
@@ -502,8 +503,9 @@ inline static void hcscale_c(SwsContext *c, uint16_t *dst, long dstWidth,
502 502
     }
503 503
 
504 504
     if (c->hScale16) {
505
-        c->hScale16(dst     , dstWidth, (uint16_t*)src1, srcW, xInc, hChrFilter, hChrFilterPos, hChrFilterSize, av_pix_fmt_descriptors[c->srcFormat].comp[0].depth_minus1);
506
-        c->hScale16(dst+VOFW, dstWidth, (uint16_t*)src2, srcW, xInc, hChrFilter, hChrFilterPos, hChrFilterSize, av_pix_fmt_descriptors[c->srcFormat].comp[0].depth_minus1);
505
+        int shift= isAnyRGB(c->srcFormat) || c->srcFormat==PIX_FMT_PAL8 ? 13 : av_pix_fmt_descriptors[c->srcFormat].comp[0].depth_minus1;
506
+        c->hScale16(dst     , dstWidth, (uint16_t*)src1, srcW, xInc, hChrFilter, hChrFilterPos, hChrFilterSize, shift);
507
+        c->hScale16(dst+VOFW, dstWidth, (uint16_t*)src2, srcW, xInc, hChrFilter, hChrFilterPos, hChrFilterSize, shift);
507 508
     } else if (!c->hcscale_fast) {
508 509
         c->hScale(dst     , dstWidth, src1, srcW, xInc, hChrFilter, hChrFilterPos, hChrFilterSize);
509 510
         c->hScale(dst+VOFW, dstWidth, src2, srcW, xInc, hChrFilter, hChrFilterPos, hChrFilterSize);
... ...
@@ -959,6 +961,9 @@ static void sws_init_swScale_c(SwsContext *c)
959 959
         }
960 960
     }
961 961
 
962
+    if(isAnyRGB(c->srcFormat) || c->srcFormat == PIX_FMT_PAL8)
963
+        c->hScale16= hScale16_c;
964
+
962 965
     switch (srcFormat) {
963 966
     case PIX_FMT_GRAY8A :
964 967
         c->alpSrcOffset = 1;
... ...
@@ -860,7 +860,7 @@ int sws_init_context(SwsContext *c, SwsFilter *srcFilter, SwsFilter *dstFilter)
860 860
             if (flags&SWS_PRINT_INFO)
861 861
                 av_log(c, AV_LOG_INFO, "output width is not a multiple of 32 -> no MMX2 scaler\n");
862 862
         }
863
-        if (usesHFilter || isNBPS(c->srcFormat) || is16BPS(c->srcFormat)) c->canMMX2BeUsed=0;
863
+        if (usesHFilter || isNBPS(c->srcFormat) || is16BPS(c->srcFormat) || isAnyRGB(c->srcFormat)) c->canMMX2BeUsed=0;
864 864
     }
865 865
     else
866 866
         c->canMMX2BeUsed=0;
... ...
@@ -1615,7 +1615,7 @@ static inline void RENAME(nv21ToUV)(uint8_t *dstU, uint8_t *dstV,
1615 1615
     RENAME(nvXXtoUV)(dstV, dstU, src1, width);
1616 1616
 }
1617 1617
 
1618
-static inline void RENAME(bgr24ToY_mmx)(uint8_t *dst, const uint8_t *src, long width, enum PixelFormat srcFormat)
1618
+static inline void RENAME(bgr24ToY_mmx)(int16_t *dst, const uint8_t *src, long width, enum PixelFormat srcFormat)
1619 1619
 {
1620 1620
 
1621 1621
     if(srcFormat == PIX_FMT_BGR24) {
... ...
@@ -1655,20 +1655,19 @@ static inline void RENAME(bgr24ToY_mmx)(uint8_t *dst, const uint8_t *src, long w
1655 1655
         "paddd                   %%mm3, %%mm2       \n\t"
1656 1656
         "paddd                   %%mm4, %%mm0       \n\t"
1657 1657
         "paddd                   %%mm4, %%mm2       \n\t"
1658
-        "psrad                     $15, %%mm0       \n\t"
1659
-        "psrad                     $15, %%mm2       \n\t"
1658
+        "psrad                     $9, %%mm0       \n\t"
1659
+        "psrad                     $9, %%mm2       \n\t"
1660 1660
         "packssdw                %%mm2, %%mm0       \n\t"
1661
-        "packuswb                %%mm0, %%mm0       \n\t"
1662
-        "movd                %%mm0, (%1, %%"REG_a") \n\t"
1663
-        "add                        $4, %%"REG_a"   \n\t"
1661
+        "movq                %%mm0, (%1, %%"REG_a") \n\t"
1662
+        "add                        $8, %%"REG_a"   \n\t"
1664 1663
         " js                        1b              \n\t"
1665 1664
     : "+r" (src)
1666
-    : "r" (dst+width), "g" ((x86_reg)-width)
1665
+    : "r" (dst+width), "g" ((x86_reg)-2*width)
1667 1666
     : "%"REG_a
1668 1667
     );
1669 1668
 }
1670 1669
 
1671
-static inline void RENAME(bgr24ToUV_mmx)(uint8_t *dstU, uint8_t *dstV, const uint8_t *src, long width, enum PixelFormat srcFormat)
1670
+static inline void RENAME(bgr24ToUV_mmx)(int16_t *dstU, int16_t *dstV, const uint8_t *src, long width, enum PixelFormat srcFormat)
1672 1671
 {
1673 1672
     __asm__ volatile(
1674 1673
         "movq                    24(%4), %%mm6       \n\t"
... ...
@@ -1708,41 +1707,39 @@ static inline void RENAME(bgr24ToUV_mmx)(uint8_t *dstU, uint8_t *dstV, const uin
1708 1708
         "paddd                   %%mm3, %%mm2       \n\t"
1709 1709
         "paddd                   %%mm3, %%mm1       \n\t"
1710 1710
         "paddd                   %%mm3, %%mm4       \n\t"
1711
-        "psrad                     $15, %%mm0       \n\t"
1712
-        "psrad                     $15, %%mm2       \n\t"
1713
-        "psrad                     $15, %%mm1       \n\t"
1714
-        "psrad                     $15, %%mm4       \n\t"
1711
+        "psrad                     $9, %%mm0       \n\t"
1712
+        "psrad                     $9, %%mm2       \n\t"
1713
+        "psrad                     $9, %%mm1       \n\t"
1714
+        "psrad                     $9, %%mm4       \n\t"
1715 1715
         "packssdw                %%mm1, %%mm0       \n\t"
1716 1716
         "packssdw                %%mm4, %%mm2       \n\t"
1717
-        "packuswb                %%mm0, %%mm0       \n\t"
1718
-        "packuswb                %%mm2, %%mm2       \n\t"
1719
-        "movd                %%mm0, (%1, %%"REG_a") \n\t"
1720
-        "movd                %%mm2, (%2, %%"REG_a") \n\t"
1721
-        "add                        $4, %%"REG_a"   \n\t"
1717
+        "movq                %%mm0, (%1, %%"REG_a") \n\t"
1718
+        "movq                %%mm2, (%2, %%"REG_a") \n\t"
1719
+        "add                        $8, %%"REG_a"   \n\t"
1722 1720
         " js                        1b              \n\t"
1723 1721
     : "+r" (src)
1724
-    : "r" (dstU+width), "r" (dstV+width), "g" ((x86_reg)-width), "r"(ff_bgr24toUV[srcFormat == PIX_FMT_RGB24])
1722
+    : "r" (dstU+width), "r" (dstV+width), "g" ((x86_reg)-2*width), "r"(ff_bgr24toUV[srcFormat == PIX_FMT_RGB24])
1725 1723
     : "%"REG_a
1726 1724
     );
1727 1725
 }
1728 1726
 
1729
-static inline void RENAME(bgr24ToY)(uint8_t *dst, const uint8_t *src, long width, uint32_t *unused)
1727
+static inline void RENAME(bgr24ToY)(int16_t *dst, const uint8_t *src, long width, uint32_t *unused)
1730 1728
 {
1731 1729
     RENAME(bgr24ToY_mmx)(dst, src, width, PIX_FMT_BGR24);
1732 1730
 }
1733 1731
 
1734
-static inline void RENAME(bgr24ToUV)(uint8_t *dstU, uint8_t *dstV, const uint8_t *src1, const uint8_t *src2, long width, uint32_t *unused)
1732
+static inline void RENAME(bgr24ToUV)(int16_t *dstU, int16_t *dstV, const uint8_t *src1, const uint8_t *src2, long width, uint32_t *unused)
1735 1733
 {
1736 1734
     RENAME(bgr24ToUV_mmx)(dstU, dstV, src1, width, PIX_FMT_BGR24);
1737 1735
     assert(src1 == src2);
1738 1736
 }
1739 1737
 
1740
-static inline void RENAME(rgb24ToY)(uint8_t *dst, const uint8_t *src, long width, uint32_t *unused)
1738
+static inline void RENAME(rgb24ToY)(int16_t *dst, const uint8_t *src, long width, uint32_t *unused)
1741 1739
 {
1742 1740
     RENAME(bgr24ToY_mmx)(dst, src, width, PIX_FMT_RGB24);
1743 1741
 }
1744 1742
 
1745
-static inline void RENAME(rgb24ToUV)(uint8_t *dstU, uint8_t *dstV, const uint8_t *src1, const uint8_t *src2, long width, uint32_t *unused)
1743
+static inline void RENAME(rgb24ToUV)(int16_t *dstU, int16_t *dstV, const uint8_t *src1, const uint8_t *src2, long width, uint32_t *unused)
1746 1744
 {
1747 1745
     assert(src1==src2);
1748 1746
     RENAME(bgr24ToUV_mmx)(dstU, dstV, src1, width, PIX_FMT_RGB24);
... ...
@@ -2323,7 +2320,7 @@ static void RENAME(sws_init_swScale)(SwsContext *c)
2323 2323
         case PIX_FMT_YUV420P16LE:
2324 2324
         case PIX_FMT_YUV422P16LE:
2325 2325
         case PIX_FMT_YUV444P16LE: c->hScale16= RENAME(hScale16); break;
2326
-    }   
2326
+    }
2327 2327
     if (!c->chrSrcHSubSample) {
2328 2328
         switch(srcFormat) {
2329 2329
         case PIX_FMT_BGR24  : c->chrToYV12 = RENAME(bgr24ToUV); break;
... ...
@@ -2348,4 +2345,7 @@ static void RENAME(sws_init_swScale)(SwsContext *c)
2348 2348
         default: break;
2349 2349
         }
2350 2350
     }
2351
+
2352
+    if(isAnyRGB(c->srcFormat))
2353
+        c->hScale16= RENAME(hScale16);
2351 2354
 }
... ...
@@ -67,13 +67,13 @@ DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toY1Coeff) = 0x0C88000040870C88ULL;
67 67
 DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toY2Coeff) = 0x20DE4087000020DEULL;
68 68
 DECLARE_ASM_CONST(8, uint64_t, ff_rgb24toY1Coeff) = 0x20DE0000408720DEULL;
69 69
 DECLARE_ASM_CONST(8, uint64_t, ff_rgb24toY2Coeff) = 0x0C88408700000C88ULL;
70
-DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toYOffset) = 0x0008400000084000ULL;
70
+DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toYOffset) = 0x0008010000080100ULL;
71 71
 
72 72
 DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toUV)[2][4] = {
73 73
     {0x38380000DAC83838ULL, 0xECFFDAC80000ECFFULL, 0xF6E40000D0E3F6E4ULL, 0x3838D0E300003838ULL},
74 74
     {0xECFF0000DAC8ECFFULL, 0x3838DAC800003838ULL, 0x38380000D0E33838ULL, 0xF6E4D0E30000F6E4ULL},
75 75
 };
76 76
 
77
-DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toUVOffset)= 0x0040400000404000ULL;
77
+DECLARE_ASM_CONST(8, uint64_t, ff_bgr24toUVOffset)= 0x0040010000400100ULL;
78 78
 
79 79
 #endif /* SWSCALE_X86_SWSCALE_TEMPLATE_H */
... ...
@@ -16,15 +16,15 @@ e176bd14185788110e055f945de7f95f *./tests/data/pixfmt/yuvj420p.yuv
16 16
 304128 ./tests/data/pixfmt/yuvj422p.yuv
17 17
 c10442da177c9f1d12be3c53be6fa12c *./tests/data/pixfmt/yuvj444p.yuv
18 18
 304128 ./tests/data/pixfmt/yuvj444p.yuv
19
-c6e0f9b5817f484b175c1ec4ffb4e9c9 *./tests/data/pixfmt/rgb24.yuv
19
+6bb61113e7b70eb09dbcec356122a0e2 *./tests/data/pixfmt/rgb24.yuv
20 20
 304128 ./tests/data/pixfmt/rgb24.yuv
21
-c6e0f9b5817f484b175c1ec4ffb4e9c9 *./tests/data/pixfmt/bgr24.yuv
21
+6bb61113e7b70eb09dbcec356122a0e2 *./tests/data/pixfmt/bgr24.yuv
22 22
 304128 ./tests/data/pixfmt/bgr24.yuv
23
-c6e0f9b5817f484b175c1ec4ffb4e9c9 *./tests/data/pixfmt/rgb32.yuv
23
+6bb61113e7b70eb09dbcec356122a0e2 *./tests/data/pixfmt/rgb32.yuv
24 24
 304128 ./tests/data/pixfmt/rgb32.yuv
25
-66d39d464bd89ded2a124897f0a75ade *./tests/data/pixfmt/rgb565.yuv
25
+efa7c0337cc00c796c6df615223716f1 *./tests/data/pixfmt/rgb565.yuv
26 26
 304128 ./tests/data/pixfmt/rgb565.yuv
27
-c894c3bd8d2631ed1964500b90a0c350 *./tests/data/pixfmt/rgb555.yuv
27
+0df2a477af1415a1b8fbf2a3e552bc39 *./tests/data/pixfmt/rgb555.yuv
28 28
 304128 ./tests/data/pixfmt/rgb555.yuv
29 29
 6be306b0cce5f8e6c271ea17fef9745b *./tests/data/pixfmt/gray.yuv
30 30
 304128 ./tests/data/pixfmt/gray.yuv
... ...
@@ -1,28 +1,28 @@
1
-abgr                d894cb97f6c80eb21bdbe8a4eea62d86
2
-argb                54346f2b2eef10919e0f247241df3b24
3
-bgr24               570f8d6b51a838aed022ef67535f6bdc
4
-bgr48be             fcc0f2dbf45d325f84f816c74cbeeebe
5
-bgr48le             3f9c2b23eed3b8d196d1c14b38ce50f5
1
+abgr                cff82561a074874027ac1cc896fd2730
2
+argb                756dd1eaa5baca2238ce23dbdc452684
3
+bgr24               e44192347a45586c6c157e3059610cd1
4
+bgr48be             62e6043fbe9734e63ad679999ca8011c
5
+bgr48le             61237dad4fa5f3e9109db85f53cd25d9
6 6
 bgr4_byte           ee1d35a7baf8e9016891929a2f565c0b
7
-bgr555le            36b745067197f9ca8c1731cac51329c9
8
-bgr565le            3a514a298c6161a071ddf9963c06509d
7
+bgr555le            41e3e0961478dc634bf68a7bbd670cc9
8
+bgr565le            614897eaeb422bd9a972f8ee51909be5
9 9
 bgr8                7f007fa6c153a16e808a9c51605a4016
10
-bgra                a5e7040f9a80cccd65e5acf2ca09ace5
10
+bgra                01cfdda1f72fcabb6c46424e27f8c519
11 11
 gray                d7786a7d9d99ac74230cc045cab5632c
12 12
 gray16be            5ba22d4802b40ec27e62abb22ad1d1cc
13 13
 gray16le            2d5e83aa875a4c3baa6fecf55e3223bf
14
-monob               88c4c050758e64d120f50c7eff694381
15
-monow               d31772ebaa877fc2a78565937f7f9673
14
+monob               cb62f31b701c6e987b574974d1b31e32
15
+monow               fd5d417ab7728acddffc06870661df61
16 16
 nv12                4676d59db43d657dc12841f6bc3ab452
17 17
 nv21                69c699510ff1fb777b118ebee1002f14
18
-rgb24               514692e28e8ff6860e415ce4fcf6eb8c
19
-rgb48be             1894cd30dabcd3180518e4d5f09f25e7
20
-rgb48le             1354e6e27ce3c1d4d4989ee56030c94b
18
+rgb24               13ff53ebeab74dc05492836f1cfbd2c1
19
+rgb48be             7f6b1f8139c6a64eadf9dfa867ac20e8
20
+rgb48le             2756d8710c152cbc367656de4d0f1b76
21 21
 rgb4_byte           d81ffd3add95842a618eec81024f0b5c
22
-rgb555le            a350ef1dc2c9688ed49e7ba018843795
23
-rgb565le            6f4bb711238baa762d73305213f8d035
22
+rgb555le            bd698d86c03170c4a16607c0fd1f750f
23
+rgb565le            bfa0c639d80c3c03fd0c9e5f34296a5e
24 24
 rgb8                091d0170b354ef0e97312b95feb5483f
25
-rgba                a3d362f222098a00e63867f612018659
25
+rgba                16873e3ac914e76116629a5ff8940ac4
26 26
 uyvy422             314bd486277111a95d9369b944fa0400
27 27
 yuv410p             7df8f6d69b56a8dcb6c7ee908e5018b5
28 28
 yuv411p             1143e7c5cc28fe0922b051b17733bc4c
... ...
@@ -1,4 +1,4 @@
1 1
 97894502b4cb57aca1105b6333f72dae *./tests/data/vsynth1/flashsv.flv
2 2
 14681925 ./tests/data/vsynth1/flashsv.flv
3
-947cb24ec45a453348ae6fe3fa278071 *./tests/data/flashsv.vsynth1.out.yuv
4
-stddev:    2.85 PSNR: 39.03 MAXDIFF:   49 bytes:  7603200/  7603200
3
+791e1fb999deb2e4156e2286d48c4ed1 *./tests/data/flashsv.vsynth1.out.yuv
4
+stddev:    2.84 PSNR: 39.04 MAXDIFF:   49 bytes:  7603200/  7603200
... ...
@@ -1,4 +1,4 @@
1 1
 519e26bb1ac0f3db8f90b36537f2f760 *./tests/data/vsynth1/jpegls.avi
2 2
 9089812 ./tests/data/vsynth1/jpegls.avi
3
-947cb24ec45a453348ae6fe3fa278071 *./tests/data/jpegls.vsynth1.out.yuv
4
-stddev:    2.85 PSNR: 39.03 MAXDIFF:   49 bytes:  7603200/  7603200
3
+791e1fb999deb2e4156e2286d48c4ed1 *./tests/data/jpegls.vsynth1.out.yuv
4
+stddev:    2.84 PSNR: 39.04 MAXDIFF:   49 bytes:  7603200/  7603200
... ...
@@ -1,4 +1,4 @@
1 1
 267a152a73cbc5ac4694a6e3b254be34 *./tests/data/vsynth1/msvideo1.avi
2 2
 2162264 ./tests/data/vsynth1/msvideo1.avi
3
-cf15dd12b8347567ae350383bf4ef4bb *./tests/data/msvideo1.vsynth1.out.yuv
4
-stddev:   11.81 PSNR: 26.68 MAXDIFF:  151 bytes:  7603200/  7603200
3
+c0665fac1bd896b6fe7fe0eead805bd5 *./tests/data/msvideo1.vsynth1.out.yuv
4
+stddev:   11.80 PSNR: 26.69 MAXDIFF:  151 bytes:  7603200/  7603200
... ...
@@ -1,4 +1,4 @@
1 1
 d14041925ce5ec5001dc519276b1a1ab *./tests/data/vsynth1/qtrle.mov
2 2
 15263232 ./tests/data/vsynth1/qtrle.mov
3
-243325fb2cae1a9245efd49aff936327 *./tests/data/qtrle.vsynth1.out.yuv
4
-stddev:    3.42 PSNR: 37.43 MAXDIFF:   48 bytes:  7603200/  7603200
3
+93695a27c24a61105076ca7b1f010bbd *./tests/data/qtrle.vsynth1.out.yuv
4
+stddev:    3.42 PSNR: 37.44 MAXDIFF:   48 bytes:  7603200/  7603200
... ...
@@ -1,4 +1,4 @@
1 1
 05f0719cb52486d9a4beb9cfae3f2571 *./tests/data/vsynth1/rgb.avi
2 2
 15213260 ./tests/data/vsynth1/rgb.avi
3
-243325fb2cae1a9245efd49aff936327 *./tests/data/rgb.vsynth1.out.yuv
4
-stddev:    3.42 PSNR: 37.43 MAXDIFF:   48 bytes:  7603200/  7603200
3
+93695a27c24a61105076ca7b1f010bbd *./tests/data/rgb.vsynth1.out.yuv
4
+stddev:    3.42 PSNR: 37.44 MAXDIFF:   48 bytes:  7603200/  7603200
... ...
@@ -1,4 +1,4 @@
1 1
 0667077971e0cb63b5f49c580006e90e *./tests/data/vsynth2/flashsv.flv
2 2
 12368953 ./tests/data/vsynth2/flashsv.flv
3
-592b3321994e26a990deb3a0a1415de9 *./tests/data/flashsv.vsynth2.out.yuv
4
-stddev:    0.65 PSNR: 51.84 MAXDIFF:   14 bytes:  7603200/  7603200
3
+3a984506f1ebfc9fb73b6814cab201cc *./tests/data/flashsv.vsynth2.out.yuv
4
+stddev:    0.66 PSNR: 51.73 MAXDIFF:   14 bytes:  7603200/  7603200
... ...
@@ -1,4 +1,4 @@
1 1
 4fc53937f048c900ae6d50fda9dba206 *./tests/data/vsynth2/jpegls.avi
2 2
 8334630 ./tests/data/vsynth2/jpegls.avi
3
-592b3321994e26a990deb3a0a1415de9 *./tests/data/jpegls.vsynth2.out.yuv
4
-stddev:    0.65 PSNR: 51.84 MAXDIFF:   14 bytes:  7603200/  7603200
3
+3a984506f1ebfc9fb73b6814cab201cc *./tests/data/jpegls.vsynth2.out.yuv
4
+stddev:    0.66 PSNR: 51.73 MAXDIFF:   14 bytes:  7603200/  7603200
... ...
@@ -1,4 +1,4 @@
1 1
 5dddbbd6616d9be4bc0fd0c9650bd9e3 *./tests/data/vsynth2/msvideo1.avi
2 2
 1259308 ./tests/data/vsynth2/msvideo1.avi
3
-e2e7a952135f6307a74f2e178dc0df20 *./tests/data/msvideo1.vsynth2.out.yuv
4
-stddev:    7.42 PSNR: 30.71 MAXDIFF:  123 bytes:  7603200/  7603200
3
+cd83ffcbc73573044e3aead3094229e5 *./tests/data/msvideo1.vsynth2.out.yuv
4
+stddev:    7.42 PSNR: 30.72 MAXDIFF:  123 bytes:  7603200/  7603200
... ...
@@ -1,4 +1,4 @@
1 1
 d8c1604dc46d9aa4ec0385e6722c6989 *./tests/data/vsynth2/qtrle.mov
2 2
 14798419 ./tests/data/vsynth2/qtrle.mov
3
-b2418e0e3a9a8619b31219cbcf24dc82 *./tests/data/qtrle.vsynth2.out.yuv
4
-stddev:    1.26 PSNR: 46.06 MAXDIFF:   13 bytes:  7603200/  7603200
3
+98d0e2854731472c5bf13d8638502d0a *./tests/data/qtrle.vsynth2.out.yuv
4
+stddev:    1.26 PSNR: 46.10 MAXDIFF:   13 bytes:  7603200/  7603200
... ...
@@ -1,4 +1,4 @@
1 1
 f2e9c419023c743bf99aa5b2e55ad233 *./tests/data/vsynth2/rgb.avi
2 2
 15213260 ./tests/data/vsynth2/rgb.avi
3
-b2418e0e3a9a8619b31219cbcf24dc82 *./tests/data/rgb.vsynth2.out.yuv
4
-stddev:    1.26 PSNR: 46.06 MAXDIFF:   13 bytes:  7603200/  7603200
3
+98d0e2854731472c5bf13d8638502d0a *./tests/data/rgb.vsynth2.out.yuv
4
+stddev:    1.26 PSNR: 46.10 MAXDIFF:   13 bytes:  7603200/  7603200