Re: [PATCH v6] vivid: Add metadata capture support
On 9/16/19 4:08 PM, Vandana BN wrote: > This patch adds meatadata capture support in vivid driver. > Added new files for metadata capture. > > Signed-off-by: Vandana BN > --- > Changes since v5: > -Use multiline comment in vivid-core.c. > -changed vivid_meta_cap_gen() to take proper length. > --- > drivers/media/platform/vivid/Makefile | 2 +- > drivers/media/platform/vivid/vivid-core.c | 93 +- > drivers/media/platform/vivid/vivid-core.h | 12 ++ > drivers/media/platform/vivid/vivid-ctrls.c| 14 ++ > .../media/platform/vivid/vivid-kthread-cap.c | 48 - > drivers/media/platform/vivid/vivid-meta-cap.c | 175 ++ > drivers/media/platform/vivid/vivid-meta-cap.h | 18 ++ > drivers/media/platform/vivid/vivid-meta-gen.c | 25 +++ > drivers/media/platform/vivid/vivid-meta-gen.h | 18 ++ > 9 files changed, 396 insertions(+), 9 deletions(-) > create mode 100644 drivers/media/platform/vivid/vivid-meta-cap.c > create mode 100644 drivers/media/platform/vivid/vivid-meta-cap.h > create mode 100644 drivers/media/platform/vivid/vivid-meta-gen.c > create mode 100644 drivers/media/platform/vivid/vivid-meta-gen.h > > diff --git a/drivers/media/platform/vivid/Makefile > b/drivers/media/platform/vivid/Makefile > index 2f5762e3309a..70a9262fafaa 100644 > --- a/drivers/media/platform/vivid/Makefile > +++ b/drivers/media/platform/vivid/Makefile > @@ -3,7 +3,7 @@ vivid-objs := vivid-core.o vivid-ctrls.o vivid-vid-common.o > vivid-vbi-gen.o \ > vivid-vid-cap.o vivid-vid-out.o vivid-kthread-cap.o > vivid-kthread-out.o \ > vivid-radio-rx.o vivid-radio-tx.o vivid-radio-common.o \ > vivid-rds-gen.o vivid-sdr-cap.o vivid-vbi-cap.o vivid-vbi-out.o > \ > - vivid-osd.o > + vivid-osd.o vivid-meta-cap.o vivid-meta-gen.o > ifeq ($(CONFIG_VIDEO_VIVID_CEC),y) >vivid-objs += vivid-cec.o > endif > diff --git a/drivers/media/platform/vivid/vivid-core.c > b/drivers/media/platform/vivid/vivid-core.c > index 53315c8dd2bb..8c9f4651a9c2 100644 > --- a/drivers/media/platform/vivid/vivid-core.c > +++ b/drivers/media/platform/vivid/vivid-core.c > @@ -37,6 +37,7 @@ > #include "vivid-osd.h" > #include "vivid-cec.h" > #include "vivid-ctrls.h" > +#include "vivid-meta-cap.h" > > #define VIVID_MODULE_NAME "vivid" > > @@ -79,6 +80,10 @@ static int radio_tx_nr[VIVID_MAX_DEVS] = { [0 ... > (VIVID_MAX_DEVS - 1)] = -1 }; > module_param_array(radio_tx_nr, int, NULL, 0444); > MODULE_PARM_DESC(radio_tx_nr, " radioX start number, -1 is autodetect"); > > +static int meta_cap_nr[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = -1 > }; > +module_param_array(meta_cap_nr, int, NULL, 0444); > +MODULE_PARM_DESC(meta_cap_nr, " videoX start number, -1 is autodetect"); > + > static int ccs_cap_mode[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = > -1 }; > module_param_array(ccs_cap_mode, int, NULL, 0444); > MODULE_PARM_DESC(ccs_cap_mode, " capture crop/compose/scale mode:\n" > @@ -95,8 +100,13 @@ static unsigned multiplanar[VIVID_MAX_DEVS] = { [0 ... > (VIVID_MAX_DEVS - 1)] = 1 > module_param_array(multiplanar, uint, NULL, 0444); > MODULE_PARM_DESC(multiplanar, " 1 (default) creates a single planar device, > 2 creates a multiplanar device."); > > -/* Default: video + vbi-cap (raw and sliced) + radio rx + radio tx + sdr + > vbi-out + vid-out */ > -static unsigned node_types[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] > = 0x1d3d }; > +/* > + * Default: video + vbi-cap (raw and sliced) + radio rx + radio tx + sdr + > + * vbi-out + vid-out + meta-cap > + */ > +static unsigned int node_types[VIVID_MAX_DEVS] = { > + [0 ... (VIVID_MAX_DEVS - 1)] = 0x21d3d > +}; > module_param_array(node_types, uint, NULL, 0444); > MODULE_PARM_DESC(node_types, " node types, default is 0x1d3d. Bitmask with > the following meaning:\n" The default value in this text needs to be update (0x21d3d). >"\t\tbit 0: Video Capture node\n" > @@ -106,7 +116,8 @@ MODULE_PARM_DESC(node_types, " node types, default is > 0x1d3d. Bitmask with the f >"\t\tbit 8: Video Output node\n" >"\t\tbit 10-11: VBI Output node: 0 = none, 1 = > raw vbi, 2 = sliced vbi, 3 = both\n" >"\t\tbit 12: Radio Transmitter node\n" > - "\t\tbit 16: Framebuffer for testing > overlays"); > + "\t\tbit 16: Framebuffer for testing > overlays\n" > + "\t\tbit 17: Metadata capture node\n"); Nitpick: capture -> Capture (conforms with e.g. Video Capture) > > /* Default: 4 inputs */ > static unsigned num_inputs[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] > = 4 }; > @@ -205,7 +216,7 @@ static int vidioc_querycap(struct file *file, void *priv, > cap->capabilities = dev->vid_cap_caps | dev->vid_out_caps | > dev->vbi_cap_caps | dev
[PATCH v6] vivid: Add metadata capture support
This patch adds meatadata capture support in vivid driver. Added new files for metadata capture. Signed-off-by: Vandana BN --- Changes since v5: -Use multiline comment in vivid-core.c. -changed vivid_meta_cap_gen() to take proper length. --- drivers/media/platform/vivid/Makefile | 2 +- drivers/media/platform/vivid/vivid-core.c | 93 +- drivers/media/platform/vivid/vivid-core.h | 12 ++ drivers/media/platform/vivid/vivid-ctrls.c| 14 ++ .../media/platform/vivid/vivid-kthread-cap.c | 48 - drivers/media/platform/vivid/vivid-meta-cap.c | 175 ++ drivers/media/platform/vivid/vivid-meta-cap.h | 18 ++ drivers/media/platform/vivid/vivid-meta-gen.c | 25 +++ drivers/media/platform/vivid/vivid-meta-gen.h | 18 ++ 9 files changed, 396 insertions(+), 9 deletions(-) create mode 100644 drivers/media/platform/vivid/vivid-meta-cap.c create mode 100644 drivers/media/platform/vivid/vivid-meta-cap.h create mode 100644 drivers/media/platform/vivid/vivid-meta-gen.c create mode 100644 drivers/media/platform/vivid/vivid-meta-gen.h diff --git a/drivers/media/platform/vivid/Makefile b/drivers/media/platform/vivid/Makefile index 2f5762e3309a..70a9262fafaa 100644 --- a/drivers/media/platform/vivid/Makefile +++ b/drivers/media/platform/vivid/Makefile @@ -3,7 +3,7 @@ vivid-objs := vivid-core.o vivid-ctrls.o vivid-vid-common.o vivid-vbi-gen.o \ vivid-vid-cap.o vivid-vid-out.o vivid-kthread-cap.o vivid-kthread-out.o \ vivid-radio-rx.o vivid-radio-tx.o vivid-radio-common.o \ vivid-rds-gen.o vivid-sdr-cap.o vivid-vbi-cap.o vivid-vbi-out.o \ - vivid-osd.o + vivid-osd.o vivid-meta-cap.o vivid-meta-gen.o ifeq ($(CONFIG_VIDEO_VIVID_CEC),y) vivid-objs += vivid-cec.o endif diff --git a/drivers/media/platform/vivid/vivid-core.c b/drivers/media/platform/vivid/vivid-core.c index 53315c8dd2bb..8c9f4651a9c2 100644 --- a/drivers/media/platform/vivid/vivid-core.c +++ b/drivers/media/platform/vivid/vivid-core.c @@ -37,6 +37,7 @@ #include "vivid-osd.h" #include "vivid-cec.h" #include "vivid-ctrls.h" +#include "vivid-meta-cap.h" #define VIVID_MODULE_NAME "vivid" @@ -79,6 +80,10 @@ static int radio_tx_nr[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = -1 }; module_param_array(radio_tx_nr, int, NULL, 0444); MODULE_PARM_DESC(radio_tx_nr, " radioX start number, -1 is autodetect"); +static int meta_cap_nr[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = -1 }; +module_param_array(meta_cap_nr, int, NULL, 0444); +MODULE_PARM_DESC(meta_cap_nr, " videoX start number, -1 is autodetect"); + static int ccs_cap_mode[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = -1 }; module_param_array(ccs_cap_mode, int, NULL, 0444); MODULE_PARM_DESC(ccs_cap_mode, " capture crop/compose/scale mode:\n" @@ -95,8 +100,13 @@ static unsigned multiplanar[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = 1 module_param_array(multiplanar, uint, NULL, 0444); MODULE_PARM_DESC(multiplanar, " 1 (default) creates a single planar device, 2 creates a multiplanar device."); -/* Default: video + vbi-cap (raw and sliced) + radio rx + radio tx + sdr + vbi-out + vid-out */ -static unsigned node_types[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = 0x1d3d }; +/* + * Default: video + vbi-cap (raw and sliced) + radio rx + radio tx + sdr + + * vbi-out + vid-out + meta-cap + */ +static unsigned int node_types[VIVID_MAX_DEVS] = { + [0 ... (VIVID_MAX_DEVS - 1)] = 0x21d3d +}; module_param_array(node_types, uint, NULL, 0444); MODULE_PARM_DESC(node_types, " node types, default is 0x1d3d. Bitmask with the following meaning:\n" "\t\tbit 0: Video Capture node\n" @@ -106,7 +116,8 @@ MODULE_PARM_DESC(node_types, " node types, default is 0x1d3d. Bitmask with the f "\t\tbit 8: Video Output node\n" "\t\tbit 10-11: VBI Output node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both\n" "\t\tbit 12: Radio Transmitter node\n" -"\t\tbit 16: Framebuffer for testing overlays"); +"\t\tbit 16: Framebuffer for testing overlays\n" +"\t\tbit 17: Metadata capture node\n"); /* Default: 4 inputs */ static unsigned num_inputs[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = 4 }; @@ -205,7 +216,7 @@ static int vidioc_querycap(struct file *file, void *priv, cap->capabilities = dev->vid_cap_caps | dev->vid_out_caps | dev->vbi_cap_caps | dev->vbi_out_caps | dev->radio_rx_caps | dev->radio_tx_caps | - dev->sdr_cap_caps | V4L2_CAP_DEVICE_CAPS; + dev->sdr_cap_caps | dev->meta_cap_caps | V4L2_CAP_DEVICE_CAPS; return 0; } @@ -433,7 +444,8 @@ static bool vivid_is_last_user(struct vivid_dev *dev) vivid_is_in_use(&de