All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans Verkuil <hverkuil-cisco@xs4all.nl>
To: linux-media@vger.kernel.org
Cc: Dave Stevenson <dave.stevenson@raspberrypi.org>,
	Sakari Ailus <sakari.ailus@iki.fi>,
	Sakari Ailus <sakari.ailus@linux.intel.com>
Subject: [PATCHv2 1/2] v4l: Add macros for printing V4L fourcc values
Date: Mon, 16 Sep 2019 12:04:32 +0200	[thread overview]
Message-ID: <20190916100433.24367-2-hverkuil-cisco@xs4all.nl> (raw)
In-Reply-To: <20190916100433.24367-1-hverkuil-cisco@xs4all.nl>

From: Sakari Ailus <sakari.ailus@linux.intel.com>

Add two macros that facilitate printing V4L fourcc values with printf
family of functions. v4l2_fourcc_conv provides the printf conversion
specifier for printing formats and v4l2_fourcc_args provides the actual
arguments for that conversion specifier.

These macros are useful in both user and kernel code whenever you want
to report a pixelformat, therefore put them into videodev2.h.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
[hverkuil-cisco@xs4all.nl: rename v4l2_fourcc_to_conv to v4l2_fourcc_args]
[hverkuil-cisco@xs4all.nl: add () around ? : expression]
[hverkuil-cisco@xs4all.nl: add comment about fourcc reuse]
[hverkuil-cisco@xs4all.nl: update Documentation/media/videodev2.h.rst.exceptions]
---
 .../media/videodev2.h.rst.exceptions          |  2 ++
 include/uapi/linux/videodev2.h                | 27 +++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/Documentation/media/videodev2.h.rst.exceptions b/Documentation/media/videodev2.h.rst.exceptions
index adeb6b7a15cb..35eb513d82a6 100644
--- a/Documentation/media/videodev2.h.rst.exceptions
+++ b/Documentation/media/videodev2.h.rst.exceptions
@@ -508,6 +508,8 @@ ignore define VIDEO_MAX_FRAME
 ignore define VIDEO_MAX_PLANES
 ignore define v4l2_fourcc
 ignore define v4l2_fourcc_be
+ignore define v4l2_fourcc_conv
+ignore define v4l2_fourcc_args
 ignore define V4L2_FIELD_HAS_TOP
 ignore define V4L2_FIELD_HAS_BOTTOM
 ignore define V4L2_FIELD_HAS_BOTH
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 530638dffd93..aa8acbdc88c9 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -82,6 +82,33 @@
 	((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24))
 #define v4l2_fourcc_be(a, b, c, d)	(v4l2_fourcc(a, b, c, d) | (1U << 31))
 
+/**
+ * v4l2_fourcc_conv - Printf fourcc conversion specifiers for V4L2 formats
+ *
+ * Use as part of the format string. The values are obtained using
+ * @v4l2_fourcc_args macro.
+ *
+ * Example ("format" is the V4L2 pixelformat in __u32):
+ *
+ * printf("V4L2 format is: " v4l2_fourcc_conv "\n", v4l2_fourcc_args(format);
+ */
+#define v4l2_fourcc_conv "%c%c%c%c%s"
+
+/**
+ * v4l2_fourcc_args - Arguments for V4L2 fourcc format conversion
+ *
+ * @fourcc: V4L2 pixelformat, as in __u32
+ *
+ * Yields to a comma-separated list of arguments for printf that matches with
+ * conversion specifiers provided by @v4l2_fourcc_conv.
+ *
+ * Note that v4l2_fourcc_args reuses fourcc, so this can't be an expression
+ * with side-effects.
+ */
+#define v4l2_fourcc_args(fourcc)					\
+	(fourcc) & 0x7f, ((fourcc) >> 8) & 0x7f, ((fourcc) >> 16) & 0x7f, \
+	((fourcc) >> 24) & 0x7f, ((fourcc) & (1 << 31) ? "-BE" : "")
+
 /*
  *	E N U M S
  */
-- 
2.20.1


  reply	other threads:[~2019-09-16 10:04 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-16 10:04 [PATCHv2 0/2] Add helper functions to print a fourcc Hans Verkuil
2019-09-16 10:04 ` Hans Verkuil [this message]
2019-09-16 12:07   ` [PATCHv2 1/2] v4l: Add macros for printing V4L fourcc values Sakari Ailus
2019-09-16 12:15     ` Hans Verkuil
2019-10-02 12:40   ` Ezequiel Garcia
2019-09-16 10:04 ` [PATCHv2 2/2] v4l2-ioctl.c: use new v4l2_fourcc_conv/args macros Hans Verkuil
2019-10-02 12:45   ` Ezequiel Garcia
2019-09-16 11:52 ` [PATCHv2 0/2] Add helper functions to print a fourcc Sakari Ailus
2019-09-16 12:00   ` Hans Verkuil
2020-01-29 11:52     ` Dave Stevenson
2020-01-30 21:38       ` Kieran Bingham
2020-03-25 13:50       ` Dave Stevenson
2020-03-31 10:27         ` Sakari Ailus
2020-03-31 14:05           ` Dave Stevenson
2020-03-31 14:29             ` Sakari Ailus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190916100433.24367-2-hverkuil-cisco@xs4all.nl \
    --to=hverkuil-cisco@xs4all.nl \
    --cc=dave.stevenson@raspberrypi.org \
    --cc=linux-media@vger.kernel.org \
    --cc=sakari.ailus@iki.fi \
    --cc=sakari.ailus@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.