All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/4] List supported formats in libv4l2subdev
@ 2016-02-24 16:25 Sakari Ailus
  2016-02-24 16:25 ` [PATCH v5 1/4] v4l: libv4lsubdev: Make mbus_formats array const Sakari Ailus
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Sakari Ailus @ 2016-02-24 16:25 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart, hverkuil

Hi,

since v4:

- Refactor the loop to print supported formats (4th patch),

- Call the option to list the supported formats --known-mbus-fmts instead
  of adding a help topic.

-- 
Kind regards,
Sakari


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

* [PATCH v5 1/4] v4l: libv4lsubdev: Make mbus_formats array const
  2016-02-24 16:25 [PATCH v5 0/4] List supported formats in libv4l2subdev Sakari Ailus
@ 2016-02-24 16:25 ` Sakari Ailus
  2016-02-24 16:25 ` [PATCH v5 2/4] libv4l2subdev: Use generated format definitions in libv4l2subdev Sakari Ailus
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: Sakari Ailus @ 2016-02-24 16:25 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart, hverkuil

The array is already static and may not be modified at runtime. Make it
const.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 utils/media-ctl/libv4l2subdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/utils/media-ctl/libv4l2subdev.c b/utils/media-ctl/libv4l2subdev.c
index dc2cd87..e45834f 100644
--- a/utils/media-ctl/libv4l2subdev.c
+++ b/utils/media-ctl/libv4l2subdev.c
@@ -715,7 +715,7 @@ int v4l2_subdev_parse_setup_formats(struct media_device *media, const char *p)
 	return *end ? -EINVAL : 0;
 }
 
-static struct {
+static const struct {
 	const char *name;
 	enum v4l2_mbus_pixelcode code;
 } mbus_formats[] = {
-- 
2.1.0.231.g7484e3b


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

* [PATCH v5 2/4] libv4l2subdev: Use generated format definitions in libv4l2subdev
  2016-02-24 16:25 [PATCH v5 0/4] List supported formats in libv4l2subdev Sakari Ailus
  2016-02-24 16:25 ` [PATCH v5 1/4] v4l: libv4lsubdev: Make mbus_formats array const Sakari Ailus
@ 2016-02-24 16:25 ` Sakari Ailus
  2016-02-24 16:25 ` [PATCH v5 3/4] libv4l2subdev: Add a function to list library supported pixel codes Sakari Ailus
  2016-02-24 16:25 ` [PATCH v5 4/4] media-ctl: List supported media bus formats Sakari Ailus
  3 siblings, 0 replies; 10+ messages in thread
From: Sakari Ailus @ 2016-02-24 16:25 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>
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..799ab33 100644
--- a/utils/media-ctl/.gitignore
+++ b/utils/media-ctl/.gitignore
@@ -1 +1,2 @@
 media-ctl
+media-bus-format-names.h
diff --git a/utils/media-ctl/Makefile.am b/utils/media-ctl/Makefile.am
index a3931fb..23ad90b 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-format-names.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-format-names.h
+CLEANFILES = $(BUILT_SOURCES)
+
+nodist_libv4l2subdev_la_SOURCES = $(BUILT_SOURCES)
 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 e45834f..f3c0a9a 100644
--- a/utils/media-ctl/libv4l2subdev.c
+++ b/utils/media-ctl/libv4l2subdev.c
@@ -719,6 +719,7 @@ static const struct {
 	const char *name;
 	enum v4l2_mbus_pixelcode code;
 } mbus_formats[] = {
+#include "media-bus-format-names.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] 10+ messages in thread

* [PATCH v5 3/4] libv4l2subdev: Add a function to list library supported pixel codes
  2016-02-24 16:25 [PATCH v5 0/4] List supported formats in libv4l2subdev Sakari Ailus
  2016-02-24 16:25 ` [PATCH v5 1/4] v4l: libv4lsubdev: Make mbus_formats array const Sakari Ailus
  2016-02-24 16:25 ` [PATCH v5 2/4] libv4l2subdev: Use generated format definitions in libv4l2subdev Sakari Ailus
@ 2016-02-24 16:25 ` Sakari Ailus
  2016-02-25 21:30   ` Laurent Pinchart
  2016-02-24 16:25 ` [PATCH v5 4/4] media-ctl: List supported media bus formats Sakari Ailus
  3 siblings, 1 reply; 10+ messages in thread
