@@ -386,6 +386,23 @@ std::string fmtdesc2s(unsigned flags, bool is_hsv)
return flags2s(flags, fmtdesc_ycbcr_def);
}
+#define MBUS_DEF(enc_type) \
+static const flag_def mbus_ ## enc_type ## _def[] = { \
+ { V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION, "csc-quantization" }, \
+ { V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC, "csc-"#enc_type }, \
+ { 0, NULL } \
+};
+
+MBUS_DEF(ycbcr)
+MBUS_DEF(hsv)
+
+std::string mbus2s(unsigned flags, bool is_hsv)
+{
+ if (is_hsv)
+ return flags2s(flags, mbus_hsv_def);
+ return flags2s(flags, mbus_ycbcr_def);
+}
+
static const flag_def selection_targets_def[] = {
{ V4L2_SEL_TGT_CROP_ACTIVE, "crop" },
{ V4L2_SEL_TGT_CROP_DEFAULT, "crop_default" },
@@ -8,6 +8,7 @@
#include <string>
#include <linux/videodev2.h>
+#include <linux/v4l2-subdev.h>
/* Print capability information */
void v4l2_info_capability(const v4l2_capability &cap);
@@ -50,6 +51,9 @@ std::string pixflags2s(unsigned flags);
/* Return sliced vbi services description */
std::string service2s(unsigned service);
+/* Return v4l2_subdev_mbus_code_enum flags description */
+std::string mbus2s(unsigned flags, bool is_hsv);
+
/* Return v4l2_fmtdesc flags description */
std::string fmtdesc2s(unsigned flags, bool is_hsv);
@@ -573,10 +573,10 @@ static void print_mbus_code(__u32 code)
if (mbus_names[i].code == code)
break;
if (mbus_names[i].name)
- printf("\t0x%04x: MEDIA_BUS_FMT_%s\n",
+ printf("\t0x%04x: MEDIA_BUS_FMT_%s",
mbus_names[i].code, mbus_names[i].name);
else
- printf("\t0x%04x\n", code);
+ printf("\t0x%04x", code);
}
static void print_mbus_codes(int fd, __u32 pad)
@@ -593,6 +593,12 @@ static void print_mbus_codes(int fd, __u32 pad)
if (ret)
break;
print_mbus_code(mbus_code.code);
+ if (mbus_code.flags) {
+ bool is_hsv = mbus_code.code == MEDIA_BUS_FMT_AHSV8888_1X32;
+
+ printf(", %s", mbus2s(mbus_code.flags, is_hsv).c_str());
+ }
+ printf("\n");
mbus_code.index++;
}
}
Add a new function mbus2s to that prints a descriptive string of the supported flags of the the v4l2_subdev_mbus_code_enum Use this function in the print_mbus_code function. Also add a macro MBUS_DEF(enc_type) to create the two arries 'mbus_hsv_def' and mbus_ycbcr_def' that maps flags to string according to the enc_type (ycbcr/hsv) Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com> --- utils/common/v4l2-info.cpp | 17 +++++++++++++++++ utils/common/v4l2-info.h | 4 ++++ utils/v4l2-ctl/v4l2-ctl-subdev.cpp | 10 ++++++++-- 3 files changed, 29 insertions(+), 2 deletions(-)