mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
Merge tag 'media/v5.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: - some rework at the uAPI pixel format docs - the smiapp driver has started to gain support for MIPI CSS camera sensors and was renamed - two new sensor drivers: ov02a10 and ov9734 - Meson gained a driver for the 2D acceleration unit - Rockchip rkisp1 driver was promoted from staging - Cedrus driver gained support for VP8 - two new remote controller keymaps were added - the usual set of fixes cleanups and driver improvements * tag 'media/v5.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (447 commits) media: ccs: Add support for obtaining C-PHY configuration from firmware media: ccs-pll: Print pixel rates media: ccs: Print written register values media: ccs: Add support for DDR OP SYS and OP PIX clocks media: ccs-pll: Add support for DDR OP system and pixel clocks media: ccs: Dual PLL support media: ccs-pll: Add trivial dual PLL support media: ccs-pll: Separate VT divisor limit calculation from the rest media: ccs-pll: Fix VT post-PLL divisor calculation media: ccs-pll: Make VT divisors 16-bit media: ccs-pll: Rework bounds checks media: ccs-pll: Print relevant information on PLL tree media: ccs-pll: Better separate OP and VT sub-tree calculation media: ccs-pll: Check for derating and overrating, support non-derating sensors media: ccs-pll: Split off VT subtree calculation media: ccs-pll: Add C-PHY support media: ccs-pll: Add sanity checks media: ccs-pll: Add support flexible OP PLL pixel clock divider media: ccs-pll: Support two cycles per pixel on OP domain media: ccs-pll: Add support for extended input PLL clock divider ...
This commit is contained in:
@@ -86,7 +86,7 @@ the driver through the rkisp_params node to improve image quality during a
|
|||||||
video stream.
|
video stream.
|
||||||
The buffer format is defined by struct :c:type:`rkisp1_stat_buffer`, and
|
The buffer format is defined by struct :c:type:`rkisp1_stat_buffer`, and
|
||||||
userspace should set
|
userspace should set
|
||||||
:ref:`V4L2_META_FMT_RK_ISP1_STAT_3A <v4l2-meta-fmt-stat-rkisp1>` as the
|
:ref:`V4L2_META_FMT_RK_ISP1_STAT_3A <v4l2-meta-fmt-rk-isp1-stat-3a>` as the
|
||||||
dataformat.
|
dataformat.
|
||||||
|
|
||||||
.. _rkisp1_params:
|
.. _rkisp1_params:
|
||||||
@@ -100,7 +100,7 @@ and others.
|
|||||||
|
|
||||||
The buffer format is defined by struct :c:type:`rkisp1_params_cfg`, and
|
The buffer format is defined by struct :c:type:`rkisp1_params_cfg`, and
|
||||||
userspace should set
|
userspace should set
|
||||||
:ref:`V4L2_META_FMT_RK_ISP1_PARAMS <v4l2-meta-fmt-params-rkisp1>` as the
|
:ref:`V4L2_META_FMT_RK_ISP1_PARAMS <v4l2-meta-fmt-rk-isp1-params>` as the
|
||||||
dataformat.
|
dataformat.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ properties:
|
|||||||
- allwinner,sun7i-a20-video-engine
|
- allwinner,sun7i-a20-video-engine
|
||||||
- allwinner,sun8i-a33-video-engine
|
- allwinner,sun8i-a33-video-engine
|
||||||
- allwinner,sun8i-h3-video-engine
|
- allwinner,sun8i-h3-video-engine
|
||||||
|
- allwinner,sun8i-v3s-video-engine
|
||||||
|
- allwinner,sun8i-r40-video-engine
|
||||||
- allwinner,sun50i-a64-video-engine
|
- allwinner,sun50i-a64-video-engine
|
||||||
- allwinner,sun50i-h5-video-engine
|
- allwinner,sun50i-h5-video-engine
|
||||||
- allwinner,sun50i-h6-video-engine
|
- allwinner,sun50i-h6-video-engine
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
|
# Copyright 2020 BayLibre, SAS
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: "http://devicetree.org/schemas/media/amlogic,axg-ge2d.yaml#"
|
||||||
|
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||||
|
|
||||||
|
title: Amlogic GE2D Acceleration Unit
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- amlogic,axg-ge2d
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
minItems: 1
|
||||||
|
|
||||||
|
reg:
|
||||||
|
minItems: 1
|
||||||
|
|
||||||
|
resets:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
minItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- clocks
|
||||||
|
- resets
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
ge2d: ge2d@ff940000 {
|
||||||
|
compatible = "amlogic,axg-ge2d";
|
||||||
|
reg = <0xff940000 0x10000>;
|
||||||
|
interrupts = <150>;
|
||||||
|
clocks = <&clk_ge2d>;
|
||||||
|
resets = <&reset_ge2d>;
|
||||||
|
};
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
Chips&Media Coda multi-standard codec IP
|
|
||||||
========================================
|
|
||||||
|
|
||||||
Coda codec IPs are present in i.MX SoCs in various versions,
|
|
||||||
called VPU (Video Processing Unit).
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible : should be "fsl,<chip>-src" for i.MX SoCs:
|
|
||||||
(a) "fsl,imx27-vpu" for CodaDx6 present in i.MX27
|
|
||||||
(b) "fsl,imx51-vpu" for CodaHx4 present in i.MX51
|
|
||||||
(c) "fsl,imx53-vpu" for CODA7541 present in i.MX53
|
|
||||||
(d) "fsl,imx6q-vpu" for CODA960 present in i.MX6q
|
|
||||||
- reg: should be register base and length as documented in the
|
|
||||||
SoC reference manual
|
|
||||||
- interrupts : Should contain the VPU interrupt. For CODA960,
|
|
||||||
a second interrupt is needed for the MJPEG unit.
|
|
||||||
- clocks : Should contain the ahb and per clocks, in the order
|
|
||||||
determined by the clock-names property.
|
|
||||||
- clock-names : Should be "ahb", "per"
|
|
||||||
- iram : phandle pointing to the SRAM device node
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
vpu: vpu@63ff4000 {
|
|
||||||
compatible = "fsl,imx53-vpu";
|
|
||||||
reg = <0x63ff4000 0x1000>;
|
|
||||||
interrupts = <9>;
|
|
||||||
clocks = <&clks 63>, <&clks 63>;
|
|
||||||
clock-names = "ahb", "per";
|
|
||||||
iram = <&ocram>;
|
|
||||||
};
|
|
||||||
108
Documentation/devicetree/bindings/media/coda.yaml
Normal file
108
Documentation/devicetree/bindings/media/coda.yaml
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/coda.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Chips&Media Coda multi-standard codec IP
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Philipp Zabel <p.zabel@pengutronix.de>
|
||||||
|
|
||||||
|
description: |-
|
||||||
|
Coda codec IPs are present in i.MX SoCs in various versions,
|
||||||
|
called VPU (Video Processing Unit).
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
oneOf:
|
||||||
|
- items:
|
||||||
|
- const: fsl,imx27-vpu
|
||||||
|
- const: cnm,codadx6
|
||||||
|
- items:
|
||||||
|
- const: fsl,imx51-vpu
|
||||||
|
- const: cnm,codahx4
|
||||||
|
- items:
|
||||||
|
- const: fsl,imx53-vpu
|
||||||
|
- const: cnm,coda7541
|
||||||
|
- items:
|
||||||
|
- enum:
|
||||||
|
- fsl,imx6dl-vpu
|
||||||
|
- fsl,imx6q-vpu
|
||||||
|
- const: cnm,coda960
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
items:
|
||||||
|
- description: PER clock
|
||||||
|
- description: AHB interface clock
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
items:
|
||||||
|
- const: per
|
||||||
|
- const: ahb
|
||||||
|
|
||||||
|
resets:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
iram:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/phandle
|
||||||
|
description: phandle pointing to the SRAM device node
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
const: cnm,coda960
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
interrupts:
|
||||||
|
items:
|
||||||
|
- description: BIT processor interrupt
|
||||||
|
- description: JPEG unit interrupt
|
||||||
|
|
||||||
|
interrupt-names:
|
||||||
|
items:
|
||||||
|
- const: bit
|
||||||
|
- const: jpeg
|
||||||
|
else:
|
||||||
|
properties:
|
||||||
|
interrupts:
|
||||||
|
items:
|
||||||
|
- description: BIT processor interrupt
|
||||||
|
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
enum:
|
||||||
|
- fsl,imx6dl-vpu
|
||||||
|
- fsl,imx6q-vpu
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
power-domains:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/phandle
|
||||||
|
description: phandle pointing to the PU power domain
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
vpu: video-codec@63ff4000 {
|
||||||
|
compatible = "fsl,imx53-vpu", "cnm,coda7541";
|
||||||
|
reg = <0x63ff4000 0x1000>;
|
||||||
|
interrupts = <9>;
|
||||||
|
clocks = <&clks 63>, <&clks 63>;
|
||||||
|
clock-names = "per", "ahb";
|
||||||
|
iram = <&ocram>;
|
||||||
|
};
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
* Analog Devices ADV7604/11/12 video decoder with HDMI receiver
|
|
||||||
|
|
||||||
The ADV7604 and ADV7611/12 are multiformat video decoders with an integrated
|
|
||||||
HDMI receiver. The ADV7604 has four multiplexed HDMI inputs and one analog
|
|
||||||
input, and the ADV7611 has one HDMI input and no analog input. The 7612 is
|
|
||||||
similar to the 7611 but has 2 HDMI inputs.
|
|
||||||
|
|
||||||
These device tree bindings support the ADV7611/12 only at the moment.
|
|
||||||
|
|
||||||
Required Properties:
|
|
||||||
|
|
||||||
- compatible: Must contain one of the following
|
|
||||||
- "adi,adv7611" for the ADV7611
|
|
||||||
- "adi,adv7612" for the ADV7612
|
|
||||||
|
|
||||||
- reg: I2C slave addresses
|
|
||||||
The ADV76xx has up to thirteen 256-byte maps that can be accessed via the
|
|
||||||
main I2C ports. Each map has it own I2C address and acts as a standard
|
|
||||||
slave device on the I2C bus. The main address is mandatory, others are
|
|
||||||
optional and revert to defaults if not specified.
|
|
||||||
|
|
||||||
- hpd-gpios: References to the GPIOs that control the HDMI hot-plug
|
|
||||||
detection pins, one per HDMI input. The active flag indicates the GPIO
|
|
||||||
level that enables hot-plug detection.
|
|
||||||
|
|
||||||
The device node must contain one 'port' child node per device input and output
|
|
||||||
port, in accordance with the video interface bindings defined in
|
|
||||||
Documentation/devicetree/bindings/media/video-interfaces.txt. The port nodes
|
|
||||||
are numbered as follows.
|
|
||||||
|
|
||||||
Port ADV7611 ADV7612
|
|
||||||
------------------------------------------------------------
|
|
||||||
HDMI 0 0, 1
|
|
||||||
Digital output 1 2
|
|
||||||
|
|
||||||
The digital output port node must contain at least one endpoint.
|
|
||||||
|
|
||||||
Optional Properties:
|
|
||||||
|
|
||||||
- reset-gpios: Reference to the GPIO connected to the device's reset pin.
|
|
||||||
- default-input: Select which input is selected after reset.
|
|
||||||
- reg-names : Names of maps with programmable addresses.
|
|
||||||
It can contain any map needing a non-default address.
|
|
||||||
Possible maps names are :
|
|
||||||
"main", "avlink", "cec", "infoframe", "esdp", "dpp", "afe",
|
|
||||||
"rep", "edid", "hdmi", "test", "cp", "vdp"
|
|
||||||
|
|
||||||
Optional Endpoint Properties:
|
|
||||||
|
|
||||||
The following three properties are defined in video-interfaces.txt and are
|
|
||||||
valid for source endpoints only.
|
|
||||||
|
|
||||||
- hsync-active: Horizontal synchronization polarity. Defaults to active low.
|
|
||||||
- vsync-active: Vertical synchronization polarity. Defaults to active low.
|
|
||||||
- pclk-sample: Pixel clock polarity. Defaults to output on the falling edge.
|
|
||||||
|
|
||||||
If none of hsync-active, vsync-active and pclk-sample is specified the
|
|
||||||
endpoint will use embedded BT.656 synchronization.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
hdmi_receiver@4c {
|
|
||||||
compatible = "adi,adv7611";
|
|
||||||
/*
|
|
||||||
* The edid page will be accessible @ 0x66 on the I2C bus. All
|
|
||||||
* other maps will retain their default addresses.
|
|
||||||
*/
|
|
||||||
reg = <0x4c>, <0x66>;
|
|
||||||
reg-names = "main", "edid";
|
|
||||||
|
|
||||||
reset-gpios = <&ioexp 0 GPIO_ACTIVE_LOW>;
|
|
||||||
hpd-gpios = <&ioexp 2 GPIO_ACTIVE_HIGH>;
|
|
||||||
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
default-input = <0>;
|
|
||||||
|
|
||||||
port@0 {
|
|
||||||
reg = <0>;
|
|
||||||
};
|
|
||||||
port@1 {
|
|
||||||
reg = <1>;
|
|
||||||
hdmi_in: endpoint {
|
|
||||||
remote-endpoint = <&ccdc_in>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
178
Documentation/devicetree/bindings/media/i2c/adv7604.yaml
Normal file
178
Documentation/devicetree/bindings/media/i2c/adv7604.yaml
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/i2c/adv7604.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Analog Devices ADV7604/11/12 video decoder with HDMI receiver
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
||||||
|
|
||||||
|
description:
|
||||||
|
The ADV7604 and ADV7611/12 are multiformat video decoders with an integrated
|
||||||
|
HDMI receiver. The ADV7604 has four multiplexed HDMI inputs and one analog
|
||||||
|
input, and the ADV7611 has one HDMI input and no analog input. The 7612 is
|
||||||
|
similar to the 7611 but has 2 HDMI inputs.
|
||||||
|
|
||||||
|
These device tree bindings support the ADV7611/12 only at the moment.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- adi,adv7611
|
||||||
|
- adi,adv7612
|
||||||
|
|
||||||
|
reg:
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 13
|
||||||
|
|
||||||
|
reg-names:
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 13
|
||||||
|
items:
|
||||||
|
- const: main
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
reset-gpios:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
hpd-gpios:
|
||||||
|
minItems: 1
|
||||||
|
description:
|
||||||
|
References to the GPIOs that control the HDMI hot-plug detection pins,
|
||||||
|
one per HDMI input. The active flag indicates the GPIO level that
|
||||||
|
enables hot-plug detection.
|
||||||
|
|
||||||
|
default-input:
|
||||||
|
maxItems: 1
|
||||||
|
description:
|
||||||
|
Select which input is selected after reset.
|
||||||
|
|
||||||
|
ports:
|
||||||
|
type: object
|
||||||
|
description:
|
||||||
|
A node containing input and output port nodes with endpoint definitions
|
||||||
|
as documented in
|
||||||
|
Documentation/devicetree/bindings/media/video-interfaces.txt
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
const: adi,adv7611
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
ports:
|
||||||
|
properties:
|
||||||
|
'#address-cells':
|
||||||
|
const: 1
|
||||||
|
'#size-cells':
|
||||||
|
const: 0
|
||||||
|
port@0:
|
||||||
|
type: object
|
||||||
|
description: Input port
|
||||||
|
port@1:
|
||||||
|
type: object
|
||||||
|
description: Output port
|
||||||
|
|
||||||
|
required:
|
||||||
|
- port@1
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
required:
|
||||||
|
- ports
|
||||||
|
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
const: adi,adv7612
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
ports:
|
||||||
|
properties:
|
||||||
|
'#address-cells':
|
||||||
|
const: 1
|
||||||
|
'#size-cells':
|
||||||
|
const: 0
|
||||||
|
port@2:
|
||||||
|
type: object
|
||||||
|
description: Output port
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
"^port@[0-1]$":
|
||||||
|
type: object
|
||||||
|
description: Input port
|
||||||
|
|
||||||
|
required:
|
||||||
|
- port@2
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
required:
|
||||||
|
- ports
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
hdmi_receiver@4c {
|
||||||
|
compatible = "adi,adv7611";
|
||||||
|
/*
|
||||||
|
* The edid page will be accessible @ 0x66 on the I2C bus. All
|
||||||
|
* other maps will retain their default addresses.
|
||||||
|
*/
|
||||||
|
reg = <0x4c>, <0x66>;
|
||||||
|
reg-names = "main", "edid";
|
||||||
|
|
||||||
|
reset-gpios = <&ioexp 0 GPIO_ACTIVE_LOW>;
|
||||||
|
hpd-gpios = <&ioexp 2 GPIO_ACTIVE_HIGH>;
|
||||||
|
default-input = <0>;
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
hdmi_in: endpoint {
|
||||||
|
remote-endpoint = <&ccdc_in>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
* Aptina MT9V111 CMOS sensor
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
The Aptina MT9V111 is a 1/4-Inch VGA-format digital image sensor with a core
|
|
||||||
based on Aptina MT9V011 sensor and an integrated Image Flow Processor (IFP).
|
|
||||||
|
|
||||||
The sensor has an active pixel array of 640x480 pixels and can output a number
|
|
||||||
of image resolution and formats controllable through a simple two-wires
|
|
||||||
interface.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
- compatible: shall be "aptina,mt9v111".
|
|
||||||
- clocks: reference to the system clock input provider.
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
- enable-gpios: output enable signal, pin name "OE#". Active low.
|
|
||||||
- standby-gpios: low power state control signal, pin name "STANDBY".
|
|
||||||
Active high.
|
|
||||||
- reset-gpios: chip reset signal, pin name "RESET#". Active low.
|
|
||||||
|
|
||||||
The device node must contain one 'port' child node with one 'endpoint' child
|
|
||||||
sub-node for its digital output video port, in accordance with the video
|
|
||||||
interface bindings defined in:
|
|
||||||
Documentation/devicetree/bindings/media/video-interfaces.txt
|
|
||||||
|
|
||||||
Example:
|
|
||||||
--------
|
|
||||||
|
|
||||||
&i2c1 {
|
|
||||||
camera@48 {
|
|
||||||
compatible = "aptina,mt9v111";
|
|
||||||
reg = <0x48>;
|
|
||||||
|
|
||||||
clocks = <&camera_clk>;
|
|
||||||
|
|
||||||
port {
|
|
||||||
mt9v111_out: endpoint {
|
|
||||||
remote-endpoint = <&ceu_in>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/i2c/aptina,mt9v111.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Aptina MT9V111 CMOS sensor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Jacopo Mondi <jacopo@jmondi.org>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The Aptina MT9V111 is a 1/4-Inch VGA-format digital image sensor with a core
|
||||||
|
based on Aptina MT9V011 sensor and an integrated Image Flow Processor (IFP).
|
||||||
|
|
||||||
|
The sensor has an active pixel array of 640x480 pixels and can output a number
|
||||||
|
of image resolutions and formats controllable through a simple two-wires
|
||||||
|
interface.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: aptina,mt9v111
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
enable-gpios:
|
||||||
|
description: Enable signal, pin name "OE#". Active low.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
standby-gpios:
|
||||||
|
description: |
|
||||||
|
Low power state control signal, pin name "STANDBY". Active high.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
reset-gpios:
|
||||||
|
description: Chip reset signal, pin name "RESET#". Active low.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
port:
|
||||||
|
type: object
|
||||||
|
description: |
|
||||||
|
Output video port. See ../video-interfaces.txt.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- clocks
|
||||||
|
- port
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
i2c0 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
camera@48 {
|
||||||
|
compatible = "aptina,mt9v111";
|
||||||
|
reg = <0x48>;
|
||||||
|
clocks = <&camera_clk>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
mt9v111_out: endpoint {
|
||||||
|
remote-endpoint = <&ceu_in>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
||||||
135
Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml
Normal file
135
Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
# Copyright (C) 2014--2020 Intel Corporation
|
||||||
|
|
||||||
|
$id: http://devicetree.org/schemas/media/i2c/mipi-ccs.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: MIPI CCS, SMIA++ and SMIA compliant camera sensors
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Sakari Ailus <sakari.ailus@linux.intel.com>
|
||||||
|
|
||||||
|
description:
|
||||||
|
|
||||||
|
CCS (Camera Command Set) is a raw Bayer camera sensor standard defined by the
|
||||||
|
MIPI Alliance; see
|
||||||
|
<URL:https://www.mipi.org/specifications/camera-command-set>.
|
||||||
|
|
||||||
|
SMIA (Standard Mobile Imaging Architecture) is an image sensor standard
|
||||||
|
defined jointly by Nokia and ST. SMIA++, defined by Nokia, is an extension of
|
||||||
|
that.
|
||||||
|
|
||||||
|
More detailed documentation can be found in
|
||||||
|
Documentation/devicetree/bindings/media/video-interfaces.txt .
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
oneOf:
|
||||||
|
- items:
|
||||||
|
- const: mipi-ccs-1.1
|
||||||
|
- const: mipi-ccs
|
||||||
|
- items:
|
||||||
|
- const: mipi-ccs-1.0
|
||||||
|
- const: mipi-ccs
|
||||||
|
- const: nokia,smia
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
vana-supply:
|
||||||
|
description: Analogue voltage supply (VANA), sensor dependent.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
vcore-supply:
|
||||||
|
description: Core voltage supply (VCore), sensor dependent.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
vio-supply:
|
||||||
|
description: I/O voltage supply (VIO), sensor dependent.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
description: External clock to the sensor.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clock-frequency:
|
||||||
|
description: Frequency of the external clock to the sensor in Hz.
|
||||||
|
|
||||||
|
reset-gpios:
|
||||||
|
description: Reset GPIO. Also commonly called XSHUTDOWN in hardware
|
||||||
|
documentation.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
flash-leds:
|
||||||
|
description: Flash LED phandles. See ../video-interfaces.txt for details.
|
||||||
|
|
||||||
|
lens-focus:
|
||||||
|
description: Lens focus controller phandles. See ../video-interfaces.txt
|
||||||
|
for details.
|
||||||
|
|
||||||
|
rotation:
|
||||||
|
description: Rotation of the sensor. See ../video-interfaces.txt for
|
||||||
|
details.
|
||||||
|
enum: [ 0, 180 ]
|
||||||
|
|
||||||
|
port:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
endpoint:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
link-frequencies:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint64-array
|
||||||
|
description: List of allowed data link frequencies.
|
||||||
|
data-lanes:
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 8
|
||||||
|
bus-type:
|
||||||
|
description: The type of the data bus.
|
||||||
|
oneOf:
|
||||||
|
- const: 1 # CSI-2 C-PHY
|
||||||
|
- const: 3 # CCP2
|
||||||
|
- const: 4 # CSI-2 D-PHY
|
||||||
|
|
||||||
|
required:
|
||||||
|
- link-frequencies
|
||||||
|
- data-lanes
|
||||||
|
- bus-type
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- clock-frequency
|
||||||
|
- clocks
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
i2c2 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
|
camera-sensor@10 {
|
||||||
|
compatible = "mipi-ccs-1.0", "mipi-ccs";
|
||||||
|
reg = <0x10>;
|
||||||
|
reset-gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
|
||||||
|
vana-supply = <&vaux3>;
|
||||||
|
clocks = <&omap3_isp 0>;
|
||||||
|
clock-frequency = <9600000>;
|
||||||
|
port {
|
||||||
|
ccs_ep: endpoint {
|
||||||
|
data-lanes = <1 2>;
|
||||||
|
remote-endpoint = <&csi2a_ep>;
|
||||||
|
link-frequencies = /bits/ 64 <199200000 210000000
|
||||||
|
499200000>;
|
||||||
|
bus-type = <4>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
...
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
SMIA/SMIA++ sensor
|
|
||||||
|
|
||||||
SMIA (Standard Mobile Imaging Architecture) is an image sensor standard
|
|
||||||
defined jointly by Nokia and ST. SMIA++, defined by Nokia, is an extension
|
|
||||||
of that. These definitions are valid for both types of sensors.
|
|
||||||
|
|
||||||
More detailed documentation can be found in
|
|
||||||
Documentation/devicetree/bindings/media/video-interfaces.txt .
|
|
||||||
|
|
||||||
The device node should contain a "port" node which may contain one or more
|
|
||||||
endpoint nodes, in accordance with video interface bindings defined in
|
|
||||||
Documentation/devicetree/bindings/media/video-interfaces.txt .
|
|
||||||
|
|
||||||
Mandatory properties
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
- compatible: "nokia,smia"
|
|
||||||
- reg: I2C address (0x10, or an alternative address)
|
|
||||||
- vana-supply: Analogue voltage supply (VANA), typically 2,8 volts (sensor
|
|
||||||
dependent).
|
|
||||||
- clocks: External clock to the sensor
|
|
||||||
- clock-frequency: Frequency of the external clock to the sensor
|
|
||||||
- link-frequencies: List of allowed data link frequencies. An array of
|
|
||||||
64-bit elements.
|
|
||||||
|
|
||||||
|
|
||||||
Optional properties
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
- reset-gpios: XSHUTDOWN GPIO
|
|
||||||
- flash-leds: See ../video-interfaces.txt
|
|
||||||
- lens-focus: See ../video-interfaces.txt
|
|
||||||
- rotation: Integer property; valid values are 0 (sensor mounted upright)
|
|
||||||
and 180 (sensor mounted upside down). See
|
|
||||||
../video-interfaces.txt .
|
|
||||||
|
|
||||||
|
|
||||||
Endpoint node mandatory properties
|
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
- data-lanes: <1..n>
|
|
||||||
|
|
||||||
|
|
||||||
Example
|
|
||||||
-------
|
|
||||||
|
|
||||||
&i2c2 {
|
|
||||||
clock-frequency = <400000>;
|
|
||||||
|
|
||||||
camera-sensor@10 {
|
|
||||||
compatible = "nokia,smia";
|
|
||||||
reg = <0x10>;
|
|
||||||
reset-gpios = <&gpio3 20 0>;
|
|
||||||
vana-supply = <&vaux3>;
|
|
||||||
clocks = <&omap3_isp 0>;
|
|
||||||
clock-frequency = <9600000>;
|
|
||||||
nokia,nvm-size = <512>; /* 8 * 64 */
|
|
||||||
link-frequencies = /bits/ 64 <199200000 210000000 499200000>;
|
|
||||||
port {
|
|
||||||
smiapp_ep: endpoint {
|
|
||||||
data-lanes = <1 2>;
|
|
||||||
remote-endpoint = <&csi2a_ep>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
* Omnivision OV2680 MIPI CSI-2 sensor
|
|
||||||
|
|
||||||
Required Properties:
|
|
||||||
- compatible: should be "ovti,ov2680".
|
|
||||||
- clocks: reference to the xvclk input clock.
|
|
||||||
- clock-names: should be "xvclk".
|
|
||||||
- DOVDD-supply: Digital I/O voltage supply.
|
|
||||||
- DVDD-supply: Digital core voltage supply.
|
|
||||||
- AVDD-supply: Analog voltage supply.
|
|
||||||
|
|
||||||
Optional Properties:
|
|
||||||
- reset-gpios: reference to the GPIO connected to the powerdown/reset pin,
|
|
||||||
if any. This is an active low signal to the OV2680.
|
|
||||||
|
|
||||||
The device node must contain one 'port' child node for its digital output
|
|
||||||
video port, and this port must have a single endpoint in accordance with
|
|
||||||
the video interface bindings defined in
|
|
||||||
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
|
||||||
|
|
||||||
Endpoint node required properties for CSI-2 connection are:
|
|
||||||
- remote-endpoint: a phandle to the bus receiver's endpoint node.
|
|
||||||
- clock-lanes: should be set to <0> (clock lane on hardware lane 0).
|
|
||||||
- data-lanes: should be set to <1> (one CSI-2 lane supported).
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
&i2c2 {
|
|
||||||
ov2680: camera-sensor@36 {
|
|
||||||
compatible = "ovti,ov2680";
|
|
||||||
reg = <0x36>;
|
|
||||||
clocks = <&osc>;
|
|
||||||
clock-names = "xvclk";
|
|
||||||
reset-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
|
|
||||||
DOVDD-supply = <&sw2_reg>;
|
|
||||||
DVDD-supply = <&sw2_reg>;
|
|
||||||
AVDD-supply = <®_peri_3p15v>;
|
|
||||||
|
|
||||||
port {
|
|
||||||
ov2680_to_mipi: endpoint {
|
|
||||||
remote-endpoint = <&mipi_from_sensor>;
|
|
||||||
clock-lanes = <0>;
|
|
||||||
data-lanes = <1>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
* Omnivision OV7720/OV7725 CMOS sensor
|
|
||||||
|
|
||||||
The Omnivision OV7720/OV7725 sensor supports multiple resolutions output,
|
|
||||||
such as VGA, QVGA, and any size scaling down from CIF to 40x30. It also can
|
|
||||||
support the YUV422, RGB565/555/444, GRB422 or raw RGB output formats.
|
|
||||||
|
|
||||||
Required Properties:
|
|
||||||
- compatible: shall be one of
|
|
||||||
"ovti,ov7720"
|
|
||||||
"ovti,ov7725"
|
|
||||||
- clocks: reference to the xclk input clock.
|
|
||||||
|
|
||||||
Optional Properties:
|
|
||||||
- reset-gpios: reference to the GPIO connected to the RSTB pin which is
|
|
||||||
active low, if any.
|
|
||||||
- powerdown-gpios: reference to the GPIO connected to the PWDN pin which is
|
|
||||||
active high, if any.
|
|
||||||
|
|
||||||
The device node shall contain one 'port' child node with one child 'endpoint'
|
|
||||||
subnode for its digital output video port, in accordance with the video
|
|
||||||
interface bindings defined in Documentation/devicetree/bindings/media/
|
|
||||||
video-interfaces.txt.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
&i2c0 {
|
|
||||||
ov772x: camera@21 {
|
|
||||||
compatible = "ovti,ov7725";
|
|
||||||
reg = <0x21>;
|
|
||||||
reset-gpios = <&axi_gpio_0 0 GPIO_ACTIVE_LOW>;
|
|
||||||
powerdown-gpios = <&axi_gpio_0 1 GPIO_ACTIVE_LOW>;
|
|
||||||
clocks = <&xclk>;
|
|
||||||
|
|
||||||
port {
|
|
||||||
ov772x_0: endpoint {
|
|
||||||
remote-endpoint = <&vcap1_in0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
159
Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
Normal file
159
Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
|
# Copyright (c) 2020 MediaTek Inc.
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/i2c/ovti,ov02a10.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Omnivision OV02A10 CMOS Sensor Device Tree Bindings
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Dongchun Zhu <dongchun.zhu@mediatek.com>
|
||||||
|
|
||||||
|
description: |-
|
||||||
|
The Omnivision OV02A10 is a low-cost, high performance, 1/5-inch, 2 megapixel
|
||||||
|
image sensor, which is the latest production derived from Omnivision's CMOS
|
||||||
|
image sensor technology. Ihis chip supports high frame rate speeds up to 30fps
|
||||||
|
@ 1600x1200 (UXGA) resolution transferred over a 1-lane MIPI interface. The
|
||||||
|
sensor output is available via CSI-2 serial data output.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: ovti,ov02a10
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
description:
|
||||||
|
External clock for the sensor.
|
||||||
|
items:
|
||||||
|
- const: eclk
|
||||||
|
|
||||||
|
clock-frequency:
|
||||||
|
description:
|
||||||
|
Frequency of the eclk clock in Hz.
|
||||||
|
|
||||||
|
dovdd-supply:
|
||||||
|
description:
|
||||||
|
Definition of the regulator used as Digital I/O voltage supply.
|
||||||
|
|
||||||
|
avdd-supply:
|
||||||
|
description:
|
||||||
|
Definition of the regulator used as Analog voltage supply.
|
||||||
|
|
||||||
|
dvdd-supply:
|
||||||
|
description:
|
||||||
|
Definition of the regulator used as Digital core voltage supply.
|
||||||
|
|
||||||
|
powerdown-gpios:
|
||||||
|
description:
|
||||||
|
Must be the device tree identifier of the GPIO connected to the
|
||||||
|
PD_PAD pin. This pin is used to place the OV02A10 into standby mode
|
||||||
|
or shutdown mode. As the line needs to be high for the powerdown mode
|
||||||
|
to be active, it should be marked GPIO_ACTIVE_HIGH.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
reset-gpios:
|
||||||
|
description:
|
||||||
|
Must be the device tree identifier of the GPIO connected to the
|
||||||
|
RST_PD pin. If specified, it will be asserted during driver probe.
|
||||||
|
As the line needs to be low for the reset to be active, it should be
|
||||||
|
marked GPIO_ACTIVE_LOW.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
rotation:
|
||||||
|
description:
|
||||||
|
Definition of the sensor's placement.
|
||||||
|
allOf:
|
||||||
|
- $ref: "/schemas/types.yaml#/definitions/uint32"
|
||||||
|
- enum:
|
||||||
|
- 0 # Sensor Mounted Upright
|
||||||
|
- 180 # Sensor Mounted Upside Down
|
||||||
|
default: 0
|
||||||
|
|
||||||
|
# See ../video-interfaces.txt for details
|
||||||
|
port:
|
||||||
|
type: object
|
||||||
|
additionalProperties: false
|
||||||
|
description:
|
||||||
|
Output port node, single endpoint describing the CSI-2 transmitter.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
endpoint:
|
||||||
|
type: object
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
link-frequencies: true
|
||||||
|
ovti,mipi-clock-voltage:
|
||||||
|
allOf:
|
||||||
|
- $ref: "/schemas/types.yaml#/definitions/uint32"
|
||||||
|
description:
|
||||||
|
Definition of MIPI clock voltage unit. This entry corresponds to
|
||||||
|
the link speed defined by the 'link-frequencies' property.
|
||||||
|
If present, the value shall be in the range of 0-4.
|
||||||
|
default: 4
|
||||||
|
remote-endpoint: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- link-frequencies
|
||||||
|
- remote-endpoint
|
||||||
|
|
||||||
|
required:
|
||||||
|
- endpoint
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
- clock-frequency
|
||||||
|
- dovdd-supply
|
||||||
|
- avdd-supply
|
||||||
|
- dvdd-supply
|
||||||
|
- powerdown-gpios
|
||||||
|
- reset-gpios
|
||||||
|
- port
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
ov02a10: camera-sensor@3d {
|
||||||
|
compatible = "ovti,ov02a10";
|
||||||
|
reg = <0x3d>;
|
||||||
|
|
||||||
|
powerdown-gpios = <&pio 107 GPIO_ACTIVE_HIGH>;
|
||||||
|
reset-gpios = <&pio 109 GPIO_ACTIVE_LOW>;
|
||||||
|
|
||||||
|
clocks = <&ov02a10_clk>;
|
||||||
|
clock-names = "eclk";
|
||||||
|
clock-frequency = <24000000>;
|
||||||
|
|
||||||
|
rotation = <180>;
|
||||||
|
|
||||||
|
dovdd-supply = <&ov02a10_dovdd>;
|
||||||
|
avdd-supply = <&ov02a10_avdd>;
|
||||||
|
dvdd-supply = <&ov02a10_dvdd>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
wcam_out: endpoint {
|
||||||
|
link-frequencies = /bits/ 64 <390000000>;
|
||||||
|
ovti,mipi-clock-voltage = <3>;
|
||||||
|
remote-endpoint = <&mipi_in_wcam>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
||||||
99
Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml
Normal file
99
Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/i2c/ovti,ov2680.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Omnivision OV2680 CMOS Sensor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Rui Miguel Silva <rmfrfs@gmail.com>
|
||||||
|
|
||||||
|
description: |-
|
||||||
|
The OV2680 color sensor is a low voltage, high performance 1/5 inch UXGA (2
|
||||||
|
megapixel) CMOS image sensor that provides a single-chip UXGA (1600 x 1200)
|
||||||
|
camera. It provides full-frame, sub-sampled, or windowed 10-bit images in
|
||||||
|
various formats via the control of the Serial Camera Control Bus (SCCB)
|
||||||
|
interface. The OV2680 has an image array capable of operating at up to 30
|
||||||
|
frames per second (fps) in UXGA resolution.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: ovti,ov2680
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
const: xvclk
|
||||||
|
|
||||||
|
reset-gpios:
|
||||||
|
description:
|
||||||
|
The phandle and specifier for the GPIO that controls sensor reset.
|
||||||
|
This corresponds to the hardware pin XSHUTDOWN which is physically
|
||||||
|
active low.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
dovdd-supply:
|
||||||
|
description:
|
||||||
|
Definition of the regulator used as interface power supply.
|
||||||
|
|
||||||
|
avdd-supply:
|
||||||
|
description:
|
||||||
|
Definition of the regulator used as analog power supply.
|
||||||
|
|
||||||
|
dvdd-supply:
|
||||||
|
description:
|
||||||
|
Definition of the regulator used as digital power supply.
|
||||||
|
|
||||||
|
port:
|
||||||
|
type: object
|
||||||
|
description:
|
||||||
|
A node containing an output port node with an endpoint definition
|
||||||
|
as documented in
|
||||||
|
Documentation/devicetree/bindings/media/video-interfaces.txt
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
- dovdd-supply
|
||||||
|
- avdd-supply
|
||||||
|
- dvdd-supply
|
||||||
|
- reset-gpios
|
||||||
|
- port
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
ov2680: camera-sensor@36 {
|
||||||
|
compatible = "ovti,ov2680";
|
||||||
|
reg = <0x36>;
|
||||||
|
clocks = <&osc>;
|
||||||
|
clock-names = "xvclk";
|
||||||
|
reset-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
|
||||||
|
|
||||||
|
dovdd-supply = <&sw2_reg>;
|
||||||
|
dvdd-supply = <&sw2_reg>;
|
||||||
|
avdd-supply = <®_peri_3p15v>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
ov2680_to_mipi: endpoint {
|
||||||
|
remote-endpoint = <&mipi_from_sensor>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
||||||
134
Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml
Normal file
134
Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/i2c/ovti,ov772x.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Omnivision OV7720/OV7725 CMOS sensor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Jacopo Mondi <jacopo@jmondi.org>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The Omnivision OV7720/OV7725 sensor supports multiple resolutions output,
|
||||||
|
such as VGA, QVGA, and any size scaling down from CIF to 40x30. It also can
|
||||||
|
support the YUV422, RGB565/555/444, GRB422 or raw RGB output formats.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- ovti,ov7720
|
||||||
|
- ovti,ov7725
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
reset-gpios:
|
||||||
|
description: |
|
||||||
|
Reference to the GPIO connected to the RSTB pin which is active low.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
powerdown-gpios:
|
||||||
|
description: |
|
||||||
|
Reference to the GPIO connected to the PWDN pin which is active high.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
port:
|
||||||
|
type: object
|
||||||
|
description: |
|
||||||
|
Video output port. See ../video-interfaces.txt.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
endpoint:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
properties:
|
||||||
|
bus-type:
|
||||||
|
enum: [5, 6]
|
||||||
|
|
||||||
|
bus-width:
|
||||||
|
enum: [8, 10]
|
||||||
|
default: 10
|
||||||
|
|
||||||
|
data-shift:
|
||||||
|
enum: [0, 2]
|
||||||
|
default: 0
|
||||||
|
|
||||||
|
hsync-active:
|
||||||
|
enum: [0, 1]
|
||||||
|
default: 1
|
||||||
|
|
||||||
|
vsync-active:
|
||||||
|
enum: [0, 1]
|
||||||
|
default: 1
|
||||||
|
|
||||||
|
pclk-sample:
|
||||||
|
enum: [0, 1]
|
||||||
|
default: 1
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
bus-type:
|
||||||
|
const: 6
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
hsync-active: false
|
||||||
|
vsync-active: false
|
||||||
|
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
bus-width:
|
||||||
|
const: 10
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
data-shift:
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
required:
|
||||||
|
- bus-type
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- clocks
|
||||||
|
- port
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
i2c0 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
ov772x: camera@21 {
|
||||||
|
compatible = "ovti,ov7725";
|
||||||
|
reg = <0x21>;
|
||||||
|
reset-gpios = <&axi_gpio_0 0 GPIO_ACTIVE_LOW>;
|
||||||
|
powerdown-gpios = <&axi_gpio_0 1 GPIO_ACTIVE_LOW>;
|
||||||
|
clocks = <&xclk>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
ov772x_0: endpoint {
|
||||||
|
bus-type = <5>;
|
||||||
|
vsync-active = <0>;
|
||||||
|
hsync-active = <0>;
|
||||||
|
pclk-sample = <0>;
|
||||||
|
bus-width = <8>;
|
||||||
|
data-shift = <0>;
|
||||||
|
remote-endpoint = <&vcap1_in0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
* Sony 1/3.06-Inch 13.13Mp CMOS Digital Image Sensor
|
|
||||||
|
|
||||||
The Sony imx214 is a 1/3.06-inch CMOS active pixel digital image sensor with
|
|
||||||
an active array size of 4224H x 3200V. It is programmable through an I2C
|
|
||||||
interface.
|
|
||||||
Image data is sent through MIPI CSI-2, through 2 or 4 lanes at a maximum
|
|
||||||
throughput of 1.2Gbps/lane.
|
|
||||||
|
|
||||||
|
|
||||||
Required Properties:
|
|
||||||
- compatible: Shall be "sony,imx214".
|
|
||||||
- reg: I2C bus address of the device. Depending on how the sensor is wired,
|
|
||||||
it shall be <0x10> or <0x1a>;
|
|
||||||
- enable-gpios: GPIO descriptor for the enable pin.
|
|
||||||
- vdddo-supply: Chip digital IO regulator (1.8V).
|
|
||||||
- vdda-supply: Chip analog regulator (2.7V).
|
|
||||||
- vddd-supply: Chip digital core regulator (1.12V).
|
|
||||||
- clocks: Reference to the xclk clock.
|
|
||||||
- clock-frequency: Frequency of the xclk clock.
|
|
||||||
|
|
||||||
Optional Properties:
|
|
||||||
- flash-leds: See ../video-interfaces.txt
|
|
||||||
- lens-focus: See ../video-interfaces.txt
|
|
||||||
|
|
||||||
The imx214 device node shall contain one 'port' child node with
|
|
||||||
an 'endpoint' subnode. For further reading on port node refer to
|
|
||||||
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
|
||||||
|
|
||||||
Required Properties on endpoint:
|
|
||||||
- data-lanes: check ../video-interfaces.txt
|
|
||||||
- link-frequencies: check ../video-interfaces.txt
|
|
||||||
- remote-endpoint: check ../video-interfaces.txt
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
camera-sensor@1a {
|
|
||||||
compatible = "sony,imx214";
|
|
||||||
reg = <0x1a>;
|
|
||||||
vdddo-supply = <&pm8994_lvs1>;
|
|
||||||
vddd-supply = <&camera_vddd_1v12>;
|
|
||||||
vdda-supply = <&pm8994_l17>;
|
|
||||||
lens-focus = <&ad5820>;
|
|
||||||
enable-gpios = <&msmgpio 25 GPIO_ACTIVE_HIGH>;
|
|
||||||
clocks = <&mmcc CAMSS_MCLK0_CLK>;
|
|
||||||
clock-frequency = <24000000>;
|
|
||||||
port {
|
|
||||||
imx214_ep: endpoint {
|
|
||||||
data-lanes = <1 2 3 4>;
|
|
||||||
link-frequencies = /bits/ 64 <480000000>;
|
|
||||||
remote-endpoint = <&csiphy0_ep>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
133
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml
Normal file
133
Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/i2c/sony,imx214.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Sony 1/3.06-Inch 13.13MP CMOS Digital Image Sensor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Ricardo Ribalda <ribalda@kernel.org>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The Sony IMX214 is a 1/3.06-inch CMOS active pixel digital image sensor with
|
||||||
|
an active array size of 4224H x 3200V. It is programmable through an I2C
|
||||||
|
interface. Image data is sent through MIPI CSI-2, through 2 or 4 lanes at a
|
||||||
|
maximum throughput of 1.2Gbps/lane.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: sony,imx214
|
||||||
|
|
||||||
|
reg:
|
||||||
|
enum:
|
||||||
|
- 0x10
|
||||||
|
- 0x1a
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
description: Reference to the xclk clock.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clock-frequency:
|
||||||
|
description: Frequency of the xclk clock in Hz.
|
||||||
|
|
||||||
|
enable-gpios:
|
||||||
|
description: GPIO descriptor for the enable pin.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
vdddo-supply:
|
||||||
|
description: Chip digital IO regulator (1.8V).
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
vdda-supply:
|
||||||
|
description: Chip analog regulator (2.7V).
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
vddd-supply:
|
||||||
|
description: Chip digital core regulator (1.12V).
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
flash-leds:
|
||||||
|
description: See ../video-interfaces.txt
|
||||||
|
|
||||||
|
lens-focus:
|
||||||
|
description: See ../video-interfaces.txt
|
||||||
|
|
||||||
|
port:
|
||||||
|
type: object
|
||||||
|
description: |
|
||||||
|
Video output port. See ../video-interfaces.txt.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
endpoint:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
properties:
|
||||||
|
data-lanes:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||||
|
description: See ../video-interfaces.txt
|
||||||
|
anyOf:
|
||||||
|
- items:
|
||||||
|
- const: 1
|
||||||
|
- const: 2
|
||||||
|
- items:
|
||||||
|
- const: 1
|
||||||
|
- const: 2
|
||||||
|
- const: 3
|
||||||
|
- const: 4
|
||||||
|
|
||||||
|
link-frequencies:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint64-array
|
||||||
|
description: See ../video-interfaces.txt
|
||||||
|
|
||||||
|
required:
|
||||||
|
- data-lanes
|
||||||
|
- link-frequencies
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- clocks
|
||||||
|
- clock-frequency
|
||||||
|
- enable-gpios
|
||||||
|
- vdddo-supply
|
||||||
|
- vdda-supply
|
||||||
|
- vddd-supply
|
||||||
|
- port
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
i2c0 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
camera-sensor@1a {
|
||||||
|
compatible = "sony,imx214";
|
||||||
|
reg = <0x1a>;
|
||||||
|
vdddo-supply = <&pm8994_lvs1>;
|
||||||
|
vddd-supply = <&camera_vddd_1v12>;
|
||||||
|
vdda-supply = <&pm8994_l17>;
|
||||||
|
lens-focus = <&ad5820>;
|
||||||
|
enable-gpios = <&msmgpio 25 GPIO_ACTIVE_HIGH>;
|
||||||
|
clocks = <&camera_clk>;
|
||||||
|
clock-frequency = <24000000>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
imx214_ep: endpoint {
|
||||||
|
data-lanes = <1 2 3 4>;
|
||||||
|
link-frequencies = /bits/ 64 <480000000>;
|
||||||
|
remote-endpoint = <&csiphy0_ep>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
Freescale i.MX7 CMOS Sensor Interface
|
|
||||||
=====================================
|
|
||||||
|
|
||||||
csi node
|
|
||||||
--------
|
|
||||||
|
|
||||||
This is device node for the CMOS Sensor Interface (CSI) which enables the chip
|
|
||||||
to connect directly to external CMOS image sensors.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
|
|
||||||
- compatible : "fsl,imx7-csi" or "fsl,imx6ul-csi";
|
|
||||||
- reg : base address and length of the register set for the device;
|
|
||||||
- interrupts : should contain CSI interrupt;
|
|
||||||
- clocks : list of clock specifiers, see
|
|
||||||
Documentation/devicetree/bindings/clock/clock-bindings.txt for details;
|
|
||||||
- clock-names : must contain "mclk";
|
|
||||||
|
|
||||||
The device node shall contain one 'port' child node with one child 'endpoint'
|
|
||||||
node, according to the bindings defined in:
|
|
||||||
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
|
||||||
|
|
||||||
In the following example a remote endpoint is a video multiplexer.
|
|
||||||
|
|
||||||
example:
|
|
||||||
|
|
||||||
csi: csi@30710000 {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
compatible = "fsl,imx7-csi";
|
|
||||||
reg = <0x30710000 0x10000>;
|
|
||||||
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
clocks = <&clks IMX7D_CSI_MCLK_ROOT_CLK>;
|
|
||||||
clock-names = "mclk";
|
|
||||||
|
|
||||||
port {
|
|
||||||
csi_from_csi_mux: endpoint {
|
|
||||||
remote-endpoint = <&csi_mux_to_csi>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
Freescale i.MX7 Mipi CSI2
|
|
||||||
=========================
|
|
||||||
|
|
||||||
mipi_csi2 node
|
|
||||||
--------------
|
|
||||||
|
|
||||||
This is the device node for the MIPI CSI-2 receiver core in i.MX7 SoC. It is
|
|
||||||
compatible with previous version of Samsung D-phy.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
|
|
||||||
- compatible : "fsl,imx7-mipi-csi2";
|
|
||||||
- reg : base address and length of the register set for the device;
|
|
||||||
- interrupts : should contain MIPI CSIS interrupt;
|
|
||||||
- clocks : list of clock specifiers, see
|
|
||||||
Documentation/devicetree/bindings/clock/clock-bindings.txt for details;
|
|
||||||
- clock-names : must contain "pclk", "wrap" and "phy" entries, matching
|
|
||||||
entries in the clock property;
|
|
||||||
- power-domains : a phandle to the power domain, see
|
|
||||||
Documentation/devicetree/bindings/power/power_domain.txt for details.
|
|
||||||
- reset-names : should include following entry "mrst";
|
|
||||||
- resets : a list of phandle, should contain reset entry of
|
|
||||||
reset-names;
|
|
||||||
- phy-supply : from the generic phy bindings, a phandle to a regulator that
|
|
||||||
provides power to MIPI CSIS core;
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
|
|
||||||
- clock-frequency : The IP's main (system bus) clock frequency in Hz, default
|
|
||||||
value when this property is not specified is 166 MHz;
|
|
||||||
- fsl,csis-hs-settle : differential receiver (HS-RX) settle time;
|
|
||||||
|
|
||||||
The device node should contain two 'port' child nodes with one child 'endpoint'
|
|
||||||
node, according to the bindings defined in:
|
|
||||||
Documentation/devicetree/bindings/ media/video-interfaces.txt.
|
|
||||||
The following are properties specific to those nodes.
|
|
||||||
|
|
||||||
port node
|
|
||||||
---------
|
|
||||||
|
|
||||||
- reg : (required) can take the values 0 or 1, where 0 shall be
|
|
||||||
related to the sink port and port 1 shall be the source
|
|
||||||
one;
|
|
||||||
|
|
||||||
endpoint node
|
|
||||||
-------------
|
|
||||||
|
|
||||||
- data-lanes : (required) an array specifying active physical MIPI-CSI2
|
|
||||||
data input lanes and their mapping to logical lanes; this
|
|
||||||
shall only be applied to port 0 (sink port), the array's
|
|
||||||
content is unused only its length is meaningful,
|
|
||||||
in this case the maximum length supported is 2;
|
|
||||||
|
|
||||||
example:
|
|
||||||
|
|
||||||
mipi_csi: mipi-csi@30750000 {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
compatible = "fsl,imx7-mipi-csi2";
|
|
||||||
reg = <0x30750000 0x10000>;
|
|
||||||
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
clocks = <&clks IMX7D_IPG_ROOT_CLK>,
|
|
||||||
<&clks IMX7D_MIPI_CSI_ROOT_CLK>,
|
|
||||||
<&clks IMX7D_MIPI_DPHY_ROOT_CLK>;
|
|
||||||
clock-names = "pclk", "wrap", "phy";
|
|
||||||
clock-frequency = <166000000>;
|
|
||||||
power-domains = <&pgc_mipi_phy>;
|
|
||||||
phy-supply = <®_1p0d>;
|
|
||||||
resets = <&src IMX7_RESET_MIPI_PHY_MRST>;
|
|
||||||
reset-names = "mrst";
|
|
||||||
fsl,csis-hs-settle = <3>;
|
|
||||||
|
|
||||||
port@0 {
|
|
||||||
reg = <0>;
|
|
||||||
|
|
||||||
mipi_from_sensor: endpoint {
|
|
||||||
remote-endpoint = <&ov2680_to_mipi>;
|
|
||||||
data-lanes = <1>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
port@1 {
|
|
||||||
reg = <1>;
|
|
||||||
|
|
||||||
mipi_vc0_to_csi_mux: endpoint {
|
|
||||||
remote-endpoint = <&csi_mux_from_mipi_vc0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
71
Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml
Normal file
71
Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/nxp,imx7-csi.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: i.MX7 CMOS Sensor Interface
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Rui Miguel Silva <rmfrfs@gmail.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This is device node for the CMOS Sensor Interface (CSI) which enables the
|
||||||
|
chip to connect directly to external CMOS image sensors.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- fsl,imx7-csi
|
||||||
|
- fsl,imx6ul-csi
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
items:
|
||||||
|
- const: mclk
|
||||||
|
|
||||||
|
port:
|
||||||
|
type: object
|
||||||
|
description:
|
||||||
|
A node containing input port nodes with endpoint definitions as documented
|
||||||
|
in Documentation/devicetree/bindings/media/video-interfaces.txt
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
- port
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/clock/imx7d-clock.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
|
||||||
|
csi: csi@30710000 {
|
||||||
|
compatible = "fsl,imx7-csi";
|
||||||
|
reg = <0x30710000 0x10000>;
|
||||||
|
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&clks IMX7D_CSI_MCLK_ROOT_CLK>;
|
||||||
|
clock-names = "mclk";
|
||||||
|
|
||||||
|
port {
|
||||||
|
csi_from_csi_mux: endpoint {
|
||||||
|
remote-endpoint = <&csi_mux_to_csi>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
||||||
173
Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml
Normal file
173
Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/nxp,imx7-mipi-csi2.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: NXP i.MX7 Mipi CSI2
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Rui Miguel Silva <rmfrfs@gmail.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This is the device node for the MIPI CSI-2 receiver core in i.MX7 soc. It is
|
||||||
|
compatible with previous version of samsung d-phy.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: fsl,imx7-mipi-csi2
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
minItems: 3
|
||||||
|
maxItems: 3
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
items:
|
||||||
|
- const: pclk
|
||||||
|
- const: wrap
|
||||||
|
- const: phy
|
||||||
|
|
||||||
|
power-domains:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
phy-supply:
|
||||||
|
description:
|
||||||
|
Phandle to a regulator that provides power to the PHY. This
|
||||||
|
regulator will be managed during the PHY power on/off sequence.
|
||||||
|
|
||||||
|
resets:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
reset-names:
|
||||||
|
const: mrst
|
||||||
|
|
||||||
|
clock-frequency:
|
||||||
|
description:
|
||||||
|
The IP main (system bus) clock frequency in Hertz
|
||||||
|
default: 166000000
|
||||||
|
|
||||||
|
fsl,csis-hs-settle:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
description:
|
||||||
|
Differential receiver (HS-RX) settle time
|
||||||
|
|
||||||
|
ports:
|
||||||
|
type: object
|
||||||
|
description:
|
||||||
|
A node containing input and output port nodes with endpoint definitions
|
||||||
|
as documented in
|
||||||
|
Documentation/devicetree/bindings/media/video-interfaces.txt
|
||||||
|
|
||||||
|
properties:
|
||||||
|
'#address-cells':
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
'#size-cells':
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
port@0:
|
||||||
|
type: object
|
||||||
|
description:
|
||||||
|
Input port node, single endpoint describing the CSI-2 transmitter.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
reg:
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
endpoint:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
properties:
|
||||||
|
data-lanes:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||||
|
description: See ../video-interfaces.txt
|
||||||
|
oneOf:
|
||||||
|
- items:
|
||||||
|
- const: 1
|
||||||
|
- items:
|
||||||
|
- const: 1
|
||||||
|
- const: 2
|
||||||
|
|
||||||
|
remote-endpoint: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- data-lanes
|
||||||
|
- remote-endpoint
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
port@1:
|
||||||
|
type: object
|
||||||
|
description:
|
||||||
|
Output port node
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
- power-domains
|
||||||
|
- phy-supply
|
||||||
|
- resets
|
||||||
|
- reset-names
|
||||||
|
- ports
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/clock/imx7d-clock.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
#include <dt-bindings/reset/imx7-reset.h>
|
||||||
|
|
||||||
|
mipi_csi: mipi-csi@30750000 {
|
||||||
|
compatible = "fsl,imx7-mipi-csi2";
|
||||||
|
reg = <0x30750000 0x10000>;
|
||||||
|
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
|
||||||
|
clocks = <&clks IMX7D_IPG_ROOT_CLK>,
|
||||||
|
<&clks IMX7D_MIPI_CSI_ROOT_CLK>,
|
||||||
|
<&clks IMX7D_MIPI_DPHY_ROOT_CLK>;
|
||||||
|
clock-names = "pclk", "wrap", "phy";
|
||||||
|
clock-frequency = <166000000>;
|
||||||
|
|
||||||
|
power-domains = <&pgc_mipi_phy>;
|
||||||
|
phy-supply = <®_1p0d>;
|
||||||
|
resets = <&src IMX7_RESET_MIPI_PHY_MRST>;
|
||||||
|
reset-names = "mrst";
|
||||||
|
fsl,csis-hs-settle = <3>;
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
|
mipi_from_sensor: endpoint {
|
||||||
|
remote-endpoint = <&ov2680_to_mipi>;
|
||||||
|
data-lanes = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
|
||||||
|
mipi_vc0_to_csi_mux: endpoint {
|
||||||
|
remote-endpoint = <&csi_mux_from_mipi_vc0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
||||||
@@ -8,6 +8,7 @@ Qualcomm Camera Subsystem
|
|||||||
Definition: Should contain one of:
|
Definition: Should contain one of:
|
||||||
- "qcom,msm8916-camss"
|
- "qcom,msm8916-camss"
|
||||||
- "qcom,msm8996-camss"
|
- "qcom,msm8996-camss"
|
||||||
|
- "qcom,sdm660-camss"
|
||||||
- reg:
|
- reg:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <prop-encoded-array>
|
Value type: <prop-encoded-array>
|
||||||
@@ -64,30 +65,36 @@ Qualcomm Camera Subsystem
|
|||||||
Value type: <stringlist>
|
Value type: <stringlist>
|
||||||
Definition: Should contain the following entries:
|
Definition: Should contain the following entries:
|
||||||
- "top_ahb"
|
- "top_ahb"
|
||||||
|
- "throttle_axi" (660 only)
|
||||||
- "ispif_ahb"
|
- "ispif_ahb"
|
||||||
- "csiphy0_timer"
|
- "csiphy0_timer"
|
||||||
- "csiphy1_timer"
|
- "csiphy1_timer"
|
||||||
- "csiphy2_timer" (8996 only)
|
- "csiphy2_timer" (8996 only)
|
||||||
|
- "csiphy_ahb2crif" (660 only)
|
||||||
- "csi0_ahb"
|
- "csi0_ahb"
|
||||||
- "csi0"
|
- "csi0"
|
||||||
- "csi0_phy"
|
- "csi0_phy"
|
||||||
- "csi0_pix"
|
- "csi0_pix"
|
||||||
- "csi0_rdi"
|
- "csi0_rdi"
|
||||||
|
- "cphy_csid0" (660 only)
|
||||||
- "csi1_ahb"
|
- "csi1_ahb"
|
||||||
- "csi1"
|
- "csi1"
|
||||||
- "csi1_phy"
|
- "csi1_phy"
|
||||||
- "csi1_pix"
|
- "csi1_pix"
|
||||||
- "csi1_rdi"
|
- "csi1_rdi"
|
||||||
|
- "cphy_csid1" (660 only)
|
||||||
- "csi2_ahb" (8996 only)
|
- "csi2_ahb" (8996 only)
|
||||||
- "csi2" (8996 only)
|
- "csi2" (8996 only)
|
||||||
- "csi2_phy" (8996 only)
|
- "csi2_phy" (8996 only)
|
||||||
- "csi2_pix" (8996 only)
|
- "csi2_pix" (8996 only)
|
||||||
- "csi2_rdi" (8996 only)
|
- "csi2_rdi" (8996 only)
|
||||||
|
- "cphy_csid2" (660 only)
|
||||||
- "csi3_ahb" (8996 only)
|
- "csi3_ahb" (8996 only)
|
||||||
- "csi3" (8996 only)
|
- "csi3" (8996 only)
|
||||||
- "csi3_phy" (8996 only)
|
- "csi3_phy" (8996 only)
|
||||||
- "csi3_pix" (8996 only)
|
- "csi3_pix" (8996 only)
|
||||||
- "csi3_rdi" (8996 only)
|
- "csi3_rdi" (8996 only)
|
||||||
|
- "cphy_csid3" (660 only)
|
||||||
- "ahb"
|
- "ahb"
|
||||||
- "vfe0"
|
- "vfe0"
|
||||||
- "csi_vfe0"
|
- "csi_vfe0"
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ properties:
|
|||||||
- rc-it913x-v2
|
- rc-it913x-v2
|
||||||
- rc-kaiomy
|
- rc-kaiomy
|
||||||
- rc-khadas
|
- rc-khadas
|
||||||
|
- rc-khamsin
|
||||||
- rc-kworld-315u
|
- rc-kworld-315u
|
||||||
- rc-kworld-pc150u
|
- rc-kworld-pc150u
|
||||||
- rc-kworld-plus-tv-analog
|
- rc-kworld-plus-tv-analog
|
||||||
@@ -102,6 +103,7 @@ properties:
|
|||||||
- rc-npgtech
|
- rc-npgtech
|
||||||
- rc-odroid
|
- rc-odroid
|
||||||
- rc-pctv-sedna
|
- rc-pctv-sedna
|
||||||
|
- rc-pine64
|
||||||
- rc-pinnacle-color
|
- rc-pinnacle-color
|
||||||
- rc-pinnacle-grey
|
- rc-pinnacle-grey
|
||||||
- rc-pinnacle-pctv-hd
|
- rc-pinnacle-pctv-hd
|
||||||
|
|||||||
@@ -23,10 +23,27 @@ properties:
|
|||||||
interrupts:
|
interrupts:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
iommus:
|
clocks:
|
||||||
maxItems: 1
|
minItems: 3
|
||||||
|
items:
|
||||||
|
# isp0 and isp1
|
||||||
|
- description: ISP clock
|
||||||
|
- description: ISP AXI clock
|
||||||
|
- description: ISP AHB clock
|
||||||
|
# only for isp1
|
||||||
|
- description: ISP Pixel clock
|
||||||
|
|
||||||
power-domains:
|
clock-names:
|
||||||
|
minItems: 3
|
||||||
|
items:
|
||||||
|
# isp0 and isp1
|
||||||
|
- const: isp
|
||||||
|
- const: aclk
|
||||||
|
- const: hclk
|
||||||
|
# only for isp1
|
||||||
|
- const: pclk_isp
|
||||||
|
|
||||||
|
iommus:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
phys:
|
phys:
|
||||||
@@ -36,21 +53,8 @@ properties:
|
|||||||
phy-names:
|
phy-names:
|
||||||
const: dphy
|
const: dphy
|
||||||
|
|
||||||
clocks:
|
power-domains:
|
||||||
items:
|
maxItems: 1
|
||||||
- description: ISP clock
|
|
||||||
- description: ISP AXI clock clock
|
|
||||||
- description: ISP AXI clock wrapper clock
|
|
||||||
- description: ISP AHB clock clock
|
|
||||||
- description: ISP AHB wrapper clock
|
|
||||||
|
|
||||||
clock-names:
|
|
||||||
items:
|
|
||||||
- const: clk_isp
|
|
||||||
- const: aclk_isp
|
|
||||||
- const: aclk_isp_wrap
|
|
||||||
- const: hclk_isp
|
|
||||||
- const: hclk_isp_wrap
|
|
||||||
|
|
||||||
# See ./video-interfaces.txt for details
|
# See ./video-interfaces.txt for details
|
||||||
ports:
|
ports:
|
||||||
@@ -94,20 +98,42 @@ properties:
|
|||||||
|
|
||||||
remote-endpoint: true
|
remote-endpoint: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- reg
|
||||||
|
- "#address-cells"
|
||||||
|
- "#size-cells"
|
||||||
|
|
||||||
required:
|
required:
|
||||||
|
- "#address-cells"
|
||||||
|
- "#size-cells"
|
||||||
- port@0
|
- port@0
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
|
- reg
|
||||||
- interrupts
|
- interrupts
|
||||||
- clocks
|
- clocks
|
||||||
- clock-names
|
- clock-names
|
||||||
- power-domains
|
|
||||||
- iommus
|
- iommus
|
||||||
- phys
|
- phys
|
||||||
- phy-names
|
- phy-names
|
||||||
|
- power-domains
|
||||||
- ports
|
- ports
|
||||||
|
|
||||||
|
if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
const: rockchip,rk3399-cif-isp
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
clocks:
|
||||||
|
minItems: 3
|
||||||
|
maxItems: 4
|
||||||
|
clock-names:
|
||||||
|
minItems: 3
|
||||||
|
maxItems: 4
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
@@ -117,7 +143,7 @@ examples:
|
|||||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
#include <dt-bindings/power/rk3399-power.h>
|
#include <dt-bindings/power/rk3399-power.h>
|
||||||
|
|
||||||
parent0: parent@0 {
|
parent0: parent {
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
@@ -126,24 +152,22 @@ examples:
|
|||||||
reg = <0x0 0xff910000 0x0 0x4000>;
|
reg = <0x0 0xff910000 0x0 0x4000>;
|
||||||
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>;
|
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
clocks = <&cru SCLK_ISP0>,
|
clocks = <&cru SCLK_ISP0>,
|
||||||
<&cru ACLK_ISP0>, <&cru ACLK_ISP0_WRAPPER>,
|
<&cru ACLK_ISP0_WRAPPER>,
|
||||||
<&cru HCLK_ISP0>, <&cru HCLK_ISP0_WRAPPER>;
|
<&cru HCLK_ISP0_WRAPPER>;
|
||||||
clock-names = "clk_isp",
|
clock-names = "isp", "aclk", "hclk";
|
||||||
"aclk_isp", "aclk_isp_wrap",
|
|
||||||
"hclk_isp", "hclk_isp_wrap";
|
|
||||||
power-domains = <&power RK3399_PD_ISP0>;
|
|
||||||
iommus = <&isp0_mmu>;
|
iommus = <&isp0_mmu>;
|
||||||
phys = <&dphy>;
|
phys = <&dphy>;
|
||||||
phy-names = "dphy";
|
phy-names = "dphy";
|
||||||
|
power-domains = <&power RK3399_PD_ISP0>;
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
port@0 {
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
reg = <0>;
|
|
||||||
|
|
||||||
mipi_in_wcam: endpoint@0 {
|
mipi_in_wcam: endpoint@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
@@ -160,8 +184,7 @@ examples:
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c7: i2c@ff160000 {
|
i2c7: i2c {
|
||||||
clock-frequency = <400000>;
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
@@ -44,6 +44,43 @@ properties:
|
|||||||
bindings defined in
|
bindings defined in
|
||||||
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
endpoint:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
properties:
|
||||||
|
bus-type:
|
||||||
|
enum: [5, 6]
|
||||||
|
default: 5
|
||||||
|
|
||||||
|
bus-width:
|
||||||
|
enum: [8, 10, 12, 14]
|
||||||
|
default: 8
|
||||||
|
|
||||||
|
remote-endpoint: true
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
bus-type:
|
||||||
|
const: 6
|
||||||
|
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
hsync-active: false
|
||||||
|
vsync-active: false
|
||||||
|
bus-width:
|
||||||
|
enum: [8]
|
||||||
|
|
||||||
|
required:
|
||||||
|
- remote-endpoint
|
||||||
|
- bus-type
|
||||||
|
- pclk-sample
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
@@ -75,6 +112,7 @@ examples:
|
|||||||
port {
|
port {
|
||||||
dcmi_0: endpoint {
|
dcmi_0: endpoint {
|
||||||
remote-endpoint = <&ov5640_0>;
|
remote-endpoint = <&ov5640_0>;
|
||||||
|
bus-type = <5>;
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
hsync-active = <0>;
|
hsync-active = <0>;
|
||||||
vsync-active = <0>;
|
vsync-active = <0>;
|
||||||
|
|||||||
@@ -132,3 +132,16 @@ used to obtain device's power state after the power state transition:
|
|||||||
The function returns a non-zero value if it succeeded getting the power count or
|
The function returns a non-zero value if it succeeded getting the power count or
|
||||||
runtime PM was disabled, in either of which cases the driver may proceed to
|
runtime PM was disabled, in either of which cases the driver may proceed to
|
||||||
access the device.
|
access the device.
|
||||||
|
|
||||||
|
Controls
|
||||||
|
--------
|
||||||
|
|
||||||
|
For camera sensors that are connected to a bus where transmitter and receiver
|
||||||
|
require common configuration set by drivers, such as CSI-2 or parallel (BT.601
|
||||||
|
or BT.656) bus, the ``V4L2_CID_LINK_FREQ`` control is mandatory on transmitter
|
||||||
|
drivers. Receiver drivers can use the ``V4L2_CID_LINK_FREQ`` to query the
|
||||||
|
frequency used on the bus.
|
||||||
|
|
||||||
|
The transmitter drivers should also implement ``V4L2_CID_PIXEL_RATE`` control in
|
||||||
|
order to tell the maximum pixel rate to the receiver. This is required on raw
|
||||||
|
camera sensors.
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ To enable/disable the 'monitor all' mode::
|
|||||||
int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable);
|
int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable);
|
||||||
|
|
||||||
If enabled, then the adapter should be put in a mode to also monitor messages
|
If enabled, then the adapter should be put in a mode to also monitor messages
|
||||||
that not for us. Not all hardware supports this and this function is only
|
that are not for us. Not all hardware supports this and this function is only
|
||||||
called if the CEC_CAP_MONITOR_ALL capability is set. This callback is optional
|
called if the CEC_CAP_MONITOR_ALL capability is set. This callback is optional
|
||||||
(some hardware may always be in 'monitor all' mode).
|
(some hardware may always be in 'monitor all' mode).
|
||||||
|
|
||||||
@@ -335,7 +335,7 @@ So this must work:
|
|||||||
$ cat einj.txt >error-inj
|
$ cat einj.txt >error-inj
|
||||||
|
|
||||||
The first callback is called when this file is read and it should show the
|
The first callback is called when this file is read and it should show the
|
||||||
the current error injection state::
|
current error injection state::
|
||||||
|
|
||||||
int (*error_inj_show)(struct cec_adapter *adap, struct seq_file *sf);
|
int (*error_inj_show)(struct cec_adapter *adap, struct seq_file *sf);
|
||||||
|
|
||||||
|
|||||||
@@ -28,10 +28,9 @@ interface elements must be present on the sub-device represents the
|
|||||||
CSI-2 transmitter.
|
CSI-2 transmitter.
|
||||||
|
|
||||||
The V4L2_CID_LINK_FREQ control is used to tell the receiver driver the
|
The V4L2_CID_LINK_FREQ control is used to tell the receiver driver the
|
||||||
frequency (and not the symbol rate) of the link. The
|
frequency (and not the symbol rate) of the link. The V4L2_CID_PIXEL_RATE
|
||||||
V4L2_CID_PIXEL_RATE is may be used by the receiver to obtain the pixel
|
control may be used by the receiver to obtain the pixel rate the transmitter
|
||||||
rate the transmitter uses. The
|
uses. The :c:type:`v4l2_subdev_video_ops`->s_stream() callback provides an
|
||||||
:c:type:`v4l2_subdev_video_ops`->s_stream() callback provides an
|
|
||||||
ability to start and stop the stream.
|
ability to start and stop the stream.
|
||||||
|
|
||||||
The value of the V4L2_CID_PIXEL_RATE is calculated as follows::
|
The value of the V4L2_CID_PIXEL_RATE is calculated as follows::
|
||||||
|
|||||||
1041
Documentation/driver-api/media/drivers/ccs/ccs-regs.asc
Normal file
1041
Documentation/driver-api/media/drivers/ccs/ccs-regs.asc
Normal file
File diff suppressed because it is too large
Load Diff
82
Documentation/driver-api/media/drivers/ccs/ccs.rst
Normal file
82
Documentation/driver-api/media/drivers/ccs/ccs.rst
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0-only OR BSD-3-Clause
|
||||||
|
|
||||||
|
.. include:: <isonum.txt>
|
||||||
|
|
||||||
|
MIPI CCS camera sensor driver
|
||||||
|
=============================
|
||||||
|
|
||||||
|
The MIPI CCS camera sensor driver is a generic driver for `MIPI CCS
|
||||||
|
<https://www.mipi.org/specifications/camera-command-set>`_ compliant
|
||||||
|
camera sensors. It exposes three sub-devices representing the pixel array,
|
||||||
|
the binner and the scaler.
|
||||||
|
|
||||||
|
As the capabilities of individual devices vary, the driver exposes
|
||||||
|
interfaces based on the capabilities that exist in hardware.
|
||||||
|
|
||||||
|
Pixel Array sub-device
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
The pixel array sub-device represents the camera sensor's pixel matrix, as well
|
||||||
|
as analogue crop functionality present in many compliant devices. The analogue
|
||||||
|
crop is configured using the ``V4L2_SEL_TGT_CROP`` on the source pad (0) of the
|
||||||
|
entity. The size of the pixel matrix can be obtained by getting the
|
||||||
|
``V4L2_SEL_TGT_NATIVE_SIZE`` target.
|
||||||
|
|
||||||
|
Binner
|
||||||
|
------
|
||||||
|
|
||||||
|
The binner sub-device represents the binning functionality on the sensor. For
|
||||||
|
that purpose, selection target ``V4L2_SEL_TGT_COMPOSE`` is supported on the
|
||||||
|
sink pad (0).
|
||||||
|
|
||||||
|
Additionally, if a device has no scaler or digital crop functionality, the
|
||||||
|
source pad (1) expses another digital crop selection rectangle that can only
|
||||||
|
crop at the end of the lines and frames.
|
||||||
|
|
||||||
|
Scaler
|
||||||
|
------
|
||||||
|
|
||||||
|
The scaler sub-device represents the digital crop and scaling functionality of
|
||||||
|
the sensor. The V4L2 selection target ``V4L2_SEL_TGT_CROP`` is used to
|
||||||
|
configure the digital crop on the sink pad (0) when digital crop is supported.
|
||||||
|
Scaling is configured using selection target ``V4L2_SEL_TGT_COMPOSE`` on the
|
||||||
|
sink pad (0) as well.
|
||||||
|
|
||||||
|
Additionally, if the scaler sub-device exists, its source pad (1) exposes
|
||||||
|
another digital crop selection rectangle that can only crop at the end of the
|
||||||
|
lines and frames.
|
||||||
|
|
||||||
|
Digital and analogue crop
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Digital crop functionality is referred to as cropping that effectively works by
|
||||||
|
dropping some data on the floor. Analogue crop, on the other hand, means that
|
||||||
|
the cropped information is never retrieved. In case of camera sensors, the
|
||||||
|
analogue data is never read from the pixel matrix that are outside the
|
||||||
|
configured selection rectangle that designates crop. The difference has an
|
||||||
|
effect in device timing and likely also in power consumption.
|
||||||
|
|
||||||
|
Register definition generator
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
The ccs-regs.asc file contains MIPI CCS register definitions that are used
|
||||||
|
to produce C source code files for definitions that can be better used by
|
||||||
|
programs written in C language. As there are many dependencies between the
|
||||||
|
produced files, please do not modify them manually as it's error-prone and
|
||||||
|
in vain, but instead change the script producing them.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
Conventionally the script is called this way to update the CCS driver
|
||||||
|
definitions:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
$ Documentation/driver-api/media/drivers/ccs/mk-ccs-regs -k \
|
||||||
|
-e drivers/media/i2c/ccs/ccs-regs.h \
|
||||||
|
-L drivers/media/i2c/ccs/ccs-limits.h \
|
||||||
|
-l drivers/media/i2c/ccs/ccs-limits.c \
|
||||||
|
-c Documentation/driver-api/media/drivers/ccs/ccs-regs.asc
|
||||||
|
|
||||||
|
**Copyright** |copy| 2020 Intel Corporation
|
||||||
433
Documentation/driver-api/media/drivers/ccs/mk-ccs-regs
Executable file
433
Documentation/driver-api/media/drivers/ccs/mk-ccs-regs
Executable file
@@ -0,0 +1,433 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-3-Clause
|
||||||
|
# Copyright (C) 2019--2020 Intel Corporation
|
||||||
|
|
||||||
|
use Getopt::Long qw(:config no_ignore_case);
|
||||||
|
use File::Basename;
|
||||||
|
|
||||||
|
my $ccsregs = "ccs-regs.asc";
|
||||||
|
my $header;
|
||||||
|
my $regarray;
|
||||||
|
my $limitc;
|
||||||
|
my $limith;
|
||||||
|
my $kernel;
|
||||||
|
my $help;
|
||||||
|
|
||||||
|
GetOptions("ccsregs|c=s" => \$ccsregs,
|
||||||
|
"header|e=s" => \$header,
|
||||||
|
"regarray|r=s" => \$regarray,
|
||||||
|
"limitc|l=s" => \$limitc,
|
||||||
|
"limith|L=s" => \$limith,
|
||||||
|
"kernel|k" => \$kernel,
|
||||||
|
"help|h" => \$help) or die "can't parse options";
|
||||||
|
|
||||||
|
$help = 1 if ! defined $header || ! defined $limitc || ! defined $limith;
|
||||||
|
|
||||||
|
if (defined $help) {
|
||||||
|
print <<EOH
|
||||||
|
$0 - Create CCS register definitions for C
|
||||||
|
|
||||||
|
usage: $0 -c ccs-regs.asc -e header -r regarray -l limit-c -L limit-header [-k]
|
||||||
|
|
||||||
|
-c ccs register file
|
||||||
|
-e header file name
|
||||||
|
-r register description array file name
|
||||||
|
-l limit and capability array file name
|
||||||
|
-L limit and capability header file name
|
||||||
|
-k generate files for kernel space consumption
|
||||||
|
EOH
|
||||||
|
;
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $lh_hdr = ! defined $kernel
|
||||||
|
? '#include "ccs-os.h"' . "\n"
|
||||||
|
: "#include <linux/bits.h>\n#include <linux/types.h>\n";
|
||||||
|
my $uint32_t = ! defined $kernel ? 'uint32_t' : 'u32';
|
||||||
|
my $uint16_t = ! defined $kernel ? 'uint16_t' : 'u16';
|
||||||
|
|
||||||
|
open(my $R, "< $ccsregs") or die "can't open $ccsregs";
|
||||||
|
|
||||||
|
open(my $H, "> $header") or die "can't open $header";
|
||||||
|
my $A;
|
||||||
|
if (defined $regarray) {
|
||||||
|
open($A, "> $regarray") or die "can't open $regarray";
|
||||||
|
}
|
||||||
|
open(my $LC, "> $limitc") or die "can't open $limitc";
|
||||||
|
open(my $LH, "> $limith") or die "can't open $limith";
|
||||||
|
|
||||||
|
my %this;
|
||||||
|
|
||||||
|
sub is_limit_reg($) {
|
||||||
|
my $addr = hex $_[0];
|
||||||
|
|
||||||
|
return 0 if $addr < 0x40; # weed out status registers
|
||||||
|
return 0 if $addr >= 0x100 && $addr < 0xfff; # weed out configuration registers
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $uc_header = basename uc $header;
|
||||||
|
$uc_header =~ s/[^A-Z0-9]/_/g;
|
||||||
|
|
||||||
|
my $copyright = "/* Copyright (C) 2019--2020 Intel Corporation */\n";
|
||||||
|
my $license = "SPDX-License-Identifier: GPL-2.0-only OR BSD-3-Clause";
|
||||||
|
|
||||||
|
for my $fh ($A, $LC) {
|
||||||
|
print $fh "// $license\n$copyright\n" if defined $fh;
|
||||||
|
}
|
||||||
|
|
||||||
|
for my $fh ($H, $LH) {
|
||||||
|
print $fh "/* $license */\n$copyright\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub bit_def($) {
|
||||||
|
my $bit = shift @_;
|
||||||
|
|
||||||
|
return "BIT($bit)" if defined $kernel;
|
||||||
|
return "(1U << $bit)" if $bit =~ /^[a-zA-Z0-9_]+$/;
|
||||||
|
return "(1U << ($bit))";
|
||||||
|
}
|
||||||
|
|
||||||
|
print $H <<EOF
|
||||||
|
#ifndef __${uc_header}__
|
||||||
|
#define __${uc_header}__
|
||||||
|
|
||||||
|
EOF
|
||||||
|
;
|
||||||
|
|
||||||
|
print $H "#include <linux/bits.h>\n\n" if defined $kernel;
|
||||||
|
|
||||||
|
print $H <<EOF
|
||||||
|
#define CCS_FL_BASE 16
|
||||||
|
EOF
|
||||||
|
;
|
||||||
|
|
||||||
|
print $H "#define CCS_FL_16BIT " . bit_def("CCS_FL_BASE") . "\n";
|
||||||
|
print $H "#define CCS_FL_32BIT " . bit_def("CCS_FL_BASE + 1") . "\n";
|
||||||
|
print $H "#define CCS_FL_FLOAT_IREAL " . bit_def("CCS_FL_BASE + 2") . "\n";
|
||||||
|
print $H "#define CCS_FL_IREAL " . bit_def("CCS_FL_BASE + 3") . "\n";
|
||||||
|
|
||||||
|
print $H <<EOF
|
||||||
|
#define CCS_R_ADDR(r) ((r) & 0xffff)
|
||||||
|
|
||||||
|
EOF
|
||||||
|
;
|
||||||
|
|
||||||
|
print $A <<EOF
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "ccs-extra.h"
|
||||||
|
#include "ccs-regs.h"
|
||||||
|
|
||||||
|
EOF
|
||||||
|
if defined $A;
|
||||||
|
|
||||||
|
my $uc_limith = basename uc $limith;
|
||||||
|
$uc_limith =~ s/[^A-Z0-9]/_/g;
|
||||||
|
|
||||||
|
print $LH <<EOF
|
||||||
|
#ifndef __${uc_limith}__
|
||||||
|
#define __${uc_limith}__
|
||||||
|
|
||||||
|
$lh_hdr
|
||||||
|
struct ccs_limit {
|
||||||
|
$uint32_t reg;
|
||||||
|
$uint16_t size;
|
||||||
|
$uint16_t flags;
|
||||||
|
const char *name;
|
||||||
|
};
|
||||||
|
|
||||||
|
EOF
|
||||||
|
;
|
||||||
|
print $LH "#define CCS_L_FL_SAME_REG " . bit_def(0) . "\n\n";
|
||||||
|
|
||||||
|
print $LH <<EOF
|
||||||
|
extern const struct ccs_limit ccs_limits[];
|
||||||
|
|
||||||
|
EOF
|
||||||
|
;
|
||||||
|
|
||||||
|
print $LC <<EOF
|
||||||
|
#include "ccs-limits.h"
|
||||||
|
#include "ccs-regs.h"
|
||||||
|
|
||||||
|
const struct ccs_limit ccs_limits[] = {
|
||||||
|
EOF
|
||||||
|
;
|
||||||
|
|
||||||
|
my $limitcount = 0;
|
||||||
|
my $argdescs;
|
||||||
|
my $reglist = "const struct ccs_reg_desc ccs_reg_desc[] = {\n";
|
||||||
|
|
||||||
|
sub name_split($$) {
|
||||||
|
my ($name, $addr) = @_;
|
||||||
|
my $args;
|
||||||
|
|
||||||
|
$name =~ /([^\(]+?)(\(.*)/;
|
||||||
|
($name, $args) = ($1, $2);
|
||||||
|
$args = [split /,\s*/, $args];
|
||||||
|
foreach my $t (@$args) {
|
||||||
|
$t =~ s/[\(\)]//g;
|
||||||
|
$t =~ s/\//\\\//g;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ($name, $addr, $args);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tabconv($) {
|
||||||
|
$_ = shift;
|
||||||
|
|
||||||
|
my @l = split "\n", $_;
|
||||||
|
|
||||||
|
map {
|
||||||
|
s/ {8,8}/\t/g;
|
||||||
|
s/\t\K +//;
|
||||||
|
} @l;
|
||||||
|
|
||||||
|
return (join "\n", @l) . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub elem_size(@) {
|
||||||
|
my @flags = @_;
|
||||||
|
|
||||||
|
return 2 if grep /^16$/, @flags;
|
||||||
|
return 4 if grep /^32$/, @flags;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub arr_size($) {
|
||||||
|
my $this = $_[0];
|
||||||
|
my $size = $this->{elsize};
|
||||||
|
my $h = $this->{argparams};
|
||||||
|
|
||||||
|
foreach my $arg (@{$this->{args}}) {
|
||||||
|
my $apref = $h->{$arg};
|
||||||
|
|
||||||
|
$size *= $apref->{max} - $apref->{min} + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $size;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub print_args($$$) {
|
||||||
|
my ($this, $postfix, $is_same_reg) = @_;
|
||||||
|
my ($args, $argparams, $name) =
|
||||||
|
($this->{args}, $this->{argparams}, $this->{name});
|
||||||
|
my $varname = "ccs_reg_arg_" . (lc $name) . $postfix;
|
||||||
|
my @mins;
|
||||||
|
my @sorted_args = @{$this->{sorted_args}};
|
||||||
|
my $lim_arg;
|
||||||
|
my $size = arr_size($this);
|
||||||
|
|
||||||
|
$argdescs .= "static const struct ccs_reg_arg " . $varname . "[] = {\n";
|
||||||
|
|
||||||
|
foreach my $sorted_arg (@sorted_args) {
|
||||||
|
push @mins, $argparams->{$sorted_arg}->{min};
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $sorted_arg (@sorted_args) {
|
||||||
|
my $h = $argparams->{$sorted_arg};
|
||||||
|
|
||||||
|
$argdescs .= "\t{ \"$sorted_arg\", $h->{min}, $h->{max}, $h->{elsize} },\n";
|
||||||
|
|
||||||
|
$lim_arg .= defined $lim_arg ? ", $h->{min}" : "$h->{min}";
|
||||||
|
}
|
||||||
|
|
||||||
|
$argdescs .= "};\n\n";
|
||||||
|
|
||||||
|
$reglist .= "\t{ CCS_R_" . (uc $name) . "(" . (join ",", (@mins)) .
|
||||||
|
"), $size, sizeof($varname) / sizeof(*$varname)," .
|
||||||
|
" \"" . (lc $name) . "\", $varname },\n";
|
||||||
|
|
||||||
|
print $LC tabconv sprintf "\t{ CCS_R_" . (uc $name) . "($lim_arg), " .
|
||||||
|
$size . ", " . ($is_same_reg ? "CCS_L_FL_SAME_REG" : "0") .
|
||||||
|
", \"$name" . (defined $this->{discontig} ? " $lim_arg" : "") . "\" },\n"
|
||||||
|
if is_limit_reg $this->{base_addr};
|
||||||
|
}
|
||||||
|
|
||||||
|
my $hdr_data;
|
||||||
|
|
||||||
|
while (<$R>) {
|
||||||
|
chop;
|
||||||
|
s/^\s*//;
|
||||||
|
next if /^[#;]/ || /^$/;
|
||||||
|
if (s/^-\s*//) {
|
||||||
|
if (s/^b\s*//) {
|
||||||
|
my ($bit, $addr) = split /\t+/;
|
||||||
|
$bit = uc $bit;
|
||||||
|
$hdr_data .= sprintf "#define %-62s %s", "CCS_" . (uc ${this{name}}) ."_$bit", bit_def($addr) . "\n";
|
||||||
|
} elsif (s/^f\s*//) {
|
||||||
|
s/[,\.-]/_/g;
|
||||||
|
my @a = split /\s+/;
|
||||||
|
my ($msb, $lsb, $this_field) = reverse @a;
|
||||||
|
@a = ( { "name" => "SHIFT", "addr" => $lsb, "fmt" => "%uU", },
|
||||||
|
{ "name" => "MASK", "addr" => (1 << ($msb + 1)) - 1 - ((1 << $lsb) - 1), "fmt" => "0x%" . join(".", ($this{"elsize"} >> 2) x 2) . "x" } );
|
||||||
|
$this{"field"} = $this_field;
|
||||||
|
foreach my $ar (@a) {
|
||||||
|
#print $ar->{fmt}."\n";
|
||||||
|
$hdr_data .= sprintf "#define %-62s " . $ar->{"fmt"} . "\n", "CCS_" . (uc $this{"name"}) . (defined $this_field ? "_" . uc $this_field : "") . "_" . $ar->{"name"}, $ar->{"addr"} . "\n";
|
||||||
|
}
|
||||||
|
} elsif (s/^e\s*//) {
|
||||||
|
s/[,\.-]/_/g;
|
||||||
|
my ($enum, $addr) = split /\s+/;
|
||||||
|
$enum = uc $enum;
|
||||||
|
$hdr_data .= sprintf "#define %-62s %s", "CCS_" . (uc ${this{name}}) . (defined $this{"field"} ? "_" . uc $this{"field"} : "") ."_$enum", $addr . ($addr =~ /0x/i ? "" : "U") . "\n";
|
||||||
|
} elsif (s/^l\s*//) {
|
||||||
|
my ($arg, $min, $max, $elsize, @discontig) = split /\s+/;
|
||||||
|
my $size;
|
||||||
|
|
||||||
|
foreach my $num ($min, $max) {
|
||||||
|
$num = hex $num if $num =~ /0x/i;
|
||||||
|
}
|
||||||
|
|
||||||
|
$hdr_data .= sprintf "#define %-62s %s", "CCS_LIM_" . (uc ${this{name}} . "_MIN_$arg"), $min . ($min =~ /0x/i ? "" : "U") . "\n";
|
||||||
|
$hdr_data .= sprintf "#define %-62s %s", "CCS_LIM_" . (uc ${this{name}} . "_MAX_$arg"), $max . ($max =~ /0x/i ? "" : "U") . "\n";
|
||||||
|
|
||||||
|
my $h = $this{argparams};
|
||||||
|
|
||||||
|
$h->{$arg} = { "min" => $min,
|
||||||
|
"max" => $max,
|
||||||
|
"elsize" => $elsize =~ /^0x/ ? hex $elsize : $elsize,
|
||||||
|
"discontig" => \@discontig };
|
||||||
|
|
||||||
|
$this{discontig} = $arg if @discontig;
|
||||||
|
|
||||||
|
next if $#{$this{args}} + 1 != scalar keys %{$this{argparams}};
|
||||||
|
|
||||||
|
my $reg_formula = "($this{addr}";
|
||||||
|
my $lim_formula;
|
||||||
|
|
||||||
|
foreach my $arg (@{$this{args}}) {
|
||||||
|
my $d = $h->{$arg}->{discontig};
|
||||||
|
my $times = $h->{$arg}->{elsize} != 1 ?
|
||||||
|
" * " . $h->{$arg}->{elsize} : "";
|
||||||
|
|
||||||
|
if (@$d) {
|
||||||
|
my ($lim, $offset) = split /,/, $d->[0];
|
||||||
|
|
||||||
|
$reg_formula .= " + (($arg) < $lim ? ($arg)$times : $offset + (($arg) - $lim)$times)";
|
||||||
|
} else {
|
||||||
|
$reg_formula .= " + ($arg)$times";
|
||||||
|
}
|
||||||
|
|
||||||
|
$lim_formula .= (defined $lim_formula ? " + " : "") . "($arg)$times";
|
||||||
|
}
|
||||||
|
|
||||||
|
$reg_formula .= ")\n";
|
||||||
|
$lim_formula =~ s/^\(([a-z0-9]+)\)$/$1/i;
|
||||||
|
|
||||||
|
print $H tabconv sprintf("#define %-62s %s", "CCS_R_" . (uc $this{name}) .
|
||||||
|
$this{arglist}, $reg_formula);
|
||||||
|
|
||||||
|
print $H tabconv $hdr_data;
|
||||||
|
undef $hdr_data;
|
||||||
|
|
||||||
|
# Sort arguments in descending order by size
|
||||||
|
@{$this{sorted_args}} = sort {
|
||||||
|
$h->{$a}->{elsize} <= $h->{$b}->{elsize}
|
||||||
|
} @{$this{args}};
|
||||||
|
|
||||||
|
if (defined $this{discontig}) {
|
||||||
|
my $da = $this{argparams}->{$this{discontig}};
|
||||||
|
my ($first_discontig) = split /,/, $da->{discontig}->[0];
|
||||||
|
my $max = $da->{max};
|
||||||
|
|
||||||
|
$da->{max} = $first_discontig - 1;
|
||||||
|
print_args(\%this, "", 0);
|
||||||
|
|
||||||
|
$da->{min} = $da->{max} + 1;
|
||||||
|
$da->{max} = $max;
|
||||||
|
print_args(\%this, $first_discontig, 1);
|
||||||
|
} else {
|
||||||
|
print_args(\%this, "", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
next unless is_limit_reg $this{base_addr};
|
||||||
|
|
||||||
|
print $LH tabconv sprintf "#define %-63s%s\n",
|
||||||
|
"CCS_L_" . (uc $this{name}) . "_OFFSET(" .
|
||||||
|
(join ", ", @{$this{args}}) . ")", "($lim_formula)";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! @{$this{args}}) {
|
||||||
|
print $H tabconv($hdr_data);
|
||||||
|
undef $hdr_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
my ($name, $addr, @flags) = split /\t+/, $_;
|
||||||
|
my $args = [];
|
||||||
|
|
||||||
|
my $sp;
|
||||||
|
|
||||||
|
($name, $addr, $args) = name_split($name, $addr) if /\(.*\)/;
|
||||||
|
|
||||||
|
$name =~ s/[,\.-]/_/g;
|
||||||
|
|
||||||
|
my $flagstring = "";
|
||||||
|
my $size = elem_size(@flags);
|
||||||
|
$flagstring .= "| CCS_FL_16BIT " if $size eq "2";
|
||||||
|
$flagstring .= "| CCS_FL_32BIT " if $size eq "4";
|
||||||
|
$flagstring .= "| CCS_FL_FLOAT_IREAL " if grep /^float_ireal$/, @flags;
|
||||||
|
$flagstring .= "| CCS_FL_IREAL " if grep /^ireal$/, @flags;
|
||||||
|
$flagstring =~ s/^\| //;
|
||||||
|
$flagstring =~ s/ $//;
|
||||||
|
$flagstring = "($flagstring)" if $flagstring =~ /\|/;
|
||||||
|
my $base_addr = $addr;
|
||||||
|
$addr = "($addr | $flagstring)" if $flagstring ne "";
|
||||||
|
|
||||||
|
my $arglist = @$args ? "(" . (join ", ", @$args) . ")" : "";
|
||||||
|
$hdr_data .= sprintf "#define %-62s %s\n", "CCS_R_" . (uc $name), $addr
|
||||||
|
if !@$args;
|
||||||
|
|
||||||
|
$name =~ s/\(.*//;
|
||||||
|
|
||||||
|
%this = ( name => $name,
|
||||||
|
addr => $addr,
|
||||||
|
base_addr => $base_addr,
|
||||||
|
argparams => {},
|
||||||
|
args => $args,
|
||||||
|
arglist => $arglist,
|
||||||
|
elsize => $size,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!@$args) {
|
||||||
|
$reglist .= "\t{ CCS_R_" . (uc $name) . ", 1, 0, \"" . (lc $name) . "\", NULL },\n";
|
||||||
|
print $H tabconv $hdr_data;
|
||||||
|
undef $hdr_data;
|
||||||
|
|
||||||
|
print $LC tabconv sprintf "\t{ CCS_R_" . (uc $name) . ", " .
|
||||||
|
$this{elsize} . ", 0, \"$name\" },\n"
|
||||||
|
if is_limit_reg $this{base_addr};
|
||||||
|
}
|
||||||
|
|
||||||
|
print $LH tabconv sprintf "#define %-63s%s\n",
|
||||||
|
"CCS_L_" . (uc $this{name}), $limitcount++
|
||||||
|
if is_limit_reg $this{base_addr};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined $A) {
|
||||||
|
print $A $argdescs, $reglist;
|
||||||
|
|
||||||
|
print $A "\t{ 0 }\n";
|
||||||
|
|
||||||
|
print $A "};\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
print $H "\n#endif /* __${uc_header}__ */\n";
|
||||||
|
|
||||||
|
print $LH tabconv sprintf "#define %-63s%s\n", "CCS_L_LAST", $limitcount;
|
||||||
|
|
||||||
|
print $LH "\n#endif /* __${uc_limith}__ */\n";
|
||||||
|
|
||||||
|
print $LC "\t{ 0 } /* Guardian */\n";
|
||||||
|
print $LC "};\n";
|
||||||
|
|
||||||
|
close($R);
|
||||||
|
close($H);
|
||||||
|
close($A) if defined $A;
|
||||||
|
close($LC);
|
||||||
|
close($LH);
|
||||||
@@ -26,6 +26,7 @@ Video4Linux (V4L) drivers
|
|||||||
tuners
|
tuners
|
||||||
vimc-devel
|
vimc-devel
|
||||||
zoran
|
zoran
|
||||||
|
ccs/ccs
|
||||||
|
|
||||||
|
|
||||||
Digital TV drivers
|
Digital TV drivers
|
||||||
|
|||||||
@@ -244,7 +244,7 @@ Carrier Signal to Noise ratio (:ref:`DTV-STAT-CNR`)
|
|||||||
Having it available after inner FEC is more common.
|
Having it available after inner FEC is more common.
|
||||||
|
|
||||||
Bit counts post-FEC (:ref:`DTV-STAT-POST-ERROR-BIT-COUNT` and :ref:`DTV-STAT-POST-TOTAL-BIT-COUNT`)
|
Bit counts post-FEC (:ref:`DTV-STAT-POST-ERROR-BIT-COUNT` and :ref:`DTV-STAT-POST-TOTAL-BIT-COUNT`)
|
||||||
- Those counters measure the number of bits and bit errors errors after
|
- Those counters measure the number of bits and bit errors after
|
||||||
the forward error correction (FEC) on the inner coding block
|
the forward error correction (FEC) on the inner coding block
|
||||||
(after Viterbi, LDPC or other inner code).
|
(after Viterbi, LDPC or other inner code).
|
||||||
|
|
||||||
@@ -253,7 +253,7 @@ Bit counts post-FEC (:ref:`DTV-STAT-POST-ERROR-BIT-COUNT` and :ref:`DTV-STAT-POS
|
|||||||
see :c:type:`fe_status`).
|
see :c:type:`fe_status`).
|
||||||
|
|
||||||
Bit counts pre-FEC (:ref:`DTV-STAT-PRE-ERROR-BIT-COUNT` and :ref:`DTV-STAT-PRE-TOTAL-BIT-COUNT`)
|
Bit counts pre-FEC (:ref:`DTV-STAT-PRE-ERROR-BIT-COUNT` and :ref:`DTV-STAT-PRE-TOTAL-BIT-COUNT`)
|
||||||
- Those counters measure the number of bits and bit errors errors before
|
- Those counters measure the number of bits and bit errors before
|
||||||
the forward error correction (FEC) on the inner coding block
|
the forward error correction (FEC) on the inner coding block
|
||||||
(before Viterbi, LDPC or other inner code).
|
(before Viterbi, LDPC or other inner code).
|
||||||
|
|
||||||
@@ -263,7 +263,7 @@ Bit counts pre-FEC (:ref:`DTV-STAT-PRE-ERROR-BIT-COUNT` and :ref:`DTV-STAT-PRE-T
|
|||||||
after ``FE_HAS_VITERBI``, see :c:type:`fe_status`).
|
after ``FE_HAS_VITERBI``, see :c:type:`fe_status`).
|
||||||
|
|
||||||
Block counts (:ref:`DTV-STAT-ERROR-BLOCK-COUNT` and :ref:`DTV-STAT-TOTAL-BLOCK-COUNT`)
|
Block counts (:ref:`DTV-STAT-ERROR-BLOCK-COUNT` and :ref:`DTV-STAT-TOTAL-BLOCK-COUNT`)
|
||||||
- Those counters measure the number of blocks and block errors errors after
|
- Those counters measure the number of blocks and block errors after
|
||||||
the forward error correction (FEC) on the inner coding block
|
the forward error correction (FEC) on the inner coding block
|
||||||
(before Viterbi, LDPC or other inner code).
|
(before Viterbi, LDPC or other inner code).
|
||||||
|
|
||||||
|
|||||||
@@ -335,7 +335,7 @@ current and new values:
|
|||||||
union v4l2_ctrl_ptr p_new;
|
union v4l2_ctrl_ptr p_new;
|
||||||
union v4l2_ctrl_ptr p_cur;
|
union v4l2_ctrl_ptr p_cur;
|
||||||
|
|
||||||
If the control has a simple s32 type type, then:
|
If the control has a simple s32 type, then:
|
||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
@@ -349,7 +349,7 @@ Within the control ops you can freely use these. The val and cur.val speak for
|
|||||||
themselves. The p_char pointers point to character buffers of length
|
themselves. The p_char pointers point to character buffers of length
|
||||||
ctrl->maximum + 1, and are always 0-terminated.
|
ctrl->maximum + 1, and are always 0-terminated.
|
||||||
|
|
||||||
Unless the control is marked volatile the p_cur field points to the the
|
Unless the control is marked volatile the p_cur field points to the
|
||||||
current cached control value. When you create a new control this value is made
|
current cached control value. When you create a new control this value is made
|
||||||
identical to the default value. After calling v4l2_ctrl_handler_setup() this
|
identical to the default value. After calling v4l2_ctrl_handler_setup() this
|
||||||
value is passed to the hardware. It is generally a good idea to call this
|
value is passed to the hardware. It is generally a good idea to call this
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ types exist:
|
|||||||
========================== ==================== ==============================
|
========================== ==================== ==============================
|
||||||
|
|
||||||
The last argument gives you a certain amount of control over the device
|
The last argument gives you a certain amount of control over the device
|
||||||
device node number used (i.e. the X in ``videoX``). Normally you will pass -1
|
node number used (i.e. the X in ``videoX``). Normally you will pass -1
|
||||||
to let the v4l2 framework pick the first free number. But sometimes users
|
to let the v4l2 framework pick the first free number. But sometimes users
|
||||||
want to select a specific node number. It is common that drivers allow
|
want to select a specific node number. It is common that drivers allow
|
||||||
the user to select a specific device node number through a driver module
|
the user to select a specific device node number through a driver module
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ Available follower modes are:
|
|||||||
in combination with :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>`, otherwise
|
in combination with :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>`, otherwise
|
||||||
the ``EINVAL`` error code will be returned. In 'monitor all' mode all messages
|
the ``EINVAL`` error code will be returned. In 'monitor all' mode all messages
|
||||||
this CEC device transmits and all messages it receives, including
|
this CEC device transmits and all messages it receives, including
|
||||||
directed messages for other CEC devices will be reported. This is
|
directed messages for other CEC devices, will be reported. This is
|
||||||
very useful for debugging, but not all devices support this. This
|
very useful for debugging, but not all devices support this. This
|
||||||
mode requires that the :ref:`CEC_CAP_MONITOR_ALL <CEC-CAP-MONITOR-ALL>` capability is set,
|
mode requires that the :ref:`CEC_CAP_MONITOR_ALL <CEC-CAP-MONITOR-ALL>` capability is set,
|
||||||
otherwise the ``EINVAL`` error code is returned. This is only allowed if
|
otherwise the ``EINVAL`` error code is returned. This is only allowed if
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Digital TV Audio Device
|
|||||||
|
|
||||||
The Digital TV audio device controls the MPEG2 audio decoder of the Digital
|
The Digital TV audio device controls the MPEG2 audio decoder of the Digital
|
||||||
TV hardware. It can be accessed through ``/dev/dvb/adapter?/audio?``. Data
|
TV hardware. It can be accessed through ``/dev/dvb/adapter?/audio?``. Data
|
||||||
types and and ioctl definitions can be accessed by including
|
types and ioctl definitions can be accessed by including
|
||||||
``linux/dvb/audio.h`` in your application.
|
``linux/dvb/audio.h`` in your application.
|
||||||
|
|
||||||
Please note that some Digital TV cards don’t have their own MPEG decoder, which
|
Please note that some Digital TV cards don’t have their own MPEG decoder, which
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ Digital TV CA Device
|
|||||||
####################
|
####################
|
||||||
|
|
||||||
The Digital TV CA device controls the conditional access hardware. It
|
The Digital TV CA device controls the conditional access hardware. It
|
||||||
can be accessed through ``/dev/dvb/adapter?/ca?``. Data types and and ioctl
|
can be accessed through ``/dev/dvb/adapter?/ca?``. Data types and ioctl
|
||||||
definitions can be accessed by including ``linux/dvb/ca.h`` in your
|
definitions can be accessed by including ``linux/dvb/ca.h`` in your
|
||||||
application.
|
application.
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ digital TV. If the driver and hardware supports, those filters are
|
|||||||
implemented at the hardware. Otherwise, the Kernel provides a software
|
implemented at the hardware. Otherwise, the Kernel provides a software
|
||||||
emulation.
|
emulation.
|
||||||
|
|
||||||
It can be accessed through ``/dev/adapter?/demux?``. Data types and and
|
It can be accessed through ``/dev/adapter?/demux?``. Data types and
|
||||||
ioctl definitions can be accessed by including ``linux/dvb/dmx.h`` in
|
ioctl definitions can be accessed by including ``linux/dvb/dmx.h`` in
|
||||||
your application.
|
your application.
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ by a :ref:`DMX_QUERYBUF` ioctl will do as well.
|
|||||||
When ``DMX_QBUF`` is called with a pointer to this structure, it locks the
|
When ``DMX_QBUF`` is called with a pointer to this structure, it locks the
|
||||||
memory pages of the buffer in physical memory, so they cannot be swapped
|
memory pages of the buffer in physical memory, so they cannot be swapped
|
||||||
out to disk. Buffers remain locked until dequeued, until the
|
out to disk. Buffers remain locked until dequeued, until the
|
||||||
the device is closed.
|
device is closed.
|
||||||
|
|
||||||
Applications call the ``DMX_DQBUF`` ioctl to dequeue a filled
|
Applications call the ``DMX_DQBUF`` ioctl to dequeue a filled
|
||||||
(capturing) buffer from the driver's outgoing queue.
|
(capturing) buffer from the driver's outgoing queue.
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ types that are present on the transport stream. This is done through
|
|||||||
virtual ``dvb?_?`` network interfaces, and will be controlled/routed via
|
virtual ``dvb?_?`` network interfaces, and will be controlled/routed via
|
||||||
the standard ip tools (like ip, route, netstat, ifconfig, etc).
|
the standard ip tools (like ip, route, netstat, ifconfig, etc).
|
||||||
|
|
||||||
Data types and and ioctl definitions are defined via ``linux/dvb/net.h``
|
Data types and ioctl definitions are defined via ``linux/dvb/net.h``
|
||||||
header.
|
header.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Digital TV Video Device
|
|||||||
|
|
||||||
The Digital TV video device controls the MPEG2 video decoder of the Digital
|
The Digital TV video device controls the MPEG2 video decoder of the Digital
|
||||||
TV hardware. It can be accessed through **/dev/dvb/adapter0/video0**. Data
|
TV hardware. It can be accessed through **/dev/dvb/adapter0/video0**. Data
|
||||||
types and and ioctl definitions can be accessed by including
|
types and ioctl definitions can be accessed by including
|
||||||
**linux/dvb/video.h** in your application.
|
**linux/dvb/video.h** in your application.
|
||||||
|
|
||||||
Note that the Digital TV video device only controls decoding of the MPEG video
|
Note that the Digital TV video device only controls decoding of the MPEG video
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ ignore symbol RC_PROTO_RCMM12
|
|||||||
ignore symbol RC_PROTO_RCMM24
|
ignore symbol RC_PROTO_RCMM24
|
||||||
ignore symbol RC_PROTO_RCMM32
|
ignore symbol RC_PROTO_RCMM32
|
||||||
ignore symbol RC_PROTO_XBOX_DVD
|
ignore symbol RC_PROTO_XBOX_DVD
|
||||||
|
ignore symbol RC_PROTO_MAX
|
||||||
|
|
||||||
# Undocumented macros
|
# Undocumented macros
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
file: uapi/v4l/keytable.c
|
file: uapi/v4l/keytable.c
|
||||||
=========================
|
=========================
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
.. _lirc_dev_intro:
|
.. _lirc_dev_intro:
|
||||||
|
|
||||||
@@ -57,12 +57,12 @@ on the following table.
|
|||||||
|
|
||||||
This mode is for both sending and receiving IR.
|
This mode is for both sending and receiving IR.
|
||||||
|
|
||||||
For transmitting (aka sending), create a ``struct lirc_scancode`` with
|
For transmitting (aka sending), create a struct lirc_scancode with
|
||||||
the desired scancode set in the ``scancode`` member, :c:type:`rc_proto`
|
the desired scancode set in the ``scancode`` member, :c:type:`rc_proto`
|
||||||
set to the :ref:`IR protocol <Remote_controllers_Protocols>`, and all other
|
set to the :ref:`IR protocol <Remote_controllers_Protocols>`, and all other
|
||||||
members set to 0. Write this struct to the lirc device.
|
members set to 0. Write this struct to the lirc device.
|
||||||
|
|
||||||
For receiving, you read ``struct lirc_scancode`` from the LIRC device.
|
For receiving, you read struct lirc_scancode from the LIRC device.
|
||||||
The ``scancode`` field is set to the received scancode and the
|
The ``scancode`` field is set to the received scancode and the
|
||||||
:ref:`IR protocol <Remote_controllers_Protocols>` is set in
|
:ref:`IR protocol <Remote_controllers_Protocols>` is set in
|
||||||
:c:type:`rc_proto`. If the scancode maps to a valid key code, this is set
|
:c:type:`rc_proto`. If the scancode maps to a valid key code, this is set
|
||||||
@@ -136,6 +136,13 @@ on the following table.
|
|||||||
|
|
||||||
This mode is used only for IR send.
|
This mode is used only for IR send.
|
||||||
|
|
||||||
|
*************************************
|
||||||
|
Data types used by LIRC_MODE_SCANCODE
|
||||||
|
*************************************
|
||||||
|
|
||||||
|
.. kernel-doc:: include/uapi/linux/lirc.h
|
||||||
|
:identifiers: lirc_scancode rc_proto
|
||||||
|
|
||||||
********************
|
********************
|
||||||
BPF based IR decoder
|
BPF based IR decoder
|
||||||
********************
|
********************
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
.. _lirc_dev:
|
.. _lirc_dev:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
.. _lirc_func:
|
.. _lirc_func:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_get_features:
|
.. _lirc_get_features:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_get_rec_mode:
|
.. _lirc_get_rec_mode:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_get_rec_resolution:
|
.. _lirc_get_rec_resolution:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_get_send_mode:
|
.. _lirc_get_send_mode:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_get_min_timeout:
|
.. _lirc_get_min_timeout:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
.. _lirc_header:
|
.. _lirc_header:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc-read:
|
.. _lirc-read:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_set_measure_carrier_mode:
|
.. _lirc_set_measure_carrier_mode:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_set_rec_carrier_range:
|
.. _lirc_set_rec_carrier_range:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_set_rec_carrier:
|
.. _lirc_set_rec_carrier:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_set_rec_timeout_reports:
|
.. _lirc_set_rec_timeout_reports:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_set_rec_timeout:
|
.. _lirc_set_rec_timeout:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_set_send_carrier:
|
.. _lirc_set_send_carrier:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_set_send_duty_cycle:
|
.. _lirc_set_send_duty_cycle:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_set_transmitter_mask:
|
.. _lirc_set_transmitter_mask:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc_set_wideband_receiver:
|
.. _lirc_set_wideband_receiver:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. c:namespace:: RC
|
.. c:namespace:: RC
|
||||||
|
|
||||||
.. _lirc-write:
|
.. _lirc-write:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
.. _Remote_controllers_Intro:
|
.. _Remote_controllers_Intro:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
.. _Remote_controllers_Protocols:
|
.. _Remote_controllers_Protocols:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
.. _remote_controllers_sysfs_nodes:
|
.. _remote_controllers_sysfs_nodes:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
.. _Remote_controllers_table_change:
|
.. _Remote_controllers_table_change:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
.. _Remote_controllers_tables:
|
.. _Remote_controllers_tables:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
||||||
.. include:: <isonum.txt>
|
.. include:: <isonum.txt>
|
||||||
|
|
||||||
.. _remote_controllers:
|
.. _remote_controllers:
|
||||||
|
|||||||
@@ -270,7 +270,17 @@ EBU Tech 3213
|
|||||||
=============
|
=============
|
||||||
|
|
||||||
|
|
||||||
:title: E.B.U. Standard for Chromaticity Tolerances for Studio Monitors"
|
:title: E.B.U. Standard for Chromaticity Tolerances for Studio Monitors
|
||||||
|
|
||||||
|
:author: European Broadcast Union (http://www.ebu.ch)
|
||||||
|
|
||||||
|
.. _tech3321:
|
||||||
|
|
||||||
|
EBU Tech 3321
|
||||||
|
=============
|
||||||
|
|
||||||
|
|
||||||
|
:title: E.B.U. guidelines for Consumer Flat Panel Displays (FPDs)
|
||||||
|
|
||||||
:author: European Broadcast Union (http://www.ebu.ch)
|
:author: European Broadcast Union (http://www.ebu.ch)
|
||||||
|
|
||||||
|
|||||||
@@ -604,7 +604,7 @@ Buffer Flags
|
|||||||
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Due to
|
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Due to
|
||||||
hardware limitations, the last buffer may be empty. In this case
|
hardware limitations, the last buffer may be empty. In this case
|
||||||
the driver will set the ``bytesused`` field to 0, regardless of
|
the driver will set the ``bytesused`` field to 0, regardless of
|
||||||
the format. Any Any subsequent call to the
|
the format. Any subsequent call to the
|
||||||
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
|
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
|
||||||
but return an ``EPIPE`` error code.
|
but return an ``EPIPE`` error code.
|
||||||
* .. _`V4L2-BUF-FLAG-REQUEST-FD`:
|
* .. _`V4L2-BUF-FLAG-REQUEST-FD`:
|
||||||
|
|||||||
@@ -674,8 +674,9 @@ Colorspace EBU Tech. 3213 (V4L2_COLORSPACE_470_SYSTEM_BG)
|
|||||||
=========================================================
|
=========================================================
|
||||||
|
|
||||||
The :ref:`tech3213` standard defines the colorspace used by PAL/SECAM
|
The :ref:`tech3213` standard defines the colorspace used by PAL/SECAM
|
||||||
in 1975. In practice this colorspace is obsolete and SMPTE 170M should
|
in 1975. Note that this colorspace is not supported by the HDMI interface.
|
||||||
be used instead. The default transfer function is
|
Instead :ref:`tech3321` recommends that Rec. 709 is used instead for HDMI.
|
||||||
|
The default transfer function is
|
||||||
``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
|
``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
|
||||||
``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
|
``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
|
||||||
range. The chromaticities of the primary colors and the white reference
|
range. The chromaticities of the primary colors and the white reference
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ applicable to all devices.
|
|||||||
ext-ctrls-image-source
|
ext-ctrls-image-source
|
||||||
ext-ctrls-image-process
|
ext-ctrls-image-process
|
||||||
ext-ctrls-codec
|
ext-ctrls-codec
|
||||||
|
ext-ctrls-codec-stateless
|
||||||
ext-ctrls-jpeg
|
ext-ctrls-jpeg
|
||||||
ext-ctrls-dv
|
ext-ctrls-dv
|
||||||
ext-ctrls-rf-tuner
|
ext-ctrls-rf-tuner
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ file handle is visible through another file handle).
|
|||||||
One of the most common memory-to-memory device is the codec. Codecs
|
One of the most common memory-to-memory device is the codec. Codecs
|
||||||
are more complicated than most and require additional setup for
|
are more complicated than most and require additional setup for
|
||||||
their codec parameters. This is done through codec controls.
|
their codec parameters. This is done through codec controls.
|
||||||
See :ref:`mpeg-controls`. More details on how to use codec memory-to-memory
|
See :ref:`codec-controls`. More details on how to use codec memory-to-memory
|
||||||
devices are given in the following sections.
|
devices are given in the following sections.
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
|||||||
@@ -0,0 +1,793 @@
|
|||||||
|
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
|
.. _codec-stateless-controls:
|
||||||
|
|
||||||
|
*********************************
|
||||||
|
Stateless Codec Control Reference
|
||||||
|
*********************************
|
||||||
|
|
||||||
|
The Stateless Codec control class is intended to support
|
||||||
|
stateless decoder and encoders (i.e. hardware accelerators).
|
||||||
|
|
||||||
|
These drivers are typically supported by the :ref:`stateless_decoder`,
|
||||||
|
and deal with parsed pixel formats such as V4L2_PIX_FMT_H264_SLICE.
|
||||||
|
|
||||||
|
Stateless Codec Control ID
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. _codec-stateless-control-id:
|
||||||
|
|
||||||
|
``V4L2_CID_CODEC_STATELESS_CLASS (class)``
|
||||||
|
The Stateless Codec class descriptor.
|
||||||
|
|
||||||
|
.. _v4l2-codec-stateless-h264:
|
||||||
|
|
||||||
|
``V4L2_CID_STATELESS_H264_SPS (struct)``
|
||||||
|
Specifies the sequence parameter set (as extracted from the
|
||||||
|
bitstream) for the associated H264 slice data. This includes the
|
||||||
|
necessary parameters for configuring a stateless hardware decoding
|
||||||
|
pipeline for H264. The bitstream parameters are defined according
|
||||||
|
to :ref:`h264`, section 7.4.2.1.1 "Sequence Parameter Set Data
|
||||||
|
Semantics". For further documentation, refer to the above
|
||||||
|
specification, unless there is an explicit comment stating
|
||||||
|
otherwise.
|
||||||
|
|
||||||
|
.. c:type:: v4l2_ctrl_h264_sps
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table:: struct v4l2_ctrl_h264_sps
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __u8
|
||||||
|
- ``profile_idc``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``constraint_set_flags``
|
||||||
|
- See :ref:`Sequence Parameter Set Constraints Set Flags <h264_sps_constraints_set_flags>`
|
||||||
|
* - __u8
|
||||||
|
- ``level_idc``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``seq_parameter_set_id``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``chroma_format_idc``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``bit_depth_luma_minus8``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``bit_depth_chroma_minus8``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``log2_max_frame_num_minus4``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``pic_order_cnt_type``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``log2_max_pic_order_cnt_lsb_minus4``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``max_num_ref_frames``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``num_ref_frames_in_pic_order_cnt_cycle``
|
||||||
|
-
|
||||||
|
* - __s32
|
||||||
|
- ``offset_for_ref_frame[255]``
|
||||||
|
-
|
||||||
|
* - __s32
|
||||||
|
- ``offset_for_non_ref_pic``
|
||||||
|
-
|
||||||
|
* - __s32
|
||||||
|
- ``offset_for_top_to_bottom_field``
|
||||||
|
-
|
||||||
|
* - __u16
|
||||||
|
- ``pic_width_in_mbs_minus1``
|
||||||
|
-
|
||||||
|
* - __u16
|
||||||
|
- ``pic_height_in_map_units_minus1``
|
||||||
|
-
|
||||||
|
* - __u32
|
||||||
|
- ``flags``
|
||||||
|
- See :ref:`Sequence Parameter Set Flags <h264_sps_flags>`
|
||||||
|
|
||||||
|
.. _h264_sps_constraints_set_flags:
|
||||||
|
|
||||||
|
``Sequence Parameter Set Constraints Set Flags``
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - ``V4L2_H264_SPS_CONSTRAINT_SET0_FLAG``
|
||||||
|
- 0x00000001
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SPS_CONSTRAINT_SET1_FLAG``
|
||||||
|
- 0x00000002
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SPS_CONSTRAINT_SET2_FLAG``
|
||||||
|
- 0x00000004
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SPS_CONSTRAINT_SET3_FLAG``
|
||||||
|
- 0x00000008
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SPS_CONSTRAINT_SET4_FLAG``
|
||||||
|
- 0x00000010
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SPS_CONSTRAINT_SET5_FLAG``
|
||||||
|
- 0x00000020
|
||||||
|
-
|
||||||
|
|
||||||
|
.. _h264_sps_flags:
|
||||||
|
|
||||||
|
``Sequence Parameter Set Flags``
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - ``V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE``
|
||||||
|
- 0x00000001
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS``
|
||||||
|
- 0x00000002
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO``
|
||||||
|
- 0x00000004
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED``
|
||||||
|
- 0x00000008
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY``
|
||||||
|
- 0x00000010
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD``
|
||||||
|
- 0x00000020
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE``
|
||||||
|
- 0x00000040
|
||||||
|
-
|
||||||
|
|
||||||
|
``V4L2_CID_STATELESS_H264_PPS (struct)``
|
||||||
|
Specifies the picture parameter set (as extracted from the
|
||||||
|
bitstream) for the associated H264 slice data. This includes the
|
||||||
|
necessary parameters for configuring a stateless hardware decoding
|
||||||
|
pipeline for H264. The bitstream parameters are defined according
|
||||||
|
to :ref:`h264`, section 7.4.2.2 "Picture Parameter Set RBSP
|
||||||
|
Semantics". For further documentation, refer to the above
|
||||||
|
specification, unless there is an explicit comment stating
|
||||||
|
otherwise.
|
||||||
|
|
||||||
|
.. c:type:: v4l2_ctrl_h264_pps
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table:: struct v4l2_ctrl_h264_pps
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __u8
|
||||||
|
- ``pic_parameter_set_id``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``seq_parameter_set_id``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``num_slice_groups_minus1``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``num_ref_idx_l0_default_active_minus1``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``num_ref_idx_l1_default_active_minus1``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``weighted_bipred_idc``
|
||||||
|
-
|
||||||
|
* - __s8
|
||||||
|
- ``pic_init_qp_minus26``
|
||||||
|
-
|
||||||
|
* - __s8
|
||||||
|
- ``pic_init_qs_minus26``
|
||||||
|
-
|
||||||
|
* - __s8
|
||||||
|
- ``chroma_qp_index_offset``
|
||||||
|
-
|
||||||
|
* - __s8
|
||||||
|
- ``second_chroma_qp_index_offset``
|
||||||
|
-
|
||||||
|
* - __u16
|
||||||
|
- ``flags``
|
||||||
|
- See :ref:`Picture Parameter Set Flags <h264_pps_flags>`
|
||||||
|
|
||||||
|
.. _h264_pps_flags:
|
||||||
|
|
||||||
|
``Picture Parameter Set Flags``
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - ``V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE``
|
||||||
|
- 0x00000001
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT``
|
||||||
|
- 0x00000002
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_PPS_FLAG_WEIGHTED_PRED``
|
||||||
|
- 0x00000004
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT``
|
||||||
|
- 0x00000008
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED``
|
||||||
|
- 0x00000010
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT``
|
||||||
|
- 0x00000020
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE``
|
||||||
|
- 0x00000040
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT``
|
||||||
|
- 0x00000080
|
||||||
|
- Indicates that ``V4L2_CID_STATELESS_H264_SCALING_MATRIX``
|
||||||
|
must be used for this picture.
|
||||||
|
|
||||||
|
``V4L2_CID_STATELESS_H264_SCALING_MATRIX (struct)``
|
||||||
|
Specifies the scaling matrix (as extracted from the bitstream) for
|
||||||
|
the associated H264 slice data. The bitstream parameters are
|
||||||
|
defined according to :ref:`h264`, section 7.4.2.1.1.1 "Scaling
|
||||||
|
List Semantics". For further documentation, refer to the above
|
||||||
|
specification, unless there is an explicit comment stating
|
||||||
|
otherwise.
|
||||||
|
|
||||||
|
.. c:type:: v4l2_ctrl_h264_scaling_matrix
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table:: struct v4l2_ctrl_h264_scaling_matrix
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __u8
|
||||||
|
- ``scaling_list_4x4[6][16]``
|
||||||
|
- Scaling matrix after applying the inverse scanning process.
|
||||||
|
Expected list order is Intra Y, Intra Cb, Intra Cr, Inter Y,
|
||||||
|
Inter Cb, Inter Cr. The values on each scaling list are
|
||||||
|
expected in raster scan order.
|
||||||
|
* - __u8
|
||||||
|
- ``scaling_list_8x8[6][64]``
|
||||||
|
- Scaling matrix after applying the inverse scanning process.
|
||||||
|
Expected list order is Intra Y, Inter Y, Intra Cb, Inter Cb,
|
||||||
|
Intra Cr, Inter Cr. The values on each scaling list are
|
||||||
|
expected in raster scan order.
|
||||||
|
|
||||||
|
``V4L2_CID_STATELESS_H264_SLICE_PARAMS (struct)``
|
||||||
|
Specifies the slice parameters (as extracted from the bitstream)
|
||||||
|
for the associated H264 slice data. This includes the necessary
|
||||||
|
parameters for configuring a stateless hardware decoding pipeline
|
||||||
|
for H264. The bitstream parameters are defined according to
|
||||||
|
:ref:`h264`, section 7.4.3 "Slice Header Semantics". For further
|
||||||
|
documentation, refer to the above specification, unless there is
|
||||||
|
an explicit comment stating otherwise.
|
||||||
|
|
||||||
|
.. c:type:: v4l2_ctrl_h264_slice_params
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table:: struct v4l2_ctrl_h264_slice_params
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __u32
|
||||||
|
- ``header_bit_size``
|
||||||
|
- Offset in bits to slice_data() from the beginning of this slice.
|
||||||
|
* - __u32
|
||||||
|
- ``first_mb_in_slice``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``slice_type``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``colour_plane_id``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``redundant_pic_cnt``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``cabac_init_idc``
|
||||||
|
-
|
||||||
|
* - __s8
|
||||||
|
- ``slice_qp_delta``
|
||||||
|
-
|
||||||
|
* - __s8
|
||||||
|
- ``slice_qs_delta``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``disable_deblocking_filter_idc``
|
||||||
|
-
|
||||||
|
* - __s8
|
||||||
|
- ``slice_alpha_c0_offset_div2``
|
||||||
|
-
|
||||||
|
* - __s8
|
||||||
|
- ``slice_beta_offset_div2``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``num_ref_idx_l0_active_minus1``
|
||||||
|
- If num_ref_idx_active_override_flag is not set, this field must be
|
||||||
|
set to the value of num_ref_idx_l0_default_active_minus1.
|
||||||
|
* - __u8
|
||||||
|
- ``num_ref_idx_l1_active_minus1``
|
||||||
|
- If num_ref_idx_active_override_flag is not set, this field must be
|
||||||
|
set to the value of num_ref_idx_l1_default_active_minus1.
|
||||||
|
* - __u8
|
||||||
|
- ``reserved``
|
||||||
|
- Applications and drivers must set this to zero.
|
||||||
|
* - struct :c:type:`v4l2_h264_reference`
|
||||||
|
- ``ref_pic_list0[32]``
|
||||||
|
- Reference picture list after applying the per-slice modifications
|
||||||
|
* - struct :c:type:`v4l2_h264_reference`
|
||||||
|
- ``ref_pic_list1[32]``
|
||||||
|
- Reference picture list after applying the per-slice modifications
|
||||||
|
* - __u32
|
||||||
|
- ``flags``
|
||||||
|
- See :ref:`Slice Parameter Flags <h264_slice_flags>`
|
||||||
|
|
||||||
|
.. _h264_slice_flags:
|
||||||
|
|
||||||
|
``Slice Parameter Set Flags``
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - ``V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED``
|
||||||
|
- 0x00000001
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH``
|
||||||
|
- 0x00000002
|
||||||
|
-
|
||||||
|
|
||||||
|
``V4L2_CID_STATELESS_H264_PRED_WEIGHTS (struct)``
|
||||||
|
Prediction weight table defined according to :ref:`h264`,
|
||||||
|
section 7.4.3.2 "Prediction Weight Table Semantics".
|
||||||
|
The prediction weight table must be passed by applications
|
||||||
|
under the conditions explained in section 7.3.3 "Slice header
|
||||||
|
syntax".
|
||||||
|
|
||||||
|
.. c:type:: v4l2_ctrl_h264_pred_weights
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table:: struct v4l2_ctrl_h264_pred_weights
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __u16
|
||||||
|
- ``luma_log2_weight_denom``
|
||||||
|
-
|
||||||
|
* - __u16
|
||||||
|
- ``chroma_log2_weight_denom``
|
||||||
|
-
|
||||||
|
* - struct :c:type:`v4l2_h264_weight_factors`
|
||||||
|
- ``weight_factors[2]``
|
||||||
|
- The weight factors at index 0 are the weight factors for the reference
|
||||||
|
list 0, the one at index 1 for the reference list 1.
|
||||||
|
|
||||||
|
.. c:type:: v4l2_h264_weight_factors
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table:: struct v4l2_h264_weight_factors
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __s16
|
||||||
|
- ``luma_weight[32]``
|
||||||
|
-
|
||||||
|
* - __s16
|
||||||
|
- ``luma_offset[32]``
|
||||||
|
-
|
||||||
|
* - __s16
|
||||||
|
- ``chroma_weight[32][2]``
|
||||||
|
-
|
||||||
|
* - __s16
|
||||||
|
- ``chroma_offset[32][2]``
|
||||||
|
-
|
||||||
|
|
||||||
|
``Picture Reference``
|
||||||
|
|
||||||
|
.. c:type:: v4l2_h264_reference
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table:: struct v4l2_h264_reference
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __u8
|
||||||
|
- ``fields``
|
||||||
|
- Specifies how the picture is referenced. See :ref:`Reference Fields <h264_ref_fields>`
|
||||||
|
* - __u8
|
||||||
|
- ``index``
|
||||||
|
- Index into the :c:type:`v4l2_ctrl_h264_decode_params`.dpb array.
|
||||||
|
|
||||||
|
.. _h264_ref_fields:
|
||||||
|
|
||||||
|
``Reference Fields``
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - ``V4L2_H264_TOP_FIELD_REF``
|
||||||
|
- 0x1
|
||||||
|
- The top field in field pair is used for short-term reference.
|
||||||
|
* - ``V4L2_H264_BOTTOM_FIELD_REF``
|
||||||
|
- 0x2
|
||||||
|
- The bottom field in field pair is used for short-term reference.
|
||||||
|
* - ``V4L2_H264_FRAME_REF``
|
||||||
|
- 0x3
|
||||||
|
- The frame (or the top/bottom fields, if it's a field pair)
|
||||||
|
is used for short-term reference.
|
||||||
|
|
||||||
|
``V4L2_CID_STATELESS_H264_DECODE_PARAMS (struct)``
|
||||||
|
Specifies the decode parameters (as extracted from the bitstream)
|
||||||
|
for the associated H264 slice data. This includes the necessary
|
||||||
|
parameters for configuring a stateless hardware decoding pipeline
|
||||||
|
for H264. The bitstream parameters are defined according to
|
||||||
|
:ref:`h264`. For further documentation, refer to the above
|
||||||
|
specification, unless there is an explicit comment stating
|
||||||
|
otherwise.
|
||||||
|
|
||||||
|
.. c:type:: v4l2_ctrl_h264_decode_params
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table:: struct v4l2_ctrl_h264_decode_params
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - struct :c:type:`v4l2_h264_dpb_entry`
|
||||||
|
- ``dpb[16]``
|
||||||
|
-
|
||||||
|
* - __u16
|
||||||
|
- ``nal_ref_idc``
|
||||||
|
- NAL reference ID value coming from the NAL Unit header
|
||||||
|
* - __u16
|
||||||
|
- ``frame_num``
|
||||||
|
-
|
||||||
|
* - __s32
|
||||||
|
- ``top_field_order_cnt``
|
||||||
|
- Picture Order Count for the coded top field
|
||||||
|
* - __s32
|
||||||
|
- ``bottom_field_order_cnt``
|
||||||
|
- Picture Order Count for the coded bottom field
|
||||||
|
* - __u16
|
||||||
|
- ``idr_pic_id``
|
||||||
|
-
|
||||||
|
* - __u16
|
||||||
|
- ``pic_order_cnt_lsb``
|
||||||
|
-
|
||||||
|
* - __s32
|
||||||
|
- ``delta_pic_order_cnt_bottom``
|
||||||
|
-
|
||||||
|
* - __s32
|
||||||
|
- ``delta_pic_order_cnt0``
|
||||||
|
-
|
||||||
|
* - __s32
|
||||||
|
- ``delta_pic_order_cnt1``
|
||||||
|
-
|
||||||
|
* - __u32
|
||||||
|
- ``dec_ref_pic_marking_bit_size``
|
||||||
|
- Size in bits of the dec_ref_pic_marking() syntax element.
|
||||||
|
* - __u32
|
||||||
|
- ``pic_order_cnt_bit_size``
|
||||||
|
- Combined size in bits of the picture order count related syntax
|
||||||
|
elements: pic_order_cnt_lsb, delta_pic_order_cnt_bottom,
|
||||||
|
delta_pic_order_cnt0, and delta_pic_order_cnt1.
|
||||||
|
* - __u32
|
||||||
|
- ``slice_group_change_cycle``
|
||||||
|
-
|
||||||
|
* - __u32
|
||||||
|
- ``reserved``
|
||||||
|
- Applications and drivers must set this to zero.
|
||||||
|
* - __u32
|
||||||
|
- ``flags``
|
||||||
|
- See :ref:`Decode Parameters Flags <h264_decode_params_flags>`
|
||||||
|
|
||||||
|
.. _h264_decode_params_flags:
|
||||||
|
|
||||||
|
``Decode Parameters Flags``
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - ``V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC``
|
||||||
|
- 0x00000001
|
||||||
|
- That picture is an IDR picture
|
||||||
|
* - ``V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC``
|
||||||
|
- 0x00000002
|
||||||
|
-
|
||||||
|
* - ``V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD``
|
||||||
|
- 0x00000004
|
||||||
|
-
|
||||||
|
|
||||||
|
.. c:type:: v4l2_h264_dpb_entry
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table:: struct v4l2_h264_dpb_entry
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __u64
|
||||||
|
- ``reference_ts``
|
||||||
|
- Timestamp of the V4L2 capture buffer to use as reference, used
|
||||||
|
with B-coded and P-coded frames. The timestamp refers to the
|
||||||
|
``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
|
||||||
|
:c:func:`v4l2_timeval_to_ns()` function to convert the struct
|
||||||
|
:c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
|
||||||
|
* - __u32
|
||||||
|
- ``pic_num``
|
||||||
|
-
|
||||||
|
* - __u16
|
||||||
|
- ``frame_num``
|
||||||
|
-
|
||||||
|
* - __u8
|
||||||
|
- ``fields``
|
||||||
|
- Specifies how the DPB entry is referenced. See :ref:`Reference Fields <h264_ref_fields>`
|
||||||
|
* - __u8
|
||||||
|
- ``reserved[5]``
|
||||||
|
- Applications and drivers must set this to zero.
|
||||||
|
* - __s32
|
||||||
|
- ``top_field_order_cnt``
|
||||||
|
-
|
||||||
|
* - __s32
|
||||||
|
- ``bottom_field_order_cnt``
|
||||||
|
-
|
||||||
|
* - __u32
|
||||||
|
- ``flags``
|
||||||
|
- See :ref:`DPB Entry Flags <h264_dpb_flags>`
|
||||||
|
|
||||||
|
.. _h264_dpb_flags:
|
||||||
|
|
||||||
|
``DPB Entries Flags``
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - ``V4L2_H264_DPB_ENTRY_FLAG_VALID``
|
||||||
|
- 0x00000001
|
||||||
|
- The DPB entry is valid (non-empty) and should be considered.
|
||||||
|
* - ``V4L2_H264_DPB_ENTRY_FLAG_ACTIVE``
|
||||||
|
- 0x00000002
|
||||||
|
- The DPB entry is used for reference.
|
||||||
|
* - ``V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM``
|
||||||
|
- 0x00000004
|
||||||
|
- The DPB entry is used for long-term reference.
|
||||||
|
* - ``V4L2_H264_DPB_ENTRY_FLAG_FIELD``
|
||||||
|
- 0x00000008
|
||||||
|
- The DPB entry is a single field or a complementary field pair.
|
||||||
|
|
||||||
|
``V4L2_CID_STATELESS_H264_DECODE_MODE (enum)``
|
||||||
|
Specifies the decoding mode to use. Currently exposes slice-based and
|
||||||
|
frame-based decoding but new modes might be added later on.
|
||||||
|
This control is used as a modifier for V4L2_PIX_FMT_H264_SLICE
|
||||||
|
pixel format. Applications that support V4L2_PIX_FMT_H264_SLICE
|
||||||
|
are required to set this control in order to specify the decoding mode
|
||||||
|
that is expected for the buffer.
|
||||||
|
Drivers may expose a single or multiple decoding modes, depending
|
||||||
|
on what they can support.
|
||||||
|
|
||||||
|
.. c:type:: v4l2_stateless_h264_decode_mode
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - ``V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED``
|
||||||
|
- 0
|
||||||
|
- Decoding is done at the slice granularity.
|
||||||
|
The OUTPUT buffer must contain a single slice.
|
||||||
|
When this mode is selected, the ``V4L2_CID_STATELESS_H264_SLICE_PARAMS``
|
||||||
|
control shall be set. When multiple slices compose a frame,
|
||||||
|
use of ``V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF`` flag
|
||||||
|
is required.
|
||||||
|
* - ``V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED``
|
||||||
|
- 1
|
||||||
|
- Decoding is done at the frame granularity,
|
||||||
|
The OUTPUT buffer must contain all slices needed to decode the
|
||||||
|
frame. The OUTPUT buffer must also contain both fields.
|
||||||
|
This mode will be supported by devices that
|
||||||
|
parse the slice(s) header(s) in hardware. When this mode is
|
||||||
|
selected, the ``V4L2_CID_STATELESS_H264_SLICE_PARAMS``
|
||||||
|
control shall not be set.
|
||||||
|
|
||||||
|
``V4L2_CID_STATELESS_H264_START_CODE (enum)``
|
||||||
|
Specifies the H264 slice start code expected for each slice.
|
||||||
|
This control is used as a modifier for V4L2_PIX_FMT_H264_SLICE
|
||||||
|
pixel format. Applications that support V4L2_PIX_FMT_H264_SLICE
|
||||||
|
are required to set this control in order to specify the start code
|
||||||
|
that is expected for the buffer.
|
||||||
|
Drivers may expose a single or multiple start codes, depending
|
||||||
|
on what they can support.
|
||||||
|
|
||||||
|
.. c:type:: v4l2_stateless_h264_start_code
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - ``V4L2_STATELESS_H264_START_CODE_NONE``
|
||||||
|
- 0
|
||||||
|
- Selecting this value specifies that H264 slices are passed
|
||||||
|
to the driver without any start code.
|
||||||
|
* - ``V4L2_STATELESS_H264_START_CODE_ANNEX_B``
|
||||||
|
- 1
|
||||||
|
- Selecting this value specifies that H264 slices are expected
|
||||||
|
to be prefixed by Annex B start codes. According to :ref:`h264`
|
||||||
|
valid start codes can be 3-bytes 0x000001 or 4-bytes 0x00000001.
|
||||||
|
|
||||||
|
|
||||||
|
.. _codec-stateless-fwht:
|
||||||
|
|
||||||
|
``V4L2_CID_STATELESS_FWHT_PARAMS (struct)``
|
||||||
|
Specifies the FWHT (Fast Walsh Hadamard Transform) parameters (as extracted
|
||||||
|
from the bitstream) for the associated FWHT data. This includes the necessary
|
||||||
|
parameters for configuring a stateless hardware decoding pipeline for FWHT.
|
||||||
|
This codec is specific to the vicodec test driver.
|
||||||
|
|
||||||
|
.. c:type:: v4l2_ctrl_fwht_params
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. tabularcolumns:: |p{1.4cm}|p{4.3cm}|p{11.8cm}|
|
||||||
|
|
||||||
|
.. flat-table:: struct v4l2_ctrl_fwht_params
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __u64
|
||||||
|
- ``backward_ref_ts``
|
||||||
|
- Timestamp of the V4L2 capture buffer to use as backward reference, used
|
||||||
|
with P-coded frames. The timestamp refers to the
|
||||||
|
``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
|
||||||
|
:c:func:`v4l2_timeval_to_ns()` function to convert the struct
|
||||||
|
:c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
|
||||||
|
* - __u32
|
||||||
|
- ``version``
|
||||||
|
- The version of the codec. Set to ``V4L2_FWHT_VERSION``.
|
||||||
|
* - __u32
|
||||||
|
- ``width``
|
||||||
|
- The width of the frame.
|
||||||
|
* - __u32
|
||||||
|
- ``height``
|
||||||
|
- The height of the frame.
|
||||||
|
* - __u32
|
||||||
|
- ``flags``
|
||||||
|
- The flags of the frame, see :ref:`fwht-flags`.
|
||||||
|
* - __u32
|
||||||
|
- ``colorspace``
|
||||||
|
- The colorspace of the frame, from enum :c:type:`v4l2_colorspace`.
|
||||||
|
* - __u32
|
||||||
|
- ``xfer_func``
|
||||||
|
- The transfer function, from enum :c:type:`v4l2_xfer_func`.
|
||||||
|
* - __u32
|
||||||
|
- ``ycbcr_enc``
|
||||||
|
- The Y'CbCr encoding, from enum :c:type:`v4l2_ycbcr_encoding`.
|
||||||
|
* - __u32
|
||||||
|
- ``quantization``
|
||||||
|
- The quantization range, from enum :c:type:`v4l2_quantization`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. _fwht-flags:
|
||||||
|
|
||||||
|
FWHT Flags
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. cssclass:: longtable
|
||||||
|
|
||||||
|
.. tabularcolumns:: |p{6.8cm}|p{2.4cm}|p{8.3cm}|
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 3 1 4
|
||||||
|
|
||||||
|
* - ``V4L2_FWHT_FL_IS_INTERLACED``
|
||||||
|
- 0x00000001
|
||||||
|
- Set if this is an interlaced format.
|
||||||
|
* - ``V4L2_FWHT_FL_IS_BOTTOM_FIRST``
|
||||||
|
- 0x00000002
|
||||||
|
- Set if this is a bottom-first (NTSC) interlaced format.
|
||||||
|
* - ``V4L2_FWHT_FL_IS_ALTERNATE``
|
||||||
|
- 0x00000004
|
||||||
|
- Set if each 'frame' contains just one field.
|
||||||
|
* - ``V4L2_FWHT_FL_IS_BOTTOM_FIELD``
|
||||||
|
- 0x00000008
|
||||||
|
- If V4L2_FWHT_FL_IS_ALTERNATE was set, then this is set if this 'frame' is the
|
||||||
|
bottom field, else it is the top field.
|
||||||
|
* - ``V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED``
|
||||||
|
- 0x00000010
|
||||||
|
- Set if the Y' (luma) plane is uncompressed.
|
||||||
|
* - ``V4L2_FWHT_FL_CB_IS_UNCOMPRESSED``
|
||||||
|
- 0x00000020
|
||||||
|
- Set if the Cb plane is uncompressed.
|
||||||
|
* - ``V4L2_FWHT_FL_CR_IS_UNCOMPRESSED``
|
||||||
|
- 0x00000040
|
||||||
|
- Set if the Cr plane is uncompressed.
|
||||||
|
* - ``V4L2_FWHT_FL_CHROMA_FULL_HEIGHT``
|
||||||
|
- 0x00000080
|
||||||
|
- Set if the chroma plane has the same height as the luma plane,
|
||||||
|
else the chroma plane is half the height of the luma plane.
|
||||||
|
* - ``V4L2_FWHT_FL_CHROMA_FULL_WIDTH``
|
||||||
|
- 0x00000100
|
||||||
|
- Set if the chroma plane has the same width as the luma plane,
|
||||||
|
else the chroma plane is half the width of the luma plane.
|
||||||
|
* - ``V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED``
|
||||||
|
- 0x00000200
|
||||||
|
- Set if the alpha plane is uncompressed.
|
||||||
|
* - ``V4L2_FWHT_FL_I_FRAME``
|
||||||
|
- 0x00000400
|
||||||
|
- Set if this is an I-frame.
|
||||||
|
* - ``V4L2_FWHT_FL_COMPONENTS_NUM_MSK``
|
||||||
|
- 0x00070000
|
||||||
|
- The number of color components - 1.
|
||||||
|
* - ``V4L2_FWHT_FL_PIXENC_MSK``
|
||||||
|
- 0x00180000
|
||||||
|
- The mask for the pixel encoding.
|
||||||
|
* - ``V4L2_FWHT_FL_PIXENC_YUV``
|
||||||
|
- 0x00080000
|
||||||
|
- Set if the pixel encoding is YUV.
|
||||||
|
* - ``V4L2_FWHT_FL_PIXENC_RGB``
|
||||||
|
- 0x00100000
|
||||||
|
- Set if the pixel encoding is RGB.
|
||||||
|
* - ``V4L2_FWHT_FL_PIXENC_HSV``
|
||||||
|
- 0x00180000
|
||||||
|
- Set if the pixel encoding is HSV.
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
||||||
|
|
||||||
.. _mpeg-controls:
|
.. _codec-controls:
|
||||||
|
|
||||||
***********************
|
***********************
|
||||||
Codec Control Reference
|
Codec Control Reference
|
||||||
@@ -26,7 +26,7 @@ Generic Codec Controls
|
|||||||
Codec Control IDs
|
Codec Control IDs
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
``V4L2_CID_MPEG_CLASS (class)``
|
``V4L2_CID_CODEC_CLASS (class)``
|
||||||
The Codec class descriptor. Calling
|
The Codec class descriptor. Calling
|
||||||
:ref:`VIDIOC_QUERYCTRL` for this control will
|
:ref:`VIDIOC_QUERYCTRL` for this control will
|
||||||
return a description of this control class. This description can be
|
return a description of this control class. This description can be
|
||||||
@@ -1502,698 +1502,6 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
|
|||||||
- Layer number
|
- Layer number
|
||||||
|
|
||||||
|
|
||||||
.. _v4l2-mpeg-h264:
|
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_SPS (struct)``
|
|
||||||
Specifies the sequence parameter set (as extracted from the
|
|
||||||
bitstream) for the associated H264 slice data. This includes the
|
|
||||||
necessary parameters for configuring a stateless hardware decoding
|
|
||||||
pipeline for H264. The bitstream parameters are defined according
|
|
||||||
to :ref:`h264`, section 7.4.2.1.1 "Sequence Parameter Set Data
|
|
||||||
Semantics". For further documentation, refer to the above
|
|
||||||
specification, unless there is an explicit comment stating
|
|
||||||
otherwise.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
This compound control is not yet part of the public kernel API and
|
|
||||||
it is expected to change.
|
|
||||||
|
|
||||||
.. c:type:: v4l2_ctrl_h264_sps
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table:: struct v4l2_ctrl_h264_sps
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - __u8
|
|
||||||
- ``profile_idc``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``constraint_set_flags``
|
|
||||||
- See :ref:`Sequence Parameter Set Constraints Set Flags <h264_sps_constraints_set_flags>`
|
|
||||||
* - __u8
|
|
||||||
- ``level_idc``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``seq_parameter_set_id``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``chroma_format_idc``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``bit_depth_luma_minus8``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``bit_depth_chroma_minus8``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``log2_max_frame_num_minus4``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``pic_order_cnt_type``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``log2_max_pic_order_cnt_lsb_minus4``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``max_num_ref_frames``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``num_ref_frames_in_pic_order_cnt_cycle``
|
|
||||||
-
|
|
||||||
* - __s32
|
|
||||||
- ``offset_for_ref_frame[255]``
|
|
||||||
-
|
|
||||||
* - __s32
|
|
||||||
- ``offset_for_non_ref_pic``
|
|
||||||
-
|
|
||||||
* - __s32
|
|
||||||
- ``offset_for_top_to_bottom_field``
|
|
||||||
-
|
|
||||||
* - __u16
|
|
||||||
- ``pic_width_in_mbs_minus1``
|
|
||||||
-
|
|
||||||
* - __u16
|
|
||||||
- ``pic_height_in_map_units_minus1``
|
|
||||||
-
|
|
||||||
* - __u32
|
|
||||||
- ``flags``
|
|
||||||
- See :ref:`Sequence Parameter Set Flags <h264_sps_flags>`
|
|
||||||
|
|
||||||
.. _h264_sps_constraints_set_flags:
|
|
||||||
|
|
||||||
``Sequence Parameter Set Constraints Set Flags``
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - ``V4L2_H264_SPS_CONSTRAINT_SET0_FLAG``
|
|
||||||
- 0x00000001
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SPS_CONSTRAINT_SET1_FLAG``
|
|
||||||
- 0x00000002
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SPS_CONSTRAINT_SET2_FLAG``
|
|
||||||
- 0x00000004
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SPS_CONSTRAINT_SET3_FLAG``
|
|
||||||
- 0x00000008
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SPS_CONSTRAINT_SET4_FLAG``
|
|
||||||
- 0x00000010
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SPS_CONSTRAINT_SET5_FLAG``
|
|
||||||
- 0x00000020
|
|
||||||
-
|
|
||||||
|
|
||||||
.. _h264_sps_flags:
|
|
||||||
|
|
||||||
``Sequence Parameter Set Flags``
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - ``V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE``
|
|
||||||
- 0x00000001
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS``
|
|
||||||
- 0x00000002
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO``
|
|
||||||
- 0x00000004
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED``
|
|
||||||
- 0x00000008
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY``
|
|
||||||
- 0x00000010
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD``
|
|
||||||
- 0x00000020
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE``
|
|
||||||
- 0x00000040
|
|
||||||
-
|
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_PPS (struct)``
|
|
||||||
Specifies the picture parameter set (as extracted from the
|
|
||||||
bitstream) for the associated H264 slice data. This includes the
|
|
||||||
necessary parameters for configuring a stateless hardware decoding
|
|
||||||
pipeline for H264. The bitstream parameters are defined according
|
|
||||||
to :ref:`h264`, section 7.4.2.2 "Picture Parameter Set RBSP
|
|
||||||
Semantics". For further documentation, refer to the above
|
|
||||||
specification, unless there is an explicit comment stating
|
|
||||||
otherwise.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
This compound control is not yet part of the public kernel API and
|
|
||||||
it is expected to change.
|
|
||||||
|
|
||||||
.. c:type:: v4l2_ctrl_h264_pps
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table:: struct v4l2_ctrl_h264_pps
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - __u8
|
|
||||||
- ``pic_parameter_set_id``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``seq_parameter_set_id``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``num_slice_groups_minus1``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``num_ref_idx_l0_default_active_minus1``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``num_ref_idx_l1_default_active_minus1``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``weighted_bipred_idc``
|
|
||||||
-
|
|
||||||
* - __s8
|
|
||||||
- ``pic_init_qp_minus26``
|
|
||||||
-
|
|
||||||
* - __s8
|
|
||||||
- ``pic_init_qs_minus26``
|
|
||||||
-
|
|
||||||
* - __s8
|
|
||||||
- ``chroma_qp_index_offset``
|
|
||||||
-
|
|
||||||
* - __s8
|
|
||||||
- ``second_chroma_qp_index_offset``
|
|
||||||
-
|
|
||||||
* - __u16
|
|
||||||
- ``flags``
|
|
||||||
- See :ref:`Picture Parameter Set Flags <h264_pps_flags>`
|
|
||||||
|
|
||||||
.. _h264_pps_flags:
|
|
||||||
|
|
||||||
``Picture Parameter Set Flags``
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - ``V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE``
|
|
||||||
- 0x00000001
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT``
|
|
||||||
- 0x00000002
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_PPS_FLAG_WEIGHTED_PRED``
|
|
||||||
- 0x00000004
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT``
|
|
||||||
- 0x00000008
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED``
|
|
||||||
- 0x00000010
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT``
|
|
||||||
- 0x00000020
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE``
|
|
||||||
- 0x00000040
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT``
|
|
||||||
- 0x00000080
|
|
||||||
- Indicates that ``V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX``
|
|
||||||
must be used for this picture.
|
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX (struct)``
|
|
||||||
Specifies the scaling matrix (as extracted from the bitstream) for
|
|
||||||
the associated H264 slice data. The bitstream parameters are
|
|
||||||
defined according to :ref:`h264`, section 7.4.2.1.1.1 "Scaling
|
|
||||||
List Semantics". For further documentation, refer to the above
|
|
||||||
specification, unless there is an explicit comment stating
|
|
||||||
otherwise.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
This compound control is not yet part of the public kernel API and
|
|
||||||
it is expected to change.
|
|
||||||
|
|
||||||
.. c:type:: v4l2_ctrl_h264_scaling_matrix
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table:: struct v4l2_ctrl_h264_scaling_matrix
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - __u8
|
|
||||||
- ``scaling_list_4x4[6][16]``
|
|
||||||
- Scaling matrix after applying the inverse scanning process.
|
|
||||||
Expected list order is Intra Y, Intra Cb, Intra Cr, Inter Y,
|
|
||||||
Inter Cb, Inter Cr. The values on each scaling list are
|
|
||||||
expected in raster scan order.
|
|
||||||
* - __u8
|
|
||||||
- ``scaling_list_8x8[6][64]``
|
|
||||||
- Scaling matrix after applying the inverse scanning process.
|
|
||||||
Expected list order is Intra Y, Inter Y, Intra Cb, Inter Cb,
|
|
||||||
Intra Cr, Inter Cr. The values on each scaling list are
|
|
||||||
expected in raster scan order.
|
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS (struct)``
|
|
||||||
Specifies the slice parameters (as extracted from the bitstream)
|
|
||||||
for the associated H264 slice data. This includes the necessary
|
|
||||||
parameters for configuring a stateless hardware decoding pipeline
|
|
||||||
for H264. The bitstream parameters are defined according to
|
|
||||||
:ref:`h264`, section 7.4.3 "Slice Header Semantics". For further
|
|
||||||
documentation, refer to the above specification, unless there is
|
|
||||||
an explicit comment stating otherwise.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
This compound control is not yet part of the public kernel API
|
|
||||||
and it is expected to change.
|
|
||||||
|
|
||||||
.. c:type:: v4l2_ctrl_h264_slice_params
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table:: struct v4l2_ctrl_h264_slice_params
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - __u32
|
|
||||||
- ``header_bit_size``
|
|
||||||
- Offset in bits to slice_data() from the beginning of this slice.
|
|
||||||
* - __u32
|
|
||||||
- ``first_mb_in_slice``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``slice_type``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``colour_plane_id``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``redundant_pic_cnt``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``cabac_init_idc``
|
|
||||||
-
|
|
||||||
* - __s8
|
|
||||||
- ``slice_qp_delta``
|
|
||||||
-
|
|
||||||
* - __s8
|
|
||||||
- ``slice_qs_delta``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``disable_deblocking_filter_idc``
|
|
||||||
-
|
|
||||||
* - __s8
|
|
||||||
- ``slice_alpha_c0_offset_div2``
|
|
||||||
-
|
|
||||||
* - __s8
|
|
||||||
- ``slice_beta_offset_div2``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``num_ref_idx_l0_active_minus1``
|
|
||||||
- If num_ref_idx_active_override_flag is not set, this field must be
|
|
||||||
set to the value of num_ref_idx_l0_default_active_minus1.
|
|
||||||
* - __u8
|
|
||||||
- ``num_ref_idx_l1_active_minus1``
|
|
||||||
- If num_ref_idx_active_override_flag is not set, this field must be
|
|
||||||
set to the value of num_ref_idx_l1_default_active_minus1.
|
|
||||||
* - __u8
|
|
||||||
- ``reserved``
|
|
||||||
- Applications and drivers must set this to zero.
|
|
||||||
* - struct :c:type:`v4l2_h264_reference`
|
|
||||||
- ``ref_pic_list0[32]``
|
|
||||||
- Reference picture list after applying the per-slice modifications
|
|
||||||
* - struct :c:type:`v4l2_h264_reference`
|
|
||||||
- ``ref_pic_list1[32]``
|
|
||||||
- Reference picture list after applying the per-slice modifications
|
|
||||||
* - __u32
|
|
||||||
- ``flags``
|
|
||||||
- See :ref:`Slice Parameter Flags <h264_slice_flags>`
|
|
||||||
|
|
||||||
.. _h264_slice_flags:
|
|
||||||
|
|
||||||
``Slice Parameter Set Flags``
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - ``V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED``
|
|
||||||
- 0x00000001
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH``
|
|
||||||
- 0x00000002
|
|
||||||
-
|
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_PRED_WEIGHTS (struct)``
|
|
||||||
Prediction weight table defined according to :ref:`h264`,
|
|
||||||
section 7.4.3.2 "Prediction Weight Table Semantics".
|
|
||||||
The prediction weight table must be passed by applications
|
|
||||||
under the conditions explained in section 7.3.3 "Slice header
|
|
||||||
syntax".
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
This compound control is not yet part of the public kernel API and
|
|
||||||
it is expected to change.
|
|
||||||
|
|
||||||
.. c:type:: v4l2_ctrl_h264_pred_weights
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table:: struct v4l2_ctrl_h264_pred_weights
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - __u16
|
|
||||||
- ``luma_log2_weight_denom``
|
|
||||||
-
|
|
||||||
* - __u16
|
|
||||||
- ``chroma_log2_weight_denom``
|
|
||||||
-
|
|
||||||
* - struct :c:type:`v4l2_h264_weight_factors`
|
|
||||||
- ``weight_factors[2]``
|
|
||||||
- The weight factors at index 0 are the weight factors for the reference
|
|
||||||
list 0, the one at index 1 for the reference list 1.
|
|
||||||
|
|
||||||
.. c:type:: v4l2_h264_weight_factors
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table:: struct v4l2_h264_weight_factors
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - __s16
|
|
||||||
- ``luma_weight[32]``
|
|
||||||
-
|
|
||||||
* - __s16
|
|
||||||
- ``luma_offset[32]``
|
|
||||||
-
|
|
||||||
* - __s16
|
|
||||||
- ``chroma_weight[32][2]``
|
|
||||||
-
|
|
||||||
* - __s16
|
|
||||||
- ``chroma_offset[32][2]``
|
|
||||||
-
|
|
||||||
|
|
||||||
``Picture Reference``
|
|
||||||
|
|
||||||
.. c:type:: v4l2_h264_reference
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table:: struct v4l2_h264_reference
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - __u8
|
|
||||||
- ``fields``
|
|
||||||
- Specifies how the picture is referenced. See :ref:`Reference Fields <h264_ref_fields>`
|
|
||||||
* - __u8
|
|
||||||
- ``index``
|
|
||||||
- Index into the :c:type:`v4l2_ctrl_h264_decode_params`.dpb array.
|
|
||||||
|
|
||||||
.. _h264_ref_fields:
|
|
||||||
|
|
||||||
``Reference Fields``
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - ``V4L2_H264_TOP_FIELD_REF``
|
|
||||||
- 0x1
|
|
||||||
- The top field in field pair is used for short-term reference.
|
|
||||||
* - ``V4L2_H264_BOTTOM_FIELD_REF``
|
|
||||||
- 0x2
|
|
||||||
- The bottom field in field pair is used for short-term reference.
|
|
||||||
* - ``V4L2_H264_FRAME_REF``
|
|
||||||
- 0x3
|
|
||||||
- The frame (or the top/bottom fields, if it's a field pair)
|
|
||||||
is used for short-term reference.
|
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS (struct)``
|
|
||||||
Specifies the decode parameters (as extracted from the bitstream)
|
|
||||||
for the associated H264 slice data. This includes the necessary
|
|
||||||
parameters for configuring a stateless hardware decoding pipeline
|
|
||||||
for H264. The bitstream parameters are defined according to
|
|
||||||
:ref:`h264`. For further documentation, refer to the above
|
|
||||||
specification, unless there is an explicit comment stating
|
|
||||||
otherwise.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
This compound control is not yet part of the public kernel API and
|
|
||||||
it is expected to change.
|
|
||||||
|
|
||||||
.. c:type:: v4l2_ctrl_h264_decode_params
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table:: struct v4l2_ctrl_h264_decode_params
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - struct :c:type:`v4l2_h264_dpb_entry`
|
|
||||||
- ``dpb[16]``
|
|
||||||
-
|
|
||||||
* - __u16
|
|
||||||
- ``nal_ref_idc``
|
|
||||||
- NAL reference ID value coming from the NAL Unit header
|
|
||||||
* - __u16
|
|
||||||
- ``frame_num``
|
|
||||||
-
|
|
||||||
* - __s32
|
|
||||||
- ``top_field_order_cnt``
|
|
||||||
- Picture Order Count for the coded top field
|
|
||||||
* - __s32
|
|
||||||
- ``bottom_field_order_cnt``
|
|
||||||
- Picture Order Count for the coded bottom field
|
|
||||||
* - __u16
|
|
||||||
- ``idr_pic_id``
|
|
||||||
-
|
|
||||||
* - __u16
|
|
||||||
- ``pic_order_cnt_lsb``
|
|
||||||
-
|
|
||||||
* - __s32
|
|
||||||
- ``delta_pic_order_cnt_bottom``
|
|
||||||
-
|
|
||||||
* - __s32
|
|
||||||
- ``delta_pic_order_cnt0``
|
|
||||||
-
|
|
||||||
* - __s32
|
|
||||||
- ``delta_pic_order_cnt1``
|
|
||||||
-
|
|
||||||
* - __u32
|
|
||||||
- ``dec_ref_pic_marking_bit_size``
|
|
||||||
- Size in bits of the dec_ref_pic_marking() syntax element.
|
|
||||||
* - __u32
|
|
||||||
- ``pic_order_cnt_bit_size``
|
|
||||||
- Combined size in bits of the picture order count related syntax
|
|
||||||
elements: pic_order_cnt_lsb, delta_pic_order_cnt_bottom,
|
|
||||||
delta_pic_order_cnt0, and delta_pic_order_cnt1.
|
|
||||||
* - __u32
|
|
||||||
- ``slice_group_change_cycle``
|
|
||||||
-
|
|
||||||
* - __u32
|
|
||||||
- ``reserved``
|
|
||||||
- Applications and drivers must set this to zero.
|
|
||||||
* - __u32
|
|
||||||
- ``flags``
|
|
||||||
- See :ref:`Decode Parameters Flags <h264_decode_params_flags>`
|
|
||||||
|
|
||||||
.. _h264_decode_params_flags:
|
|
||||||
|
|
||||||
``Decode Parameters Flags``
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - ``V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC``
|
|
||||||
- 0x00000001
|
|
||||||
- That picture is an IDR picture
|
|
||||||
* - ``V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC``
|
|
||||||
- 0x00000002
|
|
||||||
-
|
|
||||||
* - ``V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD``
|
|
||||||
- 0x00000004
|
|
||||||
-
|
|
||||||
|
|
||||||
.. c:type:: v4l2_h264_dpb_entry
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table:: struct v4l2_h264_dpb_entry
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - __u64
|
|
||||||
- ``reference_ts``
|
|
||||||
- Timestamp of the V4L2 capture buffer to use as reference, used
|
|
||||||
with B-coded and P-coded frames. The timestamp refers to the
|
|
||||||
``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
|
|
||||||
:c:func:`v4l2_timeval_to_ns()` function to convert the struct
|
|
||||||
:c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
|
|
||||||
* - __u32
|
|
||||||
- ``pic_num``
|
|
||||||
-
|
|
||||||
* - __u16
|
|
||||||
- ``frame_num``
|
|
||||||
-
|
|
||||||
* - __u8
|
|
||||||
- ``fields``
|
|
||||||
- Specifies how the DPB entry is referenced. See :ref:`Reference Fields <h264_ref_fields>`
|
|
||||||
* - __u8
|
|
||||||
- ``reserved[5]``
|
|
||||||
- Applications and drivers must set this to zero.
|
|
||||||
* - __s32
|
|
||||||
- ``top_field_order_cnt``
|
|
||||||
-
|
|
||||||
* - __s32
|
|
||||||
- ``bottom_field_order_cnt``
|
|
||||||
-
|
|
||||||
* - __u32
|
|
||||||
- ``flags``
|
|
||||||
- See :ref:`DPB Entry Flags <h264_dpb_flags>`
|
|
||||||
|
|
||||||
.. _h264_dpb_flags:
|
|
||||||
|
|
||||||
``DPB Entries Flags``
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - ``V4L2_H264_DPB_ENTRY_FLAG_VALID``
|
|
||||||
- 0x00000001
|
|
||||||
- The DPB entry is valid (non-empty) and should be considered.
|
|
||||||
* - ``V4L2_H264_DPB_ENTRY_FLAG_ACTIVE``
|
|
||||||
- 0x00000002
|
|
||||||
- The DPB entry is used for reference.
|
|
||||||
* - ``V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM``
|
|
||||||
- 0x00000004
|
|
||||||
- The DPB entry is used for long-term reference.
|
|
||||||
* - ``V4L2_H264_DPB_ENTRY_FLAG_FIELD``
|
|
||||||
- 0x00000008
|
|
||||||
- The DPB entry is a single field or a complementary field pair.
|
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_DECODE_MODE (enum)``
|
|
||||||
Specifies the decoding mode to use. Currently exposes slice-based and
|
|
||||||
frame-based decoding but new modes might be added later on.
|
|
||||||
This control is used as a modifier for V4L2_PIX_FMT_H264_SLICE
|
|
||||||
pixel format. Applications that support V4L2_PIX_FMT_H264_SLICE
|
|
||||||
are required to set this control in order to specify the decoding mode
|
|
||||||
that is expected for the buffer.
|
|
||||||
Drivers may expose a single or multiple decoding modes, depending
|
|
||||||
on what they can support.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
This menu control is not yet part of the public kernel API and
|
|
||||||
it is expected to change.
|
|
||||||
|
|
||||||
.. c:type:: v4l2_mpeg_video_h264_decode_mode
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - ``V4L2_MPEG_VIDEO_H264_DECODE_MODE_SLICE_BASED``
|
|
||||||
- 0
|
|
||||||
- Decoding is done at the slice granularity.
|
|
||||||
The OUTPUT buffer must contain a single slice.
|
|
||||||
When this mode is selected, the ``V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS``
|
|
||||||
control shall be set. When multiple slices compose a frame,
|
|
||||||
use of ``V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF`` flag
|
|
||||||
is required.
|
|
||||||
* - ``V4L2_MPEG_VIDEO_H264_DECODE_MODE_FRAME_BASED``
|
|
||||||
- 1
|
|
||||||
- Decoding is done at the frame granularity,
|
|
||||||
The OUTPUT buffer must contain all slices needed to decode the
|
|
||||||
frame. The OUTPUT buffer must also contain both fields.
|
|
||||||
This mode will be supported by devices that
|
|
||||||
parse the slice(s) header(s) in hardware. When this mode is
|
|
||||||
selected, the ``V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS``
|
|
||||||
control shall not be set.
|
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_START_CODE (enum)``
|
|
||||||
Specifies the H264 slice start code expected for each slice.
|
|
||||||
This control is used as a modifier for V4L2_PIX_FMT_H264_SLICE
|
|
||||||
pixel format. Applications that support V4L2_PIX_FMT_H264_SLICE
|
|
||||||
are required to set this control in order to specify the start code
|
|
||||||
that is expected for the buffer.
|
|
||||||
Drivers may expose a single or multiple start codes, depending
|
|
||||||
on what they can support.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
This menu control is not yet part of the public kernel API and
|
|
||||||
it is expected to change.
|
|
||||||
|
|
||||||
.. c:type:: v4l2_mpeg_video_h264_start_code
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - ``V4L2_MPEG_VIDEO_H264_START_CODE_NONE``
|
|
||||||
- 0
|
|
||||||
- Selecting this value specifies that H264 slices are passed
|
|
||||||
to the driver without any start code.
|
|
||||||
* - ``V4L2_MPEG_VIDEO_H264_START_CODE_ANNEX_B``
|
|
||||||
- 1
|
|
||||||
- Selecting this value specifies that H264 slices are expected
|
|
||||||
to be prefixed by Annex B start codes. According to :ref:`h264`
|
|
||||||
valid start codes can be 3-bytes 0x000001 or 4-bytes 0x00000001.
|
|
||||||
|
|
||||||
.. _v4l2-mpeg-mpeg2:
|
.. _v4l2-mpeg-mpeg2:
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS (struct)``
|
``V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS (struct)``
|
||||||
@@ -2905,127 +2213,6 @@ enum v4l2_mpeg_mfc51_video_force_frame_type -
|
|||||||
- Force a non-coded frame.
|
- Force a non-coded frame.
|
||||||
|
|
||||||
|
|
||||||
.. _v4l2-mpeg-fwht:
|
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_FWHT_PARAMS (struct)``
|
|
||||||
Specifies the fwht parameters (as extracted from the bitstream) for the
|
|
||||||
associated FWHT data. This includes the necessary parameters for
|
|
||||||
configuring a stateless hardware decoding pipeline for FWHT.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
This compound control is not yet part of the public kernel API and
|
|
||||||
it is expected to change.
|
|
||||||
|
|
||||||
.. c:type:: v4l2_ctrl_fwht_params
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. tabularcolumns:: |p{1.4cm}|p{4.3cm}|p{11.8cm}|
|
|
||||||
|
|
||||||
.. flat-table:: struct v4l2_ctrl_fwht_params
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 1 1 2
|
|
||||||
|
|
||||||
* - __u64
|
|
||||||
- ``backward_ref_ts``
|
|
||||||
- Timestamp of the V4L2 capture buffer to use as backward reference, used
|
|
||||||
with P-coded frames. The timestamp refers to the
|
|
||||||
``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
|
|
||||||
:c:func:`v4l2_timeval_to_ns()` function to convert the struct
|
|
||||||
:c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
|
|
||||||
* - __u32
|
|
||||||
- ``version``
|
|
||||||
- The version of the codec
|
|
||||||
* - __u32
|
|
||||||
- ``width``
|
|
||||||
- The width of the frame
|
|
||||||
* - __u32
|
|
||||||
- ``height``
|
|
||||||
- The height of the frame
|
|
||||||
* - __u32
|
|
||||||
- ``flags``
|
|
||||||
- The flags of the frame, see :ref:`fwht-flags`.
|
|
||||||
* - __u32
|
|
||||||
- ``colorspace``
|
|
||||||
- The colorspace of the frame, from enum :c:type:`v4l2_colorspace`.
|
|
||||||
* - __u32
|
|
||||||
- ``xfer_func``
|
|
||||||
- The transfer function, from enum :c:type:`v4l2_xfer_func`.
|
|
||||||
* - __u32
|
|
||||||
- ``ycbcr_enc``
|
|
||||||
- The Y'CbCr encoding, from enum :c:type:`v4l2_ycbcr_encoding`.
|
|
||||||
* - __u32
|
|
||||||
- ``quantization``
|
|
||||||
- The quantization range, from enum :c:type:`v4l2_quantization`.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. _fwht-flags:
|
|
||||||
|
|
||||||
FWHT Flags
|
|
||||||
============
|
|
||||||
|
|
||||||
.. cssclass:: longtable
|
|
||||||
|
|
||||||
.. tabularcolumns:: |p{6.8cm}|p{2.4cm}|p{8.3cm}|
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 3 1 4
|
|
||||||
|
|
||||||
* - ``FWHT_FL_IS_INTERLACED``
|
|
||||||
- 0x00000001
|
|
||||||
- Set if this is an interlaced format
|
|
||||||
* - ``FWHT_FL_IS_BOTTOM_FIRST``
|
|
||||||
- 0x00000002
|
|
||||||
- Set if this is a bottom-first (NTSC) interlaced format
|
|
||||||
* - ``FWHT_FL_IS_ALTERNATE``
|
|
||||||
- 0x00000004
|
|
||||||
- Set if each 'frame' contains just one field
|
|
||||||
* - ``FWHT_FL_IS_BOTTOM_FIELD``
|
|
||||||
- 0x00000008
|
|
||||||
- If FWHT_FL_IS_ALTERNATE was set, then this is set if this 'frame' is the
|
|
||||||
bottom field, else it is the top field.
|
|
||||||
* - ``FWHT_FL_LUMA_IS_UNCOMPRESSED``
|
|
||||||
- 0x00000010
|
|
||||||
- Set if the luma plane is uncompressed
|
|
||||||
* - ``FWHT_FL_CB_IS_UNCOMPRESSED``
|
|
||||||
- 0x00000020
|
|
||||||
- Set if the cb plane is uncompressed
|
|
||||||
* - ``FWHT_FL_CR_IS_UNCOMPRESSED``
|
|
||||||
- 0x00000040
|
|
||||||
- Set if the cr plane is uncompressed
|
|
||||||
* - ``FWHT_FL_CHROMA_FULL_HEIGHT``
|
|
||||||
- 0x00000080
|
|
||||||
- Set if the chroma plane has the same height as the luma plane,
|
|
||||||
else the chroma plane is half the height of the luma plane
|
|
||||||
* - ``FWHT_FL_CHROMA_FULL_WIDTH``
|
|
||||||
- 0x00000100
|
|
||||||
- Set if the chroma plane has the same width as the luma plane,
|
|
||||||
else the chroma plane is half the width of the luma plane
|
|
||||||
* - ``FWHT_FL_ALPHA_IS_UNCOMPRESSED``
|
|
||||||
- 0x00000200
|
|
||||||
- Set if the alpha plane is uncompressed
|
|
||||||
* - ``FWHT_FL_I_FRAME``
|
|
||||||
- 0x00000400
|
|
||||||
- Set if this is an I-frame
|
|
||||||
* - ``FWHT_FL_COMPONENTS_NUM_MSK``
|
|
||||||
- 0x00070000
|
|
||||||
- A 4-values flag - the number of components - 1
|
|
||||||
* - ``FWHT_FL_PIXENC_YUV``
|
|
||||||
- 0x00080000
|
|
||||||
- Set if the pixel encoding is YUV
|
|
||||||
* - ``FWHT_FL_PIXENC_RGB``
|
|
||||||
- 0x00100000
|
|
||||||
- Set if the pixel encoding is RGB
|
|
||||||
* - ``FWHT_FL_PIXENC_HSV``
|
|
||||||
- 0x00180000
|
|
||||||
- Set if the pixel encoding is HSV
|
|
||||||
|
|
||||||
|
|
||||||
CX2341x MPEG Controls
|
CX2341x MPEG Controls
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
|
|||||||
@@ -58,3 +58,17 @@ Image Source Control IDs
|
|||||||
The unit cell consists of the whole area of the pixel, sensitive and
|
The unit cell consists of the whole area of the pixel, sensitive and
|
||||||
non-sensitive.
|
non-sensitive.
|
||||||
This control is required for automatic calibration of sensors/cameras.
|
This control is required for automatic calibration of sensors/cameras.
|
||||||
|
|
||||||
|
.. c:type:: v4l2_area
|
||||||
|
|
||||||
|
.. flat-table:: struct v4l2_area
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __u32
|
||||||
|
- ``width``
|
||||||
|
- Width of the area.
|
||||||
|
* - __u32
|
||||||
|
- ``height``
|
||||||
|
- Height of the area.
|
||||||
|
|||||||
@@ -55,8 +55,8 @@ controls in that array and a control class. Control classes are used to
|
|||||||
group similar controls into a single class. For example, control class
|
group similar controls into a single class. For example, control class
|
||||||
``V4L2_CTRL_CLASS_USER`` contains all user controls (i. e. all controls
|
``V4L2_CTRL_CLASS_USER`` contains all user controls (i. e. all controls
|
||||||
that can also be set using the old :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>`
|
that can also be set using the old :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>`
|
||||||
ioctl). Control class ``V4L2_CTRL_CLASS_MPEG`` contains all controls
|
ioctl). Control class ``V4L2_CTRL_CLASS_CODEC`` contains controls
|
||||||
relating to MPEG encoding, etc.
|
relating to codecs.
|
||||||
|
|
||||||
All controls in the control array must belong to the specified control
|
All controls in the control array must belong to the specified control
|
||||||
class. An error is returned if this is not the case.
|
class. An error is returned if this is not the case.
|
||||||
@@ -130,9 +130,9 @@ control class is found:
|
|||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL;
|
qctrl.id = V4L2_CTRL_CLASS_CODEC | V4L2_CTRL_FLAG_NEXT_CTRL;
|
||||||
while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &qctrl)) {
|
while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &qctrl)) {
|
||||||
if (V4L2_CTRL_ID2CLASS(qctrl.id) != V4L2_CTRL_CLASS_MPEG)
|
if (V4L2_CTRL_ID2CLASS(qctrl.id) != V4L2_CTRL_CLASS_CODEC)
|
||||||
break;
|
break;
|
||||||
/* ... */
|
/* ... */
|
||||||
qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
|
qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
|
||||||
|
|||||||
@@ -57,18 +57,18 @@ Compressed Formats
|
|||||||
- H264 parsed slice data, including slice headers, either with or
|
- H264 parsed slice data, including slice headers, either with or
|
||||||
without the start code, as extracted from the H264 bitstream.
|
without the start code, as extracted from the H264 bitstream.
|
||||||
This format is adapted for stateless video decoders that implement an
|
This format is adapted for stateless video decoders that implement an
|
||||||
H264 pipeline (using the :ref:`mem2mem` and :ref:`media-request-api`).
|
H264 pipeline with the :ref:`stateless_decoder`.
|
||||||
This pixelformat has two modifiers that must be set at least once
|
This pixelformat has two modifiers that must be set at least once
|
||||||
through the ``V4L2_CID_MPEG_VIDEO_H264_DECODE_MODE``
|
through the ``V4L2_CID_STATELESS_H264_DECODE_MODE``
|
||||||
and ``V4L2_CID_MPEG_VIDEO_H264_START_CODE`` controls.
|
and ``V4L2_CID_STATELESS_H264_START_CODE`` controls.
|
||||||
In addition, metadata associated with the frame to decode are
|
In addition, metadata associated with the frame to decode are
|
||||||
required to be passed through the ``V4L2_CID_MPEG_VIDEO_H264_SPS``,
|
required to be passed through the ``V4L2_CID_STATELESS_H264_SPS``,
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_PPS``,
|
``V4L2_CID_STATELESS_H264_PPS``,
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX``,
|
``V4L2_CID_STATELESS_H264_SCALING_MATRIX``,
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS`` and
|
``V4L2_CID_STATELESS_H264_SLICE_PARAMS`` and
|
||||||
``V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS`` controls. See the
|
``V4L2_CID_STATELESS_H264_DECODE_PARAMS`` controls. See the
|
||||||
:ref:`associated Codec Control IDs <v4l2-mpeg-h264>`. Exactly
|
:ref:`associated Codec Control IDs <v4l2-codec-stateless-h264>`.
|
||||||
one output and one capture buffer must be provided for use
|
Exactly one output and one capture buffer must be provided for use
|
||||||
with this pixel format. The output buffer must contain the
|
with this pixel format. The output buffer must contain the
|
||||||
appropriate number of macroblocks to decode a full
|
appropriate number of macroblocks to decode a full
|
||||||
corresponding frame to the matching capture buffer.
|
corresponding frame to the matching capture buffer.
|
||||||
@@ -77,11 +77,6 @@ Compressed Formats
|
|||||||
7.3.2.8 "Slice layer without partitioning RBSP syntax" and the following
|
7.3.2.8 "Slice layer without partitioning RBSP syntax" and the following
|
||||||
sections.
|
sections.
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
This format is not yet part of the public kernel API and it
|
|
||||||
is expected to change.
|
|
||||||
|
|
||||||
* .. _V4L2-PIX-FMT-H263:
|
* .. _V4L2-PIX-FMT-H263:
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_H263``
|
- ``V4L2_PIX_FMT_H263``
|
||||||
@@ -196,10 +191,10 @@ Compressed Formats
|
|||||||
through the ``V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE``
|
through the ``V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE``
|
||||||
and ``V4L2_CID_MPEG_VIDEO_HEVC_START_CODE`` controls.
|
and ``V4L2_CID_MPEG_VIDEO_HEVC_START_CODE`` controls.
|
||||||
Metadata associated with the frame to decode is required to be passed
|
Metadata associated with the frame to decode is required to be passed
|
||||||
through the following controls :
|
through the following controls:
|
||||||
* ``V4L2_CID_MPEG_VIDEO_HEVC_SPS``
|
``V4L2_CID_MPEG_VIDEO_HEVC_SPS``,
|
||||||
* ``V4L2_CID_MPEG_VIDEO_HEVC_PPS``
|
``V4L2_CID_MPEG_VIDEO_HEVC_PPS``, and
|
||||||
* ``V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS``
|
``V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS``.
|
||||||
See the :ref:`associated Codec Control IDs <v4l2-mpeg-hevc>`.
|
See the :ref:`associated Codec Control IDs <v4l2-mpeg-hevc>`.
|
||||||
Buffers associated with this pixel format must contain the appropriate
|
Buffers associated with this pixel format must contain the appropriate
|
||||||
number of macroblocks to decode a full corresponding frame.
|
number of macroblocks to decode a full corresponding frame.
|
||||||
@@ -222,4 +217,6 @@ Compressed Formats
|
|||||||
- ``V4L2_PIX_FMT_FWHT_STATELESS``
|
- ``V4L2_PIX_FMT_FWHT_STATELESS``
|
||||||
- 'SFWH'
|
- 'SFWH'
|
||||||
- Same format as V4L2_PIX_FMT_FWHT but requires stateless codec implementation.
|
- Same format as V4L2_PIX_FMT_FWHT but requires stateless codec implementation.
|
||||||
See the :ref:`associated Codec Control IDs <v4l2-mpeg-fwht>`.
|
Metadata associated with the frame to decode is required to be passed
|
||||||
|
through the ``V4L2_CID_STATELESS_FWHT_PARAMS`` control.
|
||||||
|
See the :ref:`associated Codec Control ID <codec-stateless-fwht>`.
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-GREY:
|
|
||||||
|
|
||||||
**************************
|
|
||||||
V4L2_PIX_FMT_GREY ('GREY')
|
|
||||||
**************************
|
|
||||||
|
|
||||||
Grey-scale image
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
This is a grey-scale image. It is really a degenerate Y'CbCr format
|
|
||||||
which simply contains no Cb or Cr data.
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start + 0:
|
|
||||||
- Y'\ :sub:`00`
|
|
||||||
- Y'\ :sub:`01`
|
|
||||||
- Y'\ :sub:`02`
|
|
||||||
- Y'\ :sub:`03`
|
|
||||||
* - start + 4:
|
|
||||||
- Y'\ :sub:`10`
|
|
||||||
- Y'\ :sub:`11`
|
|
||||||
- Y'\ :sub:`12`
|
|
||||||
- Y'\ :sub:`13`
|
|
||||||
* - start + 8:
|
|
||||||
- Y'\ :sub:`20`
|
|
||||||
- Y'\ :sub:`21`
|
|
||||||
- Y'\ :sub:`22`
|
|
||||||
- Y'\ :sub:`23`
|
|
||||||
* - start + 12:
|
|
||||||
- Y'\ :sub:`30`
|
|
||||||
- Y'\ :sub:`31`
|
|
||||||
- Y'\ :sub:`32`
|
|
||||||
- Y'\ :sub:`33`
|
|
||||||
@@ -67,60 +67,5 @@ Each cell is one byte.
|
|||||||
|
|
||||||
|
|
||||||
**Color Sample Location:**
|
**Color Sample Location:**
|
||||||
|
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
|
||||||
|
horizontally and vertically.
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* -
|
|
||||||
- 0
|
|
||||||
-
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
-
|
|
||||||
- 3
|
|
||||||
* - 0
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* - 1
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
* - 2
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* - 3
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
.. _v4l2-meta-fmt-params-rkisp1:
|
.. _v4l2-meta-fmt-rk-isp1-params:
|
||||||
.. _v4l2-meta-fmt-stat-rkisp1:
|
|
||||||
|
.. _v4l2-meta-fmt-rk-isp1-stat-3a:
|
||||||
|
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
V4L2_META_FMT_RK_ISP1_PARAMS ('rk1p'), V4L2_META_FMT_RK_ISP1_STAT_3A ('rk1s')
|
V4L2_META_FMT_RK_ISP1_PARAMS ('rk1p'), V4L2_META_FMT_RK_ISP1_STAT_3A ('rk1s')
|
||||||
@@ -46,4 +47,4 @@ important tuning tools using software control loop.
|
|||||||
rkisp1 uAPI data types
|
rkisp1 uAPI data types
|
||||||
======================
|
======================
|
||||||
|
|
||||||
.. kernel-doc:: drivers/staging/media/rkisp1/uapi/rkisp1-config.h
|
.. kernel-doc:: include/uapi/linux/rkisp1-config.h
|
||||||
|
|||||||
@@ -1,129 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-NV12:
|
|
||||||
.. _V4L2-PIX-FMT-NV21:
|
|
||||||
|
|
||||||
******************************************************
|
|
||||||
V4L2_PIX_FMT_NV12 ('NV12'), V4L2_PIX_FMT_NV21 ('NV21')
|
|
||||||
******************************************************
|
|
||||||
|
|
||||||
|
|
||||||
V4L2_PIX_FMT_NV21
|
|
||||||
Formats with ½ horizontal and vertical chroma resolution, also known as
|
|
||||||
YUV 4:2:0. One luminance and one chrominance plane with alternating
|
|
||||||
chroma samples as opposed to ``V4L2_PIX_FMT_YVU420``
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
These are two-plane versions of the YUV 4:2:0 format. The three
|
|
||||||
components are separated into two sub-images or planes. The Y plane is
|
|
||||||
first. The Y plane has one byte per pixel. For ``V4L2_PIX_FMT_NV12``, a
|
|
||||||
combined CbCr plane immediately follows the Y plane in memory. The CbCr
|
|
||||||
plane is the same width, in bytes, as the Y plane (and of the image),
|
|
||||||
but is half as tall in pixels. Each CbCr pair belongs to four pixels.
|
|
||||||
For example, Cb\ :sub:`0`/Cr\ :sub:`0` belongs to Y'\ :sub:`00`,
|
|
||||||
Y'\ :sub:`01`, Y'\ :sub:`10`, Y'\ :sub:`11`. ``V4L2_PIX_FMT_NV21`` is
|
|
||||||
the same except the Cb and Cr bytes are swapped, the CrCb plane starts
|
|
||||||
with a Cr byte.
|
|
||||||
|
|
||||||
If the Y plane has pad bytes after each row, then the CbCr plane has as
|
|
||||||
many pad bytes after its rows.
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start + 0:
|
|
||||||
- Y'\ :sub:`00`
|
|
||||||
- Y'\ :sub:`01`
|
|
||||||
- Y'\ :sub:`02`
|
|
||||||
- Y'\ :sub:`03`
|
|
||||||
* - start + 4:
|
|
||||||
- Y'\ :sub:`10`
|
|
||||||
- Y'\ :sub:`11`
|
|
||||||
- Y'\ :sub:`12`
|
|
||||||
- Y'\ :sub:`13`
|
|
||||||
* - start + 8:
|
|
||||||
- Y'\ :sub:`20`
|
|
||||||
- Y'\ :sub:`21`
|
|
||||||
- Y'\ :sub:`22`
|
|
||||||
- Y'\ :sub:`23`
|
|
||||||
* - start + 12:
|
|
||||||
- Y'\ :sub:`30`
|
|
||||||
- Y'\ :sub:`31`
|
|
||||||
- Y'\ :sub:`32`
|
|
||||||
- Y'\ :sub:`33`
|
|
||||||
* - start + 16:
|
|
||||||
- Cb\ :sub:`00`
|
|
||||||
- Cr\ :sub:`00`
|
|
||||||
- Cb\ :sub:`01`
|
|
||||||
- Cr\ :sub:`01`
|
|
||||||
* - start + 20:
|
|
||||||
- Cb\ :sub:`10`
|
|
||||||
- Cr\ :sub:`10`
|
|
||||||
- Cb\ :sub:`11`
|
|
||||||
- Cr\ :sub:`11`
|
|
||||||
|
|
||||||
|
|
||||||
**Color Sample Location:**
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* -
|
|
||||||
- 0
|
|
||||||
-
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
-
|
|
||||||
- 3
|
|
||||||
* - 0
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* - 1
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
* - 2
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* - 3
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
@@ -1,144 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-NV12M:
|
|
||||||
.. _v4l2-pix-fmt-nv12mt-16x16:
|
|
||||||
.. _V4L2-PIX-FMT-NV21M:
|
|
||||||
|
|
||||||
***********************************************************************************
|
|
||||||
V4L2_PIX_FMT_NV12M ('NM12'), V4L2_PIX_FMT_NV21M ('NM21'), V4L2_PIX_FMT_NV12MT_16X16
|
|
||||||
***********************************************************************************
|
|
||||||
|
|
||||||
|
|
||||||
V4L2_PIX_FMT_NV21M
|
|
||||||
V4L2_PIX_FMT_NV12MT_16X16
|
|
||||||
Variation of ``V4L2_PIX_FMT_NV12`` and ``V4L2_PIX_FMT_NV21`` with planes
|
|
||||||
non contiguous in memory.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
This is a multi-planar, two-plane version of the YUV 4:2:0 format. The
|
|
||||||
three components are separated into two sub-images or planes.
|
|
||||||
``V4L2_PIX_FMT_NV12M`` differs from ``V4L2_PIX_FMT_NV12`` in that the
|
|
||||||
two planes are non-contiguous in memory, i.e. the chroma plane do not
|
|
||||||
necessarily immediately follows the luma plane. The luminance data
|
|
||||||
occupies the first plane. The Y plane has one byte per pixel. In the
|
|
||||||
second plane there is a chrominance data with alternating chroma
|
|
||||||
samples. The CbCr plane is the same width, in bytes, as the Y plane (and
|
|
||||||
of the image), but is half as tall in pixels. Each CbCr pair belongs to
|
|
||||||
four pixels. For example, Cb\ :sub:`0`/Cr\ :sub:`0` belongs to
|
|
||||||
Y'\ :sub:`00`, Y'\ :sub:`01`, Y'\ :sub:`10`, Y'\ :sub:`11`.
|
|
||||||
``V4L2_PIX_FMT_NV12MT_16X16`` is the tiled version of
|
|
||||||
``V4L2_PIX_FMT_NV12M`` with 16x16 macroblock tiles. Here pixels are
|
|
||||||
arranged in 16x16 2D tiles and tiles are arranged in linear order in
|
|
||||||
memory. ``V4L2_PIX_FMT_NV21M`` is the same as ``V4L2_PIX_FMT_NV12M``
|
|
||||||
except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr
|
|
||||||
byte.
|
|
||||||
|
|
||||||
``V4L2_PIX_FMT_NV12M`` is intended to be used only in drivers and
|
|
||||||
applications that support the multi-planar API, described in
|
|
||||||
:ref:`planar-apis`.
|
|
||||||
|
|
||||||
If the Y plane has pad bytes after each row, then the CbCr plane has as
|
|
||||||
many pad bytes after its rows.
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start0 + 0:
|
|
||||||
- Y'\ :sub:`00`
|
|
||||||
- Y'\ :sub:`01`
|
|
||||||
- Y'\ :sub:`02`
|
|
||||||
- Y'\ :sub:`03`
|
|
||||||
* - start0 + 4:
|
|
||||||
- Y'\ :sub:`10`
|
|
||||||
- Y'\ :sub:`11`
|
|
||||||
- Y'\ :sub:`12`
|
|
||||||
- Y'\ :sub:`13`
|
|
||||||
* - start0 + 8:
|
|
||||||
- Y'\ :sub:`20`
|
|
||||||
- Y'\ :sub:`21`
|
|
||||||
- Y'\ :sub:`22`
|
|
||||||
- Y'\ :sub:`23`
|
|
||||||
* - start0 + 12:
|
|
||||||
- Y'\ :sub:`30`
|
|
||||||
- Y'\ :sub:`31`
|
|
||||||
- Y'\ :sub:`32`
|
|
||||||
- Y'\ :sub:`33`
|
|
||||||
* -
|
|
||||||
* - start1 + 0:
|
|
||||||
- Cb\ :sub:`00`
|
|
||||||
- Cr\ :sub:`00`
|
|
||||||
- Cb\ :sub:`01`
|
|
||||||
- Cr\ :sub:`01`
|
|
||||||
* - start1 + 4:
|
|
||||||
- Cb\ :sub:`10`
|
|
||||||
- Cr\ :sub:`10`
|
|
||||||
- Cb\ :sub:`11`
|
|
||||||
- Cr\ :sub:`11`
|
|
||||||
|
|
||||||
|
|
||||||
**Color Sample Location:**
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* -
|
|
||||||
- 0
|
|
||||||
-
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
-
|
|
||||||
- 3
|
|
||||||
* - 0
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* - 1
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
* - 2
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* - 3
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-NV12MT:
|
|
||||||
|
|
||||||
****************************
|
|
||||||
V4L2_PIX_FMT_NV12MT ('TM12')
|
|
||||||
****************************
|
|
||||||
|
|
||||||
Formats with ½ horizontal and vertical chroma resolution. This format
|
|
||||||
has two planes - one for luminance and one for chrominance. Chroma
|
|
||||||
samples are interleaved. The difference to ``V4L2_PIX_FMT_NV12`` is the
|
|
||||||
memory layout. Pixels are grouped in macroblocks of 64x32 size. The
|
|
||||||
order of macroblocks in memory is also not standard.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
This is the two-plane versions of the YUV 4:2:0 format where data is
|
|
||||||
grouped into 64x32 macroblocks. The three components are separated into
|
|
||||||
two sub-images or planes. The Y plane has one byte per pixel and pixels
|
|
||||||
are grouped into 64x32 macroblocks. The CbCr plane has the same width,
|
|
||||||
in bytes, as the Y plane (and the image), but is half as tall in pixels.
|
|
||||||
The chroma plane is also grouped into 64x32 macroblocks.
|
|
||||||
|
|
||||||
Width of the buffer has to be aligned to the multiple of 128, and height
|
|
||||||
alignment is 32. Every four adjacent buffers - two horizontally and two
|
|
||||||
vertically are grouped together and are located in memory in Z or
|
|
||||||
flipped Z order.
|
|
||||||
|
|
||||||
Layout of macroblocks in memory is presented in the following figure.
|
|
||||||
|
|
||||||
|
|
||||||
.. _nv12mt:
|
|
||||||
|
|
||||||
.. kernel-figure:: nv12mt.svg
|
|
||||||
:alt: nv12mt.svg
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
V4L2_PIX_FMT_NV12MT macroblock Z shape memory layout
|
|
||||||
|
|
||||||
The requirement that width is multiple of 128 is implemented because,
|
|
||||||
the Z shape cannot be cut in half horizontally. In case the vertical
|
|
||||||
resolution of macroblocks is odd then the last row of macroblocks is
|
|
||||||
arranged in a linear order.
|
|
||||||
|
|
||||||
In case of chroma the layout is identical. Cb and Cr samples are
|
|
||||||
interleaved. Height of the buffer is aligned to 32.
|
|
||||||
|
|
||||||
|
|
||||||
.. _nv12mt_ex:
|
|
||||||
|
|
||||||
.. kernel-figure:: nv12mt_example.svg
|
|
||||||
:alt: nv12mt_example.svg
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Example V4L2_PIX_FMT_NV12MT memory layout of macroblocks
|
|
||||||
|
|
||||||
Memory layout of macroblocks of ``V4L2_PIX_FMT_NV12MT`` format in most
|
|
||||||
extreme case.
|
|
||||||
@@ -1,153 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-NV16:
|
|
||||||
.. _V4L2-PIX-FMT-NV61:
|
|
||||||
|
|
||||||
******************************************************
|
|
||||||
V4L2_PIX_FMT_NV16 ('NV16'), V4L2_PIX_FMT_NV61 ('NV61')
|
|
||||||
******************************************************
|
|
||||||
|
|
||||||
V4L2_PIX_FMT_NV61
|
|
||||||
Formats with ½ horizontal chroma resolution, also known as YUV 4:2:2.
|
|
||||||
One luminance and one chrominance plane with alternating chroma samples
|
|
||||||
as opposed to ``V4L2_PIX_FMT_YVU420``
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
These are two-plane versions of the YUV 4:2:2 format. The three
|
|
||||||
components are separated into two sub-images or planes. The Y plane is
|
|
||||||
first. The Y plane has one byte per pixel. For ``V4L2_PIX_FMT_NV16``, a
|
|
||||||
combined CbCr plane immediately follows the Y plane in memory. The CbCr
|
|
||||||
plane is the same width and height, in bytes, as the Y plane (and of the
|
|
||||||
image). Each CbCr pair belongs to two pixels. For example,
|
|
||||||
Cb\ :sub:`0`/Cr\ :sub:`0` belongs to Y'\ :sub:`00`, Y'\ :sub:`01`.
|
|
||||||
``V4L2_PIX_FMT_NV61`` is the same except the Cb and Cr bytes are
|
|
||||||
swapped, the CrCb plane starts with a Cr byte.
|
|
||||||
|
|
||||||
If the Y plane has pad bytes after each row, then the CbCr plane has as
|
|
||||||
many pad bytes after its rows.
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start + 0:
|
|
||||||
- Y'\ :sub:`00`
|
|
||||||
- Y'\ :sub:`01`
|
|
||||||
- Y'\ :sub:`02`
|
|
||||||
- Y'\ :sub:`03`
|
|
||||||
* - start + 4:
|
|
||||||
- Y'\ :sub:`10`
|
|
||||||
- Y'\ :sub:`11`
|
|
||||||
- Y'\ :sub:`12`
|
|
||||||
- Y'\ :sub:`13`
|
|
||||||
* - start + 8:
|
|
||||||
- Y'\ :sub:`20`
|
|
||||||
- Y'\ :sub:`21`
|
|
||||||
- Y'\ :sub:`22`
|
|
||||||
- Y'\ :sub:`23`
|
|
||||||
* - start + 12:
|
|
||||||
- Y'\ :sub:`30`
|
|
||||||
- Y'\ :sub:`31`
|
|
||||||
- Y'\ :sub:`32`
|
|
||||||
- Y'\ :sub:`33`
|
|
||||||
* - start + 16:
|
|
||||||
- Cb\ :sub:`00`
|
|
||||||
- Cr\ :sub:`00`
|
|
||||||
- Cb\ :sub:`01`
|
|
||||||
- Cr\ :sub:`01`
|
|
||||||
* - start + 20:
|
|
||||||
- Cb\ :sub:`10`
|
|
||||||
- Cr\ :sub:`10`
|
|
||||||
- Cb\ :sub:`11`
|
|
||||||
- Cr\ :sub:`11`
|
|
||||||
* - start + 24:
|
|
||||||
- Cb\ :sub:`20`
|
|
||||||
- Cr\ :sub:`20`
|
|
||||||
- Cb\ :sub:`21`
|
|
||||||
- Cr\ :sub:`21`
|
|
||||||
* - start + 28:
|
|
||||||
- Cb\ :sub:`30`
|
|
||||||
- Cr\ :sub:`30`
|
|
||||||
- Cb\ :sub:`31`
|
|
||||||
- Cr\ :sub:`31`
|
|
||||||
|
|
||||||
|
|
||||||
**Color Sample Location:**
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* -
|
|
||||||
- 0
|
|
||||||
-
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
-
|
|
||||||
- 3
|
|
||||||
* - 0
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* - 1
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* -
|
|
||||||
* - 2
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* - 3
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
@@ -1,157 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-NV16M:
|
|
||||||
.. _v4l2-pix-fmt-nv61m:
|
|
||||||
|
|
||||||
********************************************************
|
|
||||||
V4L2_PIX_FMT_NV16M ('NM16'), V4L2_PIX_FMT_NV61M ('NM61')
|
|
||||||
********************************************************
|
|
||||||
|
|
||||||
V4L2_PIX_FMT_NV61M
|
|
||||||
Variation of ``V4L2_PIX_FMT_NV16`` and ``V4L2_PIX_FMT_NV61`` with planes
|
|
||||||
non contiguous in memory.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
This is a multi-planar, two-plane version of the YUV 4:2:2 format. The
|
|
||||||
three components are separated into two sub-images or planes.
|
|
||||||
``V4L2_PIX_FMT_NV16M`` differs from ``V4L2_PIX_FMT_NV16`` in that the
|
|
||||||
two planes are non-contiguous in memory, i.e. the chroma plane does not
|
|
||||||
necessarily immediately follow the luma plane. The luminance data
|
|
||||||
occupies the first plane. The Y plane has one byte per pixel. In the
|
|
||||||
second plane there is chrominance data with alternating chroma samples.
|
|
||||||
The CbCr plane is the same width and height, in bytes, as the Y plane.
|
|
||||||
Each CbCr pair belongs to two pixels. For example,
|
|
||||||
Cb\ :sub:`0`/Cr\ :sub:`0` belongs to Y'\ :sub:`00`, Y'\ :sub:`01`.
|
|
||||||
``V4L2_PIX_FMT_NV61M`` is the same as ``V4L2_PIX_FMT_NV16M`` except the
|
|
||||||
Cb and Cr bytes are swapped, the CrCb plane starts with a Cr byte.
|
|
||||||
|
|
||||||
``V4L2_PIX_FMT_NV16M`` and ``V4L2_PIX_FMT_NV61M`` are intended to be
|
|
||||||
used only in drivers and applications that support the multi-planar API,
|
|
||||||
described in :ref:`planar-apis`.
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start0 + 0:
|
|
||||||
- Y'\ :sub:`00`
|
|
||||||
- Y'\ :sub:`01`
|
|
||||||
- Y'\ :sub:`02`
|
|
||||||
- Y'\ :sub:`03`
|
|
||||||
* - start0 + 4:
|
|
||||||
- Y'\ :sub:`10`
|
|
||||||
- Y'\ :sub:`11`
|
|
||||||
- Y'\ :sub:`12`
|
|
||||||
- Y'\ :sub:`13`
|
|
||||||
* - start0 + 8:
|
|
||||||
- Y'\ :sub:`20`
|
|
||||||
- Y'\ :sub:`21`
|
|
||||||
- Y'\ :sub:`22`
|
|
||||||
- Y'\ :sub:`23`
|
|
||||||
* - start0 + 12:
|
|
||||||
- Y'\ :sub:`30`
|
|
||||||
- Y'\ :sub:`31`
|
|
||||||
- Y'\ :sub:`32`
|
|
||||||
- Y'\ :sub:`33`
|
|
||||||
* -
|
|
||||||
* - start1 + 0:
|
|
||||||
- Cb\ :sub:`00`
|
|
||||||
- Cr\ :sub:`00`
|
|
||||||
- Cb\ :sub:`02`
|
|
||||||
- Cr\ :sub:`02`
|
|
||||||
* - start1 + 4:
|
|
||||||
- Cb\ :sub:`10`
|
|
||||||
- Cr\ :sub:`10`
|
|
||||||
- Cb\ :sub:`12`
|
|
||||||
- Cr\ :sub:`12`
|
|
||||||
* - start1 + 8:
|
|
||||||
- Cb\ :sub:`20`
|
|
||||||
- Cr\ :sub:`20`
|
|
||||||
- Cb\ :sub:`22`
|
|
||||||
- Cr\ :sub:`22`
|
|
||||||
* - start1 + 12:
|
|
||||||
- Cb\ :sub:`30`
|
|
||||||
- Cr\ :sub:`30`
|
|
||||||
- Cb\ :sub:`32`
|
|
||||||
- Cr\ :sub:`32`
|
|
||||||
|
|
||||||
|
|
||||||
**Color Sample Location:**
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* -
|
|
||||||
- 0
|
|
||||||
-
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
-
|
|
||||||
- 3
|
|
||||||
* - 0
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* - 1
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* -
|
|
||||||
* - 2
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
* - 3
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
-
|
|
||||||
- Y
|
|
||||||
* -
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
-
|
|
||||||
- C
|
|
||||||
-
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-NV24:
|
|
||||||
.. _V4L2-PIX-FMT-NV42:
|
|
||||||
|
|
||||||
******************************************************
|
|
||||||
V4L2_PIX_FMT_NV24 ('NV24'), V4L2_PIX_FMT_NV42 ('NV42')
|
|
||||||
******************************************************
|
|
||||||
|
|
||||||
V4L2_PIX_FMT_NV42
|
|
||||||
Formats with full horizontal and vertical chroma resolutions, also known
|
|
||||||
as YUV 4:4:4. One luminance and one chrominance plane with alternating
|
|
||||||
chroma samples as opposed to ``V4L2_PIX_FMT_YVU420``
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
These are two-plane versions of the YUV 4:4:4 format. The three
|
|
||||||
components are separated into two sub-images or planes. The Y plane is
|
|
||||||
first, with each Y sample stored in one byte per pixel. For
|
|
||||||
``V4L2_PIX_FMT_NV24``, a combined CbCr plane immediately follows the Y
|
|
||||||
plane in memory. The CbCr plane has the same width and height, in
|
|
||||||
pixels, as the Y plane (and the image). Each line contains one CbCr pair
|
|
||||||
per pixel, with each Cb and Cr sample stored in one byte.
|
|
||||||
``V4L2_PIX_FMT_NV42`` is the same except that the Cb and Cr samples are
|
|
||||||
swapped, the CrCb plane starts with a Cr sample.
|
|
||||||
|
|
||||||
If the Y plane has pad bytes after each row, then the CbCr plane has
|
|
||||||
twice as many pad bytes after its rows.
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start + 0:
|
|
||||||
- Y'\ :sub:`00`
|
|
||||||
- Y'\ :sub:`01`
|
|
||||||
- Y'\ :sub:`02`
|
|
||||||
- Y'\ :sub:`03`
|
|
||||||
* - start + 4:
|
|
||||||
- Y'\ :sub:`10`
|
|
||||||
- Y'\ :sub:`11`
|
|
||||||
- Y'\ :sub:`12`
|
|
||||||
- Y'\ :sub:`13`
|
|
||||||
* - start + 8:
|
|
||||||
- Y'\ :sub:`20`
|
|
||||||
- Y'\ :sub:`21`
|
|
||||||
- Y'\ :sub:`22`
|
|
||||||
- Y'\ :sub:`23`
|
|
||||||
* - start + 12:
|
|
||||||
- Y'\ :sub:`30`
|
|
||||||
- Y'\ :sub:`31`
|
|
||||||
- Y'\ :sub:`32`
|
|
||||||
- Y'\ :sub:`33`
|
|
||||||
* - start + 16:
|
|
||||||
- Cb\ :sub:`00`
|
|
||||||
- Cr\ :sub:`00`
|
|
||||||
- Cb\ :sub:`01`
|
|
||||||
- Cr\ :sub:`01`
|
|
||||||
- Cb\ :sub:`02`
|
|
||||||
- Cr\ :sub:`02`
|
|
||||||
- Cb\ :sub:`03`
|
|
||||||
- Cr\ :sub:`03`
|
|
||||||
* - start + 24:
|
|
||||||
- Cb\ :sub:`10`
|
|
||||||
- Cr\ :sub:`10`
|
|
||||||
- Cb\ :sub:`11`
|
|
||||||
- Cr\ :sub:`11`
|
|
||||||
- Cb\ :sub:`12`
|
|
||||||
- Cr\ :sub:`12`
|
|
||||||
- Cb\ :sub:`13`
|
|
||||||
- Cr\ :sub:`13`
|
|
||||||
* - start + 32:
|
|
||||||
- Cb\ :sub:`20`
|
|
||||||
- Cr\ :sub:`20`
|
|
||||||
- Cb\ :sub:`21`
|
|
||||||
- Cr\ :sub:`21`
|
|
||||||
- Cb\ :sub:`22`
|
|
||||||
- Cr\ :sub:`22`
|
|
||||||
- Cb\ :sub:`23`
|
|
||||||
- Cr\ :sub:`23`
|
|
||||||
* - start + 40:
|
|
||||||
- Cb\ :sub:`30`
|
|
||||||
- Cr\ :sub:`30`
|
|
||||||
- Cb\ :sub:`31`
|
|
||||||
- Cr\ :sub:`31`
|
|
||||||
- Cb\ :sub:`32`
|
|
||||||
- Cr\ :sub:`32`
|
|
||||||
- Cb\ :sub:`33`
|
|
||||||
- Cr\ :sub:`33`
|
|
||||||
@@ -6,12 +6,32 @@
|
|||||||
Packed YUV formats
|
Packed YUV formats
|
||||||
******************
|
******************
|
||||||
|
|
||||||
Description
|
Similarly to the packed RGB formats, the packed YUV formats store the Y, Cb and
|
||||||
===========
|
Cr components consecutively in memory. They may apply subsampling to the chroma
|
||||||
|
components and thus differ in how they interlave the three components.
|
||||||
|
|
||||||
Similar to the packed RGB formats these formats store the Y, Cb and Cr
|
.. note::
|
||||||
component of each pixel in one 16 or 32 bit word.
|
|
||||||
|
|
||||||
|
- In all the tables that follow, bit 7 is the most significant bit in a byte.
|
||||||
|
- 'Y', 'Cb' and 'Cr' denote bits of the luma, blue chroma (also known as
|
||||||
|
'U') and red chroma (also known as 'V') components respectively. 'A'
|
||||||
|
denotes bits of the alpha component (if supported by the format), and 'X'
|
||||||
|
denotes padding bits.
|
||||||
|
|
||||||
|
|
||||||
|
4:4:4 Subsampling
|
||||||
|
=================
|
||||||
|
|
||||||
|
These formats do not subsample the chroma components and store each pixels as a
|
||||||
|
full triplet of Y, Cb and Cr values.
|
||||||
|
|
||||||
|
The next table lists the packed YUV 4:4:4 formats with less than 8 bits per
|
||||||
|
component. They are named based on the order of the Y, Cb and Cr components as
|
||||||
|
seen in a 16-bit word, which is then stored in memory in little endian byte
|
||||||
|
order, and on the number of bits for each component. For instance the YUV565
|
||||||
|
format stores a pixel in a 16-bit word [15:0] laid out at as [Y'\ :sub:`4-0`
|
||||||
|
Cb\ :sub:`5-0` Cr\ :sub:`4-0`], and stored in memory in two bytes,
|
||||||
|
[Cb\ :sub:`2-0` Cr\ :sub:`4-0`] followed by [Y'\ :sub:`4-0` Cb\ :sub:`5-3`].
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
||||||
@@ -19,11 +39,9 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
\tiny
|
\tiny
|
||||||
\setlength{\tabcolsep}{2pt}
|
\setlength{\tabcolsep}{2pt}
|
||||||
|
|
||||||
.. _packed-yuv-formats:
|
.. tabularcolumns:: |p{2.5cm}|p{0.69cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|
|
||||||
|
|
||||||
.. tabularcolumns:: |p{2.5cm}|p{0.69cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|
|
.. flat-table:: Packed YUV 4:4:4 Image Formats (less than 8bpc)
|
||||||
|
|
||||||
.. flat-table:: Packed YUV Image Formats
|
|
||||||
:header-rows: 2
|
:header-rows: 2
|
||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
|
|
||||||
@@ -34,10 +52,6 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- :cspan:`7` Byte 1
|
- :cspan:`7` Byte 1
|
||||||
|
|
||||||
- :cspan:`7` Byte 2
|
|
||||||
|
|
||||||
- :cspan:`7` Byte 3
|
|
||||||
|
|
||||||
* -
|
* -
|
||||||
-
|
-
|
||||||
- 7
|
- 7
|
||||||
@@ -58,24 +72,6 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
- 1
|
- 1
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
- 7
|
|
||||||
- 6
|
|
||||||
- 5
|
|
||||||
- 4
|
|
||||||
- 3
|
|
||||||
- 2
|
|
||||||
- 1
|
|
||||||
- 0
|
|
||||||
|
|
||||||
- 7
|
|
||||||
- 6
|
|
||||||
- 5
|
|
||||||
- 4
|
|
||||||
- 3
|
|
||||||
- 2
|
|
||||||
- 1
|
|
||||||
- 0
|
|
||||||
|
|
||||||
* .. _V4L2-PIX-FMT-YUV444:
|
* .. _V4L2-PIX-FMT-YUV444:
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_YUV444``
|
- ``V4L2_PIX_FMT_YUV444``
|
||||||
@@ -99,8 +95,6 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
- Y'\ :sub:`1`
|
- Y'\ :sub:`1`
|
||||||
- Y'\ :sub:`0`
|
- Y'\ :sub:`0`
|
||||||
|
|
||||||
- :cspan:`15`
|
|
||||||
|
|
||||||
* .. _V4L2-PIX-FMT-YUV555:
|
* .. _V4L2-PIX-FMT-YUV555:
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_YUV555``
|
- ``V4L2_PIX_FMT_YUV555``
|
||||||
@@ -124,7 +118,6 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
- Cb\ :sub:`4`
|
- Cb\ :sub:`4`
|
||||||
- Cb\ :sub:`3`
|
- Cb\ :sub:`3`
|
||||||
|
|
||||||
- :cspan:`15`
|
|
||||||
* .. _V4L2-PIX-FMT-YUV565:
|
* .. _V4L2-PIX-FMT-YUV565:
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_YUV565``
|
- ``V4L2_PIX_FMT_YUV565``
|
||||||
@@ -148,226 +141,219 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
- Cb\ :sub:`4`
|
- Cb\ :sub:`4`
|
||||||
- Cb\ :sub:`3`
|
- Cb\ :sub:`3`
|
||||||
|
|
||||||
- :cspan:`15`
|
|
||||||
|
|
||||||
* .. _V4L2-PIX-FMT-YUV32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_YUV32``
|
|
||||||
- 'YUV4'
|
|
||||||
|
|
||||||
- a\ :sub:`7`
|
|
||||||
- a\ :sub:`6`
|
|
||||||
- a\ :sub:`5`
|
|
||||||
- a\ :sub:`4`
|
|
||||||
- a\ :sub:`3`
|
|
||||||
- a\ :sub:`2`
|
|
||||||
- a\ :sub:`1`
|
|
||||||
- a\ :sub:`0`
|
|
||||||
|
|
||||||
- Y'\ :sub:`7`
|
|
||||||
- Y'\ :sub:`6`
|
|
||||||
- Y'\ :sub:`5`
|
|
||||||
- Y'\ :sub:`4`
|
|
||||||
- Y'\ :sub:`3`
|
|
||||||
- Y'\ :sub:`2`
|
|
||||||
- Y'\ :sub:`1`
|
|
||||||
- Y'\ :sub:`0`
|
|
||||||
|
|
||||||
- Cb\ :sub:`7`
|
|
||||||
- Cb\ :sub:`6`
|
|
||||||
- Cb\ :sub:`5`
|
|
||||||
- Cb\ :sub:`4`
|
|
||||||
- Cb\ :sub:`3`
|
|
||||||
- Cb\ :sub:`2`
|
|
||||||
- Cb\ :sub:`1`
|
|
||||||
- Cb\ :sub:`0`
|
|
||||||
|
|
||||||
- Cr\ :sub:`7`
|
|
||||||
- Cr\ :sub:`6`
|
|
||||||
- Cr\ :sub:`5`
|
|
||||||
- Cr\ :sub:`4`
|
|
||||||
- Cr\ :sub:`3`
|
|
||||||
- Cr\ :sub:`2`
|
|
||||||
- Cr\ :sub:`1`
|
|
||||||
- Cr\ :sub:`0`
|
|
||||||
|
|
||||||
* .. _V4L2-PIX-FMT-AYUV32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_AYUV32``
|
|
||||||
- 'AYUV'
|
|
||||||
|
|
||||||
- a\ :sub:`7`
|
|
||||||
- a\ :sub:`6`
|
|
||||||
- a\ :sub:`5`
|
|
||||||
- a\ :sub:`4`
|
|
||||||
- a\ :sub:`3`
|
|
||||||
- a\ :sub:`2`
|
|
||||||
- a\ :sub:`1`
|
|
||||||
- a\ :sub:`0`
|
|
||||||
|
|
||||||
- Y'\ :sub:`7`
|
|
||||||
- Y'\ :sub:`6`
|
|
||||||
- Y'\ :sub:`5`
|
|
||||||
- Y'\ :sub:`4`
|
|
||||||
- Y'\ :sub:`3`
|
|
||||||
- Y'\ :sub:`2`
|
|
||||||
- Y'\ :sub:`1`
|
|
||||||
- Y'\ :sub:`0`
|
|
||||||
|
|
||||||
- Cb\ :sub:`7`
|
|
||||||
- Cb\ :sub:`6`
|
|
||||||
- Cb\ :sub:`5`
|
|
||||||
- Cb\ :sub:`4`
|
|
||||||
- Cb\ :sub:`3`
|
|
||||||
- Cb\ :sub:`2`
|
|
||||||
- Cb\ :sub:`1`
|
|
||||||
- Cb\ :sub:`0`
|
|
||||||
|
|
||||||
- Cr\ :sub:`7`
|
|
||||||
- Cr\ :sub:`6`
|
|
||||||
- Cr\ :sub:`5`
|
|
||||||
- Cr\ :sub:`4`
|
|
||||||
- Cr\ :sub:`3`
|
|
||||||
- Cr\ :sub:`2`
|
|
||||||
- Cr\ :sub:`1`
|
|
||||||
- Cr\ :sub:`0`
|
|
||||||
|
|
||||||
* .. _V4L2-PIX-FMT-XYUV32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_XYUV32``
|
|
||||||
- 'XYUV'
|
|
||||||
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
|
|
||||||
- Y'\ :sub:`7`
|
|
||||||
- Y'\ :sub:`6`
|
|
||||||
- Y'\ :sub:`5`
|
|
||||||
- Y'\ :sub:`4`
|
|
||||||
- Y'\ :sub:`3`
|
|
||||||
- Y'\ :sub:`2`
|
|
||||||
- Y'\ :sub:`1`
|
|
||||||
- Y'\ :sub:`0`
|
|
||||||
|
|
||||||
- Cb\ :sub:`7`
|
|
||||||
- Cb\ :sub:`6`
|
|
||||||
- Cb\ :sub:`5`
|
|
||||||
- Cb\ :sub:`4`
|
|
||||||
- Cb\ :sub:`3`
|
|
||||||
- Cb\ :sub:`2`
|
|
||||||
- Cb\ :sub:`1`
|
|
||||||
- Cb\ :sub:`0`
|
|
||||||
|
|
||||||
- Cr\ :sub:`7`
|
|
||||||
- Cr\ :sub:`6`
|
|
||||||
- Cr\ :sub:`5`
|
|
||||||
- Cr\ :sub:`4`
|
|
||||||
- Cr\ :sub:`3`
|
|
||||||
- Cr\ :sub:`2`
|
|
||||||
- Cr\ :sub:`1`
|
|
||||||
- Cr\ :sub:`0`
|
|
||||||
|
|
||||||
* .. _V4L2-PIX-FMT-VUYA32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_VUYA32``
|
|
||||||
- 'VUYA'
|
|
||||||
|
|
||||||
- Cr\ :sub:`7`
|
|
||||||
- Cr\ :sub:`6`
|
|
||||||
- Cr\ :sub:`5`
|
|
||||||
- Cr\ :sub:`4`
|
|
||||||
- Cr\ :sub:`3`
|
|
||||||
- Cr\ :sub:`2`
|
|
||||||
- Cr\ :sub:`1`
|
|
||||||
- Cr\ :sub:`0`
|
|
||||||
|
|
||||||
- Cb\ :sub:`7`
|
|
||||||
- Cb\ :sub:`6`
|
|
||||||
- Cb\ :sub:`5`
|
|
||||||
- Cb\ :sub:`4`
|
|
||||||
- Cb\ :sub:`3`
|
|
||||||
- Cb\ :sub:`2`
|
|
||||||
- Cb\ :sub:`1`
|
|
||||||
- Cb\ :sub:`0`
|
|
||||||
|
|
||||||
- Y'\ :sub:`7`
|
|
||||||
- Y'\ :sub:`6`
|
|
||||||
- Y'\ :sub:`5`
|
|
||||||
- Y'\ :sub:`4`
|
|
||||||
- Y'\ :sub:`3`
|
|
||||||
- Y'\ :sub:`2`
|
|
||||||
- Y'\ :sub:`1`
|
|
||||||
- Y'\ :sub:`0`
|
|
||||||
|
|
||||||
- a\ :sub:`7`
|
|
||||||
- a\ :sub:`6`
|
|
||||||
- a\ :sub:`5`
|
|
||||||
- a\ :sub:`4`
|
|
||||||
- a\ :sub:`3`
|
|
||||||
- a\ :sub:`2`
|
|
||||||
- a\ :sub:`1`
|
|
||||||
- a\ :sub:`0`
|
|
||||||
|
|
||||||
* .. _V4L2-PIX-FMT-VUYX32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_VUYX32``
|
|
||||||
- 'VUYX'
|
|
||||||
|
|
||||||
- Cr\ :sub:`7`
|
|
||||||
- Cr\ :sub:`6`
|
|
||||||
- Cr\ :sub:`5`
|
|
||||||
- Cr\ :sub:`4`
|
|
||||||
- Cr\ :sub:`3`
|
|
||||||
- Cr\ :sub:`2`
|
|
||||||
- Cr\ :sub:`1`
|
|
||||||
- Cr\ :sub:`0`
|
|
||||||
|
|
||||||
- Cb\ :sub:`7`
|
|
||||||
- Cb\ :sub:`6`
|
|
||||||
- Cb\ :sub:`5`
|
|
||||||
- Cb\ :sub:`4`
|
|
||||||
- Cb\ :sub:`3`
|
|
||||||
- Cb\ :sub:`2`
|
|
||||||
- Cb\ :sub:`1`
|
|
||||||
- Cb\ :sub:`0`
|
|
||||||
|
|
||||||
- Y'\ :sub:`7`
|
|
||||||
- Y'\ :sub:`6`
|
|
||||||
- Y'\ :sub:`5`
|
|
||||||
- Y'\ :sub:`4`
|
|
||||||
- Y'\ :sub:`3`
|
|
||||||
- Y'\ :sub:`2`
|
|
||||||
- Y'\ :sub:`1`
|
|
||||||
- Y'\ :sub:`0`
|
|
||||||
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-
|
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
||||||
\endgroup
|
\endgroup
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
#) Bit 7 is the most significant bit;
|
For the YUV444 and YUV555 formats, the value of alpha bits is undefined
|
||||||
|
when reading from the driver, ignored when writing to the driver, except
|
||||||
|
when alpha blending has been negotiated for a :ref:`Video Overlay
|
||||||
|
<overlay>` or :ref:`Video Output Overlay <osd>`.
|
||||||
|
|
||||||
#) The value of a = alpha bits is undefined when reading from the driver,
|
|
||||||
ignored when writing to the driver, except when alpha blending has
|
The next table lists the packed YUV 4:4:4 formats with 8 bits per component.
|
||||||
been negotiated for a :ref:`Video Overlay <overlay>` or
|
They are named based on the order of the Y, Cb and Cr components as stored in
|
||||||
:ref:`Video Output Overlay <osd>` for the formats Y444, YUV555 and
|
memory, and on the total number of bits per pixel. For instance, the VUYX32
|
||||||
YUV4. However, for formats AYUV32 and VUYA32, the alpha component is
|
format stores a pixel with Cr\ :sub:`7-0` in the first byte, Cb\ :sub:`7-0` in
|
||||||
expected to contain a meaningful value that can be used by drivers
|
the second byte and Y'\ :sub:`7-0` in the third byte.
|
||||||
and applications. And, the formats XYUV32 and VUYX32 contain undefined
|
|
||||||
alpha values that must be ignored by all applications and drivers.
|
.. flat-table:: Packed YUV Image Formats (8bpc)
|
||||||
|
:header-rows: 1
|
||||||
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - Identifier
|
||||||
|
- Code
|
||||||
|
- Byte 0
|
||||||
|
- Byte 1
|
||||||
|
- Byte 2
|
||||||
|
- Byte 3
|
||||||
|
|
||||||
|
* .. _V4L2-PIX-FMT-YUV32:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_YUV32``
|
||||||
|
- 'YUV4'
|
||||||
|
|
||||||
|
- A\ :sub:`7-0`
|
||||||
|
- Y'\ :sub:`7-0`
|
||||||
|
- Cb\ :sub:`7-0`
|
||||||
|
- Cr\ :sub:`7-0`
|
||||||
|
|
||||||
|
* .. _V4L2-PIX-FMT-AYUV32:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_AYUV32``
|
||||||
|
- 'AYUV'
|
||||||
|
|
||||||
|
- A\ :sub:`7-0`
|
||||||
|
- Y'\ :sub:`7-0`
|
||||||
|
- Cb\ :sub:`7-0`
|
||||||
|
- Cr\ :sub:`7-0`
|
||||||
|
|
||||||
|
* .. _V4L2-PIX-FMT-XYUV32:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_XYUV32``
|
||||||
|
- 'XYUV'
|
||||||
|
|
||||||
|
- X\ :sub:`7-0`
|
||||||
|
- Y'\ :sub:`7-0`
|
||||||
|
- Cb\ :sub:`7-0`
|
||||||
|
- Cr\ :sub:`7-0`
|
||||||
|
|
||||||
|
* .. _V4L2-PIX-FMT-VUYA32:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_VUYA32``
|
||||||
|
- 'VUYA'
|
||||||
|
|
||||||
|
- Cr\ :sub:`7-0`
|
||||||
|
- Cb\ :sub:`7-0`
|
||||||
|
- Y'\ :sub:`7-0`
|
||||||
|
- A\ :sub:`7-0`
|
||||||
|
|
||||||
|
* .. _V4L2-PIX-FMT-VUYX32:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_VUYX32``
|
||||||
|
- 'VUYX'
|
||||||
|
|
||||||
|
- Cr\ :sub:`7-0`
|
||||||
|
- Cb\ :sub:`7-0`
|
||||||
|
- Y'\ :sub:`7-0`
|
||||||
|
- X\ :sub:`7-0`
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
- The alpha component is expected to contain a meaningful value that can be
|
||||||
|
used by drivers and applications.
|
||||||
|
- The padding bits contain undefined values that must be ignored by all
|
||||||
|
applications and drivers.
|
||||||
|
|
||||||
|
|
||||||
|
4:2:2 Subsampling
|
||||||
|
=================
|
||||||
|
|
||||||
|
These formats, commonly referred to as YUYV or YUY2, subsample the chroma
|
||||||
|
components horizontally by 2, storing 2 pixels in 4 bytes.
|
||||||
|
|
||||||
|
.. flat-table:: Packed YUV 4:2:2 Formats
|
||||||
|
:header-rows: 1
|
||||||
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - Identifier
|
||||||
|
- Code
|
||||||
|
- Byte 0
|
||||||
|
- Byte 1
|
||||||
|
- Byte 2
|
||||||
|
- Byte 3
|
||||||
|
- Byte 4
|
||||||
|
- Byte 5
|
||||||
|
- Byte 6
|
||||||
|
- Byte 7
|
||||||
|
* .. _V4L2-PIX-FMT-UYVY:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_UYVY``
|
||||||
|
- 'UYVY'
|
||||||
|
|
||||||
|
- Cb\ :sub:`0`
|
||||||
|
- Y'\ :sub:`0`
|
||||||
|
- Cr\ :sub:`0`
|
||||||
|
- Y'\ :sub:`1`
|
||||||
|
- Cb\ :sub:`2`
|
||||||
|
- Y'\ :sub:`2`
|
||||||
|
- Cr\ :sub:`2`
|
||||||
|
- Y'\ :sub:`3`
|
||||||
|
* .. _V4L2-PIX-FMT-VYUY:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_VYUY``
|
||||||
|
- 'VYUY'
|
||||||
|
|
||||||
|
- Cr\ :sub:`0`
|
||||||
|
- Y'\ :sub:`0`
|
||||||
|
- Cb\ :sub:`0`
|
||||||
|
- Y'\ :sub:`1`
|
||||||
|
- Cr\ :sub:`2`
|
||||||
|
- Y'\ :sub:`2`
|
||||||
|
- Cb\ :sub:`2`
|
||||||
|
- Y'\ :sub:`3`
|
||||||
|
* .. _V4L2-PIX-FMT-YUYV:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_YUYV``
|
||||||
|
- 'YUYV'
|
||||||
|
|
||||||
|
- Y'\ :sub:`0`
|
||||||
|
- Cb\ :sub:`0`
|
||||||
|
- Y'\ :sub:`1`
|
||||||
|
- Cr\ :sub:`0`
|
||||||
|
- Y'\ :sub:`2`
|
||||||
|
- Cb\ :sub:`2`
|
||||||
|
- Y'\ :sub:`3`
|
||||||
|
- Cr\ :sub:`2`
|
||||||
|
* .. _V4L2-PIX-FMT-YVYU:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_YVYU``
|
||||||
|
- 'YVYU'
|
||||||
|
|
||||||
|
- Y'\ :sub:`0`
|
||||||
|
- Cr\ :sub:`0`
|
||||||
|
- Y'\ :sub:`1`
|
||||||
|
- Cb\ :sub:`0`
|
||||||
|
- Y'\ :sub:`2`
|
||||||
|
- Cr\ :sub:`2`
|
||||||
|
- Y'\ :sub:`3`
|
||||||
|
- Cb\ :sub:`2`
|
||||||
|
|
||||||
|
**Color Sample Location:**
|
||||||
|
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
|
||||||
|
horizontally.
|
||||||
|
|
||||||
|
|
||||||
|
4:1:1 Subsampling
|
||||||
|
=================
|
||||||
|
|
||||||
|
This format subsamples the chroma components horizontally by 4, storing 8
|
||||||
|
pixels in 12 bytes.
|
||||||
|
|
||||||
|
.. flat-table:: Packed YUV 4:1:1 Formats
|
||||||
|
:header-rows: 1
|
||||||
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - Identifier
|
||||||
|
- Code
|
||||||
|
- Byte 0
|
||||||
|
- Byte 1
|
||||||
|
- Byte 2
|
||||||
|
- Byte 3
|
||||||
|
- Byte 4
|
||||||
|
- Byte 5
|
||||||
|
- Byte 6
|
||||||
|
- Byte 7
|
||||||
|
- Byte 8
|
||||||
|
- Byte 9
|
||||||
|
- Byte 10
|
||||||
|
- Byte 11
|
||||||
|
* .. _V4L2-PIX-FMT-Y41P:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_Y41P``
|
||||||
|
- 'Y41P'
|
||||||
|
|
||||||
|
- Cb\ :sub:`0`
|
||||||
|
- Y'\ :sub:`0`
|
||||||
|
- Cr\ :sub:`0`
|
||||||
|
- Y'\ :sub:`1`
|
||||||
|
- Cb\ :sub:`4`
|
||||||
|
- Y'\ :sub:`2`
|
||||||
|
- Cr\ :sub:`4`
|
||||||
|
- Y'\ :sub:`3`
|
||||||
|
- Y'\ :sub:`4`
|
||||||
|
- Y'\ :sub:`5`
|
||||||
|
- Y'\ :sub:`6`
|
||||||
|
- Y'\ :sub:`7`
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Do not confuse ``V4L2_PIX_FMT_Y41P`` with
|
||||||
|
:ref:`V4L2_PIX_FMT_YUV411P <V4L2-PIX-FMT-YUV411P>`. Y41P is derived from
|
||||||
|
"YUV 4:1:1 *packed*", while YUV411P stands for "YUV 4:1:1 *planar*".
|
||||||
|
|
||||||
|
**Color Sample Location:**
|
||||||
|
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
|
||||||
|
horizontally.
|
||||||
|
|||||||
@@ -6,13 +6,62 @@
|
|||||||
RGB Formats
|
RGB Formats
|
||||||
***********
|
***********
|
||||||
|
|
||||||
Description
|
These formats encode each pixel as a triplet of RGB values. They are packed
|
||||||
===========
|
formats, meaning that the RGB values for one pixel are stored consecutively in
|
||||||
|
memory and each pixel consumes an integer number of bytes. When the number of
|
||||||
|
bits required to store a pixel is not aligned to a byte boundary, the data is
|
||||||
|
padded with additional bits to fill the remaining byte.
|
||||||
|
|
||||||
These formats are designed to match the pixel formats of typical PC
|
The formats differ by the number of bits per RGB component (typically but not
|
||||||
graphics frame buffers. They occupy 8, 16, 24 or 32 bits per pixel.
|
always the same for all components), the order of components in memory, and the
|
||||||
These are all packed-pixel formats, meaning all the data for a pixel lie
|
presence of an alpha component or additional padding bits.
|
||||||
next to each other in memory.
|
|
||||||
|
The usage and value of the alpha bits in formats that support them (named ARGB
|
||||||
|
or a permutation thereof, collectively referred to as alpha formats) depend on
|
||||||
|
the device type and hardware operation. :ref:`Capture <capture>` devices
|
||||||
|
(including capture queues of mem-to-mem devices) fill the alpha component in
|
||||||
|
memory. When the device captures an alpha channel the alpha component will have
|
||||||
|
a meaningful value. Otherwise, when the device doesn't capture an alpha channel
|
||||||
|
but can set the alpha bit to a user-configurable value, the
|
||||||
|
:ref:`V4L2_CID_ALPHA_COMPONENT <v4l2-alpha-component>` control is used to
|
||||||
|
specify that alpha value, and the alpha component of all pixels will be set to
|
||||||
|
the value specified by that control. Otherwise a corresponding format without
|
||||||
|
an alpha component (XRGB or XBGR) must be used instead of an alpha format.
|
||||||
|
|
||||||
|
:ref:`Output <output>` devices (including output queues of mem-to-mem devices
|
||||||
|
and :ref:`video output overlay <osd>` devices) read the alpha component from
|
||||||
|
memory. When the device processes the alpha channel the alpha component must be
|
||||||
|
filled with meaningful values by applications. Otherwise a corresponding format
|
||||||
|
without an alpha component (XRGB or XBGR) must be used instead of an alpha
|
||||||
|
format.
|
||||||
|
|
||||||
|
Formats that contain padding bits are named XRGB (or a permutation thereof).
|
||||||
|
The padding bits contain undefined values and must be ignored by applications,
|
||||||
|
devices and drivers, for both :ref:`capture` and :ref:`output` devices.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
- In all the tables that follow, bit 7 is the most significant bit in a byte.
|
||||||
|
- 'r', 'g' and 'b' denote bits of the red, green and blue components
|
||||||
|
respectively. 'a' denotes bits of the alpha component (if supported by the
|
||||||
|
format), and 'x' denotes padding bits.
|
||||||
|
|
||||||
|
|
||||||
|
Less Than 8 Bits Per Component
|
||||||
|
==============================
|
||||||
|
|
||||||
|
These formats store an RGB triplet in one, two or four bytes. They are named
|
||||||
|
based on the order of the RGB components as seen in a 8-, 16- or 32-bit word,
|
||||||
|
which is then stored in memory in little endian byte order (unless otherwise
|
||||||
|
noted by the presence of bit 31 in the 4CC value), and on the number of bits
|
||||||
|
for each component. For instance, the RGB565 format stores a pixel in a 16-bit
|
||||||
|
word [15:0] laid out at as [R\ :sub:`4` R\ :sub:`3` R\ :sub:`2` R\ :sub:`1`
|
||||||
|
R\ :sub:`0` G\ :sub:`5` G\ :sub:`4` G\ :sub:`3` G\ :sub:`2` G\ :sub:`1`
|
||||||
|
G\ :sub:`0` B\ :sub:`4` B\ :sub:`3` B\ :sub:`2` B\ :sub:`1` B\ :sub:`0`], and
|
||||||
|
stored in memory in two bytes, [R\ :sub:`4` R\ :sub:`3` R\ :sub:`2` R\ :sub:`1`
|
||||||
|
R\ :sub:`0` G\ :sub:`5` G\ :sub:`4` G\ :sub:`3`] followed by [G\ :sub:`2`
|
||||||
|
G\ :sub:`1` G\ :sub:`0` B\ :sub:`4` B\ :sub:`3` B\ :sub:`2` B\ :sub:`1`
|
||||||
|
B\ :sub:`0`].
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
||||||
@@ -23,7 +72,7 @@ next to each other in memory.
|
|||||||
.. tabularcolumns:: |p{2.8cm}|p{2.0cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
.. tabularcolumns:: |p{2.8cm}|p{2.0cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table:: RGB Image Formats
|
.. flat-table:: RGB Formats With Less Than 8 Bits Per Component
|
||||||
:header-rows: 2
|
:header-rows: 2
|
||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
|
|
||||||
@@ -121,10 +170,10 @@ next to each other in memory.
|
|||||||
- b\ :sub:`1`
|
- b\ :sub:`1`
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- r\ :sub:`3`
|
- r\ :sub:`3`
|
||||||
- r\ :sub:`2`
|
- r\ :sub:`2`
|
||||||
- r\ :sub:`1`
|
- r\ :sub:`1`
|
||||||
@@ -162,10 +211,10 @@ next to each other in memory.
|
|||||||
- b\ :sub:`2`
|
- b\ :sub:`2`
|
||||||
- b\ :sub:`1`
|
- b\ :sub:`1`
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
|
|
||||||
- r\ :sub:`3`
|
- r\ :sub:`3`
|
||||||
- r\ :sub:`2`
|
- r\ :sub:`2`
|
||||||
@@ -213,10 +262,10 @@ next to each other in memory.
|
|||||||
- r\ :sub:`1`
|
- r\ :sub:`1`
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
|
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- b\ :sub:`3`
|
- b\ :sub:`3`
|
||||||
- b\ :sub:`2`
|
- b\ :sub:`2`
|
||||||
- b\ :sub:`1`
|
- b\ :sub:`1`
|
||||||
@@ -254,10 +303,10 @@ next to each other in memory.
|
|||||||
- r\ :sub:`2`
|
- r\ :sub:`2`
|
||||||
- r\ :sub:`1`
|
- r\ :sub:`1`
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
|
|
||||||
- b\ :sub:`3`
|
- b\ :sub:`3`
|
||||||
- b\ :sub:`2`
|
- b\ :sub:`2`
|
||||||
@@ -305,7 +354,7 @@ next to each other in memory.
|
|||||||
- b\ :sub:`1`
|
- b\ :sub:`1`
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
- `-`
|
- x
|
||||||
- r\ :sub:`4`
|
- r\ :sub:`4`
|
||||||
- r\ :sub:`3`
|
- r\ :sub:`3`
|
||||||
- r\ :sub:`2`
|
- r\ :sub:`2`
|
||||||
@@ -349,7 +398,7 @@ next to each other in memory.
|
|||||||
- b\ :sub:`2`
|
- b\ :sub:`2`
|
||||||
- b\ :sub:`1`
|
- b\ :sub:`1`
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
- `-`
|
- x
|
||||||
|
|
||||||
- r\ :sub:`4`
|
- r\ :sub:`4`
|
||||||
- r\ :sub:`3`
|
- r\ :sub:`3`
|
||||||
@@ -397,7 +446,7 @@ next to each other in memory.
|
|||||||
- r\ :sub:`1`
|
- r\ :sub:`1`
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
|
|
||||||
- `-`
|
- x
|
||||||
- b\ :sub:`4`
|
- b\ :sub:`4`
|
||||||
- b\ :sub:`3`
|
- b\ :sub:`3`
|
||||||
- b\ :sub:`2`
|
- b\ :sub:`2`
|
||||||
@@ -441,7 +490,7 @@ next to each other in memory.
|
|||||||
- r\ :sub:`2`
|
- r\ :sub:`2`
|
||||||
- r\ :sub:`1`
|
- r\ :sub:`1`
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
- `-`
|
- x
|
||||||
|
|
||||||
- b\ :sub:`4`
|
- b\ :sub:`4`
|
||||||
- b\ :sub:`3`
|
- b\ :sub:`3`
|
||||||
@@ -503,7 +552,7 @@ next to each other in memory.
|
|||||||
- ``V4L2_PIX_FMT_XRGB555X``
|
- ``V4L2_PIX_FMT_XRGB555X``
|
||||||
- 'XR15' | (1 << 31)
|
- 'XR15' | (1 << 31)
|
||||||
|
|
||||||
- `-`
|
- x
|
||||||
- r\ :sub:`4`
|
- r\ :sub:`4`
|
||||||
- r\ :sub:`3`
|
- r\ :sub:`3`
|
||||||
- r\ :sub:`2`
|
- r\ :sub:`2`
|
||||||
@@ -544,70 +593,6 @@ next to each other in memory.
|
|||||||
- b\ :sub:`1`
|
- b\ :sub:`1`
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
-
|
-
|
||||||
* .. _V4L2-PIX-FMT-BGR24:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_BGR24``
|
|
||||||
- 'BGR3'
|
|
||||||
|
|
||||||
- b\ :sub:`7`
|
|
||||||
- b\ :sub:`6`
|
|
||||||
- b\ :sub:`5`
|
|
||||||
- b\ :sub:`4`
|
|
||||||
- b\ :sub:`3`
|
|
||||||
- b\ :sub:`2`
|
|
||||||
- b\ :sub:`1`
|
|
||||||
- b\ :sub:`0`
|
|
||||||
|
|
||||||
- g\ :sub:`7`
|
|
||||||
- g\ :sub:`6`
|
|
||||||
- g\ :sub:`5`
|
|
||||||
- g\ :sub:`4`
|
|
||||||
- g\ :sub:`3`
|
|
||||||
- g\ :sub:`2`
|
|
||||||
- g\ :sub:`1`
|
|
||||||
- g\ :sub:`0`
|
|
||||||
|
|
||||||
- r\ :sub:`7`
|
|
||||||
- r\ :sub:`6`
|
|
||||||
- r\ :sub:`5`
|
|
||||||
- r\ :sub:`4`
|
|
||||||
- r\ :sub:`3`
|
|
||||||
- r\ :sub:`2`
|
|
||||||
- r\ :sub:`1`
|
|
||||||
- r\ :sub:`0`
|
|
||||||
-
|
|
||||||
* .. _V4L2-PIX-FMT-RGB24:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_RGB24``
|
|
||||||
- 'RGB3'
|
|
||||||
|
|
||||||
- r\ :sub:`7`
|
|
||||||
- r\ :sub:`6`
|
|
||||||
- r\ :sub:`5`
|
|
||||||
- r\ :sub:`4`
|
|
||||||
- r\ :sub:`3`
|
|
||||||
- r\ :sub:`2`
|
|
||||||
- r\ :sub:`1`
|
|
||||||
- r\ :sub:`0`
|
|
||||||
|
|
||||||
- g\ :sub:`7`
|
|
||||||
- g\ :sub:`6`
|
|
||||||
- g\ :sub:`5`
|
|
||||||
- g\ :sub:`4`
|
|
||||||
- g\ :sub:`3`
|
|
||||||
- g\ :sub:`2`
|
|
||||||
- g\ :sub:`1`
|
|
||||||
- g\ :sub:`0`
|
|
||||||
|
|
||||||
- b\ :sub:`7`
|
|
||||||
- b\ :sub:`6`
|
|
||||||
- b\ :sub:`5`
|
|
||||||
- b\ :sub:`4`
|
|
||||||
- b\ :sub:`3`
|
|
||||||
- b\ :sub:`2`
|
|
||||||
- b\ :sub:`1`
|
|
||||||
- b\ :sub:`0`
|
|
||||||
-
|
|
||||||
* .. _V4L2-PIX-FMT-BGR666:
|
* .. _V4L2-PIX-FMT-BGR666:
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_BGR666``
|
- ``V4L2_PIX_FMT_BGR666``
|
||||||
@@ -633,449 +618,163 @@ next to each other in memory.
|
|||||||
|
|
||||||
- r\ :sub:`1`
|
- r\ :sub:`1`
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
|
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
- `-`
|
- x
|
||||||
* .. _V4L2-PIX-FMT-ABGR32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_ABGR32``
|
|
||||||
- 'AR24'
|
|
||||||
|
|
||||||
- b\ :sub:`7`
|
|
||||||
- b\ :sub:`6`
|
|
||||||
- b\ :sub:`5`
|
|
||||||
- b\ :sub:`4`
|
|
||||||
- b\ :sub:`3`
|
|
||||||
- b\ :sub:`2`
|
|
||||||
- b\ :sub:`1`
|
|
||||||
- b\ :sub:`0`
|
|
||||||
|
|
||||||
- g\ :sub:`7`
|
|
||||||
- g\ :sub:`6`
|
|
||||||
- g\ :sub:`5`
|
|
||||||
- g\ :sub:`4`
|
|
||||||
- g\ :sub:`3`
|
|
||||||
- g\ :sub:`2`
|
|
||||||
- g\ :sub:`1`
|
|
||||||
- g\ :sub:`0`
|
|
||||||
|
|
||||||
- r\ :sub:`7`
|
|
||||||
- r\ :sub:`6`
|
|
||||||
- r\ :sub:`5`
|
|
||||||
- r\ :sub:`4`
|
|
||||||
- r\ :sub:`3`
|
|
||||||
- r\ :sub:`2`
|
|
||||||
- r\ :sub:`1`
|
|
||||||
- r\ :sub:`0`
|
|
||||||
|
|
||||||
- a\ :sub:`7`
|
|
||||||
- a\ :sub:`6`
|
|
||||||
- a\ :sub:`5`
|
|
||||||
- a\ :sub:`4`
|
|
||||||
- a\ :sub:`3`
|
|
||||||
- a\ :sub:`2`
|
|
||||||
- a\ :sub:`1`
|
|
||||||
- a\ :sub:`0`
|
|
||||||
* .. _V4L2-PIX-FMT-XBGR32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_XBGR32``
|
|
||||||
- 'XR24'
|
|
||||||
|
|
||||||
- b\ :sub:`7`
|
|
||||||
- b\ :sub:`6`
|
|
||||||
- b\ :sub:`5`
|
|
||||||
- b\ :sub:`4`
|
|
||||||
- b\ :sub:`3`
|
|
||||||
- b\ :sub:`2`
|
|
||||||
- b\ :sub:`1`
|
|
||||||
- b\ :sub:`0`
|
|
||||||
|
|
||||||
- g\ :sub:`7`
|
|
||||||
- g\ :sub:`6`
|
|
||||||
- g\ :sub:`5`
|
|
||||||
- g\ :sub:`4`
|
|
||||||
- g\ :sub:`3`
|
|
||||||
- g\ :sub:`2`
|
|
||||||
- g\ :sub:`1`
|
|
||||||
- g\ :sub:`0`
|
|
||||||
|
|
||||||
- r\ :sub:`7`
|
|
||||||
- r\ :sub:`6`
|
|
||||||
- r\ :sub:`5`
|
|
||||||
- r\ :sub:`4`
|
|
||||||
- r\ :sub:`3`
|
|
||||||
- r\ :sub:`2`
|
|
||||||
- r\ :sub:`1`
|
|
||||||
- r\ :sub:`0`
|
|
||||||
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
* .. _V4L2-PIX-FMT-BGRA32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_BGRA32``
|
|
||||||
- 'RA24'
|
|
||||||
|
|
||||||
- a\ :sub:`7`
|
|
||||||
- a\ :sub:`6`
|
|
||||||
- a\ :sub:`5`
|
|
||||||
- a\ :sub:`4`
|
|
||||||
- a\ :sub:`3`
|
|
||||||
- a\ :sub:`2`
|
|
||||||
- a\ :sub:`1`
|
|
||||||
- a\ :sub:`0`
|
|
||||||
|
|
||||||
- b\ :sub:`7`
|
|
||||||
- b\ :sub:`6`
|
|
||||||
- b\ :sub:`5`
|
|
||||||
- b\ :sub:`4`
|
|
||||||
- b\ :sub:`3`
|
|
||||||
- b\ :sub:`2`
|
|
||||||
- b\ :sub:`1`
|
|
||||||
- b\ :sub:`0`
|
|
||||||
|
|
||||||
- g\ :sub:`7`
|
|
||||||
- g\ :sub:`6`
|
|
||||||
- g\ :sub:`5`
|
|
||||||
- g\ :sub:`4`
|
|
||||||
- g\ :sub:`3`
|
|
||||||
- g\ :sub:`2`
|
|
||||||
- g\ :sub:`1`
|
|
||||||
- g\ :sub:`0`
|
|
||||||
|
|
||||||
- r\ :sub:`7`
|
|
||||||
- r\ :sub:`6`
|
|
||||||
- r\ :sub:`5`
|
|
||||||
- r\ :sub:`4`
|
|
||||||
- r\ :sub:`3`
|
|
||||||
- r\ :sub:`2`
|
|
||||||
- r\ :sub:`1`
|
|
||||||
- r\ :sub:`0`
|
|
||||||
* .. _V4L2-PIX-FMT-BGRX32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_BGRX32``
|
|
||||||
- 'RX24'
|
|
||||||
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
|
|
||||||
- b\ :sub:`7`
|
|
||||||
- b\ :sub:`6`
|
|
||||||
- b\ :sub:`5`
|
|
||||||
- b\ :sub:`4`
|
|
||||||
- b\ :sub:`3`
|
|
||||||
- b\ :sub:`2`
|
|
||||||
- b\ :sub:`1`
|
|
||||||
- b\ :sub:`0`
|
|
||||||
|
|
||||||
- g\ :sub:`7`
|
|
||||||
- g\ :sub:`6`
|
|
||||||
- g\ :sub:`5`
|
|
||||||
- g\ :sub:`4`
|
|
||||||
- g\ :sub:`3`
|
|
||||||
- g\ :sub:`2`
|
|
||||||
- g\ :sub:`1`
|
|
||||||
- g\ :sub:`0`
|
|
||||||
|
|
||||||
- r\ :sub:`7`
|
|
||||||
- r\ :sub:`6`
|
|
||||||
- r\ :sub:`5`
|
|
||||||
- r\ :sub:`4`
|
|
||||||
- r\ :sub:`3`
|
|
||||||
- r\ :sub:`2`
|
|
||||||
- r\ :sub:`1`
|
|
||||||
- r\ :sub:`0`
|
|
||||||
* .. _V4L2-PIX-FMT-RGBA32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_RGBA32``
|
|
||||||
- 'AB24'
|
|
||||||
|
|
||||||
- r\ :sub:`7`
|
|
||||||
- r\ :sub:`6`
|
|
||||||
- r\ :sub:`5`
|
|
||||||
- r\ :sub:`4`
|
|
||||||
- r\ :sub:`3`
|
|
||||||
- r\ :sub:`2`
|
|
||||||
- r\ :sub:`1`
|
|
||||||
- r\ :sub:`0`
|
|
||||||
|
|
||||||
- g\ :sub:`7`
|
|
||||||
- g\ :sub:`6`
|
|
||||||
- g\ :sub:`5`
|
|
||||||
- g\ :sub:`4`
|
|
||||||
- g\ :sub:`3`
|
|
||||||
- g\ :sub:`2`
|
|
||||||
- g\ :sub:`1`
|
|
||||||
- g\ :sub:`0`
|
|
||||||
|
|
||||||
- b\ :sub:`7`
|
|
||||||
- b\ :sub:`6`
|
|
||||||
- b\ :sub:`5`
|
|
||||||
- b\ :sub:`4`
|
|
||||||
- b\ :sub:`3`
|
|
||||||
- b\ :sub:`2`
|
|
||||||
- b\ :sub:`1`
|
|
||||||
- b\ :sub:`0`
|
|
||||||
|
|
||||||
- a\ :sub:`7`
|
|
||||||
- a\ :sub:`6`
|
|
||||||
- a\ :sub:`5`
|
|
||||||
- a\ :sub:`4`
|
|
||||||
- a\ :sub:`3`
|
|
||||||
- a\ :sub:`2`
|
|
||||||
- a\ :sub:`1`
|
|
||||||
- a\ :sub:`0`
|
|
||||||
* .. _V4L2-PIX-FMT-RGBX32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_RGBX32``
|
|
||||||
- 'XB24'
|
|
||||||
|
|
||||||
- r\ :sub:`7`
|
|
||||||
- r\ :sub:`6`
|
|
||||||
- r\ :sub:`5`
|
|
||||||
- r\ :sub:`4`
|
|
||||||
- r\ :sub:`3`
|
|
||||||
- r\ :sub:`2`
|
|
||||||
- r\ :sub:`1`
|
|
||||||
- r\ :sub:`0`
|
|
||||||
|
|
||||||
- g\ :sub:`7`
|
|
||||||
- g\ :sub:`6`
|
|
||||||
- g\ :sub:`5`
|
|
||||||
- g\ :sub:`4`
|
|
||||||
- g\ :sub:`3`
|
|
||||||
- g\ :sub:`2`
|
|
||||||
- g\ :sub:`1`
|
|
||||||
- g\ :sub:`0`
|
|
||||||
|
|
||||||
- b\ :sub:`7`
|
|
||||||
- b\ :sub:`6`
|
|
||||||
- b\ :sub:`5`
|
|
||||||
- b\ :sub:`4`
|
|
||||||
- b\ :sub:`3`
|
|
||||||
- b\ :sub:`2`
|
|
||||||
- b\ :sub:`1`
|
|
||||||
- b\ :sub:`0`
|
|
||||||
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
* .. _V4L2-PIX-FMT-ARGB32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_ARGB32``
|
|
||||||
- 'BA24'
|
|
||||||
|
|
||||||
- a\ :sub:`7`
|
|
||||||
- a\ :sub:`6`
|
|
||||||
- a\ :sub:`5`
|
|
||||||
- a\ :sub:`4`
|
|
||||||
- a\ :sub:`3`
|
|
||||||
- a\ :sub:`2`
|
|
||||||
- a\ :sub:`1`
|
|
||||||
- a\ :sub:`0`
|
|
||||||
|
|
||||||
- r\ :sub:`7`
|
|
||||||
- r\ :sub:`6`
|
|
||||||
- r\ :sub:`5`
|
|
||||||
- r\ :sub:`4`
|
|
||||||
- r\ :sub:`3`
|
|
||||||
- r\ :sub:`2`
|
|
||||||
- r\ :sub:`1`
|
|
||||||
- r\ :sub:`0`
|
|
||||||
|
|
||||||
- g\ :sub:`7`
|
|
||||||
- g\ :sub:`6`
|
|
||||||
- g\ :sub:`5`
|
|
||||||
- g\ :sub:`4`
|
|
||||||
- g\ :sub:`3`
|
|
||||||
- g\ :sub:`2`
|
|
||||||
- g\ :sub:`1`
|
|
||||||
- g\ :sub:`0`
|
|
||||||
|
|
||||||
- b\ :sub:`7`
|
|
||||||
- b\ :sub:`6`
|
|
||||||
- b\ :sub:`5`
|
|
||||||
- b\ :sub:`4`
|
|
||||||
- b\ :sub:`3`
|
|
||||||
- b\ :sub:`2`
|
|
||||||
- b\ :sub:`1`
|
|
||||||
- b\ :sub:`0`
|
|
||||||
* .. _V4L2-PIX-FMT-XRGB32:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_XRGB32``
|
|
||||||
- 'BX24'
|
|
||||||
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
- `-`
|
|
||||||
|
|
||||||
- r\ :sub:`7`
|
|
||||||
- r\ :sub:`6`
|
|
||||||
- r\ :sub:`5`
|
|
||||||
- r\ :sub:`4`
|
|
||||||
- r\ :sub:`3`
|
|
||||||
- r\ :sub:`2`
|
|
||||||
- r\ :sub:`1`
|
|
||||||
- r\ :sub:`0`
|
|
||||||
|
|
||||||
- g\ :sub:`7`
|
|
||||||
- g\ :sub:`6`
|
|
||||||
- g\ :sub:`5`
|
|
||||||
- g\ :sub:`4`
|
|
||||||
- g\ :sub:`3`
|
|
||||||
- g\ :sub:`2`
|
|
||||||
- g\ :sub:`1`
|
|
||||||
- g\ :sub:`0`
|
|
||||||
|
|
||||||
- b\ :sub:`7`
|
|
||||||
- b\ :sub:`6`
|
|
||||||
- b\ :sub:`5`
|
|
||||||
- b\ :sub:`4`
|
|
||||||
- b\ :sub:`3`
|
|
||||||
- b\ :sub:`2`
|
|
||||||
- b\ :sub:`1`
|
|
||||||
- b\ :sub:`0`
|
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
||||||
\endgroup
|
\endgroup
|
||||||
|
|
||||||
.. note:: Bit 7 is the most significant bit.
|
|
||||||
|
|
||||||
The usage and value of the alpha bits (a) in the ARGB and ABGR formats
|
8 Bits Per Component
|
||||||
(collectively referred to as alpha formats) depend on the device type
|
====================
|
||||||
and hardware operation. :ref:`Capture <capture>` devices (including
|
|
||||||
capture queues of mem-to-mem devices) fill the alpha component in
|
|
||||||
memory. When the device outputs an alpha channel the alpha component
|
|
||||||
will have a meaningful value. Otherwise, when the device doesn't output
|
|
||||||
an alpha channel but can set the alpha bit to a user-configurable value,
|
|
||||||
the :ref:`V4L2_CID_ALPHA_COMPONENT <v4l2-alpha-component>` control
|
|
||||||
is used to specify that alpha value, and the alpha component of all
|
|
||||||
pixels will be set to the value specified by that control. Otherwise a
|
|
||||||
corresponding format without an alpha component (XRGB or XBGR) must be
|
|
||||||
used instead of an alpha format.
|
|
||||||
|
|
||||||
:ref:`Output <output>` devices (including output queues of mem-to-mem
|
|
||||||
devices and :ref:`video output overlay <osd>` devices) read the alpha
|
|
||||||
component from memory. When the device processes the alpha channel the
|
|
||||||
alpha component must be filled with meaningful values by applications.
|
|
||||||
Otherwise a corresponding format without an alpha component (XRGB or
|
|
||||||
XBGR) must be used instead of an alpha format.
|
|
||||||
|
|
||||||
The XRGB and XBGR formats contain undefined bits (-). Applications,
|
|
||||||
devices and drivers must ignore those bits, for both
|
|
||||||
:ref:`capture` and :ref:`output` devices.
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
|
These formats store an RGB triplet in three or four bytes. They are named based
|
||||||
|
on the order of the RGB components as stored in memory, and on the total number
|
||||||
|
of bits per pixel. For instance, RGB24 format stores a pixel with [R\ :sub:`7`
|
||||||
|
R\ :sub:`6` R\ :sub:`5` R\ :sub:`4` R\ :sub:`3` R\ :sub:`2` R\ :sub:`1`
|
||||||
|
R\ :sub:`0`] in the first byte, [G\ :sub:`7` G\ :sub:`6` G\ :sub:`5` G\ :sub:`4`
|
||||||
|
G\ :sub:`3` G\ :sub:`2` G\ :sub:`1` G\ :sub:`0`] in the second byte and
|
||||||
|
[B\ :sub:`7` B\ :sub:`6` B\ :sub:`5` B\ :sub:`4` B\ :sub:`3` B\ :sub:`2`
|
||||||
|
B\ :sub:`1` B\ :sub:`0`] in the third byte. This differs from the DRM format
|
||||||
|
nomenclature that instead use the order of components as seen in a 24- or
|
||||||
|
32-bit little endian word.
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
||||||
\small
|
\begingroup
|
||||||
|
\tiny
|
||||||
|
\setlength{\tabcolsep}{2pt}
|
||||||
|
|
||||||
.. tabularcolumns:: |p{3.1cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|
|
.. tabularcolumns:: |p{2.8cm}|p{2.0cm}|p{2.0cm}|p{2.0cm}|p{2.0cm}|p{2.0cm}|p{2.0cm}|p{2.0cm}|
|
||||||
|
|
||||||
.. flat-table:: RGB byte order
|
|
||||||
:header-rows: 0
|
.. flat-table:: RGB Formats With 8 Bits Per Component
|
||||||
|
:header-rows: 1
|
||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
:widths: 11 3 3 3 3 3 3 3 3 3 3 3 3
|
|
||||||
|
|
||||||
* - start + 0:
|
* - Identifier
|
||||||
- B\ :sub:`00`
|
- Code
|
||||||
- G\ :sub:`00`
|
- Byte 0 in memory
|
||||||
- R\ :sub:`00`
|
- Byte 1
|
||||||
- B\ :sub:`01`
|
- Byte 2
|
||||||
- G\ :sub:`01`
|
- Byte 3
|
||||||
- R\ :sub:`01`
|
* .. _V4L2-PIX-FMT-BGR24:
|
||||||
- B\ :sub:`02`
|
|
||||||
- G\ :sub:`02`
|
- ``V4L2_PIX_FMT_BGR24``
|
||||||
- R\ :sub:`02`
|
- 'BGR3'
|
||||||
- B\ :sub:`03`
|
|
||||||
- G\ :sub:`03`
|
- G\ :sub:`7-0`
|
||||||
- R\ :sub:`03`
|
- B\ :sub:`7-0`
|
||||||
* - start + 12:
|
- R\ :sub:`7-0`
|
||||||
- B\ :sub:`10`
|
-
|
||||||
- G\ :sub:`10`
|
* .. _V4L2-PIX-FMT-RGB24:
|
||||||
- R\ :sub:`10`
|
|
||||||
- B\ :sub:`11`
|
- ``V4L2_PIX_FMT_RGB24``
|
||||||
- G\ :sub:`11`
|
- 'RGB3'
|
||||||
- R\ :sub:`11`
|
|
||||||
- B\ :sub:`12`
|
- R\ :sub:`7-0`
|
||||||
- G\ :sub:`12`
|
- G\ :sub:`7-0`
|
||||||
- R\ :sub:`12`
|
- B\ :sub:`7-0`
|
||||||
- B\ :sub:`13`
|
-
|
||||||
- G\ :sub:`13`
|
* .. _V4L2-PIX-FMT-ABGR32:
|
||||||
- R\ :sub:`13`
|
|
||||||
* - start + 24:
|
- ``V4L2_PIX_FMT_ABGR32``
|
||||||
- B\ :sub:`20`
|
- 'AR24'
|
||||||
- G\ :sub:`20`
|
|
||||||
- R\ :sub:`20`
|
- B\ :sub:`7-0`
|
||||||
- B\ :sub:`21`
|
- G\ :sub:`7-0`
|
||||||
- G\ :sub:`21`
|
- R\ :sub:`7-0`
|
||||||
- R\ :sub:`21`
|
- A\ :sub:`7-0`
|
||||||
- B\ :sub:`22`
|
* .. _V4L2-PIX-FMT-XBGR32:
|
||||||
- G\ :sub:`22`
|
|
||||||
- R\ :sub:`22`
|
- ``V4L2_PIX_FMT_XBGR32``
|
||||||
- B\ :sub:`23`
|
- 'XR24'
|
||||||
- G\ :sub:`23`
|
|
||||||
- R\ :sub:`23`
|
- B\ :sub:`7-0`
|
||||||
* - start + 36:
|
- G\ :sub:`7-0`
|
||||||
- B\ :sub:`30`
|
- R\ :sub:`7-0`
|
||||||
- G\ :sub:`30`
|
- X\ :sub:`7-0`
|
||||||
- R\ :sub:`30`
|
* .. _V4L2-PIX-FMT-BGRA32:
|
||||||
- B\ :sub:`31`
|
|
||||||
- G\ :sub:`31`
|
- ``V4L2_PIX_FMT_BGRA32``
|
||||||
- R\ :sub:`31`
|
- 'RA24'
|
||||||
- B\ :sub:`32`
|
|
||||||
- G\ :sub:`32`
|
- A\ :sub:`7-0`
|
||||||
- R\ :sub:`32`
|
- B\ :sub:`7-0`
|
||||||
- B\ :sub:`33`
|
- G\ :sub:`7-0`
|
||||||
- G\ :sub:`33`
|
- R\ :sub:`7-0`
|
||||||
- R\ :sub:`33`
|
* .. _V4L2-PIX-FMT-BGRX32:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_BGRX32``
|
||||||
|
- 'RX24'
|
||||||
|
|
||||||
|
- X\ :sub:`7-0`
|
||||||
|
- B\ :sub:`7-0`
|
||||||
|
- G\ :sub:`7-0`
|
||||||
|
- R\ :sub:`7-0`
|
||||||
|
* .. _V4L2-PIX-FMT-RGBA32:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_RGBA32``
|
||||||
|
- 'AB24'
|
||||||
|
|
||||||
|
- R\ :sub:`7-0`
|
||||||
|
- G\ :sub:`7-0`
|
||||||
|
- B\ :sub:`7-0`
|
||||||
|
- A\ :sub:`7-0`
|
||||||
|
* .. _V4L2-PIX-FMT-RGBX32:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_RGBX32``
|
||||||
|
- 'XB24'
|
||||||
|
|
||||||
|
- R\ :sub:`7-0`
|
||||||
|
- G\ :sub:`7-0`
|
||||||
|
- B\ :sub:`7-0`
|
||||||
|
- X\ :sub:`7-0`
|
||||||
|
* .. _V4L2-PIX-FMT-ARGB32:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_ARGB32``
|
||||||
|
- 'BA24'
|
||||||
|
|
||||||
|
- A\ :sub:`7-0`
|
||||||
|
- R\ :sub:`7-0`
|
||||||
|
- G\ :sub:`7-0`
|
||||||
|
- B\ :sub:`7-0`
|
||||||
|
* .. _V4L2-PIX-FMT-XRGB32:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_XRGB32``
|
||||||
|
- 'BX24'
|
||||||
|
|
||||||
|
- X\ :sub:`7-0`
|
||||||
|
- R\ :sub:`7-0`
|
||||||
|
- G\ :sub:`7-0`
|
||||||
|
- B\ :sub:`7-0`
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
||||||
\normalsize
|
\endgroup
|
||||||
|
|
||||||
Formats defined in :ref:`pixfmt-rgb-deprecated` are deprecated and
|
|
||||||
must not be used by new drivers. They are documented here for reference.
|
|
||||||
The meaning of their alpha bits ``(a)`` are ill-defined and interpreted as in
|
|
||||||
either the corresponding ARGB or XRGB format, depending on the driver.
|
|
||||||
|
|
||||||
|
Deprecated RGB Formats
|
||||||
|
======================
|
||||||
|
|
||||||
|
Formats defined in :ref:`pixfmt-rgb-deprecated` are deprecated and must not be
|
||||||
|
used by new drivers. They are documented here for reference. The meaning of
|
||||||
|
their alpha bits ``(a)`` is ill-defined and they are interpreted as in either
|
||||||
|
the corresponding ARGB or XRGB format, depending on the driver.
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
||||||
|
|||||||
@@ -1,110 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-UYVY:
|
|
||||||
|
|
||||||
**************************
|
|
||||||
V4L2_PIX_FMT_UYVY ('UYVY')
|
|
||||||
**************************
|
|
||||||
|
|
||||||
|
|
||||||
Variation of ``V4L2_PIX_FMT_YUYV`` with different order of samples in
|
|
||||||
memory
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
In this format each four bytes is two pixels. Each four bytes is two
|
|
||||||
Y's, a Cb and a Cr. Each Y goes to one of the pixels, and the Cb and Cr
|
|
||||||
belong to both pixels. As you can see, the Cr and Cb components have
|
|
||||||
half the horizontal resolution of the Y component.
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start + 0:
|
|
||||||
- Cb\ :sub:`00`
|
|
||||||
- Y'\ :sub:`00`
|
|
||||||
- Cr\ :sub:`00`
|
|
||||||
- Y'\ :sub:`01`
|
|
||||||
- Cb\ :sub:`01`
|
|
||||||
- Y'\ :sub:`02`
|
|
||||||
- Cr\ :sub:`01`
|
|
||||||
- Y'\ :sub:`03`
|
|
||||||
* - start + 8:
|
|
||||||
- Cb\ :sub:`10`
|
|
||||||
- Y'\ :sub:`10`
|
|
||||||
- Cr\ :sub:`10`
|
|
||||||
- Y'\ :sub:`11`
|
|
||||||
- Cb\ :sub:`11`
|
|
||||||
- Y'\ :sub:`12`
|
|
||||||
- Cr\ :sub:`11`
|
|
||||||
- Y'\ :sub:`13`
|
|
||||||
* - start + 16:
|
|
||||||
- Cb\ :sub:`20`
|
|
||||||
- Y'\ :sub:`20`
|
|
||||||
- Cr\ :sub:`20`
|
|
||||||
- Y'\ :sub:`21`
|
|
||||||
- Cb\ :sub:`21`
|
|
||||||
- Y'\ :sub:`22`
|
|
||||||
- Cr\ :sub:`21`
|
|
||||||
- Y'\ :sub:`23`
|
|
||||||
* - start + 24:
|
|
||||||
- Cb\ :sub:`30`
|
|
||||||
- Y'\ :sub:`30`
|
|
||||||
- Cr\ :sub:`30`
|
|
||||||
- Y'\ :sub:`31`
|
|
||||||
- Cb\ :sub:`31`
|
|
||||||
- Y'\ :sub:`32`
|
|
||||||
- Cr\ :sub:`31`
|
|
||||||
- Y'\ :sub:`33`
|
|
||||||
|
|
||||||
|
|
||||||
**Color Sample Location:**
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* -
|
|
||||||
- 0
|
|
||||||
-
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
-
|
|
||||||
- 3
|
|
||||||
* - 0
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
* - 1
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
* - 2
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
* - 3
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-VYUY:
|
|
||||||
|
|
||||||
**************************
|
|
||||||
V4L2_PIX_FMT_VYUY ('VYUY')
|
|
||||||
**************************
|
|
||||||
|
|
||||||
|
|
||||||
Variation of ``V4L2_PIX_FMT_YUYV`` with different order of samples in
|
|
||||||
memory
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
In this format each four bytes is two pixels. Each four bytes is two
|
|
||||||
Y's, a Cb and a Cr. Each Y goes to one of the pixels, and the Cb and Cr
|
|
||||||
belong to both pixels. As you can see, the Cr and Cb components have
|
|
||||||
half the horizontal resolution of the Y component.
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start + 0:
|
|
||||||
- Cr\ :sub:`00`
|
|
||||||
- Y'\ :sub:`00`
|
|
||||||
- Cb\ :sub:`00`
|
|
||||||
- Y'\ :sub:`01`
|
|
||||||
- Cr\ :sub:`01`
|
|
||||||
- Y'\ :sub:`02`
|
|
||||||
- Cb\ :sub:`01`
|
|
||||||
- Y'\ :sub:`03`
|
|
||||||
* - start + 8:
|
|
||||||
- Cr\ :sub:`10`
|
|
||||||
- Y'\ :sub:`10`
|
|
||||||
- Cb\ :sub:`10`
|
|
||||||
- Y'\ :sub:`11`
|
|
||||||
- Cr\ :sub:`11`
|
|
||||||
- Y'\ :sub:`12`
|
|
||||||
- Cb\ :sub:`11`
|
|
||||||
- Y'\ :sub:`13`
|
|
||||||
* - start + 16:
|
|
||||||
- Cr\ :sub:`20`
|
|
||||||
- Y'\ :sub:`20`
|
|
||||||
- Cb\ :sub:`20`
|
|
||||||
- Y'\ :sub:`21`
|
|
||||||
- Cr\ :sub:`21`
|
|
||||||
- Y'\ :sub:`22`
|
|
||||||
- Cb\ :sub:`21`
|
|
||||||
- Y'\ :sub:`23`
|
|
||||||
* - start + 24:
|
|
||||||
- Cr\ :sub:`30`
|
|
||||||
- Y'\ :sub:`30`
|
|
||||||
- Cb\ :sub:`30`
|
|
||||||
- Y'\ :sub:`31`
|
|
||||||
- Cr\ :sub:`31`
|
|
||||||
- Y'\ :sub:`32`
|
|
||||||
- Cb\ :sub:`31`
|
|
||||||
- Y'\ :sub:`33`
|
|
||||||
|
|
||||||
|
|
||||||
**Color Sample Location:**
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* -
|
|
||||||
- 0
|
|
||||||
-
|
|
||||||
- 1
|
|
||||||
-
|
|
||||||
- 2
|
|
||||||
- 3
|
|
||||||
* - 0
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
* - 1
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
* - 2
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
* - 3
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
- Y
|
|
||||||
- C
|
|
||||||
- Y
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-Y10:
|
|
||||||
|
|
||||||
*************************
|
|
||||||
V4L2_PIX_FMT_Y10 ('Y10 ')
|
|
||||||
*************************
|
|
||||||
|
|
||||||
|
|
||||||
Grey-scale image
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
This is a grey-scale image with a depth of 10 bits per pixel. Pixels are
|
|
||||||
stored in 16-bit words with unused high bits padded with 0. The least
|
|
||||||
significant byte is stored at lower memory addresses (little-endian).
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start + 0:
|
|
||||||
- Y'\ :sub:`00low`
|
|
||||||
- Y'\ :sub:`00high`
|
|
||||||
- Y'\ :sub:`01low`
|
|
||||||
- Y'\ :sub:`01high`
|
|
||||||
- Y'\ :sub:`02low`
|
|
||||||
- Y'\ :sub:`02high`
|
|
||||||
- Y'\ :sub:`03low`
|
|
||||||
- Y'\ :sub:`03high`
|
|
||||||
* - start + 8:
|
|
||||||
- Y'\ :sub:`10low`
|
|
||||||
- Y'\ :sub:`10high`
|
|
||||||
- Y'\ :sub:`11low`
|
|
||||||
- Y'\ :sub:`11high`
|
|
||||||
- Y'\ :sub:`12low`
|
|
||||||
- Y'\ :sub:`12high`
|
|
||||||
- Y'\ :sub:`13low`
|
|
||||||
- Y'\ :sub:`13high`
|
|
||||||
* - start + 16:
|
|
||||||
- Y'\ :sub:`20low`
|
|
||||||
- Y'\ :sub:`20high`
|
|
||||||
- Y'\ :sub:`21low`
|
|
||||||
- Y'\ :sub:`21high`
|
|
||||||
- Y'\ :sub:`22low`
|
|
||||||
- Y'\ :sub:`22high`
|
|
||||||
- Y'\ :sub:`23low`
|
|
||||||
- Y'\ :sub:`23high`
|
|
||||||
* - start + 24:
|
|
||||||
- Y'\ :sub:`30low`
|
|
||||||
- Y'\ :sub:`30high`
|
|
||||||
- Y'\ :sub:`31low`
|
|
||||||
- Y'\ :sub:`31high`
|
|
||||||
- Y'\ :sub:`32low`
|
|
||||||
- Y'\ :sub:`32high`
|
|
||||||
- Y'\ :sub:`33low`
|
|
||||||
- Y'\ :sub:`33high`
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-Y10BPACK:
|
|
||||||
|
|
||||||
******************************
|
|
||||||
V4L2_PIX_FMT_Y10BPACK ('Y10B')
|
|
||||||
******************************
|
|
||||||
|
|
||||||
Grey-scale image as a bit-packed array
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
This is a packed grey-scale image format with a depth of 10 bits per
|
|
||||||
pixel. Pixels are stored in a bit-packed array of 10bit bits per pixel,
|
|
||||||
with no padding between them and with the most significant bits coming
|
|
||||||
first from the left.
|
|
||||||
|
|
||||||
**Bit-packed representation.**
|
|
||||||
|
|
||||||
pixels cross the byte boundary and have a ratio of 5 bytes for each 4
|
|
||||||
pixels.
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - Y'\ :sub:`00[9:2]`
|
|
||||||
- Y'\ :sub:`00[1:0]`\ Y'\ :sub:`01[9:4]`
|
|
||||||
- Y'\ :sub:`01[3:0]`\ Y'\ :sub:`02[9:6]`
|
|
||||||
- Y'\ :sub:`02[5:0]`\ Y'\ :sub:`03[9:8]`
|
|
||||||
- Y'\ :sub:`03[7:0]`
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-Y10P:
|
|
||||||
|
|
||||||
******************************
|
|
||||||
V4L2_PIX_FMT_Y10P ('Y10P')
|
|
||||||
******************************
|
|
||||||
|
|
||||||
Grey-scale image as a MIPI RAW10 packed array
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
This is a packed grey-scale image format with a depth of 10 bits per
|
|
||||||
pixel. Every four consecutive pixels are packed into 5 bytes. Each of
|
|
||||||
the first 4 bytes contain the 8 high order bits of the pixels, and
|
|
||||||
the 5th byte contains the 2 least significants bits of each pixel,
|
|
||||||
in the same order.
|
|
||||||
|
|
||||||
**Bit-packed representation.**
|
|
||||||
|
|
||||||
.. raw:: latex
|
|
||||||
|
|
||||||
\small
|
|
||||||
|
|
||||||
.. tabularcolumns:: |p{1.2cm}||p{1.2cm}||p{1.2cm}||p{1.2cm}|p{3.2cm}|p{3.2cm}|
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
:widths: 8 8 8 8 64
|
|
||||||
|
|
||||||
* - Y'\ :sub:`00[9:2]`
|
|
||||||
- Y'\ :sub:`01[9:2]`
|
|
||||||
- Y'\ :sub:`02[9:2]`
|
|
||||||
- Y'\ :sub:`03[9:2]`
|
|
||||||
- Y'\ :sub:`03[1:0]`\ (bits 7--6) Y'\ :sub:`02[1:0]`\ (bits 5--4)
|
|
||||||
Y'\ :sub:`01[1:0]`\ (bits 3--2) Y'\ :sub:`00[1:0]`\ (bits 1--0)
|
|
||||||
|
|
||||||
.. raw:: latex
|
|
||||||
|
|
||||||
\normalsize
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-Y12:
|
|
||||||
|
|
||||||
*************************
|
|
||||||
V4L2_PIX_FMT_Y12 ('Y12 ')
|
|
||||||
*************************
|
|
||||||
|
|
||||||
|
|
||||||
Grey-scale image
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
This is a grey-scale image with a depth of 12 bits per pixel. Pixels are
|
|
||||||
stored in 16-bit words with unused high bits padded with 0. The least
|
|
||||||
significant byte is stored at lower memory addresses (little-endian).
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start + 0:
|
|
||||||
- Y'\ :sub:`00low`
|
|
||||||
- Y'\ :sub:`00high`
|
|
||||||
- Y'\ :sub:`01low`
|
|
||||||
- Y'\ :sub:`01high`
|
|
||||||
- Y'\ :sub:`02low`
|
|
||||||
- Y'\ :sub:`02high`
|
|
||||||
- Y'\ :sub:`03low`
|
|
||||||
- Y'\ :sub:`03high`
|
|
||||||
* - start + 8:
|
|
||||||
- Y'\ :sub:`10low`
|
|
||||||
- Y'\ :sub:`10high`
|
|
||||||
- Y'\ :sub:`11low`
|
|
||||||
- Y'\ :sub:`11high`
|
|
||||||
- Y'\ :sub:`12low`
|
|
||||||
- Y'\ :sub:`12high`
|
|
||||||
- Y'\ :sub:`13low`
|
|
||||||
- Y'\ :sub:`13high`
|
|
||||||
* - start + 16:
|
|
||||||
- Y'\ :sub:`20low`
|
|
||||||
- Y'\ :sub:`20high`
|
|
||||||
- Y'\ :sub:`21low`
|
|
||||||
- Y'\ :sub:`21high`
|
|
||||||
- Y'\ :sub:`22low`
|
|
||||||
- Y'\ :sub:`22high`
|
|
||||||
- Y'\ :sub:`23low`
|
|
||||||
- Y'\ :sub:`23high`
|
|
||||||
* - start + 24:
|
|
||||||
- Y'\ :sub:`30low`
|
|
||||||
- Y'\ :sub:`30high`
|
|
||||||
- Y'\ :sub:`31low`
|
|
||||||
- Y'\ :sub:`31high`
|
|
||||||
- Y'\ :sub:`32low`
|
|
||||||
- Y'\ :sub:`32high`
|
|
||||||
- Y'\ :sub:`33low`
|
|
||||||
- Y'\ :sub:`33high`
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-Y14:
|
|
||||||
|
|
||||||
*************************
|
|
||||||
V4L2_PIX_FMT_Y14 ('Y14 ')
|
|
||||||
*************************
|
|
||||||
|
|
||||||
|
|
||||||
Grey-scale image
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
This is a grey-scale image with a depth of 14 bits per pixel. Pixels are
|
|
||||||
stored in 16-bit words with unused high bits padded with 0. The least
|
|
||||||
significant byte is stored at lower memory addresses (little-endian).
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start + 0:
|
|
||||||
- Y'\ :sub:`00low`
|
|
||||||
- Y'\ :sub:`00high`
|
|
||||||
- Y'\ :sub:`01low`
|
|
||||||
- Y'\ :sub:`01high`
|
|
||||||
- Y'\ :sub:`02low`
|
|
||||||
- Y'\ :sub:`02high`
|
|
||||||
- Y'\ :sub:`03low`
|
|
||||||
- Y'\ :sub:`03high`
|
|
||||||
* - start + 8:
|
|
||||||
- Y'\ :sub:`10low`
|
|
||||||
- Y'\ :sub:`10high`
|
|
||||||
- Y'\ :sub:`11low`
|
|
||||||
- Y'\ :sub:`11high`
|
|
||||||
- Y'\ :sub:`12low`
|
|
||||||
- Y'\ :sub:`12high`
|
|
||||||
- Y'\ :sub:`13low`
|
|
||||||
- Y'\ :sub:`13high`
|
|
||||||
* - start + 16:
|
|
||||||
- Y'\ :sub:`20low`
|
|
||||||
- Y'\ :sub:`20high`
|
|
||||||
- Y'\ :sub:`21low`
|
|
||||||
- Y'\ :sub:`21high`
|
|
||||||
- Y'\ :sub:`22low`
|
|
||||||
- Y'\ :sub:`22high`
|
|
||||||
- Y'\ :sub:`23low`
|
|
||||||
- Y'\ :sub:`23high`
|
|
||||||
* - start + 24:
|
|
||||||
- Y'\ :sub:`30low`
|
|
||||||
- Y'\ :sub:`30high`
|
|
||||||
- Y'\ :sub:`31low`
|
|
||||||
- Y'\ :sub:`31high`
|
|
||||||
- Y'\ :sub:`32low`
|
|
||||||
- Y'\ :sub:`32high`
|
|
||||||
- Y'\ :sub:`33low`
|
|
||||||
- Y'\ :sub:`33high`
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
|
||||||
|
|
||||||
.. _V4L2-PIX-FMT-Y16-BE:
|
|
||||||
|
|
||||||
****************************************
|
|
||||||
V4L2_PIX_FMT_Y16_BE ('Y16 ' | (1 << 31))
|
|
||||||
****************************************
|
|
||||||
|
|
||||||
|
|
||||||
Grey-scale image
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
===========
|
|
||||||
|
|
||||||
This is a grey-scale image with a depth of 16 bits per pixel. The most
|
|
||||||
significant byte is stored at lower memory addresses (big-endian).
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
The actual sampling precision may be lower than 16 bits, for
|
|
||||||
example 10 bits per pixel with values in range 0 to 1023.
|
|
||||||
|
|
||||||
**Byte Order.**
|
|
||||||
Each cell is one byte.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
* - start + 0:
|
|
||||||
- Y'\ :sub:`00high`
|
|
||||||
- Y'\ :sub:`00low`
|
|
||||||
- Y'\ :sub:`01high`
|
|
||||||
- Y'\ :sub:`01low`
|
|
||||||
- Y'\ :sub:`02high`
|
|
||||||
- Y'\ :sub:`02low`
|
|
||||||
- Y'\ :sub:`03high`
|
|
||||||
- Y'\ :sub:`03low`
|
|
||||||
* - start + 8:
|
|
||||||
- Y'\ :sub:`10high`
|
|
||||||
- Y'\ :sub:`10low`
|
|
||||||
- Y'\ :sub:`11high`
|
|
||||||
- Y'\ :sub:`11low`
|
|
||||||
- Y'\ :sub:`12high`
|
|
||||||
- Y'\ :sub:`12low`
|
|
||||||
- Y'\ :sub:`13high`
|
|
||||||
- Y'\ :sub:`13low`
|
|
||||||
* - start + 16:
|
|
||||||
- Y'\ :sub:`20high`
|
|
||||||
- Y'\ :sub:`20low`
|
|
||||||
- Y'\ :sub:`21high`
|
|
||||||
- Y'\ :sub:`21low`
|
|
||||||
- Y'\ :sub:`22high`
|
|
||||||
- Y'\ :sub:`22low`
|
|
||||||
- Y'\ :sub:`23high`
|
|
||||||
- Y'\ :sub:`23low`
|
|
||||||
* - start + 24:
|
|
||||||
- Y'\ :sub:`30high`
|
|
||||||
- Y'\ :sub:`30low`
|
|
||||||
- Y'\ :sub:`31high`
|
|
||||||
- Y'\ :sub:`31low`
|
|
||||||
- Y'\ :sub:`32high`
|
|
||||||
- Y'\ :sub:`32low`
|
|
||||||
- Y'\ :sub:`33high`
|
|
||||||
- Y'\ :sub:`33low`
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user