From: Sakari Ailus @ 2016-02-24 16:25 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/.gitignore      |  1 +
 utils/media-ctl/Makefile.am     |  6 +++++-
 utils/media-ctl/libv4l2subdev.c | 11 +++++++++++
 utils/media-ctl/v4l2subdev.h    | 11 +++++++++++
 4 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/utils/media-ctl/.gitignore b/utils/media-ctl/.gitignore
index 799ab33..5354fec 100644
--- a/utils/media-ctl/.gitignore
+++ b/utils/media-ctl/.gitignore
@@ -1,2 +1,3 @@
 media-ctl
 media-bus-format-names.h
+media-bus-format-codes.h
diff --git a/utils/media-ctl/Makefile.am b/utils/media-ctl/Makefile.am
index 23ad90b..ee7dcc9 100644
--- a/utils/media-ctl/Makefile.am
+++ b/utils/media-ctl/Makefile.am
@@ -8,7 +8,11 @@ media-bus-format-names.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-format-names.h
+media-bus-format-codes.h: ../../include/linux/media-bus-format.h
+	sed -e '/#define MEDIA_BUS_FMT/ ! d; s/.*#define //; /FIXED/ d; s/\t.*//; s/.*/ &,/;' \
+	< $< > $@
+
+BUILT_SOURCES = media-bus-format-names.h media-bus-format-codes.h
 CLEANFILES = $(BUILT_SOURCES)
 
 nodist_libv4l2subdev_la_SOURCES = $(BUILT_SOURCES)
diff --git a/utils/media-ctl/libv4l2subdev.c b/utils/media-ctl/libv4l2subdev.c
index f3c0a9a..8d39898 100644
--- a/utils/media-ctl/libv4l2subdev.c
+++ b/utils/media-ctl/libv4l2subdev.c
@@ -821,3 +821,14 @@ enum v4l2_field v4l2_subdev_string_to_field(const char *string,
 
 	return fields[i].field;
 }
+
+static const enum v4l2_mbus_pixelcode mbus_codes[] = {
+#include "media-bus-format-codes.h"
+};
+
+const enum v4l2_mbus_pixelcode *v4l2_subdev_pixelcode_list(unsigned int *length)
+{
+	*length = ARRAY_SIZE(mbus_codes);
+
+	return mbus_codes;
+}
diff --git a/utils/media-ctl/v4l2subdev.h b/utils/media-ctl/v4l2subdev.h
index 104e420..97f46a8 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 length - the number of the supported pixel codes
+ *
+ * Obtain pixel codes supported by libv4l2subdev.
+ *
+ * @return A pointer to the pixel code array
+ */
+const enum v4l2_mbus_pixelcode *v4l2_subdev_pixelcode_list(
+	unsigned int *length);
+
 #endif
-- 
2.1.0.231.g7484e3b


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

* [PATCH v5 4/4] media-ctl: List supported media bus formats
  2016-02-24 16:25 [PATCH v5 0/4] List supported formats in libv4l2subdev Sakari Ailus
                   ` (2 preceding siblings ...)
  2016-02-24 16:25 ` [PATCH v5 3/4] libv4l2subdev: Add a function to list library supported pixel codes Sakari Ailus
@ 2016-02-24 16:25 ` Sakari Ailus
  2016-02-25 21:38   ` Laurent Pinchart
  3 siblings, 1 reply; 10+ messages in thread
From: Sakari Ailus @ 2016-02-24 16:25 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 | 39 +++++++++++++++++++++++++++++++++++----
 1 file changed, 35 insertions(+), 4 deletions(-)

diff --git a/utils/media-ctl/options.c b/utils/media-ctl/options.c
index 0afc9c2..ac78564 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>
 
@@ -48,6 +50,7 @@ static void usage(const char *argv0)
 	printf("-h, --help		Show verbose help and exit\n");
 	printf("-i, --interactive	Modify links interactively\n");
 	printf("-l, --links links	Comma-separated list of link descriptors to setup\n");
+	printf("    --known-mbus-fmts	List known media bus formats and their numeric values\n");
 	printf("-p, --print-topology	Print the device topology\n");
 	printf("    --print-dot		Print the device topology as a dot graph\n");
 	printf("-r, --reset		Reset all links to inactive\n");
@@ -88,9 +91,10 @@ static void usage(const char *argv0)
 		       v4l2_subdev_field_to_string(i));
 }
 
