From 0fc87864879c46afe145e20ec09c9dba2328e3be Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Wed, 28 May 2014 09:38:21 -0300 Subject: [media] v4l: Add test pattern colour component controls In many cases the test pattern has selectable values for each colour component. Implement controls for raw bayer components. Additional controls should be defined for colour components that are not covered by these controls. Signed-off-by: Sakari Ailus Acked-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/controls.xml | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index 9f5ffd85560b..a7eb1bde8b92 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml @@ -4790,6 +4790,40 @@ interface and may change in the future. conversion. + + V4L2_CID_TEST_PATTERN_RED + integer + + + Test pattern red colour component. + + + + V4L2_CID_TEST_PATTERN_GREENR + integer + + + Test pattern green (next to red) + colour component. + + + + V4L2_CID_TEST_PATTERN_BLUE + integer + + + Test pattern blue colour component. + + + + V4L2_CID_TEST_PATTERN_GREENB + integer + + + Test pattern green (next to blue) + colour component. + + -- cgit v1.2.3 From 83acb75d0dd37bd2eb24168f26d01c747ece3fc7 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Fri, 8 Aug 2014 04:38:09 -0300 Subject: [media] DocBook media: fix order of v4l2_edid fields The order of the last two fields in the G/S_EDID specification was swapped from what is in the actual struct. Fix this. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/vidioc-g-edid.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/vidioc-g-edid.xml b/Documentation/DocBook/media/v4l/vidioc-g-edid.xml index ce4563b87131..fa91651978e0 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-edid.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-edid.xml @@ -124,18 +124,18 @@ maximum number of blocks as defined by the standard). When you set the EDID and blocks is 0, then the EDID is disabled or erased. - - __u8 * - edid - Pointer to memory that contains the EDID. The minimum size is - blocks * 128. - __u32 reserved[5] Reserved for future extensions. Applications and drivers must set the array to zero. + + __u8 * + edid + Pointer to memory that contains the EDID. The minimum size is + blocks * 128. + -- cgit v1.2.3 From 6e533c01a89fbb8b1a5c58808540e798e2dad645 Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Wed, 6 Aug 2014 03:52:08 -0300 Subject: [media] v4l: Event documentation fixes Constify event type constants and correct motion detection event number (it's 6, not 5). Signed-off-by: Sakari Ailus Acked-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/vidioc-dqevent.xml | 7 ++++--- Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml index cb7732582f03..b036f8963353 100644 --- a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml +++ b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml @@ -76,21 +76,22 @@ &v4l2-event-vsync; vsync - Event data for event V4L2_EVENT_VSYNC. + Event data for event V4L2_EVENT_VSYNC. &v4l2-event-ctrl; ctrl - Event data for event V4L2_EVENT_CTRL. + Event data for event V4L2_EVENT_CTRL. &v4l2-event-frame-sync; frame_sync - Event data for event V4L2_EVENT_FRAME_SYNC. + Event data for event + V4L2_EVENT_FRAME_SYNC. diff --git a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml index 9f6095608837..d7c9365ecdbe 100644 --- a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml +++ b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml @@ -176,7 +176,7 @@ V4L2_EVENT_MOTION_DET - 5 + 6 Triggered whenever the motion detection state for one or more of the regions changes. This event has a &v4l2-event-motion-det; associated with it. -- cgit v1.2.3 From e3d6eb1c16ef174a8fbbdd40770f5cbace0710e4 Mon Sep 17 00:00:00 2001 From: Vincent Palatin Date: Wed, 3 Sep 2014 16:38:39 -0300 Subject: [media] v4l: Add camera pan/tilt speed controls The V4L2_CID_PAN_SPEED and V4L2_CID_TILT_SPEED controls allow to move the camera by setting its rotation speed around its axis. Signed-off-by: Vincent Palatin Reviewed-by: Pawel Osciak Signed-off-by: Laurent Pinchart Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/compat.xml | 10 ++++++++++ Documentation/DocBook/media/v4l/controls.xml | 21 +++++++++++++++++++++ drivers/media/v4l2-core/v4l2-ctrls.c | 2 ++ include/uapi/linux/v4l2-controls.h | 2 ++ 4 files changed, 35 insertions(+) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml index eee6f0f4aa43..7aa7c5d41e3b 100644 --- a/Documentation/DocBook/media/v4l/compat.xml +++ b/Documentation/DocBook/media/v4l/compat.xml @@ -2545,6 +2545,16 @@ fields changed from _s32 to _u32. +
+ V4L2 in Linux 3.18 + + + Added V4L2_CID_PAN_SPEED and + V4L2_CID_TILT_SPEED camera controls. + + +
+
Relation of V4L2 to other Linux multimedia APIs diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index a7eb1bde8b92..e013e4bf244c 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml @@ -3965,6 +3965,27 @@ by exposure, white balance or focus controls. + + V4L2_CID_PAN_SPEED  + integer + This control turns the +camera horizontally at the specific speed. The unit is undefined. A +positive value moves the camera to the right (clockwise when viewed +from above), a negative value to the left. A value of zero stops the motion +if one is in progress and has no effect otherwise. + + + + + V4L2_CID_TILT_SPEED  + integer + This control turns the +camera vertically at the specified speed. The unit is undefined. A +positive value moves the camera up, a negative value down. A value of zero +stops the motion if one is in progress and has no effect otherwise. + + + diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c index 35d1f3d5045b..86012140923f 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls.c +++ b/drivers/media/v4l2-core/v4l2-ctrls.c @@ -796,6 +796,8 @@ const char *v4l2_ctrl_get_name(u32 id) case V4L2_CID_AUTO_FOCUS_STOP: return "Auto Focus, Stop"; case V4L2_CID_AUTO_FOCUS_STATUS: return "Auto Focus, Status"; case V4L2_CID_AUTO_FOCUS_RANGE: return "Auto Focus, Range"; + case V4L2_CID_PAN_SPEED: return "Pan, Speed"; + case V4L2_CID_TILT_SPEED: return "Tilt, Speed"; /* FM Radio Modulator controls */ /* Keep the order of the 'case's the same as in v4l2-controls.h! */ diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h index 8b930210a4b9..661f119a51b8 100644 --- a/include/uapi/linux/v4l2-controls.h +++ b/include/uapi/linux/v4l2-controls.h @@ -746,6 +746,8 @@ enum v4l2_auto_focus_range { V4L2_AUTO_FOCUS_RANGE_INFINITY = 3, }; +#define V4L2_CID_PAN_SPEED (V4L2_CID_CAMERA_CLASS_BASE+32) +#define V4L2_CID_TILT_SPEED (V4L2_CID_CAMERA_CLASS_BASE+33) /* FM Modulator class control IDs */ -- cgit v1.2.3 From fcc0d3db28922f9ba21ea6c7b23ea10ffb5d3521 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 21 Jul 2014 17:06:33 -0300 Subject: [media] v4l: Add ARGB555X and XRGB555X pixel formats The existing RGB555X pixel format is ill-defined in respect to its alpha bit and its meaning is driver dependent. Create new standard ARGB555X and XRGB555X variants with clearly defined meanings and make the existing variant deprecated. The new pixel formats 4CC values have been selected to match the DRM 4CCs for the same in-memory formats. Signed-off-by: Laurent Pinchart Acked-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- .../DocBook/media/v4l/pixfmt-packed-rgb.xml | 50 ++++++++++++++++++++-- include/uapi/linux/videodev2.h | 3 ++ 2 files changed, 50 insertions(+), 3 deletions(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml index 2aae8e9452a4..65a11867e0ae 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml @@ -237,9 +237,9 @@ for a pixel lie next to each other in memory. g4 g3 - - V4L2_PIX_FMT_RGB555X - 'RGBQ' + + V4L2_PIX_FMT_ARGB555X + 'AR15' | (1 << 31) a r4 @@ -259,6 +259,28 @@ for a pixel lie next to each other in memory. b1 b0 + + V4L2_PIX_FMT_XRGB555X + 'XR15' | (1 << 31) + + - + r4 + r3 + r2 + r1 + r0 + g4 + g3 + + g2 + g1 + g0 + b4 + b3 + b2 + b1 + b0 + V4L2_PIX_FMT_RGB565X 'RGBR' @@ -800,6 +822,28 @@ image g4 g3 + + V4L2_PIX_FMT_RGB555X + 'RGBQ' + + a + r4 + r3 + r2 + r1 + r0 + g4 + g3 + + g2 + g1 + g0 + b4 + b3 + b2 + b1 + b0 + V4L2_PIX_FMT_BGR32 'BGR4' diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 0b1ba5c6a8d2..1c2f84fd4d99 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -79,6 +79,7 @@ /* Four-character-code (FOURCC) */ #define v4l2_fourcc(a, b, c, d)\ ((__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) | (1 << 31)) /* * E N U M S @@ -307,6 +308,8 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-5-5-5 */ #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ +#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */ +#define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */ #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ #define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */ #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ -- cgit v1.2.3 From 22889ef8162b86c25b6c609624a9c53f9fd7f642 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 21 Jul 2014 19:36:58 -0300 Subject: [media] v4l: Fix ARGB32 fourcc value in the documentation The ARGB32 pixel format's fourcc value is defined to 'BA24' in the videodev2.h header, but documented as 'AX24'. Fix the documentation. Reported-by: Hans Verkuil Signed-off-by: Laurent Pinchart Acked-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml index 65a11867e0ae..6ab4f0f3db64 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml @@ -486,7 +486,7 @@ for a pixel lie next to each other in memory. V4L2_PIX_FMT_ARGB32 - 'AX24' + 'BA24' a7 a6 -- cgit v1.2.3 From 625c3442dcc79722c60afc398beac4c11f0395ac Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Sat, 13 Sep 2014 06:28:02 -0300 Subject: [media] DocBook media: fix wrong prototype G_EDID is an RW ioctl, so the struct v4l2_edid isn't const. Signed-off-by: Hans Verkuil Acked-by: Sakari Ailus Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/vidioc-g-edid.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/vidioc-g-edid.xml b/Documentation/DocBook/media/v4l/vidioc-g-edid.xml index fa91651978e0..6df40db4c8ba 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-edid.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-edid.xml @@ -24,7 +24,7 @@ int ioctl int fd int request - const struct v4l2_edid *argp + struct v4l2_edid *argp -- cgit v1.2.3 From 0415447aa3b4decc2c05dfc45a0aa34a5eb4fc54 Mon Sep 17 00:00:00 2001 From: Michael Opdenacker Date: Thu, 2 Oct 2014 22:45:48 +0200 Subject: Documentation: fix broken v4l-utils URL This replaces http://git.linuxtv.org/v4l-utils/ (broken link) by http://git.linuxtv.org/cgit.cgi/v4l-utils.git/ Signed-off-by: Michael Opdenacker Signed-off-by: Jiri Kosina --- Documentation/DocBook/media/v4l/common.xml | 2 +- drivers/media/rc/keymaps/Kconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/common.xml b/Documentation/DocBook/media/v4l/common.xml index 71f6bf9e735e..8b5e014224d6 100644 --- a/Documentation/DocBook/media/v4l/common.xml +++ b/Documentation/DocBook/media/v4l/common.xml @@ -110,7 +110,7 @@ makes no provisions to find these related devices. Some really complex devices use the Media Controller (see ) which can be used for this purpose. But most drivers do not use it, and while some code exists that uses sysfs to discover related devices -(see libmedia_dev in the v4l-utils +(see libmedia_dev in the v4l-utils git repository), there is no library yet that can provide a single API towards both Media Controller-based devices and devices that do not use the Media Controller. If you want to work on this please write to the linux-media mailing list: &v4l-ml;. diff --git a/drivers/media/rc/keymaps/Kconfig b/drivers/media/rc/keymaps/Kconfig index 8e615fd55852..767423bbbdd0 100644 --- a/drivers/media/rc/keymaps/Kconfig +++ b/drivers/media/rc/keymaps/Kconfig @@ -12,4 +12,4 @@ config RC_MAP The ir-keytable program, available at v4l-utils package provide the tool and the same RC maps for load from userspace. Its available at - http://git.linuxtv.org/v4l-utils + http://git.linuxtv.org/cgit.cgi/v4l-utils.git/ -- cgit v1.2.3 From b832e749f0c750b06deece320489e8a9e6ae9e80 Mon Sep 17 00:00:00 2001 From: Vincent Palatin Date: Mon, 20 Oct 2014 14:26:43 -0300 Subject: [media] v4l: DocBook: fix media build error Fix media DocBook build errors by re-adding the orderedlist tag and putting back the section tags lost during merge. Reported-by: Randy Dunlap Signed-off-by: Vincent Palatin Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/compat.xml | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml index 07ffc76553ba..0a2debfa68f6 100644 --- a/Documentation/DocBook/media/v4l/compat.xml +++ b/Documentation/DocBook/media/v4l/compat.xml @@ -2566,6 +2566,10 @@ fields changed from _s32 to _u32. Added compound control types and &VIDIOC-QUERY-EXT-CTRL;. + +
+ +
V4L2 in Linux 3.18 -- cgit v1.2.3 From 0684d84ce0e2f694a7818c16cb0c5c00c4ed7cb8 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 21 Oct 2014 18:18:12 +0200 Subject: DocBook: Reduce noise from make cleandocs I've got a harmless warning when running make cleandocs on an already cleaned tree: Documentation/DocBook/media/Makefile:28: recipe for target 'cleanmediadocs' failed make[1]: [cleanmediadocs] Error 1 (ignored) Suppress this by passing -f to rm. Acked-by: Mauro Carvalho Chehab Signed-off-by: Takashi Iwai Signed-off-by: Jonathan Corbet --- Documentation/DocBook/media/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/Makefile b/Documentation/DocBook/media/Makefile index df2962d9e11e..8bf7c6191296 100644 --- a/Documentation/DocBook/media/Makefile +++ b/Documentation/DocBook/media/Makefile @@ -25,7 +25,7 @@ GENFILES := $(addprefix $(MEDIA_OBJ_DIR)/, $(MEDIA_TEMP)) PHONY += cleanmediadocs cleanmediadocs: - -@rm `find $(MEDIA_OBJ_DIR) -type l` $(GENFILES) $(OBJIMGFILES) 2>/dev/null + -@rm -f `find $(MEDIA_OBJ_DIR) -type l` $(GENFILES) $(OBJIMGFILES) 2>/dev/null $(obj)/media_api.xml: $(GENFILES) FORCE -- cgit v1.2.3 From a47959fbd5808890963fe8475a7c436bfd60d8c3 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Fri, 26 Sep 2014 15:37:38 -0300 Subject: [media] Documentation: FE_SET_PROPERTY requires R/W FE_SET_PROPERTY requires to open the devnode on R/W mode, or otherwise it will fail. Document it. Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/dvb/dvbproperty.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/dvb/dvbproperty.xml b/Documentation/DocBook/media/dvb/dvbproperty.xml index 948ddaab592e..3018564ddfd9 100644 --- a/Documentation/DocBook/media/dvb/dvbproperty.xml +++ b/Documentation/DocBook/media/dvb/dvbproperty.xml @@ -120,8 +120,8 @@ struct dtv_properties { -This ioctl call sets one or more frontend properties. This call only - requires read-only access to the device. +This ioctl call sets one or more frontend properties. This call + requires read/write access to the device. SYNOPSIS -- cgit v1.2.3 From 9fd1f310a13ab16034cbda4f874eafadc8f80caf Mon Sep 17 00:00:00 2001 From: Simon Farnsworth Date: Fri, 31 Oct 2014 12:48:42 -0300 Subject: [media] DocBook media: Clarify V4L2_FIELD_ANY for drivers Documentation for enum v4l2_field did not make it clear that V4L2_FIELD_ANY is only acceptable as input to the kernel, not as a response from the driver. Make it clear, to stop userspace developers like me assuming it can be returned by the driver. Signed-off-by: Simon Farnsworth Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/io.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/io.xml b/Documentation/DocBook/media/v4l/io.xml index e5e8325aa3d7..1c17f802b471 100644 --- a/Documentation/DocBook/media/v4l/io.xml +++ b/Documentation/DocBook/media/v4l/io.xml @@ -1422,7 +1422,10 @@ one of the V4L2_FIELD_NONE, V4L2_FIELD_BOTTOM, or V4L2_FIELD_INTERLACED formats is acceptable. Drivers choose depending on hardware capabilities or e. g. the -requested image size, and return the actual field order. &v4l2-buffer; +requested image size, and return the actual field order. Drivers must +never return V4L2_FIELD_ANY. If multiple +field orders are possible the driver must choose one of the possible +field orders during &VIDIOC-S-FMT; or &VIDIOC-TRY-FMT;. &v4l2-buffer; field can never be V4L2_FIELD_ANY. -- cgit v1.2.3 From 55b8cbf75fe714f283073048b560d30a0af13473 Mon Sep 17 00:00:00 2001 From: Boris BREZILLON Date: Mon, 10 Nov 2014 14:28:27 -0300 Subject: [media] v4l: Update subdev-formats doc with new MEDIA_BUS_FMT values In order to have subsytem agnostic media bus format definitions we've moved media bus definition to include/uapi/linux/media-bus-format.h and prefixed them with MEDIA_BUS_FMT instead of V4L2_MBUS_FMT. Update the v4l documentation accordingly. Signed-off-by: Boris Brezillon Acked-by: Hans Verkuil Acked-by: Sakari Ailus Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/subdev-formats.xml | 308 ++++++++++----------- 1 file changed, 154 insertions(+), 154 deletions(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/subdev-formats.xml b/Documentation/DocBook/media/v4l/subdev-formats.xml index b2d5a0363cba..18730b96e1e6 100644 --- a/Documentation/DocBook/media/v4l/subdev-formats.xml +++ b/Documentation/DocBook/media/v4l/subdev-formats.xml @@ -86,7 +86,7 @@ green and 5-bit blue values padded on the high bit, transferred as 2 8-bit samples per pixel with the most significant bits (padding, red and half of the green value) transferred first will be named - V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE. + MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE. The following tables list existing packed RGB formats. @@ -176,8 +176,8 @@ - - V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE + + MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE 0x1001 &dash-ent-24; @@ -204,8 +204,8 @@ b1 b0 - - V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE + + MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE 0x1002 &dash-ent-24; @@ -232,8 +232,8 @@ r1 r0 - - V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE + + MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE 0x1003 &dash-ent-24; @@ -260,8 +260,8 @@ b1 b0 - - V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE + + MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE 0x1004 &dash-ent-24; @@ -288,8 +288,8 @@ g4 g3 - - V4L2_MBUS_FMT_BGR565_2X8_BE + + MEDIA_BUS_FMT_BGR565_2X8_BE 0x1005 &dash-ent-24; @@ -316,8 +316,8 @@ r1 r0 - - V4L2_MBUS_FMT_BGR565_2X8_LE + + MEDIA_BUS_FMT_BGR565_2X8_LE 0x1006 &dash-ent-24; @@ -344,8 +344,8 @@ g4 g3 - - V4L2_MBUS_FMT_RGB565_2X8_BE + + MEDIA_BUS_FMT_RGB565_2X8_BE 0x1007 &dash-ent-24; @@ -372,8 +372,8 @@ b1 b0 - - V4L2_MBUS_FMT_RGB565_2X8_LE + + MEDIA_BUS_FMT_RGB565_2X8_LE 0x1008 &dash-ent-24; @@ -400,8 +400,8 @@ g4 g3 - - V4L2_MBUS_FMT_RGB666_1X18 + + MEDIA_BUS_FMT_RGB666_1X18 0x1009 &dash-ent-14; @@ -424,8 +424,8 @@ b1 b0 - - V4L2_MBUS_FMT_RGB888_1X24 + + MEDIA_BUS_FMT_RGB888_1X24 0x100a &dash-ent-8; @@ -454,8 +454,8 @@ b1 b0 - - V4L2_MBUS_FMT_RGB888_2X12_BE + + MEDIA_BUS_FMT_RGB888_2X12_BE 0x100b &dash-ent-20; @@ -490,8 +490,8 @@ b1 b0 - - V4L2_MBUS_FMT_RGB888_2X12_LE + + MEDIA_BUS_FMT_RGB888_2X12_LE 0x100c &dash-ent-20; @@ -526,8 +526,8 @@ g5 g4 - - V4L2_MBUS_FMT_ARGB888_1X32 + + MEDIA_BUS_FMT_ARGB888_1X32 0x100d a7 @@ -600,7 +600,7 @@ For instance, a format with uncompressed 10-bit Bayer components arranged in a red, green, green, blue pattern transferred as 2 8-bit samples per pixel with the least significant bits transferred first will - be named V4L2_MBUS_FMT_SRGGB10_2X8_PADHI_LE. + be named MEDIA_BUS_FMT_SRGGB10_2X8_PADHI_LE.
@@ -663,8 +663,8 @@ - - V4L2_MBUS_FMT_SBGGR8_1X8 + + MEDIA_BUS_FMT_SBGGR8_1X8 0x3001 - @@ -680,8 +680,8 @@ b1 b0 - - V4L2_MBUS_FMT_SGBRG8_1X8 + + MEDIA_BUS_FMT_SGBRG8_1X8 0x3013 - @@ -697,8 +697,8 @@ g1 g0 - - V4L2_MBUS_FMT_SGRBG8_1X8 + + MEDIA_BUS_FMT_SGRBG8_1X8 0x3002 - @@ -714,8 +714,8 @@ g1 g0 - - V4L2_MBUS_FMT_SRGGB8_1X8 + + MEDIA_BUS_FMT_SRGGB8_1X8 0x3014 - @@ -731,8 +731,8 @@ r1 r0 - - V4L2_MBUS_FMT_SBGGR10_ALAW8_1X8 + + MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8 0x3015 - @@ -748,8 +748,8 @@ b1 b0 - - V4L2_MBUS_FMT_SGBRG10_ALAW8_1X8 + + MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8 0x3016 - @@ -765,8 +765,8 @@ g1 g0 - - V4L2_MBUS_FMT_SGRBG10_ALAW8_1X8 + + MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8 0x3017 - @@ -782,8 +782,8 @@ g1 g0 - - V4L2_MBUS_FMT_SRGGB10_ALAW8_1X8 + + MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8 0x3018 - @@ -799,8 +799,8 @@ r1 r0 - - V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8 + + MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8 0x300b - @@ -816,8 +816,8 @@ b1 b0 - - V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8 + + MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8 0x300c - @@ -833,8 +833,8 @@ g1 g0 - - V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8 + + MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8 0x3009 - @@ -850,8 +850,8 @@ g1 g0 - - V4L2_MBUS_FMT_SRGGB10_DPCM8_1X8 + + MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8 0x300d - @@ -867,8 +867,8 @@ r1 r0 - - V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE + + MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE 0x3003 - @@ -901,8 +901,8 @@ b1 b0 - - V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE + + MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE 0x3004 - @@ -935,8 +935,8 @@ b9 b8 - - V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE + + MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE 0x3005 - @@ -969,8 +969,8 @@ 0 0 - - V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE + + MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE 0x3006 - @@ -1003,8 +1003,8 @@ b3 b2 - - V4L2_MBUS_FMT_SBGGR10_1X10 + + MEDIA_BUS_FMT_SBGGR10_1X10 0x3007 - @@ -1020,8 +1020,8 @@ b1 b0 - - V4L2_MBUS_FMT_SGBRG10_1X10 + + MEDIA_BUS_FMT_SGBRG10_1X10 0x300e - @@ -1037,8 +1037,8 @@ g1 g0 - - V4L2_MBUS_FMT_SGRBG10_1X10 + + MEDIA_BUS_FMT_SGRBG10_1X10 0x300a - @@ -1054,8 +1054,8 @@ g1 g0 - - V4L2_MBUS_FMT_SRGGB10_1X10 + + MEDIA_BUS_FMT_SRGGB10_1X10 0x300f - @@ -1071,8 +1071,8 @@ r1 r0 - - V4L2_MBUS_FMT_SBGGR12_1X12 + + MEDIA_BUS_FMT_SBGGR12_1X12 0x3008 b11 @@ -1088,8 +1088,8 @@ b1 b0 - - V4L2_MBUS_FMT_SGBRG12_1X12 + + MEDIA_BUS_FMT_SGBRG12_1X12 0x3010 g11 @@ -1105,8 +1105,8 @@ g1 g0 - - V4L2_MBUS_FMT_SGRBG12_1X12 + + MEDIA_BUS_FMT_SGRBG12_1X12 0x3011 g11 @@ -1122,8 +1122,8 @@ g1 g0 - - V4L2_MBUS_FMT_SRGGB12_1X12 + + MEDIA_BUS_FMT_SRGGB12_1X12 0x3012 r11 @@ -1175,7 +1175,7 @@ For instance, a format where pixels are encoded as 8-bit YUV values downsampled to 4:2:2 and transferred as 2 8-bit bus samples per pixel in the - U, Y, V, Y order will be named V4L2_MBUS_FMT_UYVY8_2X8. + U, Y, V, Y order will be named MEDIA_BUS_FMT_UYVY8_2X8. lists existing packed YUV @@ -1280,8 +1280,8 @@ - - V4L2_MBUS_FMT_Y8_1X8 + + MEDIA_BUS_FMT_Y8_1X8 0x2001 &dash-ent-24; @@ -1294,8 +1294,8 @@ y1 y0 - - V4L2_MBUS_FMT_UV8_1X8 + + MEDIA_BUS_FMT_UV8_1X8 0x2015 &dash-ent-24; @@ -1322,8 +1322,8 @@ v1 v0 - - V4L2_MBUS_FMT_UYVY8_1_5X8 + + MEDIA_BUS_FMT_UYVY8_1_5X8 0x2002 &dash-ent-24; @@ -1406,8 +1406,8 @@ y1 y0 - - V4L2_MBUS_FMT_VYUY8_1_5X8 + + MEDIA_BUS_FMT_VYUY8_1_5X8 0x2003 &dash-ent-24; @@ -1490,8 +1490,8 @@ y1 y0 - - V4L2_MBUS_FMT_YUYV8_1_5X8 + + MEDIA_BUS_FMT_YUYV8_1_5X8 0x2004 &dash-ent-24; @@ -1574,8 +1574,8 @@ v1 v0 - - V4L2_MBUS_FMT_YVYU8_1_5X8 + + MEDIA_BUS_FMT_YVYU8_1_5X8 0x2005 &dash-ent-24; @@ -1658,8 +1658,8 @@ u1 u0 - - V4L2_MBUS_FMT_UYVY8_2X8 + + MEDIA_BUS_FMT_UYVY8_2X8 0x2006 &dash-ent-24; @@ -1714,8 +1714,8 @@ y1 y0 - - V4L2_MBUS_FMT_VYUY8_2X8 + + MEDIA_BUS_FMT_VYUY8_2X8 0x2007 &dash-ent-24; @@ -1770,8 +1770,8 @@ y1 y0 - - V4L2_MBUS_FMT_YUYV8_2X8 + + MEDIA_BUS_FMT_YUYV8_2X8 0x2008 &dash-ent-24; @@ -1826,8 +1826,8 @@ v1 v0 - - V4L2_MBUS_FMT_YVYU8_2X8 + + MEDIA_BUS_FMT_YVYU8_2X8 0x2009 &dash-ent-24; @@ -1882,8 +1882,8 @@ u1 u0 - - V4L2_MBUS_FMT_Y10_1X10 + + MEDIA_BUS_FMT_Y10_1X10 0x200a &dash-ent-22; @@ -1898,8 +1898,8 @@ y1 y0 - - V4L2_MBUS_FMT_UYVY10_2X10 + + MEDIA_BUS_FMT_UYVY10_2X10 0x2018 &dash-ent-22; @@ -1962,8 +1962,8 @@ y1 y0 - - V4L2_MBUS_FMT_VYUY10_2X10 + + MEDIA_BUS_FMT_VYUY10_2X10 0x2019 &dash-ent-22; @@ -2026,8 +2026,8 @@ y1 y0 - - V4L2_MBUS_FMT_YUYV10_2X10 + + MEDIA_BUS_FMT_YUYV10_2X10 0x200b &dash-ent-22; @@ -2090,8 +2090,8 @@ v1 v0 - - V4L2_MBUS_FMT_YVYU10_2X10 + + MEDIA_BUS_FMT_YVYU10_2X10 0x200c &dash-ent-22; @@ -2154,8 +2154,8 @@ u1 u0 - - V4L2_MBUS_FMT_Y12_1X12 + + MEDIA_BUS_FMT_Y12_1X12 0x2013 &dash-ent-20; @@ -2172,8 +2172,8 @@ y1 y0 - - V4L2_MBUS_FMT_UYVY8_1X16 + + MEDIA_BUS_FMT_UYVY8_1X16 0x200f &dash-ent-16; @@ -2216,8 +2216,8 @@ y1 y0 - - V4L2_MBUS_FMT_VYUY8_1X16 + + MEDIA_BUS_FMT_VYUY8_1X16 0x2010 &dash-ent-16; @@ -2260,8 +2260,8 @@ y1 y0 - - V4L2_MBUS_FMT_YUYV8_1X16 + + MEDIA_BUS_FMT_YUYV8_1X16 0x2011 &dash-ent-16; @@ -2304,8 +2304,8 @@ v1 v0 - - V4L2_MBUS_FMT_YVYU8_1X16 + + MEDIA_BUS_FMT_YVYU8_1X16 0x2012 &dash-ent-16; @@ -2348,8 +2348,8 @@ u1 u0 - - V4L2_MBUS_FMT_YDYUYDYV8_1X16 + + MEDIA_BUS_FMT_YDYUYDYV8_1X16 0x2014 &dash-ent-16; @@ -2436,8 +2436,8 @@ v1 v0 - - V4L2_MBUS_FMT_UYVY10_1X20 + + MEDIA_BUS_FMT_UYVY10_1X20 0x201a &dash-ent-12; @@ -2488,8 +2488,8 @@ y1 y0 - - V4L2_MBUS_FMT_VYUY10_1X20 + + MEDIA_BUS_FMT_VYUY10_1X20 0x201b &dash-ent-12; @@ -2540,8 +2540,8 @@ y1 y0 - - V4L2_MBUS_FMT_YUYV10_1X20 + + MEDIA_BUS_FMT_YUYV10_1X20 0x200d &dash-ent-12; @@ -2592,8 +2592,8 @@ v1 v0 - - V4L2_MBUS_FMT_YVYU10_1X20 + + MEDIA_BUS_FMT_YVYU10_1X20 0x200e &dash-ent-12; @@ -2644,8 +2644,8 @@ u1 u0 - - V4L2_MBUS_FMT_YUV10_1X30 + + MEDIA_BUS_FMT_YUV10_1X30 0x2016 - @@ -2681,8 +2681,8 @@ v1 v0 - - V4L2_MBUS_FMT_AYUV8_1X32 + + MEDIA_BUS_FMT_AYUV8_1X32 0x2017 a7 @@ -2718,8 +2718,8 @@ v1 v0 - - V4L2_MBUS_FMT_UYVY12_2X12 + + MEDIA_BUS_FMT_UYVY12_2X12 0x201c &dash-ent-20; @@ -2790,8 +2790,8 @@ y1 y0 - - V4L2_MBUS_FMT_VYUY12_2X12 + + MEDIA_BUS_FMT_VYUY12_2X12 0x201d &dash-ent-20; @@ -2862,8 +2862,8 @@ y1 y0 - - V4L2_MBUS_FMT_YUYV12_2X12 + + MEDIA_BUS_FMT_YUYV12_2X12 0x201e &dash-ent-20; @@ -2934,8 +2934,8 @@ v1 v0 - - V4L2_MBUS_FMT_YVYU12_2X12 + + MEDIA_BUS_FMT_YVYU12_2X12 0x201f &dash-ent-20; @@ -3006,8 +3006,8 @@ u1 u0 - - V4L2_MBUS_FMT_UYVY12_1X24 + + MEDIA_BUS_FMT_UYVY12_1X24 0x2020 &dash-ent-8; @@ -3066,8 +3066,8 @@ y1 y0 - - V4L2_MBUS_FMT_VYUY12_1X24 + + MEDIA_BUS_FMT_VYUY12_1X24 0x2021 &dash-ent-8; @@ -3126,8 +3126,8 @@ y1 y0 - - V4L2_MBUS_FMT_YUYV12_1X24 + + MEDIA_BUS_FMT_YUYV12_1X24 0x2022 &dash-ent-8; @@ -3186,8 +3186,8 @@ v1 v0 - - V4L2_MBUS_FMT_YVYU12_1X24 + + MEDIA_BUS_FMT_YVYU12_1X24 0x2023 &dash-ent-8; @@ -3366,8 +3366,8 @@ - - V4L2_MBUS_FMT_AHSV8888_1X32 + + MEDIA_BUS_FMT_AHSV8888_1X32 0x6001 a7 @@ -3422,7 +3422,7 @@ For instance, for a JPEG baseline process and an 8-bit bus width - the format will be named V4L2_MBUS_FMT_JPEG_1X8. + the format will be named MEDIA_BUS_FMT_JPEG_1X8. The following table lists existing JPEG compressed formats. @@ -3441,8 +3441,8 @@ - - V4L2_MBUS_FMT_JPEG_1X8 + + MEDIA_BUS_FMT_JPEG_1X8 0x4001 Besides of its usage for the parallel bus this format is recommended for transmission of JPEG data over MIPI CSI bus @@ -3484,8 +3484,8 @@ interface and may change in the future. - - V4L2_MBUS_FMT_S5C_UYVY_JPEG_1X8 + + MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8 0x5001 Interleaved raw UYVY and JPEG image format with embedded -- cgit v1.2.3 From 1afed88381bb332040f2cb80ab1fa1d70506d593 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Thu, 27 Nov 2014 10:16:08 -0300 Subject: [media] DocBook media: rewrite the Colorspace chapter The colorspace chapter in the V4L2 Specification was always poorly written. This patch rewrites it, documenting the new Y'CbCr encoding and quantization defines and going into much more detail with respect to how colorspaces are used and what it all means. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/biblio.xml | 85 ++ Documentation/DocBook/media/v4l/pixfmt.xml | 1274 +++++++++++++++++++++------- 2 files changed, 1052 insertions(+), 307 deletions(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/biblio.xml b/Documentation/DocBook/media/v4l/biblio.xml index d2eb79e41a01..7ff01a23c2fe 100644 --- a/Documentation/DocBook/media/v4l/biblio.xml +++ b/Documentation/DocBook/media/v4l/biblio.xml @@ -178,6 +178,75 @@ Signal - NTSC for Studio Applications" 1125-Line High-Definition Production" + + sRGB + + International Electrotechnical Commission +(http://www.iec.ch) + + IEC 61966-2-1 ed1.0 "Multimedia systems and equipment - Colour measurement +and management - Part 2-1: Colour management - Default RGB colour space - sRGB" + + + + sYCC + + International Electrotechnical Commission +(http://www.iec.ch) + + IEC 61966-2-1-am1 ed1.0 "Amendment 1 - Multimedia systems and equipment - Colour measurement +and management - Part 2-1: Colour management - Default RGB colour space - sRGB" + + + + xvYCC + + International Electrotechnical Commission +(http://www.iec.ch) + + IEC 61966-2-4 ed1.0 "Multimedia systems and equipment - Colour measurement +and management - Part 2-4: Colour management - Extended-gamut YCC colour space for video +applications - xvYCC" + + + + AdobeRGB + + Adobe Systems Incorporated (http://www.adobe.com) + + Adobe© RGB (1998) Color Image Encoding Version 2005-05 + + + + opRGB + + International Electrotechnical Commission +(http://www.iec.ch) + + IEC 61966-2-5 "Multimedia systems and equipment - Colour measurement +and management - Part 2-5: Colour management - Optional RGB colour space - opRGB" + + + + ITU BT.2020 + + International Telecommunication Union (http://www.itu.ch) + + ITU-R Recommendation BT.2020 (08/2012) "Parameter values for ultra-high +definition television systems for production and international programme exchange" + + + + + EBU Tech 3213 + + European Broadcast Union (http://www.ebu.ch) + + E.B.U. Standard for Chromaticity Tolerances for Studio Monitors" + + IEC 62106 @@ -266,4 +335,20 @@ in the frequency range from 87,5 to 108,0 MHz Version 1, Revision 2 + + poynton + + Charles Poynton + + Digital Video and HDTV, Algorithms and Interfaces + + + + colimg + + Erik Reinhard et al. + + Color Imaging: Fundamentals and Applications + + diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml index df5b23d46552..ccf6053c1ae4 100644 --- a/Documentation/DocBook/media/v4l/pixfmt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt.xml @@ -296,343 +296,1003 @@ in the 2-planar version or with each component in its own buffer in the
Colorspaces - [intro] + 'Color' is a very complex concept and depends on physics, chemistry and +biology. Just because you have three numbers that describe the 'red', 'green' +and 'blue' components of the color of a pixel does not mean that you can accurately +display that color. A colorspace defines what it actually means +to have an RGB value of e.g. (255, 0, 0). That is, which color should be +reproduced on the screen in a perfectly calibrated environment. - + In order to do that we first need to have a good definition of +color, i.e. some way to uniquely and unambiguously define a color so that someone +else can reproduce it. Human color vision is trichromatic since the human eye has +color receptors that are sensitive to three different wavelengths of light. Hence +the need to use three numbers to describe color. Be glad you are not a mantis shrimp +as those are sensitive to 12 different wavelengths, so instead of RGB we would be +using the ABCDEFGHIJKL colorspace... - - - - Gamma Correction - - [to do] - E'R = f(R) - E'G = f(G) - E'B = f(B) - - - - Construction of luminance and color-difference -signals - - [to do] - E'Y = -CoeffR E'R -+ CoeffG E'G -+ CoeffB E'B - (E'R - E'Y) = E'R -- CoeffR E'R -- CoeffG E'G -- CoeffB E'B - (E'B - E'Y) = E'B -- CoeffR E'R -- CoeffG E'G -- CoeffB E'B - - - - Re-normalized color-difference signals - - The color-difference signals are scaled back to unity -range [-0.5;+0.5]: - KB = 0.5 / (1 - CoeffB) - KR = 0.5 / (1 - CoeffR) - PB = -KB (E'B - E'Y) = - 0.5 (CoeffR / CoeffB) E'R -+ 0.5 (CoeffG / CoeffB) E'G -+ 0.5 E'B - PR = -KR (E'R - E'Y) = - 0.5 E'R -+ 0.5 (CoeffG / CoeffR) E'G -+ 0.5 (CoeffB / CoeffR) E'B - - - - Quantization - - [to do] - Y' = (Lum. Levels - 1) · E'Y + Lum. Offset - CB = (Chrom. Levels - 1) -· PB + Chrom. Offset - CR = (Chrom. Levels - 1) -· PR + Chrom. Offset - Rounding to the nearest integer and clamping to the range -[0;255] finally yields the digital color components Y'CbCr -stored in YUV images. - - - - - - - ITU-R Rec. BT.601 color conversion - - Forward Transformation - - -int ER, EG, EB; /* gamma corrected RGB input [0;255] */ -int Y1, Cb, Cr; /* output [0;255] */ - -double r, g, b; /* temporaries */ -double y1, pb, pr; - -int -clamp (double x) -{ - int r = x; /* round to nearest */ - - if (r < 0) return 0; - else if (r > 255) return 255; - else return r; -} - -r = ER / 255.0; -g = EG / 255.0; -b = EB / 255.0; - -y1 = 0.299 * r + 0.587 * g + 0.114 * b; -pb = -0.169 * r - 0.331 * g + 0.5 * b; -pr = 0.5 * r - 0.419 * g - 0.081 * b; - -Y1 = clamp (219 * y1 + 16); -Cb = clamp (224 * pb + 128); -Cr = clamp (224 * pr + 128); - -/* or shorter */ - -y1 = 0.299 * ER + 0.587 * EG + 0.114 * EB; - -Y1 = clamp ( (219 / 255.0) * y1 + 16); -Cb = clamp (((224 / 255.0) / (2 - 2 * 0.114)) * (EB - y1) + 128); -Cr = clamp (((224 / 255.0) / (2 - 2 * 0.299)) * (ER - y1) + 128); - - - Inverse Transformation - - -int Y1, Cb, Cr; /* gamma pre-corrected input [0;255] */ -int ER, EG, EB; /* output [0;255] */ - -double r, g, b; /* temporaries */ -double y1, pb, pr; - -int -clamp (double x) -{ - int r = x; /* round to nearest */ - - if (r < 0) return 0; - else if (r > 255) return 255; - else return r; -} - -y1 = (Y1 - 16) / 219.0; -pb = (Cb - 128) / 224.0; -pr = (Cr - 128) / 224.0; - -r = 1.0 * y1 + 0 * pb + 1.402 * pr; -g = 1.0 * y1 - 0.344 * pb - 0.714 * pr; -b = 1.0 * y1 + 1.772 * pb + 0 * pr; - -ER = clamp (r * 255); /* [ok? one should prob. limit y1,pb,pr] */ -EG = clamp (g * 255); -EB = clamp (b * 255); - - - - - enum v4l2_colorspace - - - - - - - - - - - - - - - + Color exists only in the eye and brain and is the result of how strongly +color receptors are stimulated. This is based on the Spectral +Power Distribution (SPD) which is a graph showing the intensity (radiant power) +of the light at wavelengths covering the visible spectrum as it enters the eye. +The science of colorimetry is about the relationship between the SPD and color as +perceived by the human brain. + + Since the human eye has only three color receptors it is perfectly +possible that different SPDs will result in the same stimulation of those receptors +and are perceived as the same color, even though the SPD of the light is +different. + + In the 1920s experiments were devised to determine the relationship +between SPDs and the perceived color and that resulted in the CIE 1931 standard +that defines spectral weighting functions that model the perception of color. +Specifically that standard defines functions that can take an SPD and calculate +the stimulus for each color receptor. After some further mathematical transforms +these stimuli are known as the CIE XYZ tristimulus values +and these X, Y and Z values describe a color as perceived by a human unambiguously. +These X, Y and Z values are all in the range [0…1]. + + The Y value in the CIE XYZ colorspace corresponds to luminance. Often +the CIE XYZ colorspace is transformed to the normalized CIE xyY colorspace: + + x = X / (X + Y + Z) + y = Y / (X + Y + Z) + + The x and y values are the chromaticity coordinates and can be used to +define a color without the luminance component Y. It is very confusing to +have such similar names for these colorspaces. Just be aware that if colors +are specified with lower case 'x' and 'y', then the CIE xyY colorspace is +used. Upper case 'X' and 'Y' refer to the CIE XYZ colorspace. Also, y has nothing +to do with luminance. Together x and y specify a color, and Y the luminance. +That is really all you need to remember from a practical point of view. At +the end of this section you will find reading resources that go into much more +detail if you are interested. + + + A monitor or TV will reproduce colors by emitting light at three +different wavelengths, the combination of which will stimulate the color receptors +in the eye and thus cause the perception of color. Historically these wavelengths +were defined by the red, green and blue phosphors used in the displays. These +color primaries are part of what defines a colorspace. + + Different display devices will have different primaries and some +primaries are more suitable for some display technologies than others. This has +resulted in a variety of colorspaces that are used for different display +technologies or uses. To define a colorspace you need to define the three +color primaries (these are typically defined as x, y chromaticity coordinates +from the CIE xyY colorspace) but also the white reference: that is the color obtained +when all three primaries are at maximum power. This determines the relative power +or energy of the primaries. This is usually chosen to be close to daylight which has +been defined as the CIE D65 Illuminant. + + To recapitulate: the CIE XYZ colorspace uniquely identifies colors. +Other colorspaces are defined by three chromaticity coordinates defined in the +CIE xyY colorspace. Based on those a 3x3 matrix can be constructed that +transforms CIE XYZ colors to colors in the new colorspace. + + + Both the CIE XYZ and the RGB colorspace that are derived from the +specific chromaticity primaries are linear colorspaces. But neither the eye, +nor display technology is linear. Doubling the values of all components in +the linear colorspace will not be perceived as twice the intensity of the color. +So each colorspace also defines a transfer function that takes a linear color +component value and transforms it to the non-linear component value, which is a +closer match to the non-linear performance of both the eye and displays. Linear +component values are denoted RGB, non-linear are denoted as R'G'B'. In general +colors used in graphics are all R'G'B', except in openGL which uses linear RGB. +Special care should be taken when dealing with openGL to provide linear RGB colors +or to use the built-in openGL support to apply the inverse transfer function. + + The final piece that defines a colorspace is a function that +transforms non-linear R'G'B' to non-linear Y'CbCr. This function is determined +by the so-called luma coefficients. There may be multiple possible Y'CbCr +encodings allowed for the same colorspace. Many encodings of color +prefer to use luma (Y') and chroma (CbCr) instead of R'G'B'. Since the human +eye is more sensitive to differences in luminance than in color this encoding +allows one to reduce the amount of color information compared to the luma +data. Note that the luma (Y') is unrelated to the Y in the CIE XYZ colorspace. +Also note that Y'CbCr is often called YCbCr or YUV even though these are +strictly speaking wrong. + + Sometimes people confuse Y'CbCr as being a colorspace. This is not +correct, it is just an encoding of an R'G'B' color into luma and chroma +values. The underlying colorspace that is associated with the R'G'B' color +is also associated with the Y'CbCr color. + + The final step is how the RGB, R'G'B' or Y'CbCr values are +quantized. The CIE XYZ colorspace where X, Y and Z are in the range +[0…1] describes all colors that humans can perceive, but the transform to +another colorspace will produce colors that are outside the [0…1] range. +Once clamped to the [0…1] range those colors can no longer be reproduced +in that colorspace. This clamping is what reduces the extent or gamut of the +colorspace. How the range of [0…1] is translated to integer values in the +range of [0…255] (or higher, depending on the color depth) is called the +quantization. This is not part of the colorspace +definition. In practice RGB or R'G'B' values are full range, i.e. they +use the full [0…255] range. Y'CbCr values on the other hand are limited +range with Y' using [16…235] and Cb and Cr using [16…240]. + + Unfortunately, in some cases limited range RGB is also used +where the components use the range [16…235]. And full range Y'CbCr also exists +using the [0…255] range. + + In order to correctly interpret a color you need to know the +quantization range, whether it is R'G'B' or Y'CbCr, the used Y'CbCr encoding +and the colorspace. +From that information you can calculate the corresponding CIE XYZ color +and map that again to whatever colorspace your display device uses. + + The colorspace definition itself consists of the three +chromaticity primaries, the white reference chromaticity, a transfer +function and the luma coefficients needed to transform R'G'B' to Y'CbCr. While +some colorspace standards correctly define all four, quite often the colorspace +standard only defines some, and you have to rely on other standards for +the missing pieces. The fact that colorspaces are often a mix of different +standards also led to very confusing naming conventions where the name of +a standard was used to name a colorspace when in fact that standard was +part of various other colorspaces as well. + + If you want to read more about colors and colorspaces, then the +following resources are useful: is a good practical +book for video engineers, has a much broader scope and +describes many more aspects of color (physics, chemistry, biology, etc.). +The http://www.brucelindbloom.com +website is an excellent resource, especially with respect to the mathematics behind +colorspace conversions. The wikipedia CIE 1931 colorspace article +is also very useful. + + +
+ Defining Colorspaces in V4L2 + In V4L2 colorspaces are defined by three values. The first is the colorspace +identifier (&v4l2-colorspace;) which defines the chromaticities, the transfer +function, the default Y'CbCr encoding and the default quantization method. The second +is the Y'CbCr encoding identifier (&v4l2-ycbcr-encoding;) to specify non-standard +Y'CbCr encodings and the third is the quantization identifier (&v4l2-quantization;) +to specify non-standard quantization methods. Most of the time only the colorspace +field of &v4l2-pix-format; or &v4l2-pix-format-mplane; needs to be filled in. Note +that the default R'G'B' quantization is always full range for all colorspaces, +so this won't be mentioned explicitly for each colorspace description. + +
+ V4L2 Colorspaces + + &cs-def; - Identifier - Value - Description - Chromaticities - The coordinates of the color primaries are -given in the CIE system (1931) - - White Point - Gamma Correction - Luminance E'Y - Quantization - - - Red - Green - Blue - Y' - Cb, Cr + Identifier + Details V4L2_COLORSPACE_SMPTE170M - 1 - NTSC/PAL according to , - - x = 0.630, y = 0.340 - x = 0.310, y = 0.595 - x = 0.155, y = 0.070 - x = 0.3127, y = 0.3290, - Illuminant D65 - E' = 4.5 I for I ≤0.018, -1.099 I0.45 - 0.099 for 0.018 < I - 0.299 E'R -+ 0.587 E'G -+ 0.114 E'B - 219 E'Y + 16 - 224 PB,R + 128 + See . - V4L2_COLORSPACE_SMPTE240M - 2 - 1125-Line (US) HDTV, see - x = 0.630, y = 0.340 - x = 0.310, y = 0.595 - x = 0.155, y = 0.070 - x = 0.3127, y = 0.3290, - Illuminant D65 - E' = 4 I for I ≤0.0228, -1.1115 I0.45 - 0.1115 for 0.0228 < I - 0.212 E'R -+ 0.701 E'G -+ 0.087 E'B - 219 E'Y + 16 - 224 PB,R + 128 + V4L2_COLORSPACE_REC709 + See . - V4L2_COLORSPACE_REC709 - 3 - HDTV and modern devices, see - x = 0.640, y = 0.330 - x = 0.300, y = 0.600 - x = 0.150, y = 0.060 - x = 0.3127, y = 0.3290, - Illuminant D65 - E' = 4.5 I for I ≤0.018, -1.099 I0.45 - 0.099 for 0.018 < I - 0.2125 E'R -+ 0.7154 E'G -+ 0.0721 E'B - 219 E'Y + 16 - 224 PB,R + 128 + V4L2_COLORSPACE_SRGB + See . - V4L2_COLORSPACE_BT878 - 4 - Broken Bt878 extents - The ubiquitous Bt878 video capture chip -quantizes E'Y to 238 levels, yielding a range -of Y' = 16 … 253, unlike Rec. 601 Y' = 16 … -235. This is not a typo in the Bt878 documentation, it has been -implemented in silicon. The chroma extents are unclear. - , - ? - ? - ? - ? - ? - 0.299 E'R -+ 0.587 E'G -+ 0.114 E'B - 237 E'Y + 16 - 224 PB,R + 128 (probably) + V4L2_COLORSPACE_ADOBERGB + See . + + + V4L2_COLORSPACE_BT2020 + See . + + + V4L2_COLORSPACE_SMPTE240M + See . V4L2_COLORSPACE_470_SYSTEM_M - 5 - M/NTSC - No identifier exists for M/PAL which uses -the chromaticities of M/NTSC, the remaining parameters are equal to B and -G/PAL. - according to , - x = 0.67, y = 0.33 - x = 0.21, y = 0.71 - x = 0.14, y = 0.08 - x = 0.310, y = 0.316, Illuminant C - ? - 0.299 E'R -+ 0.587 E'G -+ 0.114 E'B - 219 E'Y + 16 - 224 PB,R + 128 + See . V4L2_COLORSPACE_470_SYSTEM_BG - 6 - 625-line PAL and SECAM systems according to , - x = 0.64, y = 0.33 - x = 0.29, y = 0.60 - x = 0.15, y = 0.06 - x = 0.313, y = 0.329, -Illuminant D65 - ? - 0.299 E'R -+ 0.587 E'G -+ 0.114 E'B - 219 E'Y + 16 - 224 PB,R + 128 + See . V4L2_COLORSPACE_JPEG - 7 - JPEG Y'CbCr, see , - ? - ? - ? - ? - ? - 0.299 E'R -+ 0.587 E'G -+ 0.114 E'B - 256 E'Y + 16 - Note JFIF quantizes -Y'PBPR in range [0;+1] and -[-0.5;+0.5] to 257 levels, however Y'CbCr signals -are still clamped to [0;255]. - - 256 PB,R + 128 + See . + + + +
+ + + V4L2 Y'CbCr Encodings + + &cs-def; + + + Identifier + Details + + - V4L2_COLORSPACE_SRGB - 8 - [?] - x = 0.640, y = 0.330 - x = 0.300, y = 0.600 - x = 0.150, y = 0.060 - x = 0.3127, y = 0.3290, - Illuminant D65 - E' = 4.5 I for I ≤0.018, -1.099 I0.45 - 0.099 for 0.018 < I - n/a + V4L2_YCBCR_ENC_DEFAULT + Use the default Y'CbCr encoding as defined by the colorspace. + + + V4L2_YCBCR_ENC_601 + Use the BT.601 Y'CbCr encoding. + + + V4L2_YCBCR_ENC_709 + Use the Rec. 709 Y'CbCr encoding. + + + V4L2_YCBCR_ENC_XV601 + Use the extended gamut xvYCC BT.601 encoding. + + + V4L2_YCBCR_ENC_XV709 + Use the extended gamut xvYCC Rec. 709 encoding. + + + V4L2_YCBCR_ENC_SYCC + Use the extended gamut sYCC encoding. + + + V4L2_YCBCR_ENC_BT2020 + Use the default non-constant luminance BT.2020 Y'CbCr encoding. + + + V4L2_YCBCR_ENC_BT2020_CONST_LUM + Use the constant luminance BT.2020 Yc'CbcCrc encoding.
+ + + V4L2 Quantization Methods + + &cs-def; + + + Identifier + Details + + + + + V4L2_QUANTIZATION_DEFAULT + Use the default quantization encoding as defined by the colorspace. +This is always full range for R'G'B' and usually limited range for Y'CbCr. + + + V4L2_QUANTIZATION_FULL_RANGE + Use the full range quantization encoding. I.e. the range [0…1] +is mapped to [0…255] (with possible clipping to [1…254] to avoid the +0x00 and 0xff values). Cb and Cr are mapped from [-0.5…0.5] to [0…255] +(with possible clipping to [1…254] to avoid the 0x00 and 0xff values). + + + V4L2_QUANTIZATION_LIM_RANGE + Use the limited range quantization encoding. I.e. the range [0…1] +is mapped to [16…235]. Cb and Cr are mapped from [-0.5…0.5] to [16…240]. + + + + +
+
+ +
+ Detailed Colorspace Descriptions +
+ Colorspace SMPTE 170M (<constant>V4L2_COLORSPACE_SMPTE170M</constant>) + The standard defines the colorspace used by NTSC and PAL and by SDTV +in general. The default Y'CbCr encoding is V4L2_YCBCR_ENC_601. +The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and +the white reference are: + + SMPTE 170M Chromaticities + + &cs-str; + + + Color + x + y + + + + + Red + 0.630 + 0.340 + + + Green + 0.310 + 0.595 + + + Blue + 0.155 + 0.070 + + + White Reference (D65) + 0.3127 + 0.3290 + + + +
+ The red, green and blue chromaticities are also often referred to +as the SMPTE C set, so this colorspace is sometimes called SMPTE C as well. + + + The transfer function defined for SMPTE 170M is the same as the +one defined in Rec. 709. Normally L is in the range [0…1], but for the extended +gamut xvYCC encoding values outside that range are allowed. + + L' = -1.099(-L)0.45 + 0.099 for L ≤ -0.018 + L' = 4.5L for -0.018 < L < 0.018 + L' = 1.099L0.45 - 0.099 for L ≥ 0.018 + + + + + + Inverse Transfer function: + + L = -((L' - 0.099) / -1.099)1/0.45 for L' ≤ -0.081 + L = L' / 4.5 for -0.081 < L' < 0.081 + L = ((L' + 0.099) / 1.099)1/0.45 for L' ≥ 0.081 + + + + + + The luminance (Y') and color difference (Cb and Cr) are obtained with +the following V4L2_YCBCR_ENC_601 encoding: + + Y' = 0.299R' + 0.587G' + 0.114B' + Cb = -0.169R' - 0.331G' + 0.5B' + Cr = 0.5R' - 0.419G' - 0.081B' + + + + Y' is clamped to the range [0…1] and Cb and Cr are +clamped to the range [-0.5…0.5]. This conversion to Y'CbCr is identical to the one +defined in the standard and this colorspace is sometimes called BT.601 as well, even +though BT.601 does not mention any color primaries. + The default quantization is limited range, but full range is possible although +rarely seen. + The V4L2_YCBCR_ENC_601 encoding as described above is the +default for this colorspace, but it can be overridden with V4L2_YCBCR_ENC_709, +in which case the Rec. 709 Y'CbCr encoding is used. + + + The xvYCC 601 encoding (V4L2_YCBCR_ENC_XV601, ) is similar +to the BT.601 encoding, but it allows for R', G' and B' values that are outside the range +[0…1]. The resulting Y', Cb and Cr values are scaled and offset: + + Y' = (219 / 255) * (0.299R' + 0.587G' + 0.114B') + (16 / 255) + Cb = (224 / 255) * (-0.169R' - 0.331G' + 0.5B') + Cr = (224 / 255) * (0.5R' - 0.419G' - 0.081B') + + + + Y' is clamped to the range [0…1] and Cb and Cr are clamped +to the range [-0.5…0.5]. The non-standard xvYCC 709 encoding can also be used by selecting +V4L2_YCBCR_ENC_XV709. The xvYCC encodings always use full range +quantization. +
+ +
+ Colorspace Rec. 709 (<constant>V4L2_COLORSPACE_REC709</constant>) + The standard defines the colorspace used by HDTV in general. The default +Y'CbCr encoding is V4L2_YCBCR_ENC_709. The default Y'CbCr quantization is +limited range. The chromaticities of the primary colors and the white reference are: + + Rec. 709 Chromaticities + + &cs-str; + + + Color + x + y + + + + + Red + 0.640 + 0.330 + + + Green + 0.300 + 0.600 + + + Blue + 0.150 + 0.060 + + + White Reference (D65) + 0.3127 + 0.3290 + + + +
+ The full name of this standard is Rec. ITU-R BT.709-5. + + + Transfer function. Normally L is in the range [0…1], but for the extended +gamut xvYCC encoding values outside that range are allowed. + + L' = -1.099(-L)0.45 + 0.099 for L ≤ -0.018 + L' = 4.5L for -0.018 < L < 0.018 + L' = 1.099L0.45 - 0.099 for L ≥ 0.018 + + + + + + Inverse Transfer function: + + L = -((L' - 0.099) / -1.099)1/0.45 for L' ≤ -0.081 + L = L' / 4.5 for -0.081 < L' < 0.081 + L = ((L' + 0.099) / 1.099)1/0.45 for L' ≥ 0.081 + + + + + + The luminance (Y') and color difference (Cb and Cr) are obtained with the following +V4L2_YCBCR_ENC_709 encoding: + + Y' = 0.2126R' + 0.7152G' + 0.0722B' + Cb = -0.1146R' - 0.3854G' + 0.5B' + Cr = 0.5R' - 0.4542G' - 0.0458B' + + + + Y' is clamped to the range [0…1] and Cb and Cr are +clamped to the range [-0.5…0.5]. + The default quantization is limited range, but full range is possible although +rarely seen. + The V4L2_YCBCR_ENC_709 encoding described above is the default +for this colorspace, but it can be overridden with V4L2_YCBCR_ENC_601, in which +case the BT.601 Y'CbCr encoding is used. + + + The xvYCC 709 encoding (V4L2_YCBCR_ENC_XV709, ) +is similar to the Rec. 709 encoding, but it allows for R', G' and B' values that are outside the range +[0…1]. The resulting Y', Cb and Cr values are scaled and offset: + + Y' = (219 / 255) * (0.2126R' + 0.7152G' + 0.0722B') + (16 / 255) + Cb = (224 / 255) * (-0.1146R' - 0.3854G' + 0.5B') + Cr = (224 / 255) * (0.5R' - 0.4542G' - 0.0458B') + + + + Y' is clamped to the range [0…1] and Cb and Cr are clamped +to the range [-0.5…0.5]. The non-standard xvYCC 601 encoding can also be used by +selecting V4L2_YCBCR_ENC_XV601. The xvYCC encodings always use full +range quantization. +
+ +
+ Colorspace sRGB (<constant>V4L2_COLORSPACE_SRGB</constant>) + The standard defines the colorspace used by most webcams and computer graphics. The +default Y'CbCr encoding is V4L2_YCBCR_ENC_SYCC. The default Y'CbCr quantization +is full range. The chromaticities of the primary colors and the white reference are: + + sRGB Chromaticities + + &cs-str; + + + Color + x + y + + + + + Red + 0.640 + 0.330 + + + Green + 0.300 + 0.600 + + + Blue + 0.150 + 0.060 + + + White Reference (D65) + 0.3127 + 0.3290 + + + +
+ These chromaticities are identical to the Rec. 709 colorspace. + + + Transfer function. Note that negative values for L are only used by the Y'CbCr conversion. + + L' = -1.055(-L)1/2.4 + 0.055 for L < -0.0031308 + L' = 12.92L for -0.0031308 ≤ L ≤ 0.0031308 + L' = 1.055L1/2.4 - 0.055 for 0.0031308 < L ≤ 1 + + + + Inverse Transfer function: + + L = -((-L' + 0.055) / 1.055)2.4 for L' < -0.04045 + L = L' / 12.92 for -0.04045 ≤ L' ≤ 0.04045 + L = ((L' + 0.055) / 1.055)2.4 for L' > 0.04045 + + + + + + The luminance (Y') and color difference (Cb and Cr) are obtained with the following +V4L2_YCBCR_ENC_SYCC encoding as defined by : + + Y' = 0.2990R' + 0.5870G' + 0.1140B' + Cb = -0.1687R' - 0.3313G' + 0.5B' + Cr = 0.5R' - 0.4187G' - 0.0813B' + + + + Y' is clamped to the range [0…1] and Cb and Cr are clamped +to the range [-0.5…0.5]. The V4L2_YCBCR_ENC_SYCC quantization is always +full range. Although this Y'CbCr encoding looks very similar to the V4L2_YCBCR_ENC_XV601 +encoding, it is not. The V4L2_YCBCR_ENC_XV601 scales and offsets the Y'CbCr +values before quantization, but this encoding does not do that. +
+ +
+ Colorspace Adobe RGB (<constant>V4L2_COLORSPACE_ADOBERGB</constant>) + The standard defines the colorspace used by computer graphics +that use the AdobeRGB colorspace. This is also known as the standard. +The default Y'CbCr encoding is V4L2_YCBCR_ENC_601. The default Y'CbCr +quantization is limited range. The chromaticities of the primary colors and the white reference +are: + + Adobe RGB Chromaticities + + &cs-str; + + + Color + x + y + + + + + Red + 0.6400 + 0.3300 + + + Green + 0.2100 + 0.7100 + + + Blue + 0.1500 + 0.0600 + + + White Reference (D65) + 0.3127 + 0.3290 + + + +
+ + + Transfer function: + + L' = L1/2.19921875 + + + + Inverse Transfer function: + + L = L'2.19921875 + + + + + + The luminance (Y') and color difference (Cb and Cr) are obtained with the +following V4L2_YCBCR_ENC_601 encoding: + + Y' = 0.299R' + 0.587G' + 0.114B' + Cb = -0.169R' - 0.331G' + 0.5B' + Cr = 0.5R' - 0.419G' - 0.081B' + + + + Y' is clamped to the range [0…1] and Cb and Cr are +clamped to the range [-0.5…0.5]. This transform is identical to one defined in +SMPTE 170M/BT.601. The Y'CbCr quantization is limited range. +
+ +
+ Colorspace BT.2020 (<constant>V4L2_COLORSPACE_BT2020</constant>) + The standard defines the colorspace used by Ultra-high definition +television (UHDTV). The default Y'CbCr encoding is V4L2_YCBCR_ENC_BT2020. +The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and +the white reference are: + + BT.2020 Chromaticities + + &cs-str; + + + Color + x + y + + + + + Red + 0.708 + 0.292 + + + Green + 0.170 + 0.797 + + + Blue + 0.131 + 0.046 + + + White Reference (D65) + 0.3127 + 0.3290 + + + +
+ + + Transfer function (same as Rec. 709): + + L' = 4.5L for 0 ≤ L < 0.018 + L' = 1.099L0.45 - 0.099 for 0.018 ≤ L ≤ 1 + + + + Inverse Transfer function: + + L = L' / 4.5 for L' < 0.081 + L = ((L' + 0.099) / 1.099)1/0.45 for L' ≥ 0.081 + + + + + + The luminance (Y') and color difference (Cb and Cr) are obtained with the +following V4L2_YCBCR_ENC_BT2020 encoding: + + Y' = 0.2627R' + 0.6789G' + 0.0593B' + Cb = -0.1396R' - 0.3604G' + 0.5B' + Cr = 0.5R' - 0.4598G' - 0.0402B' + + + + Y' is clamped to the range [0…1] and Cb and Cr are +clamped to the range [-0.5…0.5]. The Y'CbCr quantization is limited range. + There is also an alternate constant luminance R'G'B' to Yc'CbcCrc +(V4L2_YCBCR_ENC_BT2020_CONST_LUM) encoding: + + + Luma: + + Yc' = (0.2627R + 0.6789G + 0.0593B)' + + + + + + B' - Yc' ≤ 0: + + Cbc = (B' - Y') / 1.9404 + + + + + + B' - Yc' > 0: + + Cbc = (B' - Y') / 1.5816 + + + + + + R' - Yc' ≤ 0: + + Crc = (R' - Y') / 1.7184 + + + + + + R' - Yc' > 0: + + Crc = (R' - Y') / 0.9936 + + + + Yc' is clamped to the range [0…1] and Cbc and Crc are +clamped to the range [-0.5…0.5]. The Yc'CbcCrc quantization is limited range. +
+ +
+ Colorspace SMPTE 240M (<constant>V4L2_COLORSPACE_SMPTE240M</constant>) + The standard was an interim standard used during the early days of HDTV (1988-1998). +It has been superseded by Rec. 709. The default Y'CbCr encoding is V4L2_YCBCR_ENC_SMPTE240M. +The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and the +white reference are: + + SMPTE 240M Chromaticities + + &cs-str; + + + Color + x + y + + + + + Red + 0.630 + 0.340 + + + Green + 0.310 + 0.595 + + + Blue + 0.155 + 0.070 + + + White Reference (D65) + 0.3127 + 0.3290 + + + +
+ These chromaticities are identical to the SMPTE 170M colorspace. + + + Transfer function: + + L' = 4L for 0 ≤ L < 0.0228 + L' = 1.1115L0.45 - 0.1115 for 0.0228 ≤ L ≤ 1 + + + + Inverse Transfer function: + + L = L' / 4 for 0 ≤ L' < 0.0913 + L = ((L' + 0.1115) / 1.1115)1/0.45 for L' ≥ 0.0913 + + + + + + The luminance (Y') and color difference (Cb and Cr) are obtained with the +following V4L2_YCBCR_ENC_SMPTE240M encoding: + + Y' = 0.2122R' + 0.7013G' + 0.0865B' + Cb = -0.1161R' - 0.3839G' + 0.5B' + Cr = 0.5R' - 0.4451G' - 0.0549B' + + + + Yc' is clamped to the range [0…1] and Cbc and Crc are +clamped to the range [-0.5…0.5]. The Y'CbCr quantization is limited range. +
+ +
+ Colorspace NTSC 1953 (<constant>V4L2_COLORSPACE_470_SYSTEM_M</constant>) + This standard defines the colorspace used by NTSC in 1953. In practice this +colorspace is obsolete and SMPTE 170M should be used instead. The default Y'CbCr encoding +is V4L2_YCBCR_ENC_601. The default Y'CbCr quantization is limited range. +The chromaticities of the primary colors and the white reference are: + + NTSC 1953 Chromaticities + + &cs-str; + + + Color + x + y + + + + + Red + 0.67 + 0.33 + + + Green + 0.21 + 0.71 + + + Blue + 0.14 + 0.08 + + + White Reference (C) + 0.310 + 0.316 + + + +
+ Note that this colorspace uses Illuminant C instead of D65 as the +white reference. To correctly convert an image in this colorspace to another +that uses D65 you need to apply a chromatic adaptation algorithm such as the +Bradford method. + + + The transfer function was never properly defined for NTSC 1953. The +Rec. 709 transfer function is recommended in the literature: + + L' = 4.5L for 0 ≤ L < 0.018 + L' = 1.099L0.45 - 0.099 for 0.018 ≤ L ≤ 1 + + + + Inverse Transfer function: + + L = L' / 4.5 for L' < 0.081 + L = ((L' + 0.099) / 1.099)1/0.45 for L' ≥ 0.081 + + + + + + The luminance (Y') and color difference (Cb and Cr) are obtained with the +following V4L2_YCBCR_ENC_601 encoding: + + Y' = 0.299R' + 0.587G' + 0.114B' + Cb = -0.169R' - 0.331G' + 0.5B' + Cr = 0.5R' - 0.419G' - 0.081B' + + + + Y' is clamped to the range [0…1] and Cb and Cr are +clamped to the range [-0.5…0.5]. The Y'CbCr quantization is limited range. +This transform is identical to one defined in SMPTE 170M/BT.601. +
+ +
+ Colorspace EBU Tech. 3213 (<constant>V4L2_COLORSPACE_470_SYSTEM_BG</constant>) + The standard defines the colorspace used by PAL/SECAM in 1975. In practice this +colorspace is obsolete and SMPTE 170M should be used instead. The default Y'CbCr encoding +is V4L2_YCBCR_ENC_601. The default Y'CbCr quantization is limited range. +The chromaticities of the primary colors and the white reference are: + + EBU Tech. 3213 Chromaticities + + &cs-str; + + + Color + x + y + + + + + Red + 0.64 + 0.33 + + + Green + 0.29 + 0.60 + + + Blue + 0.15 + 0.06 + + + White Reference (D65) + 0.3127 + 0.3290 + + + +
+ + + The transfer function was never properly defined for this colorspace. +The Rec. 709 transfer function is recommended in the literature: + + L' = 4.5L for 0 ≤ L < 0.018 + L' = 1.099L0.45 - 0.099 for 0.018 ≤ L ≤ 1 + + + + Inverse Transfer function: + + L = L' / 4.5 for L' < 0.081 + L = ((L' + 0.099) / 1.099)1/0.45 for L' ≥ 0.081 + + + + + + The luminance (Y') and color difference (Cb and Cr) are obtained with the +following V4L2_YCBCR_ENC_601 encoding: + + Y' = 0.299R' + 0.587G' + 0.114B' + Cb = -0.169R' - 0.331G' + 0.5B' + Cr = 0.5R' - 0.419G' - 0.081B' + + + + Y' is clamped to the range [0…1] and Cb and Cr are +clamped to the range [-0.5…0.5]. The Y'CbCr quantization is limited range. +This transform is identical to one defined in SMPTE 170M/BT.601. +
+ +
+ Colorspace JPEG (<constant>V4L2_COLORSPACE_JPEG</constant>) + This colorspace defines the colorspace used by most (Motion-)JPEG formats. The chromaticities +of the primary colors and the white reference are identical to sRGB. The Y'CbCr encoding is +V4L2_YCBCR_ENC_601 with full range quantization where +Y' is scaled to [0…255] and Cb/Cr are scaled to [-128…128] and +then clipped to [-128…127]. + Note that the JPEG standard does not actually store colorspace information. +So if something other than sRGB is used, then the driver will have to set that information +explicitly. Effectively V4L2_COLORSPACE_JPEG can be considered to be +an abbreviation for V4L2_COLORSPACE_SRGB, V4L2_YCBCR_ENC_601 +and V4L2_QUANTIZATION_FULL_RANGE. +
+
-- cgit v1.2.3 From 6936d74fb511b2d75720d6c15e8296d65988aaa2 Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Wed, 15 Oct 2014 10:08:19 -0300 Subject: [media] v4l: Clean up sub-device format documentation The sub-device format documentation documented scaling configuration through formats. Instead the compose selection rectangle is elsewhere documented to be used for the purpose. Remove scaling related part of the documentation. Signed-off-by: Sakari Ailus Acked-by: Hans Verkuil Acked-by: Laurent Pinchart Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/dev-subdev.xml | 109 ++++++++++++++----------- 1 file changed, 63 insertions(+), 46 deletions(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/dev-subdev.xml b/Documentation/DocBook/media/v4l/dev-subdev.xml index d15aaf83f56f..4f0ba58c9bd9 100644 --- a/Documentation/DocBook/media/v4l/dev-subdev.xml +++ b/Documentation/DocBook/media/v4l/dev-subdev.xml @@ -195,53 +195,59 @@ Sample Pipeline Configuration - - - - - + + + + + + - Sensor/0 - Frontend/0 - Frontend/1 - Scaler/0 - Scaler/1 + Sensor/0 format + Frontend/0 format + Frontend/1 format + Scaler/0 format + Scaler/0 compose selection rectangle + Scaler/1 format Initial state - 2048x1536 - - - - - - - - + 2048x1536/SGRBG8_1X8 + (default) + (default) + (default) + (default) + (default) - Configure frontend input - 2048x1536 - 2048x1536 - 2046x1534 - - - - + Configure frontend sink format + 2048x1536/SGRBG8_1X8 + 2048x1536/SGRBG8_1X8 + 2046x1534/SGRBG8_1X8 + (default) + (default) + (default) - Configure scaler input - 2048x1536 - 2048x1536 - 2046x1534 - 2046x1534 - 2046x1534 + Configure scaler sink format + 2048x1536/SGRBG8_1X8 + 2048x1536/SGRBG8_1X8 + 2046x1534/SGRBG8_1X8 + 2046x1534/SGRBG8_1X8 + 0,0/2046x1534 + 2046x1534/SGRBG8_1X8 - Configure scaler output - 2048x1536 - 2048x1536 - 2046x1534 - 2046x1534 - 1280x960 + Configure scaler sink compose selection + 2048x1536/SGRBG8_1X8 + 2048x1536/SGRBG8_1X8 + 2046x1534/SGRBG8_1X8 + 2046x1534/SGRBG8_1X8 + 0,0/1280x960 + 1280x960/SGRBG8_1X8 @@ -249,19 +255,30 @@ - Initial state. The sensor output is set to its native 3MP - resolution. Resolutions on the host frontend and scaler input and output - pads are undefined. - The application configures the frontend input pad resolution to - 2048x1536. The driver propagates the format to the frontend output pad. - Note that the propagated output format can be different, as in this case, - than the input format, as the hardware might need to crop pixels (for - instance when converting a Bayer filter pattern to RGB or YUV). - The application configures the scaler input pad resolution to - 2046x1534 to match the frontend output resolution. The driver propagates - the format to the scaler output pad. - The application configures the scaler output pad resolution to - 1280x960. + Initial state. The sensor source pad format is + set to its native 3MP size and V4L2_MBUS_FMT_SGRBG8_1X8 + media bus code. Formats on the host frontend and scaler sink + and source pads have the default values, as well as the + compose rectangle on the scaler's sink pad. + + The application configures the frontend sink + pad format's size to 2048x1536 and its media bus code to + V4L2_MBUS_FMT_SGRBG_1X8. The driver propagates the format to + the frontend source pad. + + The application configures the scaler sink pad + format's size to 2046x1534 and the media bus code to + V4L2_MBUS_FMT_SGRBG_1X8 to match the frontend source size and + media bus code. The media bus code on the sink pad is set to + V4L2_MBUS_FMT_SGRBG_1X8. The driver propagates the size to the + compose selection rectangle on the scaler's sink pad, and the + format to the scaler source pad. + + The application configures the size of the compose + selection rectangle of the scaler's sink pad 1280x960. The driver + propagates the size to the scaler's source pad + format. + -- cgit v1.2.3 From 0b4bc768dc289731983ba5223555ffabe08eefdd Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Wed, 15 Oct 2014 13:38:15 -0300 Subject: [media] v4l: Add V4L2_SEL_TGT_NATIVE_SIZE selection target The V4L2_SEL_TGT_NATIVE_SIZE target is used to denote e.g. the size of a sensor's pixel array. Signed-off-by: Sakari Ailus Acked-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/selections-common.xml | 16 ++++++++++++++++ include/uapi/linux/v4l2-common.h | 2 ++ 2 files changed, 18 insertions(+) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/selections-common.xml b/Documentation/DocBook/media/v4l/selections-common.xml index 7502f784b8cc..d6d56fb6f9c0 100644 --- a/Documentation/DocBook/media/v4l/selections-common.xml +++ b/Documentation/DocBook/media/v4l/selections-common.xml @@ -62,6 +62,22 @@ Yes Yes + + V4L2_SEL_TGT_NATIVE_SIZE + 0x0003 + The native size of the device, e.g. a sensor's + pixel array. left and + top fields are zero for this + target. Setting the native size will generally only make + sense for memory to memory devices where the software can + create a canvas of a given size in which for example a + video frame can be composed. In that case + V4L2_SEL_TGT_NATIVE_SIZE can be used to configure the size + of that canvas. + + Yes + Yes + V4L2_SEL_TGT_COMPOSE 0x0100 diff --git a/include/uapi/linux/v4l2-common.h b/include/uapi/linux/v4l2-common.h index 2f6f8cafe773..15273987093e 100644 --- a/include/uapi/linux/v4l2-common.h +++ b/include/uapi/linux/v4l2-common.h @@ -43,6 +43,8 @@ #define V4L2_SEL_TGT_CROP_DEFAULT 0x0001 /* Cropping bounds */ #define V4L2_SEL_TGT_CROP_BOUNDS 0x0002 +/* Native frame size */ +#define V4L2_SEL_TGT_NATIVE_SIZE 0x0003 /* Current composing area */ #define V4L2_SEL_TGT_COMPOSE 0x0100 /* Default composing area */ -- cgit v1.2.3 From 8af0345926c8cdbbf80102aa3eab8a6519c23272 Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Tue, 18 Nov 2014 02:27:00 -0300 Subject: [media] v4l: Add input and output capability flags for native size setting Add input and output capability flags for setting native size of the device, and document them. Signed-off-by: Sakari Ailus Acked-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/vidioc-enuminput.xml | 8 ++++++++ Documentation/DocBook/media/v4l/vidioc-enumoutput.xml | 8 ++++++++ include/uapi/linux/videodev2.h | 2 ++ 3 files changed, 18 insertions(+) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml index 493a39a8ef21..603fecef9083 100644 --- a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml @@ -287,6 +287,14 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009. 0x00000004 This input supports setting the TV standard by using VIDIOC_S_STD. + + V4L2_IN_CAP_NATIVE_SIZE + 0x00000008 + This input supports setting the native size using + the V4L2_SEL_TGT_NATIVE_SIZE + selection target, see . + diff --git a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml index 2654e097df39..773fb1258c24 100644 --- a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml +++ b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml @@ -172,6 +172,14 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009. 0x00000004 This output supports setting the TV standard by using VIDIOC_S_STD. + + V4L2_OUT_CAP_NATIVE_SIZE + 0x00000008 + This output supports setting the native size using + the V4L2_SEL_TGT_NATIVE_SIZE + selection target, see . + diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index ced659e1b9f6..d279c1b75cf7 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -1324,6 +1324,7 @@ struct v4l2_input { #define V4L2_IN_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ #define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS /* For compatibility */ #define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */ +#define V4L2_IN_CAP_NATIVE_SIZE 0x00000008 /* Supports setting native size */ /* * V I D E O O U T P U T S @@ -1347,6 +1348,7 @@ struct v4l2_output { #define V4L2_OUT_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ #define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */ #define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */ +#define V4L2_OUT_CAP_NATIVE_SIZE 0x00000008 /* Supports setting native size */ /* * C O N T R O L S -- cgit v1.2.3 From cc0363120b1f0c939bb7c61d5b7d2b616ad27783 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Fri, 5 Dec 2014 10:04:47 -0300 Subject: [media] DocBook media: add missing ycbcr_enc and quantization fields I forgot to add these fields to the relevant structs. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/pixfmt.xml | 36 ++++++++++++++++++++-- Documentation/DocBook/media/v4l/subdev-formats.xml | 18 ++++++++++- 2 files changed, 51 insertions(+), 3 deletions(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml index ccf6053c1ae4..d5eca4b8f74b 100644 --- a/Documentation/DocBook/media/v4l/pixfmt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt.xml @@ -138,9 +138,25 @@ applicable values. __u32 flags - Flags set by the application or driver, see Flags set by the application or driver, see . + + &v4l2-ycbcr-encoding; + ycbcr_enc + This information supplements the +colorspace and must be set by the driver for +capture streams and by the application for output streams, +see . + + + &v4l2-quantization; + quantization + This information supplements the +colorspace and must be set by the driver for +capture streams and by the application for output streams, +see . + @@ -231,10 +247,26 @@ codes can be used. flags Flags set by the application or driver, see . + + + &v4l2-ycbcr-encoding; + ycbcr_enc + This information supplements the +colorspace and must be set by the driver for +capture streams and by the application for output streams, +see . + + + &v4l2-quantization; + quantization + This information supplements the +colorspace and must be set by the driver for +capture streams and by the application for output streams, +see . __u8 - reserved[10] + reserved[8] Reserved for future extensions. Should be zeroed by the application. diff --git a/Documentation/DocBook/media/v4l/subdev-formats.xml b/Documentation/DocBook/media/v4l/subdev-formats.xml index 18730b96e1e6..c5ea868e3909 100644 --- a/Documentation/DocBook/media/v4l/subdev-formats.xml +++ b/Documentation/DocBook/media/v4l/subdev-formats.xml @@ -33,9 +33,25 @@ Image colorspace, from &v4l2-colorspace;. See for details. + + &v4l2-ycbcr-encoding; + ycbcr_enc + This information supplements the +colorspace and must be set by the driver for +capture streams and by the application for output streams, +see . + + + &v4l2-quantization; + quantization + This information supplements the +colorspace and must be set by the driver for +capture streams and by the application for output streams, +see . + __u32 - reserved[7] + reserved[6] Reserved for future extensions. Applications and drivers must set the array to zero. -- cgit v1.2.3 From 5fdb9679b94ed74f5e9376bc289d840bd4f73f16 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Fri, 5 Dec 2014 11:23:55 -0300 Subject: [media] DocBook media: update version number and document changes Update the version to 3.19. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/compat.xml | 12 ++++++++++++ Documentation/DocBook/media/v4l/v4l2.xml | 11 ++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) (limited to 'Documentation/DocBook/media') diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml index 0a2debfa68f6..350dfb3d71ea 100644 --- a/Documentation/DocBook/media/v4l/compat.xml +++ b/Documentation/DocBook/media/v4l/compat.xml @@ -2579,6 +2579,18 @@ fields changed from _s32 to _u32.
+
+ V4L2 in Linux 3.19 + + + Rewrote Colorspace chapter, added new &v4l2-ycbcr-encoding; +and &v4l2-quantization; fields to &v4l2-pix-format;, &v4l2-pix-format-mplane; +and &v4l2-mbus-framefmt;. + + + +
+
Relation of V4L2 to other Linux multimedia APIs diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml index 7cfe618f754d..ac0f8d9d2a49 100644 --- a/Documentation/DocBook/media/v4l/v4l2.xml +++ b/Documentation/DocBook/media/v4l/v4l2.xml @@ -151,6 +151,15 @@ structs, ioctls) must be noted in more detail in the history chapter (compat.xml), along with the possible impact on existing drivers and applications. --> + + 3.19 + 2014-12-05 + hv + Rewrote Colorspace chapter, added new &v4l2-ycbcr-encoding; and &v4l2-quantization; fields +to &v4l2-pix-format;, &v4l2-pix-format-mplane; and &v4l2-mbus-framefmt;. + + + 3.17 2014-08-04 @@ -539,7 +548,7 @@ and discussions on the V4L mailing list. Video for Linux Two API Specification - Revision 3.17 + Revision 3.19 &sub-common; -- cgit v1.2.3