All of lore.kernel.org
 help / color / mirror / Atom feed
* [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev
@ 2015-12-08 15:15 Sakari Ailus
  2015-12-08 15:15 ` [v4l-utils PATCH v2 1/3] libv4l2subdev: Use generated format definitions " Sakari Ailus
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Sakari Ailus @ 2015-12-08 15:15 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart, hverkuil

Hi,

Rebased on current v4l-utils. There were conflicts as new media bus
formats were added. The earlier version is here:

<URL:http://www.spinics.net/lists/linux-media/msg94619.html>

These patches go on top of the field support set, which hasn't appeared in
the archive yet. The earlier version is here:

<URL:http://www.spinics.net/lists/linux-media/msg94605.html>

-- 
Kind regards,
Sakari


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [v4l-utils PATCH v2 1/3] libv4l2subdev: Use generated format definitions in libv4l2subdev
  2015-12-08 15:15 [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev Sakari Ailus
@ 2015-12-08 15:15 ` Sakari Ailus
  2015-12-13 21:36   ` Laurent Pinchart
  2015-12-08 15:15 ` [v4l-utils PATCH v2 2/3] libv4l2subdev: Add a function to list library supported pixel codes Sakari Ailus
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 11+ messages in thread
From: Sakari Ailus @ 2015-12-08 15:15 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart, hverkuil

Instead of manually adding each and every new media bus pixel code to
libv4l2subdev, generate the list automatically. The pre-existing formats
that do not match the list are not modified so that existing users are
unaffected by this change, with the exception of converting codes to
strings, which will use the new definitions.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 utils/media-ctl/.gitignore      | 1 +
 utils/media-ctl/Makefile.am     | 8 ++++++++
 utils/media-ctl/libv4l2subdev.c | 1 +
 3 files changed, 10 insertions(+)

diff --git a/utils/media-ctl/.gitignore b/utils/media-ctl/.gitignore
index 95b6a57..8c7d576 100644
--- a/utils/media-ctl/.gitignore
+++ b/utils/media-ctl/.gitignore
@@ -1 +1,2 @@
 media-ctl
+media-bus-formats.h
diff --git a/utils/media-ctl/Makefile.am b/utils/media-ctl/Makefile.am
index a3931fb..a1a9225 100644
--- a/utils/media-ctl/Makefile.am
+++ b/utils/media-ctl/Makefile.am
@@ -4,6 +4,14 @@ libmediactl_la_SOURCES = libmediactl.c mediactl-priv.h
 libmediactl_la_CFLAGS = -static $(LIBUDEV_CFLAGS)
 libmediactl_la_LDFLAGS = -static $(LIBUDEV_LIBS)
 
+media-bus-formats.h: ../../include/linux/media-bus-format.h
+	sed -e '/#define MEDIA_BUS_FMT/ ! d; s/.*FMT_//; /FIXED/ d; s/\t.*//; s/.*/{ \"&\", MEDIA_BUS_FMT_& },/;' \
+	< $< > $@
+
+BUILT_SOURCES = media-bus-formats.h
+CLEANFILES = media-bus-formats.h
+
+nodist_libv4l2subdev_la_SOURCES = media-bus-formats.h
 libv4l2subdev_la_SOURCES = libv4l2subdev.c
 libv4l2subdev_la_LIBADD = libmediactl.la
 libv4l2subdev_la_CFLAGS = -static
diff --git a/utils/media-ctl/libv4l2subdev.c b/utils/media-ctl/libv4l2subdev.c
index 33c1ee6..5bcfe34 100644
--- a/utils/media-ctl/libv4l2subdev.c
+++ b/utils/media-ctl/libv4l2subdev.c
@@ -719,6 +719,7 @@ static struct {
 	const char *name;
 	enum v4l2_mbus_pixelcode code;
 } mbus_formats[] = {
+#include "media-bus-formats.h"
 	{ "Y8", MEDIA_BUS_FMT_Y8_1X8},
 	{ "Y10", MEDIA_BUS_FMT_Y10_1X10 },
 	{ "Y12", MEDIA_BUS_FMT_Y12_1X12 },
-- 
2.1.0.231.g7484e3b


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [v4l-utils PATCH v2 2/3] libv4l2subdev: Add a function to list library supported pixel codes
  2015-12-08 15:15 [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev Sakari Ailus
  2015-12-08 15:15 ` [v4l-utils PATCH v2 1/3] libv4l2subdev: Use generated format definitions " Sakari Ailus
@ 2015-12-08 15:15 ` Sakari Ailus
  2015-12-13 21:39   ` Laurent Pinchart
  2015-12-08 15:15 ` [v4l-utils PATCH v2 3/3] media-ctl: List supported media bus formats Sakari Ailus
  2016-01-22 12:15 ` [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev Hans Verkuil
  3 siblings, 1 reply; 11+ messages in thread
From: Sakari Ailus @ 2015-12-08 15:15 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart, hverkuil

Also mark which format definitions are compat definitions for the
pre-existing codes. This way we don't end up listing the same formats
twice.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 utils/media-ctl/libv4l2subdev.c | 69 +++++++++++++++++++++++------------------
 utils/media-ctl/v4l2subdev.h    | 11 +++++++
 2 files changed, 50 insertions(+), 30 deletions(-)

diff --git a/utils/media-ctl/libv4l2subdev.c b/utils/media-ctl/libv4l2subdev.c
index 5bcfe34..2cd8fd4 100644
--- a/utils/media-ctl/libv4l2subdev.c
+++ b/utils/media-ctl/libv4l2subdev.c
@@ -718,38 +718,39 @@ int v4l2_subdev_parse_setup_formats(struct media_device *media, const char *p)
 static struct {
 	const char *name;
 	enum v4l2_mbus_pixelcode code;
+	bool compat;
 } mbus_formats[] = {
 #include "media-bus-formats.h"
-	{ "Y8", MEDIA_BUS_FMT_Y8_1X8},
-	{ "Y10", MEDIA_BUS_FMT_Y10_1X10 },
-	{ "Y12", MEDIA_BUS_FMT_Y12_1X12 },
-	{ "YUYV", MEDIA_BUS_FMT_YUYV8_1X16 },
-	{ "YUYV1_5X8", MEDIA_BUS_FMT_YUYV8_1_5X8 },
-	{ "YUYV2X8", MEDIA_BUS_FMT_YUYV8_2X8 },
-	{ "UYVY", MEDIA_BUS_FMT_UYVY8_1X16 },
-	{ "UYVY1_5X8", MEDIA_BUS_FMT_UYVY8_1_5X8 },
-	{ "UYVY2X8", MEDIA_BUS_FMT_UYVY8_2X8 },
-	{ "VUY24", MEDIA_BUS_FMT_VUY8_1X24 },
-	{ "SBGGR8", MEDIA_BUS_FMT_SBGGR8_1X8 },
-	{ "SGBRG8", MEDIA_BUS_FMT_SGBRG8_1X8 },
-	{ "SGRBG8", MEDIA_BUS_FMT_SGRBG8_1X8 },
-	{ "SRGGB8", MEDIA_BUS_FMT_SRGGB8_1X8 },
-	{ "SBGGR10", MEDIA_BUS_FMT_SBGGR10_1X10 },
-	{ "SGBRG10", MEDIA_BUS_FMT_SGBRG10_1X10 },
-	{ "SGRBG10", MEDIA_BUS_FMT_SGRBG10_1X10 },
-	{ "SRGGB10", MEDIA_BUS_FMT_SRGGB10_1X10 },
-	{ "SBGGR10_DPCM8", MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8 },
-	{ "SGBRG10_DPCM8", MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8 },
-	{ "SGRBG10_DPCM8", MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8 },
-	{ "SRGGB10_DPCM8", MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8 },
-	{ "SBGGR12", MEDIA_BUS_FMT_SBGGR12_1X12 },
-	{ "SGBRG12", MEDIA_BUS_FMT_SGBRG12_1X12 },
-	{ "SGRBG12", MEDIA_BUS_FMT_SGRBG12_1X12 },
-	{ "SRGGB12", MEDIA_BUS_FMT_SRGGB12_1X12 },
-	{ "AYUV32", MEDIA_BUS_FMT_AYUV8_1X32 },
-	{ "RBG24", MEDIA_BUS_FMT_RBG888_1X24 },
-	{ "RGB32", MEDIA_BUS_FMT_RGB888_1X32_PADHI },
-	{ "ARGB32", MEDIA_BUS_FMT_ARGB8888_1X32 },
+	{ "Y8", MEDIA_BUS_FMT_Y8_1X8, true },
+	{ "Y10", MEDIA_BUS_FMT_Y10_1X10, true },
+	{ "Y12", MEDIA_BUS_FMT_Y12_1X12, true },
+	{ "YUYV", MEDIA_BUS_FMT_YUYV8_1X16, true },
+	{ "YUYV1_5X8", MEDIA_BUS_FMT_YUYV8_1_5X8, true },
+	{ "YUYV2X8", MEDIA_BUS_FMT_YUYV8_2X8, true },
+	{ "UYVY", MEDIA_BUS_FMT_UYVY8_1X16, true },
+	{ "UYVY1_5X8", MEDIA_BUS_FMT_UYVY8_1_5X8, true },
+	{ "UYVY2X8", MEDIA_BUS_FMT_UYVY8_2X8, true },
+	{ "VUY24", MEDIA_BUS_FMT_VUY8_1X24, true },
+	{ "SBGGR8", MEDIA_BUS_FMT_SBGGR8_1X8, true },
+	{ "SGBRG8", MEDIA_BUS_FMT_SGBRG8_1X8, true },
+	{ "SGRBG8", MEDIA_BUS_FMT_SGRBG8_1X8, true },
+	{ "SRGGB8", MEDIA_BUS_FMT_SRGGB8_1X8, true },
+	{ "SBGGR10", MEDIA_BUS_FMT_SBGGR10_1X10, true },
+	{ "SGBRG10", MEDIA_BUS_FMT_SGBRG10_1X10, true },
+	{ "SGRBG10", MEDIA_BUS_FMT_SGRBG10_1X10, true },
+	{ "SRGGB10", MEDIA_BUS_FMT_SRGGB10_1X10, true },
+	{ "SBGGR10_DPCM8", MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8, true },
+	{ "SGBRG10_DPCM8", MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8, true },
+	{ "SGRBG10_DPCM8", MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8, true },
+	{ "SRGGB10_DPCM8", MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8, true },
+	{ "SBGGR12", MEDIA_BUS_FMT_SBGGR12_1X12, true },
+	{ "SGBRG12", MEDIA_BUS_FMT_SGBRG12_1X12, true },
+	{ "SGRBG12", MEDIA_BUS_FMT_SGRBG12_1X12, true },
+	{ "SRGGB12", MEDIA_BUS_FMT_SRGGB12_1X12, true },
+	{ "AYUV32", MEDIA_BUS_FMT_AYUV8_1X32, true },
+	{ "RBG24", MEDIA_BUS_FMT_RBG888_1X24, true },
+	{ "RGB32", MEDIA_BUS_FMT_RGB888_1X32_PADHI, true },
+	{ "ARGB32", MEDIA_BUS_FMT_ARGB8888_1X32, true },
 };
 
 const char *v4l2_subdev_pixelcode_to_string(enum v4l2_mbus_pixelcode code)
@@ -823,3 +824,11 @@ enum v4l2_field v4l2_subdev_string_to_field(const char *string,
 
 	return fields[i].field;
 }
+
+enum v4l2_mbus_pixelcode v4l2_subdev_pixelcode_list(unsigned int i)
+{
+	if (i >= ARRAY_SIZE(mbus_formats) || mbus_formats[i].compat)
+		return (enum v4l2_mbus_pixelcode)-1;
+
+	return mbus_formats[i].code;
+}
diff --git a/utils/media-ctl/v4l2subdev.h b/utils/media-ctl/v4l2subdev.h
index 104e420..ef8ef95 100644
--- a/utils/media-ctl/v4l2subdev.h
+++ b/utils/media-ctl/v4l2subdev.h
@@ -279,4 +279,15 @@ const char *v4l2_subdev_field_to_string(enum v4l2_field field);
 enum v4l2_field v4l2_subdev_string_to_field(const char *string,
 					    unsigned int length);
 
+/**
+ * @brief Enumerate library supported media bus pixel codes.
+ * @param i - index starting from zero
+ *
+ * Enumerate pixel codes supported by libv4l2subdev starting from
+ * index 0.
+ *
+ * @return media bus pixelcode on success, -1 on failure.
+ */
+enum v4l2_mbus_pixelcode v4l2_subdev_pixelcode_list(unsigned int i);
+
 #endif
-- 
2.1.0.231.g7484e3b


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [v4l-utils PATCH v2 3/3] media-ctl: List supported media bus formats
  2015-12-08 15:15 [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev Sakari Ailus
  2015-12-08 15:15 ` [v4l-utils PATCH v2 1/3] libv4l2subdev: Use generated format definitions " Sakari Ailus
  2015-12-08 15:15 ` [v4l-utils PATCH v2 2/3] libv4l2subdev: Add a function to list library supported pixel codes Sakari Ailus
@ 2015-12-08 15:15 ` Sakari Ailus
  2016-01-22 12:15 ` [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev Hans Verkuil
  3 siblings, 0 replies; 11+ messages in thread
From: Sakari Ailus @ 2015-12-08 15:15 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart, hverkuil

Add a new topic option for -h to allow listing supported media bus codes
in conversion functions. This is useful in figuring out which media bus
codes are actually supported by the library. The numeric values of the
codes are listed as well.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 utils/media-ctl/options.c | 42 ++++++++++++++++++++++++++++++++++++++----
 1 file changed, 38 insertions(+), 4 deletions(-)

diff --git a/utils/media-ctl/options.c b/utils/media-ctl/options.c
index 0afc9c2..5902aed 100644
--- a/utils/media-ctl/options.c
+++ b/utils/media-ctl/options.c
@@ -22,7 +22,9 @@
 #include <getopt.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <unistd.h>
+#include <v4l2subdev.h>
 
 #include <linux/videodev2.h>
 
@@ -45,7 +47,8 @@ static void usage(const char *argv0)
 	printf("-V, --set-v4l2 v4l2	Comma-separated list of formats to setup\n");
 	printf("    --get-v4l2 pad	Print the active format on a given pad\n");
 	printf("    --set-dv pad	Configure DV timings on a given pad\n");
-	printf("-h, --help		Show verbose help and exit\n");
+	printf("-h, --help[=topic]	Show verbose help and exit\n");
+	printf("			topics:	mbus-fmt: List supported media bus pixel codes\n");
 	printf("-i, --interactive	Modify links interactively\n");
 	printf("-l, --links links	Comma-separated list of link descriptors to setup\n");
 	printf("-p, --print-topology	Print the device topology\n");
@@ -100,7 +103,7 @@ static struct option opts[] = {
 	{"get-format", 1, 0, OPT_GET_FORMAT},
 	{"get-v4l2", 1, 0, OPT_GET_FORMAT},
 	{"set-dv", 1, 0, OPT_SET_DV},
-	{"help", 0, 0, 'h'},
+	{"help", 2, 0, 'h'},
 	{"interactive", 0, 0, 'i'},
 	{"links", 1, 0, 'l'},
 	{"print-dot", 0, 0, OPT_PRINT_DOT},
@@ -110,6 +113,27 @@ static struct option opts[] = {
 	{ },
 };
 
+void list_mbus_formats(void)
+{
+	unsigned int i;
+
+	printf("Supported media bus pixel codes\n");
+
+	for (i = 0; ; i++) {
+		unsigned int code = v4l2_subdev_pixelcode_list(i);
+		const char *str = v4l2_subdev_pixelcode_to_string(code);
+		int spaces = 30 - (int)strlen(str);
+
+		if (code == -1)
+			break;
+
+		if (spaces < 0)
+			spaces = 0;
+
+		printf("\t%s %*c (0x%8.8x)\n", str, spaces, ' ', code);
+	}
+}
+
 int parse_cmdline(int argc, char **argv)
 {
 	int opt;
@@ -120,7 +144,8 @@ int parse_cmdline(int argc, char **argv)
 	}
 
 	/* parse options */
-	while ((opt = getopt_long(argc, argv, "d:e:f:hil:prvV:", opts, NULL)) != -1) {
+	while ((opt = getopt_long(argc, argv, "d:e:f:h::il:prvV:",
+				  opts, NULL)) != -1) {
 		switch (opt) {
 		case 'd':
 			media_opts.devname = optarg;
@@ -142,7 +167,16 @@ int parse_cmdline(int argc, char **argv)
 			break;
 
 		case 'h':
-			usage(argv[0]);
+			if (optarg) {
+				if (!strcmp(optarg, "mbus-fmt"))
+					list_mbus_formats();
+				else
+					fprintf(stderr,
+						"Unknown topic \"%s\"\n",
+						optarg);
+			} else {
+				usage(argv[0]);
+			}
 			exit(0);
 
 		case 'i':
-- 
2.1.0.231.g7484e3b


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [v4l-utils PATCH v2 1/3] libv4l2subdev: Use generated format definitions in libv4l2subdev
  2015-12-08 15:15 ` [v4l-utils PATCH v2 1/3] libv4l2subdev: Use generated format definitions " Sakari Ailus
@ 2015-12-13 21:36   ` Laurent Pinchart
  0 siblings, 0 replies; 11+ messages in thread
From: Laurent Pinchart @ 2015-12-13 21:36 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil

Hi Sakari,

On Tuesday 08 December 2015 17:15:14 Sakari Ailus wrote:
> Instead of manually adding each and every new media bus pixel code to
> libv4l2subdev, generate the list automatically. The pre-existing formats
> that do not match the list are not modified so that existing users are
> unaffected by this change, with the exception of converting codes to
> strings, which will use the new definitions.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

This will result in command line strings being a bit longer than I'd like, but 
I agree that adding them manually doesn't scale.

Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  utils/media-ctl/.gitignore      | 1 +
>  utils/media-ctl/Makefile.am     | 8 ++++++++
>  utils/media-ctl/libv4l2subdev.c | 1 +
>  3 files changed, 10 insertions(+)
> 
> diff --git a/utils/media-ctl/.gitignore b/utils/media-ctl/.gitignore
> index 95b6a57..8c7d576 100644
> --- a/utils/media-ctl/.gitignore
> +++ b/utils/media-ctl/.gitignore
> @@ -1 +1,2 @@
>  media-ctl
> +media-bus-formats.h
> diff --git a/utils/media-ctl/Makefile.am b/utils/media-ctl/Makefile.am
> index a3931fb..a1a9225 100644
> --- a/utils/media-ctl/Makefile.am
> +++ b/utils/media-ctl/Makefile.am
> @@ -4,6 +4,14 @@ libmediactl_la_SOURCES = libmediactl.c mediactl-priv.h
>  libmediactl_la_CFLAGS = -static $(LIBUDEV_CFLAGS)
>  libmediactl_la_LDFLAGS = -static $(LIBUDEV_LIBS)
> 
> +media-bus-formats.h: ../../include/linux/media-bus-format.h
> +	sed -e '/#define MEDIA_BUS_FMT/ ! d; s/.*FMT_//; /FIXED/ d; s/\t.*//;
> s/.*/{ \"&\", MEDIA_BUS_FMT_& },/;' \ +	< $< > $@
> +
> +BUILT_SOURCES = media-bus-formats.h
> +CLEANFILES = media-bus-formats.h
> +
> +nodist_libv4l2subdev_la_SOURCES = media-bus-formats.h
>  libv4l2subdev_la_SOURCES = libv4l2subdev.c
>  libv4l2subdev_la_LIBADD = libmediactl.la
>  libv4l2subdev_la_CFLAGS = -static
> diff --git a/utils/media-ctl/libv4l2subdev.c
> b/utils/media-ctl/libv4l2subdev.c index 33c1ee6..5bcfe34 100644
> --- a/utils/media-ctl/libv4l2subdev.c
> +++ b/utils/media-ctl/libv4l2subdev.c
> @@ -719,6 +719,7 @@ static struct {
>  	const char *name;
>  	enum v4l2_mbus_pixelcode code;
>  } mbus_formats[] = {
> +#include "media-bus-formats.h"
>  	{ "Y8", MEDIA_BUS_FMT_Y8_1X8},
>  	{ "Y10", MEDIA_BUS_FMT_Y10_1X10 },
>  	{ "Y12", MEDIA_BUS_FMT_Y12_1X12 },

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [v4l-utils PATCH v2 2/3] libv4l2subdev: Add a function to list library supported pixel codes
  2015-12-08 15:15 ` [v4l-utils PATCH v2 2/3] libv4l2subdev: Add a function to list library supported pixel codes Sakari Ailus
@ 2015-12-13 21:39   ` Laurent Pinchart
  2016-01-22 12:23     ` Sakari Ailus
  2016-01-22 13:36     ` Sakari Ailus
  0 siblings, 2 replies; 11+ messages in thread
From: Laurent Pinchart @ 2015-12-13 21:39 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil

Hi Sakari,

Thank you for the patch.

On Tuesday 08 December 2015 17:15:15 Sakari Ailus wrote:
> Also mark which format definitions are compat definitions for the
> pre-existing codes. This way we don't end up listing the same formats
> twice.

Wouldn't it be easier to add a function to return the whole array (and 
terminate it with an empty entry to avoid having to return both the array and 
the length=) ?

> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
>  utils/media-ctl/libv4l2subdev.c | 69 +++++++++++++++++++++----------------
>  utils/media-ctl/v4l2subdev.h    | 11 +++++++
>  2 files changed, 50 insertions(+), 30 deletions(-)
> 
> diff --git a/utils/media-ctl/libv4l2subdev.c
> b/utils/media-ctl/libv4l2subdev.c index 5bcfe34..2cd8fd4 100644
> --- a/utils/media-ctl/libv4l2subdev.c
> +++ b/utils/media-ctl/libv4l2subdev.c
> @@ -718,38 +718,39 @@ int v4l2_subdev_parse_setup_formats(struct
> media_device *media, const char *p) static struct {
>  	const char *name;
>  	enum v4l2_mbus_pixelcode code;
> +	bool compat;
>  } mbus_formats[] = {
>  #include "media-bus-formats.h"
> -	{ "Y8", MEDIA_BUS_FMT_Y8_1X8},
> -	{ "Y10", MEDIA_BUS_FMT_Y10_1X10 },
> -	{ "Y12", MEDIA_BUS_FMT_Y12_1X12 },
> -	{ "YUYV", MEDIA_BUS_FMT_YUYV8_1X16 },
> -	{ "YUYV1_5X8", MEDIA_BUS_FMT_YUYV8_1_5X8 },
> -	{ "YUYV2X8", MEDIA_BUS_FMT_YUYV8_2X8 },
> -	{ "UYVY", MEDIA_BUS_FMT_UYVY8_1X16 },
> -	{ "UYVY1_5X8", MEDIA_BUS_FMT_UYVY8_1_5X8 },
> -	{ "UYVY2X8", MEDIA_BUS_FMT_UYVY8_2X8 },
> -	{ "VUY24", MEDIA_BUS_FMT_VUY8_1X24 },
> -	{ "SBGGR8", MEDIA_BUS_FMT_SBGGR8_1X8 },
> -	{ "SGBRG8", MEDIA_BUS_FMT_SGBRG8_1X8 },
> -	{ "SGRBG8", MEDIA_BUS_FMT_SGRBG8_1X8 },
> -	{ "SRGGB8", MEDIA_BUS_FMT_SRGGB8_1X8 },
> -	{ "SBGGR10", MEDIA_BUS_FMT_SBGGR10_1X10 },
> -	{ "SGBRG10", MEDIA_BUS_FMT_SGBRG10_1X10 },
> -	{ "SGRBG10", MEDIA_BUS_FMT_SGRBG10_1X10 },
> -	{ "SRGGB10", MEDIA_BUS_FMT_SRGGB10_1X10 },
> -	{ "SBGGR10_DPCM8", MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8 },
> -	{ "SGBRG10_DPCM8", MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8 },
> -	{ "SGRBG10_DPCM8", MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8 },
> -	{ "SRGGB10_DPCM8", MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8 },
> -	{ "SBGGR12", MEDIA_BUS_FMT_SBGGR12_1X12 },
> -	{ "SGBRG12", MEDIA_BUS_FMT_SGBRG12_1X12 },
> -	{ "SGRBG12", MEDIA_BUS_FMT_SGRBG12_1X12 },
> -	{ "SRGGB12", MEDIA_BUS_FMT_SRGGB12_1X12 },
> -	{ "AYUV32", MEDIA_BUS_FMT_AYUV8_1X32 },
> -	{ "RBG24", MEDIA_BUS_FMT_RBG888_1X24 },
> -	{ "RGB32", MEDIA_BUS_FMT_RGB888_1X32_PADHI },
> -	{ "ARGB32", MEDIA_BUS_FMT_ARGB8888_1X32 },
> +	{ "Y8", MEDIA_BUS_FMT_Y8_1X8, true },
> +	{ "Y10", MEDIA_BUS_FMT_Y10_1X10, true },
> +	{ "Y12", MEDIA_BUS_FMT_Y12_1X12, true },
> +	{ "YUYV", MEDIA_BUS_FMT_YUYV8_1X16, true },
> +	{ "YUYV1_5X8", MEDIA_BUS_FMT_YUYV8_1_5X8, true },
> +	{ "YUYV2X8", MEDIA_BUS_FMT_YUYV8_2X8, true },
> +	{ "UYVY", MEDIA_BUS_FMT_UYVY8_1X16, true },
> +	{ "UYVY1_5X8", MEDIA_BUS_FMT_UYVY8_1_5X8, true },
> +	{ "UYVY2X8", MEDIA_BUS_FMT_UYVY8_2X8, true },
> +	{ "VUY24", MEDIA_BUS_FMT_VUY8_1X24, true },
> +	{ "SBGGR8", MEDIA_BUS_FMT_SBGGR8_1X8, true },
> +	{ "SGBRG8", MEDIA_BUS_FMT_SGBRG8_1X8, true },
> +	{ "SGRBG8", MEDIA_BUS_FMT_SGRBG8_1X8, true },
> +	{ "SRGGB8", MEDIA_BUS_FMT_SRGGB8_1X8, true },
> +	{ "SBGGR10", MEDIA_BUS_FMT_SBGGR10_1X10, true },
> +	{ "SGBRG10", MEDIA_BUS_FMT_SGBRG10_1X10, true },
> +	{ "SGRBG10", MEDIA_BUS_FMT_SGRBG10_1X10, true },
> +	{ "SRGGB10", MEDIA_BUS_FMT_SRGGB10_1X10, true },
> +	{ "SBGGR10_DPCM8", MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8, true },
> +	{ "SGBRG10_DPCM8", MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8, true },
> +	{ "SGRBG10_DPCM8", MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8, true },
> +	{ "SRGGB10_DPCM8", MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8, true },
> +	{ "SBGGR12", MEDIA_BUS_FMT_SBGGR12_1X12, true },
> +	{ "SGBRG12", MEDIA_BUS_FMT_SGBRG12_1X12, true },
> +	{ "SGRBG12", MEDIA_BUS_FMT_SGRBG12_1X12, true },
> +	{ "SRGGB12", MEDIA_BUS_FMT_SRGGB12_1X12, true },
> +	{ "AYUV32", MEDIA_BUS_FMT_AYUV8_1X32, true },
> +	{ "RBG24", MEDIA_BUS_FMT_RBG888_1X24, true },
> +	{ "RGB32", MEDIA_BUS_FMT_RGB888_1X32_PADHI, true },
> +	{ "ARGB32", MEDIA_BUS_FMT_ARGB8888_1X32, true },
>  };
> 
>  const char *v4l2_subdev_pixelcode_to_string(enum v4l2_mbus_pixelcode code)
> @@ -823,3 +824,11 @@ enum v4l2_field v4l2_subdev_string_to_field(const char
> *string,
> 
>  	return fields[i].field;
>  }
> +
> +enum v4l2_mbus_pixelcode v4l2_subdev_pixelcode_list(unsigned int i)
> +{
> +	if (i >= ARRAY_SIZE(mbus_formats) || mbus_formats[i].compat)
> +		return (enum v4l2_mbus_pixelcode)-1;
> +
> +	return mbus_formats[i].code;
> +}
> diff --git a/utils/media-ctl/v4l2subdev.h b/utils/media-ctl/v4l2subdev.h
> index 104e420..ef8ef95 100644
> --- a/utils/media-ctl/v4l2subdev.h
> +++ b/utils/media-ctl/v4l2subdev.h
> @@ -279,4 +279,15 @@ const char *v4l2_subdev_field_to_string(enum v4l2_field
> field); enum v4l2_field v4l2_subdev_string_to_field(const char *string,
>  					    unsigned int length);
> 
> +/**
> + * @brief Enumerate library supported media bus pixel codes.
> + * @param i - index starting from zero
> + *
> + * Enumerate pixel codes supported by libv4l2subdev starting from
> + * index 0.
> + *
> + * @return media bus pixelcode on success, -1 on failure.
> + */
> +enum v4l2_mbus_pixelcode v4l2_subdev_pixelcode_list(unsigned int i);
> +
>  #endif

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev
  2015-12-08 15:15 [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev Sakari Ailus
                   ` (2 preceding siblings ...)
  2015-12-08 15:15 ` [v4l-utils PATCH v2 3/3] media-ctl: List supported media bus formats Sakari Ailus
@ 2016-01-22 12:15 ` Hans Verkuil
  2016-01-22 12:26   ` Sakari Ailus
  3 siblings, 1 reply; 11+ messages in thread
From: Hans Verkuil @ 2016-01-22 12:15 UTC (permalink / raw)
  To: Sakari Ailus, linux-media; +Cc: laurent.pinchart

Hi Sakari,

Can you respin this series and add the "v4l: libv4l2subdev: Precisely convert
media bus string to code" patch to it as well? And incorporate Laurent's
comments?

I think this is a very useful addition and since Laurent's comments are minor
I suspect a v3 would be ready for merging.

Regards,

	Hans

On 12/08/2015 04:15 PM, Sakari Ailus wrote:
> Hi,
> 
> Rebased on current v4l-utils. There were conflicts as new media bus
> formats were added. The earlier version is here:
> 
> <URL:http://www.spinics.net/lists/linux-media/msg94619.html>
> 
> These patches go on top of the field support set, which hasn't appeared in
> the archive yet. The earlier version is here:
> 
> <URL:http://www.spinics.net/lists/linux-media/msg94605.html>
> 


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [v4l-utils PATCH v2 2/3] libv4l2subdev: Add a function to list library supported pixel codes
  2015-12-13 21:39   ` Laurent Pinchart
@ 2016-01-22 12:23     ` Sakari Ailus
  2016-01-22 13:36     ` Sakari Ailus
  1 sibling, 0 replies; 11+ messages in thread
From: Sakari Ailus @ 2016-01-22 12:23 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: linux-media, hverkuil

Laurent Pinchart wrote:
> Hi Sakari,
> 
> Thank you for the patch.
> 
> On Tuesday 08 December 2015 17:15:15 Sakari Ailus wrote:
>> Also mark which format definitions are compat definitions for the
>> pre-existing codes. This way we don't end up listing the same formats
>> twice.
> 
> Wouldn't it be easier to add a function to return the whole array (and 
> terminate it with an empty entry to avoid having to return both the array and 
> the length=) ?

Fine for me. I'll resend.

-- 
Sakari Ailus
sakari.ailus@linux.intel.com

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev
  2016-01-22 12:15 ` [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev Hans Verkuil
@ 2016-01-22 12:26   ` Sakari Ailus
  0 siblings, 0 replies; 11+ messages in thread
From: Sakari Ailus @ 2016-01-22 12:26 UTC (permalink / raw)
  To: Hans Verkuil, linux-media; +Cc: laurent.pinchart

Hans Verkuil wrote:
> Hi Sakari,
> 
> Can you respin this series and add the "v4l: libv4l2subdev: Precisely convert
> media bus string to code" patch to it as well? And incorporate Laurent's
> comments?
> 
> I think this is a very useful addition and since Laurent's comments are minor
> I suspect a v3 would be ready for merging.

Uh, right. This had got buried in my INBOX. I'll resend a bit later today.

-- 
Sakari Ailus
sakari.ailus@linux.intel.com

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [v4l-utils PATCH v2 2/3] libv4l2subdev: Add a function to list library supported pixel codes
  2015-12-13 21:39   ` Laurent Pinchart
  2016-01-22 12:23     ` Sakari Ailus
@ 2016-01-22 13:36     ` Sakari Ailus
  2016-01-24 20:27       ` Laurent Pinchart
  1 sibling, 1 reply; 11+ messages in thread
From: Sakari Ailus @ 2016-01-22 13:36 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: linux-media, hverkuil

Hi Laurent,

Laurent Pinchart wrote:
> Hi Sakari,
> 
> Thank you for the patch.
> 
> On Tuesday 08 December 2015 17:15:15 Sakari Ailus wrote:
>> Also mark which format definitions are compat definitions for the
>> pre-existing codes. This way we don't end up listing the same formats
>> twice.
> 
> Wouldn't it be easier to add a function to return the whole array (and 
> terminate it with an empty entry to avoid having to return both the array and 
> the length=) ?

Now that I'm actually thinking about making that change, I have a few
concerns:

- This is not in line with the other APIs in the library, they mirror
the IOCTL behaviour (it's another debate whether this is a good idea or
not).

- I need a new statically allocated array for that. I think I'll change
my sed script. Allocating an array when the function is called the first
time isn't a great idea either, there's a problem with re-entrancy and
it's a memory leak, too.

So don't complain about these when I send an updated version. ;-)

-- 
Cheers,

Sakari Ailus
sakari.ailus@linux.intel.com

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [v4l-utils PATCH v2 2/3] libv4l2subdev: Add a function to list library supported pixel codes
  2016-01-22 13:36     ` Sakari Ailus
@ 2016-01-24 20:27       ` Laurent Pinchart
  0 siblings, 0 replies; 11+ messages in thread
From: Laurent Pinchart @ 2016-01-24 20:27 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil

Hi Sakari,

On Friday 22 January 2016 15:36:47 Sakari Ailus wrote:
> Laurent Pinchart wrote:
> > On Tuesday 08 December 2015 17:15:15 Sakari Ailus wrote:
> >> Also mark which format definitions are compat definitions for the
> >> pre-existing codes. This way we don't end up listing the same formats
> >> twice.
> > 
> > Wouldn't it be easier to add a function to return the whole array (and
> > terminate it with an empty entry to avoid having to return both the array
> > and the length=) ?
> 
> Now that I'm actually thinking about making that change, I have a few
> concerns:
> 
> - This is not in line with the other APIs in the library, they mirror
> the IOCTL behaviour (it's another debate whether this is a good idea or
> not).