-#define OPT_PRINT_DOT		256
-#define OPT_GET_FORMAT		257
-#define OPT_SET_DV		258
+#define OPT_PRINT_DOT			256
+#define OPT_GET_FORMAT			257
+#define OPT_SET_DV			258
+#define OPT_LIST_KNOWN_MBUS_FMTS	259
 
 static struct option opts[] = {
 	{"device", 1, 0, 'd'},
@@ -103,6 +107,7 @@ static struct option opts[] = {
 	{"help", 0, 0, 'h'},
 	{"interactive", 0, 0, 'i'},
 	{"links", 1, 0, 'l'},
+	{"known-mbus-fmts", 0, 0, OPT_LIST_KNOWN_MBUS_FMTS},
 	{"print-dot", 0, 0, OPT_PRINT_DOT},
 	{"print-topology", 0, 0, 'p'},
 	{"reset", 0, 0, 'r'},
@@ -110,6 +115,27 @@ static struct option opts[] = {
 	{ },
 };
 
+static void list_known_mbus_formats(void)
+{
+	unsigned int ncodes;
+	const unsigned int *code = v4l2_subdev_pixelcode_list(&ncodes);
+
+	while (ncodes--) {
+		const char *str = v4l2_subdev_pixelcode_to_string(*code);
+		int spaces = 30 - (int)strlen(str);
+
+		if (*code == 0)
+			break;
+
+		if (spaces < 0)
+			spaces = 0;
+
+		printf("%s %*c 0x%8.8x\n", str, spaces, ' ', *code);
+
+		code++;
+	}
+}
+
 int parse_cmdline(int argc, char **argv)
 {
 	int opt;
@@ -120,7 +146,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:hil:prvV:",
+				  opts, NULL)) != -1) {
 		switch (opt) {
 		case 'd':
 			media_opts.devname = optarg;
@@ -177,6 +204,10 @@ int parse_cmdline(int argc, char **argv)
 			media_opts.dv_pad = optarg;
 			break;
 
+		case OPT_LIST_KNOWN_MBUS_FMTS:
+			list_known_mbus_formats();
+			exit(0);
+
 		default:
 			printf("Invalid option -%c\n", opt);
 			printf("Run %s -h for help.\n", argv[0]);
-- 
2.1.0.231.g7484e3b


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

* Re: [PATCH v5 3/4] libv4l2subdev: Add a function to list library supported pixel codes
  2016-02-24 16:25 ` [PATCH v5 3/4] libv4l2subdev: Add a function to list library supported pixel codes Sakari Ailus
@ 2016-02-25 21:30   ` Laurent Pinchart
  0 siblings, 0 replies; 10+ messages in thread
From: Laurent Pinchart @ 2016-02-25 21:30 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil

Hi Sakari,

Thank you for the patch.

On Wednesday 24 February 2016 18:25:27 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.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

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

> ---
>  utils/media-ctl/.gitignore      |  1 +
>  utils/media-ctl/Makefile.am     |  6 +++++-
>  utils/media-ctl/libv4l2subdev.c | 11 +++++++++++
>  utils/media-ctl/v4l2subdev.h    | 11 +++++++++++
>  4 files changed, 28 insertions(+), 1 deletion(-)
> 
> diff --git a/utils/media-ctl/.gitignore b/utils/media-ctl/.gitignore
> index 799ab33..5354fec 100644
> --- a/utils/media-ctl/.gitignore
> +++ b/utils/media-ctl/.gitignore
> @@ -1,2 +1,3 @@
>  media-ctl
>  media-bus-format-names.h
> +media-bus-format-codes.h
> diff --git a/utils/media-ctl/Makefile.am b/utils/media-ctl/Makefile.am
> index 23ad90b..ee7dcc9 100644
> --- a/utils/media-ctl/Makefile.am
> +++ b/utils/media-ctl/Makefile.am
> @@ -8,7 +8,11 @@ media-bus-format-names.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-format-names.h
> +media-bus-format-codes.h: ../../include/linux/media-bus-format.h
> +	sed -e '/#define MEDIA_BUS_FMT/ ! d; s/.*#define //; /FIXED/ d; s/\t.*//;
> s/.*/ &,/;' \ +	< $< > $@
> +
> +BUILT_SOURCES = media-bus-format-names.h media-bus-format-codes.h
>  CLEANFILES = $(BUILT_SOURCES)
> 
>  nodist_libv4l2subdev_la_SOURCES = $(BUILT_SOURCES)
> diff --git a/utils/media-ctl/libv4l2subdev.c
> b/utils/media-ctl/libv4l2subdev.c index f3c0a9a..8d39898 100644
> --- a/utils/media-ctl/libv4l2subdev.c
> +++ b/utils/media-ctl/libv4l2subdev.c
> @@ -821,3 +821,14 @@ enum v4l2_field v4l2_subdev_string_to_field(const char
> *string,
> 
>  	return fields[i].field;
>  }
> +
> +static const enum v4l2_mbus_pixelcode mbus_codes[] = {
> +#include "media-bus-format-codes.h"
> +};
> +
> +const enum v4l2_mbus_pixelcode *v4l2_subdev_pixelcode_list(unsigned int
> *length) +{
> +	*length = ARRAY_SIZE(mbus_codes);
> +
> +	return mbus_codes;
> +}
> diff --git a/utils/media-ctl/v4l2subdev.h b/utils/media-ctl/v4l2subdev.h
> index 104e420..97f46a8 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 length - the number of the supported pixel codes
> + *
> + * Obtain pixel codes supported by libv4l2subdev.
> + *
> + * @return A pointer to the pixel code array
> + */
> +const enum v4l2_mbus_pixelcode *v4l2_subdev_pixelcode_list(
> +	unsigned int *length);
> +
>  #endif

-- 
Regards,

Laurent Pinchart


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

* Re: [PATCH v5 4/4] media-ctl: List supported media bus formats
  2016-02-24 16:25 ` [PATCH v5 4/4] media-ctl: List supported media bus formats Sakari Ailus
@ 2016-02-25 21:38   ` Laurent Pinchart
  2016-02-25 21:48     ` Sakari Ailus
  2016-02-25 21:52     ` Sakari Ailus
  0 siblings, 2 replies; 10+ messages in thread
From: Laurent Pinchart @ 2016-02-25 21:38 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, hverkuil

Hi Sakari,

Thank you for the patch.

On Wednesday 24 February 2016 18:25:28 Sakari Ailus wrote:
> 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 | 39 +++++++++++++++++++++++++++++++++++----
>  1 file changed, 35 insertions(+), 4 deletions(-)
> 
> diff --git a/utils/media-ctl/options.c b/utils/media-ctl/options.c
> index 0afc9c2..ac78564 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>
> 
> @@ -48,6 +50,7 @@ static void usage(const char *argv0)
>  	printf("-h, --help		Show verbose help and exit\n");
>  	printf("-i, --interactive	Modify links interactively\n");
>  	printf("-l, --links links	Comma-separated list of link descriptors to
> setup\n");
> +	printf("    --known-mbus-fmts	List known media bus formats and their
> numeric values\n");

I still prefer help topics :-( The rest looks good to me, so

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

but if we can convince Hans about --help= please use that :-)

>  	printf("-p, --print-topology	Print the device topology\n");
>  	printf("    --print-dot		Print the device topology as a dot
> graph\n");
>  	printf("-r, --reset		Reset all links to inactive\n");
> @@ -88,9 +91,10 @@ static void usage(const char *argv0)
>  		       v4l2_subdev_field_to_string(i));
>  }
> 
> -#define OPT_PRINT_DOT		256
> -#define OPT_GET_FORMAT		257
> -#define OPT_SET_DV		258
> +#define OPT_PRINT_DOT			256
> +#define OPT_GET_FORMAT			257
> +#define OPT_SET_DV			258
> +#define OPT_LIST_KNOWN_MBUS_FMTS	259
> 
>  static struct option opts[] = {
>  	{"device", 1, 0, 'd'},
> @@ -103,6 +107,7 @@ static struct option opts[] = {
>  	{"help", 0, 0, 'h'},
>  	{"interactive", 0, 0, 'i'},
>  	{"links", 1, 0, 'l'},
> +	{"known-mbus-fmts", 0, 0, OPT_LIST_KNOWN_MBUS_FMTS},
>  	{"print-dot", 0, 0, OPT_PRINT_DOT},
>  	{"print-topology", 0, 0, 'p'},
>  	{"reset", 0, 0, 'r'},
> @@ -110,6 +115,27 @@ static struct option opts[] = {
>  	{ },
>  };
> 
> +static void list_known_mbus_formats(void)
> +{
> +	unsigned int ncodes;
> +	const unsigned int *code = v4l2_subdev_pixelcode_list(&ncodes);
> +
> +	while (ncodes--) {
> +		const char *str = v4l2_subdev_pixelcode_to_string(*code);
> +		int spaces = 30 - (int)strlen(str);
> +
> +		if (*code == 0)
> +			break;
> +
> +		if (spaces < 0)
> +			spaces = 0;
> +
> +		printf("%s %*c 0x%8.8x\n", str, spaces, ' ', *code);
> +
> +		code++;
> +	}
> +}
> +
>  int parse_cmdline(int argc, char **argv)
>  {
>  	int opt;
> @@ -120,7 +146,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:hil:prvV:",
> +				  opts, NULL)) != -1) {
>  		switch (opt) {
>  		case 'd':
>  			media_opts.devname = optarg;
> @@ -177,6 +204,10 @@ int parse_cmdline(int argc, char **argv)
>  			media_opts.dv_pad = optarg;
>  			break;
> 
> +		case OPT_LIST_KNOWN_MBUS_FMTS:
> +			list_known_mbus_formats();
> +			exit(0);
> +
>  		default:
>  			printf("Invalid option -%c\n", opt);
>  			printf("Run %s -h for help.\n", argv[0]);

-- 
Regards,

Laurent Pinchart


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

* Re: [PATCH v5 4/4] media-ctl: List supported media bus formats
  2016-02-25 21:38   ` Laurent Pinchart
@ 2016-02-25 21:48     ` Sakari Ailus
  2016-02-25 21:52     ` Sakari Ailus
  1 sibling, 0 replies; 10+ messages in thread
From: Sakari Ailus @ 2016-02-25 21:48 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: Sakari Ailus, linux-media, hverkuil

Hi Laurent and Hans,

On Thu, Feb 25, 2016 at 11:38:02PM +0200, Laurent Pinchart wrote:
...
> > @@ -48,6 +50,7 @@ static void usage(const char *argv0)
> >  	printf("-h, --help		Show verbose help and exit\n");
> >  	printf("-i, --interactive	Modify links interactively\n");
> >  	printf("-l, --links links	Comma-separated list of link descriptors to
> > setup\n");
> > +	printf("    --known-mbus-fmts	List known media bus formats and their
> > numeric values\n");
> 
> I still prefer help topics :-( The rest looks good to me, so
> 
> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> 
> but if we can convince Hans about --help= please use that :-)

Hans: would you be even slightly convincible? GCC, for instance, does that
as well, and I believe it's not the only one:


23:46:52 lanttu sailus [/tmp]gcc --help|grep help
  --help                   Display this information
  --target-help            Display target specific command line options
  --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]
  (Use '-v --help' to display command line options of sub-processes)


-- 
Cheers,

Sakari Ailus
e-mail: sakari.ailus@iki.fi	XMPP: sailus@retiisi.org.uk

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

* Re: [PATCH v5 4/4] media-ctl: List supported media bus formats
  2016-02-25 21:38   ` Laurent Pinchart
  2016-02-25 21:48     ` Sakari Ailus
@ 2016-02-25 21:52     ` Sakari Ailus
  2016-02-25 21:52       ` [v4l-utils PATCH v5.1 " Sakari Ailus
  1 sibling, 1 reply; 10+ messages in thread
From: Sakari Ailus @ 2016-02-25 21:52 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: Sakari Ailus, linux-media, hverkuil

Hi Laurent,

On Thu, Feb 25, 2016 at 11:38:02PM +0200, Laurent Pinchart wrote:
...
> > +static void list_known_mbus_formats(void)
> > +{
> > +	unsigned int ncodes;
> > +	const unsigned int *code = v4l2_subdev_pixelcode_list(&ncodes);
> > +
> > +	while (ncodes--) {
> > +		const char *str = v4l2_subdev_pixelcode_to_string(*code);
> > +		int spaces = 30 - (int)strlen(str);
> > +
> > +		if (*code == 0)
> > +			break;
> > +
> > +		if (spaces < 0)
> > +			spaces = 0;
> > +
> > +		printf("%s %*c 0x%8.8x\n", str, spaces, ' ', *code);
> > +
> > +		code++;
> > +	}
> > +}

I remember I intended to change s/8\.8/4.4/ but I forgot to do that to this
version. I'll resubmit.

-- 
Sakari Ailus
e-mail: sakari.ailus@iki.fi	XMPP: sailus@retiisi.org.uk

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

* [v4l-utils PATCH v5.1 4/4] media-ctl: List supported media bus formats
  2016-02-25 21:52     ` Sakari Ailus
@ 2016-02-25 21:52       ` Sakari Ailus
  0 siblings, 0 replies; 10+ messages in thread
From: Sakari Ailus @ 2016-02-25 21:52 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>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 utils/media-ctl/options.c | 39 +++++++++++++++++++++++++++++++++++----
 1 file changed, 35 insertions(+), 4 deletions(-)

diff --git a/utils/media-ctl/options.c b/utils/media-ctl/options.c
index 0afc9c2..a288a1b 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>
 
@@ -48,6 +50,7 @@ static void usage(const char *argv0)
 	printf("-h, --help		Show verbose help and exit\n");
 	printf("-i, --interactive	Modify links interactively\n");
 	printf("-l, --links links	Comma-separated list of link descriptors to setup\n");
+	printf("    --known-mbus-fmts	List known media bus formats and their numeric values\n");
 	printf("-p, --print-topology	Print the device topology\n");
 	printf("    --print-dot		Print the device topology as a dot graph\n");
 	printf("-r, --reset		Reset all links to inactive\n");
@@ -88,9 +91,10 @@ static void usage(const char *argv0)
 		       v4l2_subdev_field_to_string(i));
 }
 
-#define OPT_PRINT_DOT		256
-#define OPT_GET_FORMAT		257
-#define OPT_SET_DV		258
+#define OPT_PRINT_DOT			256
+#define OPT_GET_FORMAT			257
+#define OPT_SET_DV			258
+#define OPT_LIST_KNOWN_MBUS_FMTS	259
 
 static struct option opts[] = {
 	{"device", 1, 0, 'd'},
@@ -103,6 +107,7 @@ static struct option opts[] = {
 	{"help", 0, 0, 'h'},
 	{"interactive", 0, 0, 'i'},
 	{"links", 1, 0, 'l'},
+	{"known-mbus-fmts", 0, 0, OPT_LIST_KNOWN_MBUS_FMTS},
 	{"print-dot", 0, 0, OPT_PRINT_DOT},
 	{"print-topology", 0, 0, 'p'},
 	{"reset", 0, 0, 'r'},
@@ -110,6 +115,27 @@ static struct option opts[] = {
 	{ },
 };
 
+static void list_known_mbus_formats(void)
+{
+	unsigned int ncodes;
+	const unsigned int *code = v4l2_subdev_pixelcode_list(&ncodes);
+
+	while (ncodes--) {
+		const char *str = v4l2_subdev_pixelcode_to_string(*code);
+		int spaces = 30 - (int)strlen(str);
+
+		if (*code == 0)
+			break;
+
+		if (spaces < 0)
+			spaces = 0;
+
+		printf("%s %*c 0x%4.4x\n", str, spaces, ' ', *code);
+
+		code++;
+	}
+}
+
 int parse_cmdline(int argc, char **argv)
 {
 	int opt;
@@ -120,7 +146,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:hil:prvV:",
+				  opts, NULL)) != -1) {
 		switch (opt) {
 		case 'd':
 			media_opts.devname = optarg;
@@ -177,6 +204,10 @@ int parse_cmdline(int argc, char **argv)
 			media_opts.dv_pad = optarg;
 			break;
 
+		case OPT_LIST_KNOWN_MBUS_FMTS:
+			list_known_mbus_formats();
+			exit(0);
+
 		default:
 			printf("Invalid option -%c\n", opt);
 			printf("Run %s -h for help.\n", argv[0]);
-- 
2.1.0.231.g7484e3b


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

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

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-24 16:25 [PATCH v5 0/4] List supported formats in libv4l2subdev Sakari Ailus
2016-02-24 16:25 ` [PATCH v5 1/4] v4l: libv4lsubdev: Make mbus_formats array const Sakari Ailus
2016-02-24 16:25 ` [PATCH v5 2/4] libv4l2subdev: Use generated format definitions in libv4l2subdev Sakari Ailus
2016-02-24 16:25 ` [PATCH v5 3/4] libv4l2subdev: Add a function to list library supported pixel codes Sakari Ailus
2016-02-25 21:30   ` Laurent Pinchart
2016-02-24 16:25 ` [PATCH v5 4/4] media-ctl: List supported media bus formats Sakari Ailus
2016-02-25 21:38   ` Laurent Pinchart
2016-02-25 21:48     ` Sakari Ailus
2016-02-25 21:52     ` Sakari Ailus
2016-02-25 21:52       ` [v4l-utils PATCH v5.1 " 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.