"Region Grid",
NULL,
};
-
+ static const char * const porter_duff_modes[] = {
+ "Source",
+ "Source Top",
+ "Source In",
+ "Source Out",
+ "Source Over",
+ "Destination",
+ "Destination Top",
+ "Destination In",
+ "Destination Out",
+ "Destination Over",
+ "Add",
+ "Clear",
+ NULL
+ };
switch (id) {
case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
return vpx_golden_frame_sel;
case V4L2_CID_JPEG_CHROMA_SUBSAMPLING:
return jpeg_chroma_subsampling;
+ case V4L2_CID_PORTER_DUFF_MODE:
+ return porter_duff_modes;
case V4L2_CID_DV_TX_MODE:
return dv_tx_mode;
case V4L2_CID_DV_TX_RGB_RANGE:
case V4L2_CID_LINK_FREQ: return "Link Frequency";
case V4L2_CID_PIXEL_RATE: return "Pixel Rate";
case V4L2_CID_TEST_PATTERN: return "Test Pattern";
+ case V4L2_CID_PORTER_DUFF_MODE: return "PorterDuff Blend Modes";
/* DV controls */
/* Keep the order of the 'case's the same as in v4l2-controls.h! */
case V4L2_CID_DV_TX_RGB_RANGE:
case V4L2_CID_DV_RX_RGB_RANGE:
case V4L2_CID_TEST_PATTERN:
+ case V4L2_CID_PORTER_DUFF_MODE:
case V4L2_CID_TUNE_DEEMPHASIS:
case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL:
case V4L2_CID_DETECT_MD_MODE:
#define V4L2_CID_PIXEL_RATE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2)
#define V4L2_CID_TEST_PATTERN (V4L2_CID_IMAGE_PROC_CLASS_BASE + 3)
+#define V4L2_CID_PORTER_DUFF_MODE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 5)
+enum v4l2_porter_duff_mode {
+ V4L2_PORTER_DUFF_SRC = 0,
+ V4L2_PORTER_DUFF_SRCATOP = 1,
+ V4L2_PORTER_DUFF_SRCIN = 2,
+ V4L2_PORTER_DUFF_SRCOUT = 3,
+ V4L2_PORTER_DUFF_SRCOVER = 4,
+ V4L2_PORTER_DUFF_DST = 5,
+ V4L2_PORTER_DUFF_DSTATOP = 6,
+ V4L2_PORTER_DUFF_DSTIN = 7,
+ V4L2_PORTER_DUFF_DSTOUT = 8,
+ V4L2_PORTER_DUFF_DSTOVER = 9,
+ V4L2_PORTER_DUFF_ADD = 10,
+ V4L2_PORTER_DUFF_CLEAR = 11,
+};
/* DV-class control IDs defined by V4L2 */
#define V4L2_CID_DV_CLASS_BASE (V4L2_CTRL_CLASS_DV | 0x900)