A function to list the library's supported pixel codes wouldn't be either, so 
I don't really see that as a big issue. A bigger issue, that needs to be fixed 
to release a version of the library as a shared object, is that the API hasn't 
really been thought of properly.

> - I need a new statically allocated array for that. I think I'll change
> my sed script. Allocating an array when the function is called the first
> time isn't a great idea either, there's a problem with re-entrancy and
> it's a memory leak, too.

In a shared object we could make use the _init and _fini functions. Is there 
something similar available for static libraries ? A different sed script 
should be fine too.

> So don't complain about these when I send an updated version. ;-)

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-01-25  6:21 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-08 15:15 [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev Sakari Ailus
2015-12-08 15:15 ` [v4l-utils PATCH v2 1/3] libv4l2subdev: Use generated format definitions " Sakari Ailus
2015-12-13 21:36   ` Laurent Pinchart
2015-12-08 15:15 ` [v4l-utils PATCH v2 2/3] libv4l2subdev: Add a function to list library supported pixel codes Sakari Ailus
2015-12-13 21:39   ` Laurent Pinchart
2016-01-22 12:23     ` Sakari Ailus
2016-01-22 13:36     ` Sakari Ailus
2016-01-24 20:27       ` Laurent Pinchart
2015-12-08 15:15 ` [v4l-utils PATCH v2 3/3] media-ctl: List supported media bus formats Sakari Ailus
2016-01-22 12:15 ` [v4l-utils PATCH v2 0/3] List supported formats in libv4l2subdev Hans Verkuil
2016-01-22 12:26   ` Sakari Ailus

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.