|
@@ -79,6 +79,7 @@
|
|
#define VIVID_CID_MAX_EDID_BLOCKS (VIVID_CID_VIVID_BASE + 40)
|
|
#define VIVID_CID_MAX_EDID_BLOCKS (VIVID_CID_VIVID_BASE + 40)
|
|
#define VIVID_CID_PERCENTAGE_FILL (VIVID_CID_VIVID_BASE + 41)
|
|
#define VIVID_CID_PERCENTAGE_FILL (VIVID_CID_VIVID_BASE + 41)
|
|
#define VIVID_CID_REDUCED_FPS (VIVID_CID_VIVID_BASE + 42)
|
|
#define VIVID_CID_REDUCED_FPS (VIVID_CID_VIVID_BASE + 42)
|
|
|
|
+#define VIVID_CID_HSV_ENC (VIVID_CID_VIVID_BASE + 43)
|
|
|
|
|
|
#define VIVID_CID_STD_SIGNAL_MODE (VIVID_CID_VIVID_BASE + 60)
|
|
#define VIVID_CID_STD_SIGNAL_MODE (VIVID_CID_VIVID_BASE + 60)
|
|
#define VIVID_CID_STANDARD (VIVID_CID_VIVID_BASE + 61)
|
|
#define VIVID_CID_STANDARD (VIVID_CID_VIVID_BASE + 61)
|
|
@@ -378,6 +379,14 @@ static int vivid_vid_cap_s_ctrl(struct v4l2_ctrl *ctrl)
|
|
vivid_send_source_change(dev, HDMI);
|
|
vivid_send_source_change(dev, HDMI);
|
|
vivid_send_source_change(dev, WEBCAM);
|
|
vivid_send_source_change(dev, WEBCAM);
|
|
break;
|
|
break;
|
|
|
|
+ case VIVID_CID_HSV_ENC:
|
|
|
|
+ tpg_s_hsv_enc(&dev->tpg, ctrl->val ? V4L2_HSV_ENC_256 :
|
|
|
|
+ V4L2_HSV_ENC_180);
|
|
|
|
+ vivid_send_source_change(dev, TV);
|
|
|
|
+ vivid_send_source_change(dev, SVID);
|
|
|
|
+ vivid_send_source_change(dev, HDMI);
|
|
|
|
+ vivid_send_source_change(dev, WEBCAM);
|
|
|
|
+ break;
|
|
case VIVID_CID_QUANTIZATION:
|
|
case VIVID_CID_QUANTIZATION:
|
|
tpg_s_quantization(&dev->tpg, ctrl->val);
|
|
tpg_s_quantization(&dev->tpg, ctrl->val);
|
|
vivid_send_source_change(dev, TV);
|
|
vivid_send_source_change(dev, TV);
|
|
@@ -778,6 +787,21 @@ static const struct v4l2_ctrl_config vivid_ctrl_ycbcr_enc = {
|
|
.qmenu = vivid_ctrl_ycbcr_enc_strings,
|
|
.qmenu = vivid_ctrl_ycbcr_enc_strings,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static const char * const vivid_ctrl_hsv_enc_strings[] = {
|
|
|
|
+ "Hue 0-179",
|
|
|
|
+ "Hue 0-256",
|
|
|
|
+ NULL,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const struct v4l2_ctrl_config vivid_ctrl_hsv_enc = {
|
|
|
|
+ .ops = &vivid_vid_cap_ctrl_ops,
|
|
|
|
+ .id = VIVID_CID_HSV_ENC,
|
|
|
|
+ .name = "HSV Encoding",
|
|
|
|
+ .type = V4L2_CTRL_TYPE_MENU,
|
|
|
|
+ .max = ARRAY_SIZE(vivid_ctrl_hsv_enc_strings) - 2,
|
|
|
|
+ .qmenu = vivid_ctrl_hsv_enc_strings,
|
|
|
|
+};
|
|
|
|
+
|
|
static const char * const vivid_ctrl_quantization_strings[] = {
|
|
static const char * const vivid_ctrl_quantization_strings[] = {
|
|
"Default",
|
|
"Default",
|
|
"Full Range",
|
|
"Full Range",
|
|
@@ -1454,6 +1478,7 @@ int vivid_create_controls(struct vivid_dev *dev, bool show_ccs_cap,
|
|
&vivid_ctrl_colorspace, NULL);
|
|
&vivid_ctrl_colorspace, NULL);
|
|
v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_xfer_func, NULL);
|
|
v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_xfer_func, NULL);
|
|
v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_ycbcr_enc, NULL);
|
|
v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_ycbcr_enc, NULL);
|
|
|
|
+ v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_hsv_enc, NULL);
|
|
v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_quantization, NULL);
|
|
v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_quantization, NULL);
|
|
v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_alpha_mode, NULL);
|
|
v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_alpha_mode, NULL);
|
|
}
|
|
}
|