| @@ -853,9 +853,67 @@ struct Convert_yuv444p16le_yuv444p16le · 852 unmodified lines |
| 853 | } | 853 | } |
| 854 | }; | 854 | }; |
| 855 | | 855 | |
| 856 | // bgr0->X | 856 | #define DEF_CONVERT_IDENTITY(fmt1, fmt2)\ |
| 857 | | 857 | \ |
| 858 | struct Convert_bgr0_bgr0 | 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 | static const int in_bit_depth = 8; | 918 | static const int in_bit_depth = 8; |
| 861 | typedef uchar4 in_T; | 919 | typedef uchar4 in_T; |
| @@ -865,7 +923,13 @@ struct Convert_bgr0_bgr0 · 3 unmodified lines |
| 865 | | 923 | |
| 866 | DEF_F(Convert, out_T) | 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 | DEF_F(Convert_uv, out_T_uv) | 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 | static const int in_bit_depth = 8; | 942 | static const int in_bit_depth = 8; |
| 879 | typedef uchar4 in_T; | 943 | typedef uchar4 in_T; |
| @@ -888,7 +952,7 @@ struct Convert_bgr0_rgb0 · 8 unmodified lines |
| 888 | res.z, | 952 | res.z, |
| 889 | res.y, | 953 | res.y, |
| 890 | res.x, | 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 | 964 | struct Convert_rgb0_bgra |
| 901 | | | |
| 902 | struct Convert_rgb0_bgr0 | | |
| 903 | { | 965 | { |
| 904 | static const int in_bit_depth = 8; | 966 | static const int in_bit_depth = 8; |
| 905 | typedef uchar4 in_T; | 967 | typedef uchar4 in_T; |
| @@ -914,7 +976,7 @@ struct Convert_rgb0_bgr0 · 8 unmodified lines |
| 914 | res.z, | 976 | res.z, |
| 915 | res.y, | 977 | res.y, |
| 916 | res.x, | 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 | static const int in_bit_depth = 8; | 990 | static const int in_bit_depth = 8; |
| 929 | typedef uchar4 in_T; | 991 | typedef uchar4 in_T; |
| @@ -933,7 +995,13 @@ struct Convert_rgb0_rgb0 · 3 unmodified lines |
| 933 | | 995 | |
| 934 | DEF_F(Convert, out_T) | 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 | DEF_F(Convert_uv, out_T_uv) | 1007 | DEF_F(Convert_uv, out_T_uv) |
| @@ -1117,6 +1185,12 @@ extern "C" { · 177 unmodified lines |
| 1117 | NEAREST_KERNEL_RAW(p016le_ ## C) \ | 1185 | NEAREST_KERNEL_RAW(p016le_ ## C) \ |
| 1118 | NEAREST_KERNEL_RAW(yuv444p16le_ ## C) | 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 | NEAREST_KERNELS(yuv420p) | 1194 | NEAREST_KERNELS(yuv420p) |
| 1121 | NEAREST_KERNELS(nv12) | 1195 | NEAREST_KERNELS(nv12) |
| 1122 | NEAREST_KERNELS(yuv444p) | 1196 | NEAREST_KERNELS(yuv444p) |
| @@ -1124,11 +1198,10 @@ NEAREST_KERNELS(p010le) · 1 unmodified line |
| 1124 | NEAREST_KERNELS(p016le) | 1198 | NEAREST_KERNELS(p016le) |
| 1125 | NEAREST_KERNELS(yuv444p16le) | 1199 | NEAREST_KERNELS(yuv444p16le) |
| 1126 | | 1200 | |
| 1127 | NEAREST_KERNEL_RAW(bgr0_bgr0) | 1201 | NEAREST_KERNELS_RGB(rgb0) |
| 1128 | NEAREST_KERNEL_RAW(rgb0_rgb0) | 1202 | NEAREST_KERNELS_RGB(bgr0) |
| 1129 | NEAREST_KERNEL_RAW(bgr0_rgb0) | 1203 | NEAREST_KERNELS_RGB(rgba) |
| 1130 | NEAREST_KERNEL_RAW(rgb0_bgr0) | 1204 | NEAREST_KERNELS_RGB(bgra) |
| 1131 | | | |
| 1132 | | 1205 | |
| 1133 | #define BILINEAR_KERNEL(C, S) \ | 1206 | #define BILINEAR_KERNEL(C, S) \ |
| 1134 | __global__ void Subsample_Bilinear_##C##S( \ | 1207 | __global__ void Subsample_Bilinear_##C##S( \ |
| @@ -1152,6 +1225,12 @@ NEAREST_KERNEL_RAW(rgb0_bgr0) · 17 unmodified lines |
| 1152 | BILINEAR_KERNEL_RAW(p016le_ ## C) \ | 1225 | BILINEAR_KERNEL_RAW(p016le_ ## C) \ |
| 1153 | BILINEAR_KERNEL_RAW(yuv444p16le_ ## C) | 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 | BILINEAR_KERNELS(yuv420p) | 1234 | BILINEAR_KERNELS(yuv420p) |
| 1156 | BILINEAR_KERNELS(nv12) | 1235 | BILINEAR_KERNELS(nv12) |
| 1157 | BILINEAR_KERNELS(yuv444p) | 1236 | BILINEAR_KERNELS(yuv444p) |
| @@ -1159,10 +1238,10 @@ BILINEAR_KERNELS(p010le) · 1 unmodified line |
| 1159 | BILINEAR_KERNELS(p016le) | 1238 | BILINEAR_KERNELS(p016le) |
| 1160 | BILINEAR_KERNELS(yuv444p16le) | 1239 | BILINEAR_KERNELS(yuv444p16le) |
| 1161 | | 1240 | |
| 1162 | BILINEAR_KERNEL_RAW(bgr0_bgr0) | 1241 | BILINEAR_KERNELS_RGB(rgb0) |
| 1163 | BILINEAR_KERNEL_RAW(rgb0_rgb0) | 1242 | BILINEAR_KERNELS_RGB(bgr0) |
| 1164 | BILINEAR_KERNEL_RAW(bgr0_rgb0) | 1243 | BILINEAR_KERNELS_RGB(rgba) |
| 1165 | BILINEAR_KERNEL_RAW(rgb0_bgr0) | 1244 | BILINEAR_KERNELS_RGB(bgra) |
| 1166 | | 1245 | |
| 1167 | #define BICUBIC_KERNEL(C, S) \ | 1246 | #define BICUBIC_KERNEL(C, S) \ |
| 1168 | __global__ void Subsample_Bicubic_##C##S( \ | 1247 | __global__ void Subsample_Bicubic_##C##S( \ |
| @@ -1186,6 +1265,12 @@ BILINEAR_KERNEL_RAW(rgb0_bgr0) · 17 unmodified lines |
| 1186 | BICUBIC_KERNEL_RAW(p016le_ ## C) \ | 1265 | BICUBIC_KERNEL_RAW(p016le_ ## C) \ |
| 1187 | BICUBIC_KERNEL_RAW(yuv444p16le_ ## C) | 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 | BICUBIC_KERNELS(yuv420p) | 1274 | BICUBIC_KERNELS(yuv420p) |
| 1190 | BICUBIC_KERNELS(nv12) | 1275 | BICUBIC_KERNELS(nv12) |
| 1191 | BICUBIC_KERNELS(yuv444p) | 1276 | BICUBIC_KERNELS(yuv444p) |
| @@ -1193,11 +1278,10 @@ BICUBIC_KERNELS(p010le) · 1 unmodified line |
| 1193 | BICUBIC_KERNELS(p016le) | 1278 | BICUBIC_KERNELS(p016le) |
| 1194 | BICUBIC_KERNELS(yuv444p16le) | 1279 | BICUBIC_KERNELS(yuv444p16le) |
| 1195 | | 1280 | |
| 1196 | BICUBIC_KERNEL_RAW(bgr0_bgr0) | 1281 | BICUBIC_KERNELS_RGB(rgb0) |
| 1197 | BICUBIC_KERNEL_RAW(rgb0_rgb0) | 1282 | BICUBIC_KERNELS_RGB(bgr0) |
| 1198 | BICUBIC_KERNEL_RAW(bgr0_rgb0) | 1283 | BICUBIC_KERNELS_RGB(rgba) |
| 1199 | BICUBIC_KERNEL_RAW(rgb0_bgr0) | 1284 | BICUBIC_KERNELS_RGB(bgra) |
| 1200 | | | |
| 1201 | | 1285 | |
| 1202 | #define LANCZOS_KERNEL(C, S) \ | 1286 | #define LANCZOS_KERNEL(C, S) \ |
| 1203 | __global__ void Subsample_Lanczos_##C##S( \ | 1287 | __global__ void Subsample_Lanczos_##C##S( \ |
| @@ -1221,6 +1305,12 @@ BICUBIC_KERNEL_RAW(rgb0_bgr0) · 17 unmodified lines |
| 1221 | LANCZOS_KERNEL_RAW(p016le_ ## C) \ | 1305 | LANCZOS_KERNEL_RAW(p016le_ ## C) \ |
| 1222 | LANCZOS_KERNEL_RAW(yuv444p16le_ ## C) | 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 | LANCZOS_KERNELS(yuv420p) | 1314 | LANCZOS_KERNELS(yuv420p) |
| 1225 | LANCZOS_KERNELS(nv12) | 1315 | LANCZOS_KERNELS(nv12) |
| 1226 | LANCZOS_KERNELS(yuv444p) | 1316 | LANCZOS_KERNELS(yuv444p) |
| @@ -1228,9 +1318,8 @@ LANCZOS_KERNELS(p010le) · 1 unmodified line |
| 1228 | LANCZOS_KERNELS(p016le) | 1318 | LANCZOS_KERNELS(p016le) |
| 1229 | LANCZOS_KERNELS(yuv444p16le) | 1319 | LANCZOS_KERNELS(yuv444p16le) |
| 1230 | | 1320 | |
| 1231 | LANCZOS_KERNEL_RAW(bgr0_bgr0) | 1321 | LANCZOS_KERNELS_RGB(rgb0) |
| 1232 | LANCZOS_KERNEL_RAW(rgb0_rgb0) | 1322 | LANCZOS_KERNELS_RGB(bgr0) |
| 1233 | LANCZOS_KERNEL_RAW(bgr0_rgb0) | 1323 | LANCZOS_KERNELS_RGB(rgba) |
| 1234 | LANCZOS_KERNEL_RAW(rgb0_bgr0) | 1324 | LANCZOS_KERNELS_RGB(bgra) |
| 1235 | | | |
| 1236 | } | 1325 | } |