Re: [PATCH 2/4] media: v4l2-tpg-core: Add support for 32-bit packed YUV formats

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Vivek,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.0-rc4 next-20190207]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Vivek-Kasireddy/Add-support-for-32-bit-packed-YUV-formats/20190208-173506
base:   git://linuxtv.org/media_tree.git master
config: i386-randconfig-x017-201905 (attached as .config)
compiler: gcc-8 (Debian 8.2.0-15) 8.2.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   drivers/media/common/v4l2-tpg/v4l2-tpg-core.c: In function 'gen_twopix':
>> drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:1283:2: error: duplicate case value
     case V4L2_PIX_FMT_YUV32:
     ^~~~
   drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:1281:2: note: previously used here
     case V4L2_PIX_FMT_YUV32:
     ^~~~

vim +1283 drivers/media/common/v4l2-tpg/v4l2-tpg-core.c

  1051	
  1052	/* 'odd' is true for pixels 1, 3, 5, etc. and false for pixels 0, 2, 4, etc. */
  1053	static void gen_twopix(struct tpg_data *tpg,
  1054			u8 buf[TPG_MAX_PLANES][8], int color, bool odd)
  1055	{
  1056		unsigned offset = odd * tpg->twopixelsize[0] / 2;
  1057		u8 alpha = tpg->alpha_component;
  1058		u8 r_y_h, g_u_s, b_v;
  1059	
  1060		if (tpg->alpha_red_only && color != TPG_COLOR_CSC_RED &&
  1061					   color != TPG_COLOR_100_RED &&
  1062					   color != TPG_COLOR_75_RED)
  1063			alpha = 0;
  1064		if (color == TPG_COLOR_RANDOM)
  1065			precalculate_color(tpg, color);
  1066		r_y_h = tpg->colors[color][0]; /* R or precalculated Y, H */
  1067		g_u_s = tpg->colors[color][1]; /* G or precalculated U, V */
  1068		b_v = tpg->colors[color][2]; /* B or precalculated V */
  1069	
  1070		switch (tpg->fourcc) {
  1071		case V4L2_PIX_FMT_GREY:
  1072			buf[0][offset] = r_y_h;
  1073			break;
  1074		case V4L2_PIX_FMT_Y10:
  1075			buf[0][offset] = (r_y_h << 2) & 0xff;
  1076			buf[0][offset+1] = r_y_h >> 6;
  1077			break;
  1078		case V4L2_PIX_FMT_Y12:
  1079			buf[0][offset] = (r_y_h << 4) & 0xff;
  1080			buf[0][offset+1] = r_y_h >> 4;
  1081			break;
  1082		case V4L2_PIX_FMT_Y16:
  1083		case V4L2_PIX_FMT_Z16:
  1084			/*
  1085			 * Ideally both bytes should be set to r_y_h, but then you won't
  1086			 * be able to detect endian problems. So keep it 0 except for
  1087			 * the corner case where r_y_h is 0xff so white really will be
  1088			 * white (0xffff).
  1089			 */
  1090			buf[0][offset] = r_y_h == 0xff ? r_y_h : 0;
  1091			buf[0][offset+1] = r_y_h;
  1092			break;
  1093		case V4L2_PIX_FMT_Y16_BE:
  1094			/* See comment for V4L2_PIX_FMT_Y16 above */
  1095			buf[0][offset] = r_y_h;
  1096			buf[0][offset+1] = r_y_h == 0xff ? r_y_h : 0;
  1097			break;
  1098		case V4L2_PIX_FMT_YUV422M:
  1099		case V4L2_PIX_FMT_YUV422P:
  1100		case V4L2_PIX_FMT_YUV420:
  1101		case V4L2_PIX_FMT_YUV420M:
  1102			buf[0][offset] = r_y_h;
  1103			if (odd) {
  1104				buf[1][0] = (buf[1][0] + g_u_s) / 2;
  1105				buf[2][0] = (buf[2][0] + b_v) / 2;
  1106				buf[1][1] = buf[1][0];
  1107				buf[2][1] = buf[2][0];
  1108				break;
  1109			}
  1110			buf[1][0] = g_u_s;
  1111			buf[2][0] = b_v;
  1112			break;
  1113		case V4L2_PIX_FMT_YVU422M:
  1114		case V4L2_PIX_FMT_YVU420:
  1115		case V4L2_PIX_FMT_YVU420M:
  1116			buf[0][offset] = r_y_h;
  1117			if (odd) {
  1118				buf[1][0] = (buf[1][0] + b_v) / 2;
  1119				buf[2][0] = (buf[2][0] + g_u_s) / 2;
  1120				buf[1][1] = buf[1][0];
  1121				buf[2][1] = buf[2][0];
  1122				break;
  1123			}
  1124			buf[1][0] = b_v;
  1125			buf[2][0] = g_u_s;
  1126			break;
  1127	
  1128		case V4L2_PIX_FMT_NV12:
  1129		case V4L2_PIX_FMT_NV12M:
  1130		case V4L2_PIX_FMT_NV16:
  1131		case V4L2_PIX_FMT_NV16M:
  1132			buf[0][offset] = r_y_h;
  1133			if (odd) {
  1134				buf[1][0] = (buf[1][0] + g_u_s) / 2;
  1135				buf[1][1] = (buf[1][1] + b_v) / 2;
  1136				break;
  1137			}
  1138			buf[1][0] = g_u_s;
  1139			buf[1][1] = b_v;
  1140			break;
  1141		case V4L2_PIX_FMT_NV21:
  1142		case V4L2_PIX_FMT_NV21M:
  1143		case V4L2_PIX_FMT_NV61:
  1144		case V4L2_PIX_FMT_NV61M:
  1145			buf[0][offset] = r_y_h;
  1146			if (odd) {
  1147				buf[1][0] = (buf[1][0] + b_v) / 2;
  1148				buf[1][1] = (buf[1][1] + g_u_s) / 2;
  1149				break;
  1150			}
  1151			buf[1][0] = b_v;
  1152			buf[1][1] = g_u_s;
  1153			break;
  1154	
  1155		case V4L2_PIX_FMT_YUV444M:
  1156			buf[0][offset] = r_y_h;
  1157			buf[1][offset] = g_u_s;
  1158			buf[2][offset] = b_v;
  1159			break;
  1160	
  1161		case V4L2_PIX_FMT_YVU444M:
  1162			buf[0][offset] = r_y_h;
  1163			buf[1][offset] = b_v;
  1164			buf[2][offset] = g_u_s;
  1165			break;
  1166	
  1167		case V4L2_PIX_FMT_NV24:
  1168			buf[0][offset] = r_y_h;
  1169			buf[1][2 * offset] = g_u_s;
  1170			buf[1][(2 * offset + 1) % 8] = b_v;
  1171			break;
  1172	
  1173		case V4L2_PIX_FMT_NV42:
  1174			buf[0][offset] = r_y_h;
  1175			buf[1][2 * offset] = b_v;
  1176			buf[1][(2 * offset + 1) % 8] = g_u_s;
  1177			break;
  1178	
  1179		case V4L2_PIX_FMT_YUYV:
  1180			buf[0][offset] = r_y_h;
  1181			if (odd) {
  1182				buf[0][1] = (buf[0][1] + g_u_s) / 2;
  1183				buf[0][3] = (buf[0][3] + b_v) / 2;
  1184				break;
  1185			}
  1186			buf[0][1] = g_u_s;
  1187			buf[0][3] = b_v;
  1188			break;
  1189		case V4L2_PIX_FMT_UYVY:
  1190			buf[0][offset + 1] = r_y_h;
  1191			if (odd) {
  1192				buf[0][0] = (buf[0][0] + g_u_s) / 2;
  1193				buf[0][2] = (buf[0][2] + b_v) / 2;
  1194				break;
  1195			}
  1196			buf[0][0] = g_u_s;
  1197			buf[0][2] = b_v;
  1198			break;
  1199		case V4L2_PIX_FMT_YVYU:
  1200			buf[0][offset] = r_y_h;
  1201			if (odd) {
  1202				buf[0][1] = (buf[0][1] + b_v) / 2;
  1203				buf[0][3] = (buf[0][3] + g_u_s) / 2;
  1204				break;
  1205			}
  1206			buf[0][1] = b_v;
  1207			buf[0][3] = g_u_s;
  1208			break;
  1209		case V4L2_PIX_FMT_VYUY:
  1210			buf[0][offset + 1] = r_y_h;
  1211			if (odd) {
  1212				buf[0][0] = (buf[0][0] + b_v) / 2;
  1213				buf[0][2] = (buf[0][2] + g_u_s) / 2;
  1214				break;
  1215			}
  1216			buf[0][0] = b_v;
  1217			buf[0][2] = g_u_s;
  1218			break;
  1219		case V4L2_PIX_FMT_RGB332:
  1220			buf[0][offset] = (r_y_h << 5) | (g_u_s << 2) | b_v;
  1221			break;
  1222		case V4L2_PIX_FMT_YUV565:
  1223		case V4L2_PIX_FMT_RGB565:
  1224			buf[0][offset] = (g_u_s << 5) | b_v;
  1225			buf[0][offset + 1] = (r_y_h << 3) | (g_u_s >> 3);
  1226			break;
  1227		case V4L2_PIX_FMT_RGB565X:
  1228			buf[0][offset] = (r_y_h << 3) | (g_u_s >> 3);
  1229			buf[0][offset + 1] = (g_u_s << 5) | b_v;
  1230			break;
  1231		case V4L2_PIX_FMT_RGB444:
  1232		case V4L2_PIX_FMT_XRGB444:
  1233			alpha = 0;
  1234			/* fall through */
  1235		case V4L2_PIX_FMT_YUV444:
  1236		case V4L2_PIX_FMT_ARGB444:
  1237			buf[0][offset] = (g_u_s << 4) | b_v;
  1238			buf[0][offset + 1] = (alpha & 0xf0) | r_y_h;
  1239			break;
  1240		case V4L2_PIX_FMT_RGB555:
  1241		case V4L2_PIX_FMT_XRGB555:
  1242			alpha = 0;
  1243			/* fall through */
  1244		case V4L2_PIX_FMT_YUV555:
  1245		case V4L2_PIX_FMT_ARGB555:
  1246			buf[0][offset] = (g_u_s << 5) | b_v;
  1247			buf[0][offset + 1] = (alpha & 0x80) | (r_y_h << 2)
  1248							    | (g_u_s >> 3);
  1249			break;
  1250		case V4L2_PIX_FMT_RGB555X:
  1251		case V4L2_PIX_FMT_XRGB555X:
  1252			alpha = 0;
  1253			/* fall through */
  1254		case V4L2_PIX_FMT_ARGB555X:
  1255			buf[0][offset] = (alpha & 0x80) | (r_y_h << 2) | (g_u_s >> 3);
  1256			buf[0][offset + 1] = (g_u_s << 5) | b_v;
  1257			break;
  1258		case V4L2_PIX_FMT_RGB24:
  1259		case V4L2_PIX_FMT_HSV24:
  1260			buf[0][offset] = r_y_h;
  1261			buf[0][offset + 1] = g_u_s;
  1262			buf[0][offset + 2] = b_v;
  1263			break;
  1264		case V4L2_PIX_FMT_BGR24:
  1265			buf[0][offset] = b_v;
  1266			buf[0][offset + 1] = g_u_s;
  1267			buf[0][offset + 2] = r_y_h;
  1268			break;
  1269		case V4L2_PIX_FMT_BGR666:
  1270			buf[0][offset] = (b_v << 2) | (g_u_s >> 4);
  1271			buf[0][offset + 1] = (g_u_s << 4) | (r_y_h >> 2);
  1272			buf[0][offset + 2] = r_y_h << 6;
  1273			buf[0][offset + 3] = 0;
  1274			break;
  1275		case V4L2_PIX_FMT_RGB32:
  1276		case V4L2_PIX_FMT_XRGB32:
  1277		case V4L2_PIX_FMT_HSV32:
  1278		case V4L2_PIX_FMT_XYUV32:
  1279			alpha = 0;
  1280			/* fall through */
  1281		case V4L2_PIX_FMT_YUV32:
  1282		case V4L2_PIX_FMT_ARGB32:
> 1283		case V4L2_PIX_FMT_YUV32:
  1284		case V4L2_PIX_FMT_AYUV32:
  1285			buf[0][offset] = alpha;
  1286			buf[0][offset + 1] = r_y_h;
  1287			buf[0][offset + 2] = g_u_s;
  1288			buf[0][offset + 3] = b_v;
  1289			break;
  1290		case V4L2_PIX_FMT_BGR32:
  1291		case V4L2_PIX_FMT_XBGR32:
  1292		case V4L2_PIX_FMT_VUYX32:
  1293			alpha = 0;
  1294			/* fall through */
  1295		case V4L2_PIX_FMT_ABGR32:
  1296		case V4L2_PIX_FMT_VUYA32:
  1297			buf[0][offset] = b_v;
  1298			buf[0][offset + 1] = g_u_s;
  1299			buf[0][offset + 2] = r_y_h;
  1300			buf[0][offset + 3] = alpha;
  1301			break;
  1302		case V4L2_PIX_FMT_SBGGR8:
  1303			buf[0][offset] = odd ? g_u_s : b_v;
  1304			buf[1][offset] = odd ? r_y_h : g_u_s;
  1305			break;
  1306		case V4L2_PIX_FMT_SGBRG8:
  1307			buf[0][offset] = odd ? b_v : g_u_s;
  1308			buf[1][offset] = odd ? g_u_s : r_y_h;
  1309			break;
  1310		case V4L2_PIX_FMT_SGRBG8:
  1311			buf[0][offset] = odd ? r_y_h : g_u_s;
  1312			buf[1][offset] = odd ? g_u_s : b_v;
  1313			break;
  1314		case V4L2_PIX_FMT_SRGGB8:
  1315			buf[0][offset] = odd ? g_u_s : r_y_h;
  1316			buf[1][offset] = odd ? b_v : g_u_s;
  1317			break;
  1318		case V4L2_PIX_FMT_SBGGR10:
  1319			buf[0][offset] = odd ? g_u_s << 2 : b_v << 2;
  1320			buf[0][offset + 1] = odd ? g_u_s >> 6 : b_v >> 6;
  1321			buf[1][offset] = odd ? r_y_h << 2 : g_u_s << 2;
  1322			buf[1][offset + 1] = odd ? r_y_h >> 6 : g_u_s >> 6;
  1323			buf[0][offset] |= (buf[0][offset] >> 2) & 3;
  1324			buf[1][offset] |= (buf[1][offset] >> 2) & 3;
  1325			break;
  1326		case V4L2_PIX_FMT_SGBRG10:
  1327			buf[0][offset] = odd ? b_v << 2 : g_u_s << 2;
  1328			buf[0][offset + 1] = odd ? b_v >> 6 : g_u_s >> 6;
  1329			buf[1][offset] = odd ? g_u_s << 2 : r_y_h << 2;
  1330			buf[1][offset + 1] = odd ? g_u_s >> 6 : r_y_h >> 6;
  1331			buf[0][offset] |= (buf[0][offset] >> 2) & 3;
  1332			buf[1][offset] |= (buf[1][offset] >> 2) & 3;
  1333			break;
  1334		case V4L2_PIX_FMT_SGRBG10:
  1335			buf[0][offset] = odd ? r_y_h << 2 : g_u_s << 2;
  1336			buf[0][offset + 1] = odd ? r_y_h >> 6 : g_u_s >> 6;
  1337			buf[1][offset] = odd ? g_u_s << 2 : b_v << 2;
  1338			buf[1][offset + 1] = odd ? g_u_s >> 6 : b_v >> 6;
  1339			buf[0][offset] |= (buf[0][offset] >> 2) & 3;
  1340			buf[1][offset] |= (buf[1][offset] >> 2) & 3;
  1341			break;
  1342		case V4L2_PIX_FMT_SRGGB10:
  1343			buf[0][offset] = odd ? g_u_s << 2 : r_y_h << 2;
  1344			buf[0][offset + 1] = odd ? g_u_s >> 6 : r_y_h >> 6;
  1345			buf[1][offset] = odd ? b_v << 2 : g_u_s << 2;
  1346			buf[1][offset + 1] = odd ? b_v >> 6 : g_u_s >> 6;
  1347			buf[0][offset] |= (buf[0][offset] >> 2) & 3;
  1348			buf[1][offset] |= (buf[1][offset] >> 2) & 3;
  1349			break;
  1350		case V4L2_PIX_FMT_SBGGR12:
  1351			buf[0][offset] = odd ? g_u_s << 4 : b_v << 4;
  1352			buf[0][offset + 1] = odd ? g_u_s >> 4 : b_v >> 4;
  1353			buf[1][offset] = odd ? r_y_h << 4 : g_u_s << 4;
  1354			buf[1][offset + 1] = odd ? r_y_h >> 4 : g_u_s >> 4;
  1355			buf[0][offset] |= (buf[0][offset] >> 4) & 0xf;
  1356			buf[1][offset] |= (buf[1][offset] >> 4) & 0xf;
  1357			break;
  1358		case V4L2_PIX_FMT_SGBRG12:
  1359			buf[0][offset] = odd ? b_v << 4 : g_u_s << 4;
  1360			buf[0][offset + 1] = odd ? b_v >> 4 : g_u_s >> 4;
  1361			buf[1][offset] = odd ? g_u_s << 4 : r_y_h << 4;
  1362			buf[1][offset + 1] = odd ? g_u_s >> 4 : r_y_h >> 4;
  1363			buf[0][offset] |= (buf[0][offset] >> 4) & 0xf;
  1364			buf[1][offset] |= (buf[1][offset] >> 4) & 0xf;
  1365			break;
  1366		case V4L2_PIX_FMT_SGRBG12:
  1367			buf[0][offset] = odd ? r_y_h << 4 : g_u_s << 4;
  1368			buf[0][offset + 1] = odd ? r_y_h >> 4 : g_u_s >> 4;
  1369			buf[1][offset] = odd ? g_u_s << 4 : b_v << 4;
  1370			buf[1][offset + 1] = odd ? g_u_s >> 4 : b_v >> 4;
  1371			buf[0][offset] |= (buf[0][offset] >> 4) & 0xf;
  1372			buf[1][offset] |= (buf[1][offset] >> 4) & 0xf;
  1373			break;
  1374		case V4L2_PIX_FMT_SRGGB12:
  1375			buf[0][offset] = odd ? g_u_s << 4 : r_y_h << 4;
  1376			buf[0][offset + 1] = odd ? g_u_s >> 4 : r_y_h >> 4;
  1377			buf[1][offset] = odd ? b_v << 4 : g_u_s << 4;
  1378			buf[1][offset + 1] = odd ? b_v >> 4 : g_u_s >> 4;
  1379			buf[0][offset] |= (buf[0][offset] >> 4) & 0xf;
  1380			buf[1][offset] |= (buf[1][offset] >> 4) & 0xf;
  1381			break;
  1382		case V4L2_PIX_FMT_SBGGR16:
  1383			buf[0][offset] = buf[0][offset + 1] = odd ? g_u_s : b_v;
  1384			buf[1][offset] = buf[1][offset + 1] = odd ? r_y_h : g_u_s;
  1385			break;
  1386		case V4L2_PIX_FMT_SGBRG16:
  1387			buf[0][offset] = buf[0][offset + 1] = odd ? b_v : g_u_s;
  1388			buf[1][offset] = buf[1][offset + 1] = odd ? g_u_s : r_y_h;
  1389			break;
  1390		case V4L2_PIX_FMT_SGRBG16:
  1391			buf[0][offset] = buf[0][offset + 1] = odd ? r_y_h : g_u_s;
  1392			buf[1][offset] = buf[1][offset + 1] = odd ? g_u_s : b_v;
  1393			break;
  1394		case V4L2_PIX_FMT_SRGGB16:
  1395			buf[0][offset] = buf[0][offset + 1] = odd ? g_u_s : r_y_h;
  1396			buf[1][offset] = buf[1][offset + 1] = odd ? b_v : g_u_s;
  1397			break;
  1398		}
  1399	}
  1400	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux