| @@ -853,9 +853,67 @@ struct Convert_yuv444p16le_yuv444p16le · 852 unmodified lines |
| 853 | 853 | } |
| 854 | 854 | }; |
| 855 | 855 | |
| 856 | | −// bgr0->X |
| 857 | | − |
| 858 | | −struct Convert_bgr0_bgr0 |
| 856 | +#define DEF_CONVERT_IDENTITY(fmt1, fmt2)\ |
| 857 | + \ |
| 858 | +struct Convert_##fmt1##_##fmt2 \ |
| 859 | +{ \ |
| 860 | + static const int in_bit_depth = 8; \ |
| 861 | + typedef uchar4 in_T; \ |
| 862 | + typedef uchar in_T_uv; \ |
| 863 | + typedef uchar4 out_T; \ |
| 864 | + typedef uchar out_T_uv; \ |
| 865 | + \ |
| 866 | + DEF_F(Convert, out_T) \ |
| 867 | + { \ |
| 868 | + DEFAULT_DST(0) = SUB_F(y, 0); \ |
| 869 | + } \ |
| 870 | + \ |
| 871 | + DEF_F(Convert_uv, out_T_uv) \ |
| 872 | + { \ |
| 873 | + } \ |
| 874 | +}; \ |
| 875 | + |
| 876 | +#define DEF_CONVERT_REORDER(fmt1, fmt2) \ |
| 877 | + \ |
| 878 | +struct Convert_##fmt1##_##fmt2 \ |
| 879 | +{ \ |
| 880 | + static const int in_bit_depth = 8; \ |
| 881 | + typedef uchar4 in_T; \ |
| 882 | + typedef uchar in_T_uv; \ |
| 883 | + typedef uchar4 out_T; \ |
| 884 | + typedef uchar out_T_uv; \ |
| 885 | + \ |
| 886 | + DEF_F(Convert, out_T) \ |
| 887 | + { \ |
| 888 | + uchar4 res = SUB_F(y, 0); \ |
| 889 | + DEFAULT_DST(0) = make_uchar4( \ |
| 890 | + res.z, \ |
| 891 | + res.y, \ |
| 892 | + res.x, \ |
| 893 | + res.w \ |
| 894 | + ); \ |
| 895 | + } \ |
| 896 | + \ |
| 897 | + DEF_F(Convert_uv, out_T_uv) \ |
| 898 | + { \ |
| 899 | + } \ |
| 900 | +}; \ |
| 901 | + |
| 902 | +#define DEF_CONVERT_RGB(fmt1, fmt2) \ |
| 903 | + \ |
| 904 | +DEF_CONVERT_IDENTITY(fmt1, fmt1) \ |
| 905 | +DEF_CONVERT_REORDER (fmt1, fmt2) \ |
| 906 | +DEF_CONVERT_REORDER (fmt2, fmt1) \ |
| 907 | +DEF_CONVERT_IDENTITY(fmt2, fmt2) |
| 908 | + |
| 909 | +DEF_CONVERT_RGB(rgb0, bgr0) |
| 910 | +DEF_CONVERT_RGB(rgba, bgra) |
| 911 | +DEF_CONVERT_IDENTITY(rgba, rgb0) |
| 912 | +DEF_CONVERT_IDENTITY(bgra, bgr0) |
| 913 | +DEF_CONVERT_REORDER(rgba, bgr0) |
| 914 | +DEF_CONVERT_REORDER(bgra, rgb0) |
| 915 | + |
| 916 | +struct Convert_bgr0_bgra |
| 859 | 917 | { |
| 860 | 918 | static const int in_bit_depth = 8; |
| 861 | 919 | typedef uchar4 in_T; |
| @@ -865,7 +923,13 @@ struct Convert_bgr0_bgr0 · 3 unmodified lines |
| 865 | 923 | |
| 866 | 924 | DEF_F(Convert, out_T) |
| 867 | 925 | { |
| 868 | | − DEFAULT_DST(0) = SUB_F(y, 0); |
| 926 | + uchar4 res = SUB_F(y, 0); |
| 927 | + DEFAULT_DST(0) = make_uchar4( |
| 928 | + res.x, |
| 929 | + res.y, |
| 930 | + res.z, |
| 931 | + 1 |
| 932 | + ); |
| 869 | 933 | } |
| 870 | 934 | |
| 871 | 935 | DEF_F(Convert_uv, out_T_uv) |
| @@ -873,7 +937,7 @@ struct Convert_bgr0_bgr0 · 1 unmodified line |
| 873 | 937 | } |
| 874 | 938 | }; |
| 875 | 939 | |
| 876 | | −struct Convert_bgr0_rgb0 |
| 940 | +struct Convert_bgr0_rgba |
| 877 | 941 | { |
| 878 | 942 | static const int in_bit_depth = 8; |
| 879 | 943 | typedef uchar4 in_T; |
| @@ -888,7 +952,7 @@ struct Convert_bgr0_rgb0 · 8 unmodified lines |
| 888 | 952 | res.z, |
| 889 | 953 | res.y, |
| 890 | 954 | res.x, |
| 891 | | − res.w |
| 955 | + 1 |
| 892 | 956 | ); |
| 893 | 957 | } |
| 894 | 958 | |
| @@ -897,9 +961,7 @@ struct Convert_bgr0_rgb0 · 2 unmodified lines |
| 897 | 961 | } |
| 898 | 962 | }; |
| 899 | 963 | |
| 900 | | −// rgb0->X |
| 901 | | − |
| 902 | | −struct Convert_rgb0_bgr0 |
| 964 | +struct Convert_rgb0_bgra |
| 903 | 965 | { |
| 904 | 966 | static const int in_bit_depth = 8; |
| 905 | 967 | typedef uchar4 in_T; |
| @@ -914,7 +976,7 @@ struct Convert_rgb0_bgr0 · 8 unmodified lines |
| 914 | 976 | res.z, |
| 915 | 977 | res.y, |
| 916 | 978 | res.x, |
| 917 | | − res.w |
| 979 | + 1 |
| 918 | 980 | ); |
| 919 | 981 | } |
| 920 | 982 | |
| @@ -923,7 +985,7 @@ struct Convert_rgb0_bgr0 · 2 unmodified lines |
| 923 | 985 | } |
| 924 | 986 | }; |
| 925 | 987 | |
| 926 | | −struct Convert_rgb0_rgb0 |
| 988 | +struct Convert_rgb0_rgba |
| 927 | 989 | { |
| 928 | 990 | static const int in_bit_depth = 8; |
| 929 | 991 | typedef uchar4 in_T; |
| @@ -933,7 +995,13 @@ struct Convert_rgb0_rgb0 · 3 unmodified lines |
| 933 | 995 | |
| 934 | 996 | DEF_F(Convert, out_T) |
| 935 | 997 | { |
| 936 | | − DEFAULT_DST(0) = SUB_F(y, 0); |
| 998 | + uchar4 res = SUB_F(y, 0); |
| 999 | + DEFAULT_DST(0) = make_uchar4( |
| 1000 | + res.x, |
| 1001 | + res.y, |
| 1002 | + res.z, |
| 1003 | + 1 |
| 1004 | + ); |
| 937 | 1005 | } |
| 938 | 1006 | |
| 939 | 1007 | DEF_F(Convert_uv, out_T_uv) |
| @@ -1117,6 +1185,12 @@ extern "C" { · 177 unmodified lines |
| 1117 | 1185 | NEAREST_KERNEL_RAW(p016le_ ## C) \ |
| 1118 | 1186 | NEAREST_KERNEL_RAW(yuv444p16le_ ## C) |
| 1119 | 1187 | |
| 1188 | +#define NEAREST_KERNELS_RGB(C) \ |
| 1189 | + NEAREST_KERNEL_RAW(rgb0_ ## C) \ |
| 1190 | + NEAREST_KERNEL_RAW(bgr0_ ## C) \ |
| 1191 | + NEAREST_KERNEL_RAW(rgba_ ## C) \ |
| 1192 | + NEAREST_KERNEL_RAW(bgra_ ## C) \ |
| 1193 | + |
| 1120 | 1194 | NEAREST_KERNELS(yuv420p) |
| 1121 | 1195 | NEAREST_KERNELS(nv12) |
| 1122 | 1196 | NEAREST_KERNELS(yuv444p) |
| @@ -1124,11 +1198,10 @@ NEAREST_KERNELS(p010le) · 1 unmodified line |
| 1124 | 1198 | NEAREST_KERNELS(p016le) |
| 1125 | 1199 | NEAREST_KERNELS(yuv444p16le) |
| 1126 | 1200 | |
| 1127 | | −NEAREST_KERNEL_RAW(bgr0_bgr0) |
| 1128 | | −NEAREST_KERNEL_RAW(rgb0_rgb0) |
| 1129 | | −NEAREST_KERNEL_RAW(bgr0_rgb0) |
| 1130 | | −NEAREST_KERNEL_RAW(rgb0_bgr0) |
| 1131 | | − |
| 1201 | +NEAREST_KERNELS_RGB(rgb0) |
| 1202 | +NEAREST_KERNELS_RGB(bgr0) |
| 1203 | +NEAREST_KERNELS_RGB(rgba) |
| 1204 | +NEAREST_KERNELS_RGB(bgra) |
| 1132 | 1205 | |
| 1133 | 1206 | #define BILINEAR_KERNEL(C, S) \ |
| 1134 | 1207 | __global__ void Subsample_Bilinear_##C##S( \ |
| @@ -1152,6 +1225,12 @@ NEAREST_KERNEL_RAW(rgb0_bgr0) · 17 unmodified lines |
| 1152 | 1225 | BILINEAR_KERNEL_RAW(p016le_ ## C) \ |
| 1153 | 1226 | BILINEAR_KERNEL_RAW(yuv444p16le_ ## C) |
| 1154 | 1227 | |
| 1228 | +#define BILINEAR_KERNELS_RGB(C) \ |
| 1229 | + BILINEAR_KERNEL_RAW(rgb0_ ## C) \ |
| 1230 | + BILINEAR_KERNEL_RAW(bgr0_ ## C) \ |
| 1231 | + BILINEAR_KERNEL_RAW(rgba_ ## C) \ |
| 1232 | + BILINEAR_KERNEL_RAW(bgra_ ## C) |
| 1233 | + |
| 1155 | 1234 | BILINEAR_KERNELS(yuv420p) |
| 1156 | 1235 | BILINEAR_KERNELS(nv12) |
| 1157 | 1236 | BILINEAR_KERNELS(yuv444p) |
| @@ -1159,10 +1238,10 @@ BILINEAR_KERNELS(p010le) · 1 unmodified line |
| 1159 | 1238 | BILINEAR_KERNELS(p016le) |
| 1160 | 1239 | BILINEAR_KERNELS(yuv444p16le) |
| 1161 | 1240 | |
| 1162 | | −BILINEAR_KERNEL_RAW(bgr0_bgr0) |
| 1163 | | −BILINEAR_KERNEL_RAW(rgb0_rgb0) |
| 1164 | | −BILINEAR_KERNEL_RAW(bgr0_rgb0) |
| 1165 | | −BILINEAR_KERNEL_RAW(rgb0_bgr0) |
| 1241 | +BILINEAR_KERNELS_RGB(rgb0) |
| 1242 | +BILINEAR_KERNELS_RGB(bgr0) |
| 1243 | +BILINEAR_KERNELS_RGB(rgba) |
| 1244 | +BILINEAR_KERNELS_RGB(bgra) |
| 1166 | 1245 | |
| 1167 | 1246 | #define BICUBIC_KERNEL(C, S) \ |
| 1168 | 1247 | __global__ void Subsample_Bicubic_##C##S( \ |
| @@ -1186,6 +1265,12 @@ BILINEAR_KERNEL_RAW(rgb0_bgr0) · 17 unmodified lines |
| 1186 | 1265 | BICUBIC_KERNEL_RAW(p016le_ ## C) \ |
| 1187 | 1266 | BICUBIC_KERNEL_RAW(yuv444p16le_ ## C) |
| 1188 | 1267 | |
| 1268 | +#define BICUBIC_KERNELS_RGB(C) \ |
| 1269 | + BICUBIC_KERNEL_RAW(rgb0_ ## C) \ |
| 1270 | + BICUBIC_KERNEL_RAW(bgr0_ ## C) \ |
| 1271 | + BICUBIC_KERNEL_RAW(rgba_ ## C) \ |
| 1272 | + BICUBIC_KERNEL_RAW(bgra_ ## C) |
| 1273 | + |
| 1189 | 1274 | BICUBIC_KERNELS(yuv420p) |
| 1190 | 1275 | BICUBIC_KERNELS(nv12) |
| 1191 | 1276 | BICUBIC_KERNELS(yuv444p) |
| @@ -1193,11 +1278,10 @@ BICUBIC_KERNELS(p010le) · 1 unmodified line |
| 1193 | 1278 | BICUBIC_KERNELS(p016le) |
| 1194 | 1279 | BICUBIC_KERNELS(yuv444p16le) |
| 1195 | 1280 | |
| 1196 | | −BICUBIC_KERNEL_RAW(bgr0_bgr0) |
| 1197 | | −BICUBIC_KERNEL_RAW(rgb0_rgb0) |
| 1198 | | −BICUBIC_KERNEL_RAW(bgr0_rgb0) |
| 1199 | | −BICUBIC_KERNEL_RAW(rgb0_bgr0) |
| 1200 | | − |
| 1281 | +BICUBIC_KERNELS_RGB(rgb0) |
| 1282 | +BICUBIC_KERNELS_RGB(bgr0) |
| 1283 | +BICUBIC_KERNELS_RGB(rgba) |
| 1284 | +BICUBIC_KERNELS_RGB(bgra) |
| 1201 | 1285 | |
| 1202 | 1286 | #define LANCZOS_KERNEL(C, S) \ |
| 1203 | 1287 | __global__ void Subsample_Lanczos_##C##S( \ |
| @@ -1221,6 +1305,12 @@ BICUBIC_KERNEL_RAW(rgb0_bgr0) · 17 unmodified lines |
| 1221 | 1305 | LANCZOS_KERNEL_RAW(p016le_ ## C) \ |
| 1222 | 1306 | LANCZOS_KERNEL_RAW(yuv444p16le_ ## C) |
| 1223 | 1307 | |
| 1308 | +#define LANCZOS_KERNELS_RGB(C) \ |
| 1309 | + LANCZOS_KERNEL_RAW(rgb0_ ## C) \ |
| 1310 | + LANCZOS_KERNEL_RAW(bgr0_ ## C) \ |
| 1311 | + LANCZOS_KERNEL_RAW(rgba_ ## C) \ |
| 1312 | + LANCZOS_KERNEL_RAW(bgra_ ## C) |
| 1313 | + |
| 1224 | 1314 | LANCZOS_KERNELS(yuv420p) |
| 1225 | 1315 | LANCZOS_KERNELS(nv12) |
| 1226 | 1316 | LANCZOS_KERNELS(yuv444p) |
| @@ -1228,9 +1318,8 @@ LANCZOS_KERNELS(p010le) · 1 unmodified line |
| 1228 | 1318 | LANCZOS_KERNELS(p016le) |
| 1229 | 1319 | LANCZOS_KERNELS(yuv444p16le) |
| 1230 | 1320 | |
| 1231 | | −LANCZOS_KERNEL_RAW(bgr0_bgr0) |
| 1232 | | −LANCZOS_KERNEL_RAW(rgb0_rgb0) |
| 1233 | | −LANCZOS_KERNEL_RAW(bgr0_rgb0) |
| 1234 | | −LANCZOS_KERNEL_RAW(rgb0_bgr0) |
| 1235 | | − |
| 1321 | +LANCZOS_KERNELS_RGB(rgb0) |
| 1322 | +LANCZOS_KERNELS_RGB(bgr0) |
| 1323 | +LANCZOS_KERNELS_RGB(rgba) |
| 1324 | +LANCZOS_KERNELS_RGB(bgra) |
| 1236 | 1325 | } |