diff options
Diffstat (limited to 'Documentation/media/uapi')
27 files changed, 1746 insertions, 1845 deletions
diff --git a/Documentation/media/uapi/cec/cec-ioc-adap-g-caps.rst b/Documentation/media/uapi/cec/cec-ioc-adap-g-caps.rst index a35dca281178..2b0ddb14b280 100644 --- a/Documentation/media/uapi/cec/cec-ioc-adap-g-caps.rst +++ b/Documentation/media/uapi/cec/cec-ioc-adap-g-caps.rst @@ -48,41 +48,21 @@ returns the information to the application. The ioctl never fails. :stub-columns: 0 :widths: 1 1 16 - - - .. row 1 - - - char - - - ``driver[32]`` - - - The name of the cec adapter driver. - - - .. row 2 - - - char - - - ``name[32]`` - - - The name of this CEC adapter. The combination ``driver`` and - ``name`` must be unique. - - - .. row 3 - - - __u32 - - - ``capabilities`` - - - The capabilities of the CEC adapter, see - :ref:`cec-capabilities`. - - - .. row 4 - - - __u32 - - - ``version`` - - - CEC Framework API version, formatted with the ``KERNEL_VERSION()`` - macro. + * - char + - ``driver[32]`` + - The name of the cec adapter driver. + * - char + - ``name[32]`` + - The name of this CEC adapter. The combination ``driver`` and + ``name`` must be unique. + * - __u32 + - ``capabilities`` + - The capabilities of the CEC adapter, see + :ref:`cec-capabilities`. + * - __u32 + - ``version`` + - CEC Framework API version, formatted with the ``KERNEL_VERSION()`` + macro. .. tabularcolumns:: |p{4.4cm}|p{2.5cm}|p{10.6cm}| @@ -94,68 +74,50 @@ returns the information to the application. The ioctl never fails. :stub-columns: 0 :widths: 3 1 8 - - - .. _`CEC-CAP-PHYS-ADDR`: - - - ``CEC_CAP_PHYS_ADDR`` - - - 0x00000001 - - - Userspace has to configure the physical address by calling - :ref:`ioctl CEC_ADAP_S_PHYS_ADDR <CEC_ADAP_S_PHYS_ADDR>`. If - this capability isn't set, then setting the physical address is - handled by the kernel whenever the EDID is set (for an HDMI - receiver) or read (for an HDMI transmitter). - - - .. _`CEC-CAP-LOG-ADDRS`: - - - ``CEC_CAP_LOG_ADDRS`` - - - 0x00000002 - - - Userspace has to configure the logical addresses by calling - :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`. If - this capability isn't set, then the kernel will have configured - this. - - - .. _`CEC-CAP-TRANSMIT`: - - - ``CEC_CAP_TRANSMIT`` - - - 0x00000004 - - - Userspace can transmit CEC messages by calling - :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`. This implies that - userspace can be a follower as well, since being able to transmit - messages is a prerequisite of becoming a follower. If this - capability isn't set, then the kernel will handle all CEC - transmits and process all CEC messages it receives. - - - .. _`CEC-CAP-PASSTHROUGH`: - - - ``CEC_CAP_PASSTHROUGH`` - - - 0x00000008 - - - Userspace can use the passthrough mode by calling - :ref:`ioctl CEC_S_MODE <CEC_S_MODE>`. - - - .. _`CEC-CAP-RC`: - - - ``CEC_CAP_RC`` - - - 0x00000010 - - - This adapter supports the remote control protocol. - - - .. _`CEC-CAP-MONITOR-ALL`: - - - ``CEC_CAP_MONITOR_ALL`` - - - 0x00000020 - - - The CEC hardware can monitor all messages, not just directed and - broadcast messages. + * .. _`CEC-CAP-PHYS-ADDR`: + + - ``CEC_CAP_PHYS_ADDR`` + - 0x00000001 + - Userspace has to configure the physical address by calling + :ref:`ioctl CEC_ADAP_S_PHYS_ADDR <CEC_ADAP_S_PHYS_ADDR>`. If + this capability isn't set, then setting the physical address is + handled by the kernel whenever the EDID is set (for an HDMI + receiver) or read (for an HDMI transmitter). + * .. _`CEC-CAP-LOG-ADDRS`: + + - ``CEC_CAP_LOG_ADDRS`` + - 0x00000002 + - Userspace has to configure the logical addresses by calling + :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`. If + this capability isn't set, then the kernel will have configured + this. + * .. _`CEC-CAP-TRANSMIT`: + + - ``CEC_CAP_TRANSMIT`` + - 0x00000004 + - Userspace can transmit CEC messages by calling + :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`. This implies that + userspace can be a follower as well, since being able to transmit + messages is a prerequisite of becoming a follower. If this + capability isn't set, then the kernel will handle all CEC + transmits and process all CEC messages it receives. + * .. _`CEC-CAP-PASSTHROUGH`: + + - ``CEC_CAP_PASSTHROUGH`` + - 0x00000008 + - Userspace can use the passthrough mode by calling + :ref:`ioctl CEC_S_MODE <CEC_S_MODE>`. + * .. _`CEC-CAP-RC`: + + - ``CEC_CAP_RC`` + - 0x00000010 + - This adapter supports the remote control protocol. + * .. _`CEC-CAP-MONITOR-ALL`: + + - ``CEC_CAP_MONITOR_ALL`` + - 0x00000020 + - The CEC hardware can monitor all messages, not just directed and + broadcast messages. diff --git a/Documentation/media/uapi/cec/cec-ioc-adap-g-log-addrs.rst b/Documentation/media/uapi/cec/cec-ioc-adap-g-log-addrs.rst index 940a16d8d55e..b878637e91b3 100644 --- a/Documentation/media/uapi/cec/cec-ioc-adap-g-log-addrs.rst +++ b/Documentation/media/uapi/cec/cec-ioc-adap-g-log-addrs.rst @@ -77,134 +77,79 @@ logical address types are already defined will return with error ``EBUSY``. :stub-columns: 0 :widths: 1 1 16 - - - .. row 1 - - - __u8 - - - ``log_addr[CEC_MAX_LOG_ADDRS]`` - - - The actual logical addresses that were claimed. This is set by the - driver. If no logical address could be claimed, then it is set to - ``CEC_LOG_ADDR_INVALID``. If this adapter is Unregistered, then - ``log_addr[0]`` is set to 0xf and all others to - ``CEC_LOG_ADDR_INVALID``. - - - .. row 2 - - - __u16 - - - ``log_addr_mask`` - - - The bitmask of all logical addresses this adapter has claimed. If - this adapter is Unregistered then ``log_addr_mask`` sets bit 15 - and clears all other bits. If this adapter is not configured at - all, then ``log_addr_mask`` is set to 0. Set by the driver. - - - .. row 3 - - - __u8 - - - ``cec_version`` - - - The CEC version that this adapter shall use. See - :ref:`cec-versions`. Used to implement the - ``CEC_MSG_CEC_VERSION`` and ``CEC_MSG_REPORT_FEATURES`` messages. - Note that :ref:`CEC_OP_CEC_VERSION_1_3A <CEC-OP-CEC-VERSION-1-3A>` is not allowed by the CEC - framework. - - - .. row 4 - - - __u8 - - - ``num_log_addrs`` - - - Number of logical addresses to set up. Must be ≤ - ``available_log_addrs`` as returned by - :ref:`CEC_ADAP_G_CAPS`. All arrays in - this structure are only filled up to index - ``available_log_addrs``-1. The remaining array elements will be - ignored. Note that the CEC 2.0 standard allows for a maximum of 2 - logical addresses, although some hardware has support for more. - ``CEC_MAX_LOG_ADDRS`` is 4. The driver will return the actual - number of logical addresses it could claim, which may be less than - what was requested. If this field is set to 0, then the CEC - adapter shall clear all claimed logical addresses and all other - fields will be ignored. - - - .. row 5 - - - __u32 - - - ``vendor_id`` - - - The vendor ID is a 24-bit number that identifies the specific - vendor or entity. Based on this ID vendor specific commands may be - defined. If you do not want a vendor ID then set it to - ``CEC_VENDOR_ID_NONE``. - - - .. row 6 - - - __u32 - - - ``flags`` - - - Flags. See :ref:`cec-log-addrs-flags` for a list of available flags. - - - .. row 7 - - - char - - - ``osd_name[15]`` - - - The On-Screen Display name as is returned by the - ``CEC_MSG_SET_OSD_NAME`` message. - - - .. row 8 - - - __u8 - - - ``primary_device_type[CEC_MAX_LOG_ADDRS]`` - - - Primary device type for each logical address. See - :ref:`cec-prim-dev-types` for possible types. - - - .. row 9 - - - __u8 - - - ``log_addr_type[CEC_MAX_LOG_ADDRS]`` - - - Logical address types. See :ref:`cec-log-addr-types` for - possible types. The driver will update this with the actual - logical address type that it claimed (e.g. it may have to fallback - to :ref:`CEC_LOG_ADDR_TYPE_UNREGISTERED <CEC-LOG-ADDR-TYPE-UNREGISTERED>`). - - - .. row 10 - - - __u8 - - - ``all_device_types[CEC_MAX_LOG_ADDRS]`` - - - CEC 2.0 specific: the bit mask of all device types. See - :ref:`cec-all-dev-types-flags`. It is used in the CEC 2.0 - ``CEC_MSG_REPORT_FEATURES`` message. For CEC 1.4 you can either leave - this field to 0, or fill it in according to the CEC 2.0 guidelines to - give the CEC framework more information about the device type, even - though the framework won't use it directly in the CEC message. - - - .. row 11 - - - __u8 - - - ``features[CEC_MAX_LOG_ADDRS][12]`` - - - Features for each logical address. It is used in the CEC 2.0 - ``CEC_MSG_REPORT_FEATURES`` message. The 12 bytes include both the - RC Profile and the Device Features. For CEC 1.4 you can either leave - this field to all 0, or fill it in according to the CEC 2.0 guidelines to - give the CEC framework more information about the device type, even - though the framework won't use it directly in the CEC message. + * - __u8 + - ``log_addr[CEC_MAX_LOG_ADDRS]`` + - The actual logical addresses that were claimed. This is set by the + driver. If no logical address could be claimed, then it is set to + ``CEC_LOG_ADDR_INVALID``. If this adapter is Unregistered, then + ``log_addr[0]`` is set to 0xf and all others to + ``CEC_LOG_ADDR_INVALID``. + * - __u16 + - ``log_addr_mask`` + - The bitmask of all logical addresses this adapter has claimed. If + this adapter is Unregistered then ``log_addr_mask`` sets bit 15 + and clears all other bits. If this adapter is not configured at + all, then ``log_addr_mask`` is set to 0. Set by the driver. + * - __u8 + - ``cec_version`` + - The CEC version that this adapter shall use. See + :ref:`cec-versions`. Used to implement the + ``CEC_MSG_CEC_VERSION`` and ``CEC_MSG_REPORT_FEATURES`` messages. + Note that :ref:`CEC_OP_CEC_VERSION_1_3A <CEC-OP-CEC-VERSION-1-3A>` is not allowed by the CEC + framework. + * - __u8 + - ``num_log_addrs`` + - Number of logical addresses to set up. Must be ≤ + ``available_log_addrs`` as returned by + :ref:`CEC_ADAP_G_CAPS`. All arrays in + this structure are only filled up to index + ``available_log_addrs``-1. The remaining array elements will be + ignored. Note that the CEC 2.0 standard allows for a maximum of 2 + logical addresses, although some hardware has support for more. + ``CEC_MAX_LOG_ADDRS`` is 4. The driver will return the actual + number of logical addresses it could claim, which may be less than + what was requested. If this field is set to 0, then the CEC + adapter shall clear all claimed logical addresses and all other + fields will be ignored. + * - __u32 + - ``vendor_id`` + - The vendor ID is a 24-bit number that identifies the specific + vendor or entity. Based on this ID vendor specific commands may be + defined. If you do not want a vendor ID then set it to + ``CEC_VENDOR_ID_NONE``. + * - __u32 + - ``flags`` + - Flags. See :ref:`cec-log-addrs-flags` for a list of available flags. + * - char + - ``osd_name[15]`` + - The On-Screen Display name as is returned by the + ``CEC_MSG_SET_OSD_NAME`` message. + * - __u8 + - ``primary_device_type[CEC_MAX_LOG_ADDRS]`` + - Primary device type for each logical address. See + :ref:`cec-prim-dev-types` for possible types. + * - __u8 + - ``log_addr_type[CEC_MAX_LOG_ADDRS]`` + - Logical address types. See :ref:`cec-log-addr-types` for + possible types. The driver will update this with the actual + logical address type that it claimed (e.g. it may have to fallback + to :ref:`CEC_LOG_ADDR_TYPE_UNREGISTERED <CEC-LOG-ADDR-TYPE-UNREGISTERED>`). + * - __u8 + - ``all_device_types[CEC_MAX_LOG_ADDRS]`` + - CEC 2.0 specific: the bit mask of all device types. See + :ref:`cec-all-dev-types-flags`. It is used in the CEC 2.0 + ``CEC_MSG_REPORT_FEATURES`` message. For CEC 1.4 you can either leave + this field to 0, or fill it in according to the CEC 2.0 guidelines to + give the CEC framework more information about the device type, even + though the framework won't use it directly in the CEC message. + * - __u8 + - ``features[CEC_MAX_LOG_ADDRS][12]`` + - Features for each logical address. It is used in the CEC 2.0 + ``CEC_MSG_REPORT_FEATURES`` message. The 12 bytes include both the + RC Profile and the Device Features. For CEC 1.4 you can either leave + this field to all 0, or fill it in according to the CEC 2.0 guidelines to + give the CEC framework more information about the device type, even + though the framework won't use it directly in the CEC message. .. _cec-log-addrs-flags: @@ -213,17 +158,33 @@ logical address types are already defined will return with error ``EBUSY``. :stub-columns: 0 :widths: 3 1 4 + * .. _`CEC-LOG-ADDRS-FL-ALLOW-UNREG-FALLBACK`: + + - ``CEC_LOG_ADDRS_FL_ALLOW_UNREG_FALLBACK`` + - 1 + - By default if no logical address of the requested type can be claimed, then + it will go back to the unconfigured state. If this flag is set, then it will + fallback to the Unregistered logical address. Note that if the Unregistered + logical address was explicitly requested, then this flag has no effect. + * .. _`CEC-LOG-ADDRS-FL-ALLOW-RC-PASSTHRU`: - - .. _`CEC-LOG-ADDRS-FL-ALLOW-UNREG-FALLBACK`: + - ``CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU`` + - 2 + - By default the ``CEC_MSG_USER_CONTROL_PRESSED`` and ``CEC_MSG_USER_CONTROL_RELEASED`` + messages are only passed on to the follower(s), if any. If this flag is set, + then these messages are also passed on to the remote control input subsystem + and will appear as keystrokes. This features needs to be enabled explicitly. + If CEC is used to enter e.g. passwords, then you may not want to enable this + to avoid trivial snooping of the keystrokes. + * .. _`CEC-LOG-ADDRS-FL-CDC-ONLY`: - - ``CEC_LOG_ADDRS_FL_ALLOW_UNREG_FALLBACK`` + - `CEC_LOG_ADDRS_FL_CDC_ONLY` + - 4 + - If this flag is set, then the device is CDC-Only. CDC-Only CEC devices + are CEC devices that can only handle CDC messages. - - 1 + All other messages are ignored. - - By default if no logical address of the requested type can be claimed, then - it will go back to the unconfigured state. If this flag is set, then it will - fallback to the Unregistered logical address. Note that if the Unregistered - logical address was explicitly requested, then this flag has no effect. .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| @@ -234,30 +195,21 @@ logical address types are already defined will return with error ``EBUSY``. :stub-columns: 0 :widths: 3 1 4 + * .. _`CEC-OP-CEC-VERSION-1-3A`: - - .. _`CEC-OP-CEC-VERSION-1-3A`: - - - ``CEC_OP_CEC_VERSION_1_3A`` - - - 4 - - - CEC version according to the HDMI 1.3a standard. - - - .. _`CEC-OP-CEC-VERSION-1-4B`: - - - ``CEC_OP_CEC_VERSION_1_4B`` + - ``CEC_OP_CEC_VERSION_1_3A`` + - 4 + - CEC version according to the HDMI 1.3a standard. + * .. _`CEC-OP-CEC-VERSION-1-4B`: - - 5 + - ``CEC_OP_CEC_VERSION_1_4B`` + - 5 + - CEC version according to the HDMI 1.4b standard. + * .. _`CEC-OP-CEC-VERSION-2-0`: - - CEC version according to the HDMI 1.4b standard. - - - .. _`CEC-OP-CEC-VERSION-2-0`: - - - ``CEC_OP_CEC_VERSION_2_0`` - - - 6 - - - CEC version according to the HDMI 2.0 standard. + - ``CEC_OP_CEC_VERSION_2_0`` + - 6 + - CEC version according to the HDMI 2.0 standard. .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| @@ -269,62 +221,41 @@ logical address types are already defined will return with error ``EBUSY``. :stub-columns: 0 :widths: 3 1 4 + * .. _`CEC-OP-PRIM-DEVTYPE-TV`: - - .. _`CEC-OP-PRIM-DEVTYPE-TV`: - - - ``CEC_OP_PRIM_DEVTYPE_TV`` - - - 0 - - - Use for a TV. + - ``CEC_OP_PRIM_DEVTYPE_TV`` + - 0 + - Use for a TV. + * .. _`CEC-OP-PRIM-DEVTYPE-RECORD`: - - .. _`CEC-OP-PRIM-DEVTYPE-RECORD`: + - ``CEC_OP_PRIM_DEVTYPE_RECORD`` + - 1 + - Use for a recording device. + * .. _`CEC-OP-PRIM-DEVTYPE-TUNER`: - - ``CEC_OP_PRIM_DEVTYPE_RECORD`` + - ``CEC_OP_PRIM_DEVTYPE_TUNER`` + - 3 + - Use for a device with a tuner. + * .. _`CEC-OP-PRIM-DEVTYPE-PLAYBACK`: - - 1 + - ``CEC_OP_PRIM_DEVTYPE_PLAYBACK`` + - 4 + - Use for a playback device. + * .. _`CEC-OP-PRIM-DEVTYPE-AUDIOSYSTEM`: - - Use for a recording device. + - ``CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM`` + - 5 + - Use for an audio system (e.g. an audio/video receiver). + * .. _`CEC-OP-PRIM-DEVTYPE-SWITCH`: - - .. _`CEC-OP-PRIM-DEVTYPE-TUNER`: + - ``CEC_OP_PRIM_DEVTYPE_SWITCH`` + - 6 + - Use for a CEC switch. + * .. _`CEC-OP-PRIM-DEVTYPE-VIDEOPROC`: - - ``CEC_OP_PRIM_DEVTYPE_TUNER`` - - - 3 - - - Use for a device with a tuner. - - - .. _`CEC-OP-PRIM-DEVTYPE-PLAYBACK`: - - - ``CEC_OP_PRIM_DEVTYPE_PLAYBACK`` - - - 4 - - - Use for a playback device. - - - .. _`CEC-OP-PRIM-DEVTYPE-AUDIOSYSTEM`: - - - ``CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM`` - - - 5 - - - Use for an audio system (e.g. an audio/video receiver). - - - .. _`CEC-OP-PRIM-DEVTYPE-SWITCH`: - - - ``CEC_OP_PRIM_DEVTYPE_SWITCH`` - - - 6 - - - Use for a CEC switch. - - - .. _`CEC-OP-PRIM-DEVTYPE-VIDEOPROC`: - - - ``CEC_OP_PRIM_DEVTYPE_VIDEOPROC`` - - - 7 - - - Use for a video processor device. + - ``CEC_OP_PRIM_DEVTYPE_VIDEOPROC`` + - 7 + - Use for a video processor device. .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| @@ -336,64 +267,43 @@ logical address types are already defined will return with error ``EBUSY``. :stub-columns: 0 :widths: 3 1 16 + * .. _`CEC-LOG-ADDR-TYPE-TV`: - - .. _`CEC-LOG-ADDR-TYPE-TV`: - - - ``CEC_LOG_ADDR_TYPE_TV`` - - - 0 - - - Use for a TV. - - - .. _`CEC-LOG-ADDR-TYPE-RECORD`: - - - ``CEC_LOG_ADDR_TYPE_RECORD`` - - - 1 - - - Use for a recording device. - - - .. _`CEC-LOG-ADDR-TYPE-TUNER`: - - - ``CEC_LOG_ADDR_TYPE_TUNER`` - - - 2 - - - Use for a tuner device. + - ``CEC_LOG_ADDR_TYPE_TV`` + - 0 + - Use for a TV. + * .. _`CEC-LOG-ADDR-TYPE-RECORD`: - - .. _`CEC-LOG-ADDR-TYPE-PLAYBACK`: + - ``CEC_LOG_ADDR_TYPE_RECORD`` + - 1 + - Use for a recording device. + * .. _`CEC-LOG-ADDR-TYPE-TUNER`: - - ``CEC_LOG_ADDR_TYPE_PLAYBACK`` + - ``CEC_LOG_ADDR_TYPE_TUNER`` + - 2 + - Use for a tuner device. + * .. _`CEC-LOG-ADDR-TYPE-PLAYBACK`: - - 3 + - ``CEC_LOG_ADDR_TYPE_PLAYBACK`` + - 3 + - Use for a playback device. + * .. _`CEC-LOG-ADDR-TYPE-AUDIOSYSTEM`: - - Use for a playback device. + - ``CEC_LOG_ADDR_TYPE_AUDIOSYSTEM`` + - 4 + - Use for an audio system device. + * .. _`CEC-LOG-ADDR-TYPE-SPECIFIC`: - - .. _`CEC-LOG-ADDR-TYPE-AUDIOSYSTEM`: + - ``CEC_LOG_ADDR_TYPE_SPECIFIC`` + - 5 + - Use for a second TV or for a video processor device. + * .. _`CEC-LOG-ADDR-TYPE-UNREGISTERED`: - - ``CEC_LOG_ADDR_TYPE_AUDIOSYSTEM`` - - - 4 - - - Use for an audio system device. - - - .. _`CEC-LOG-ADDR-TYPE-SPECIFIC`: - - - ``CEC_LOG_ADDR_TYPE_SPECIFIC`` - - - 5 - - - Use for a second TV or for a video processor device. - - - .. _`CEC-LOG-ADDR-TYPE-UNREGISTERED`: - - - ``CEC_LOG_ADDR_TYPE_UNREGISTERED`` - - - 6 - - - Use this if you just want to remain unregistered. Used for pure - CEC switches or CDC-only devices (CDC: Capability Discovery and - Control). + - ``CEC_LOG_ADDR_TYPE_UNREGISTERED`` + - 6 + - Use this if you just want to remain unregistered. Used for pure + CEC switches or CDC-only devices (CDC: Capability Discovery and + Control). @@ -406,54 +316,36 @@ logical address types are already defined will return with error ``EBUSY``. :stub-columns: 0 :widths: 3 1 4 + * .. _`CEC-OP-ALL-DEVTYPE-TV`: - - .. _`CEC-OP-ALL-DEVTYPE-TV`: - - - ``CEC_OP_ALL_DEVTYPE_TV`` - - - 0x80 - - - This supports the TV type. - - - .. _`CEC-OP-ALL-DEVTYPE-RECORD`: - - - ``CEC_OP_ALL_DEVTYPE_RECORD`` - - - 0x40 - - - This supports the Recording type. - - - .. _`CEC-OP-ALL-DEVTYPE-TUNER`: - - - ``CEC_OP_ALL_DEVTYPE_TUNER`` - - - 0x20 - - - This supports the Tuner type. - - - .. _`CEC-OP-ALL-DEVTYPE-PLAYBACK`: - - - ``CEC_OP_ALL_DEVTYPE_PLAYBACK`` - - - 0x10 - - - This supports the Playback type. - - - .. _`CEC-OP-ALL-DEVTYPE-AUDIOSYSTEM`: - - - ``CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM`` - - - 0x08 + - ``CEC_OP_ALL_DEVTYPE_TV`` + - 0x80 + - This supports the TV type. + * .. _`CEC-OP-ALL-DEVTYPE-RECORD`: - - This supports the Audio System type. + - ``CEC_OP_ALL_DEVTYPE_RECORD`` + - 0x40 + - This supports the Recording type. + * .. _`CEC-OP-ALL-DEVTYPE-TUNER`: - - .. _`CEC-OP-ALL-DEVTYPE-SWITCH`: + - ``CEC_OP_ALL_DEVTYPE_TUNER`` + - 0x20 + - This supports the Tuner type. + * .. _`CEC-OP-ALL-DEVTYPE-PLAYBACK`: - - ``CEC_OP_ALL_DEVTYPE_SWITCH`` + - ``CEC_OP_ALL_DEVTYPE_PLAYBACK`` + - 0x10 + - This supports the Playback type. + * .. _`CEC-OP-ALL-DEVTYPE-AUDIOSYSTEM`: - - 0x04 + - ``CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM`` + - 0x08 + - This supports the Audio System type. + * .. _`CEC-OP-ALL-DEVTYPE-SWITCH`: - - This supports the CEC Switch or Video Processing type. + - ``CEC_OP_ALL_DEVTYPE_SWITCH`` + - 0x04 + - This supports the CEC Switch or Video Processing type. diff --git a/Documentation/media/uapi/cec/cec-ioc-dqevent.rst b/Documentation/media/uapi/cec/cec-ioc-dqevent.rst index e283588a830b..e256c6605de7 100644 --- a/Documentation/media/uapi/cec/cec-ioc-dqevent.rst +++ b/Documentation/media/uapi/cec/cec-ioc-dqevent.rst @@ -58,26 +58,16 @@ it is guaranteed that the state did change in between the two events. :stub-columns: 0 :widths: 1 1 8 - - - .. row 1 - - - __u16 - - - ``phys_addr`` - - - The current physical address. This is ``CEC_PHYS_ADDR_INVALID`` if no + * - __u16 + - ``phys_addr`` + - The current physical address. This is ``CEC_PHYS_ADDR_INVALID`` if no valid physical address is set. - - - .. row 2 - - - __u16 - - - ``log_addr_mask`` - - - The current set of claimed logical addresses. This is 0 if no logical - addresses are claimed or if ``phys_addr`` is ``CEC_PHYS_ADDR_INVALID``. - If bit 15 is set (``1 << CEC_LOG_ADDR_UNREGISTERED``) then this device - has the unregistered logical address. In that case all other bits are 0. + * - __u16 + - ``log_addr_mask`` + - The current set of claimed logical addresses. This is 0 if no logical + addresses are claimed or if ``phys_addr`` is ``CEC_PHYS_ADDR_INVALID``. + If bit 15 is set (``1 << CEC_LOG_ADDR_UNREGISTERED``) then this device + has the unregistered logical address. In that case all other bits are 0. .. c:type:: cec_event_lost_msgs @@ -89,22 +79,17 @@ it is guaranteed that the state did change in between the two events. :stub-columns: 0 :widths: 1 1 16 - - - .. row 1 - - - __u32 - - - ``lost_msgs`` - - - Set to the number of lost messages since the filehandle was opened - or since the last time this event was dequeued for this - filehandle. The messages lost are the oldest messages. So when a - new message arrives and there is no more room, then the oldest - message is discarded to make room for the new one. The internal - size of the message queue guarantees that all messages received in - the last two seconds will be stored. Since messages should be - replied to within a second according to the CEC specification, - this is more than enough. + * - __u32 + - ``lost_msgs`` + - Set to the number of lost messages since the filehandle was opened + or since the last time this event was dequeued for this + filehandle. The messages lost are the oldest messages. So when a + new message arrives and there is no more room, then the oldest + message is discarded to make room for the new one. The internal + size of the message queue guarantees that all messages received in + the last two seconds will be stored. Since messages should be + replied to within a second according to the CEC specification, + this is more than enough. .. tabularcolumns:: |p{1.0cm}|p{4.2cm}|p{2.5cm}|p{8.8cm}| @@ -116,62 +101,32 @@ it is guaranteed that the state did change in between the two events. :stub-columns: 0 :widths: 1 1 1 8 - - - .. row 1 - - - __u64 - - - ``ts`` - - - :cspan:`1` Timestamp of the event in ns. - - The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access - the same clock from userspace use :c:func:`clock_gettime`. - - - .. row 2 - - - __u32 - - - ``event`` - - - :cspan:`1` The CEC event type, see :ref:`cec-events`. - - - .. row 3 - - - __u32 - - - ``flags`` - - - :cspan:`1` Event flags, see :ref:`cec-event-flags`. - - - .. row 4 - - - union - - - (anonymous) - - - - - - - - .. row 5 - - - - - struct cec_event_state_change - - - ``state_change`` - - - The new adapter state as sent by the :ref:`CEC_EVENT_STATE_CHANGE <CEC-EVENT-STATE-CHANGE>` - event. - - - .. row 6 - - - - - struct cec_event_lost_msgs - - - ``lost_msgs`` - - - The number of lost messages as sent by the :ref:`CEC_EVENT_LOST_MSGS <CEC-EVENT-LOST-MSGS>` - event. + * - __u64 + - ``ts`` + - :cspan:`1` Timestamp of the event in ns. + + The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access + the same clock from userspace use :c:func:`clock_gettime`. + * - __u32 + - ``event`` + - :cspan:`1` The CEC event type, see :ref:`cec-events`. + * - __u32 + - ``flags`` + - :cspan:`1` Event flags, see :ref:`cec-event-flags`. + * - union + - (anonymous) + - + - + * - + - struct cec_event_state_change + - ``state_change`` + - The new adapter state as sent by the :ref:`CEC_EVENT_STATE_CHANGE <CEC-EVENT-STATE-CHANGE>` + event. + * - + - struct cec_event_lost_msgs + - ``lost_msgs`` + - The number of lost messages as sent by the :ref:`CEC_EVENT_LOST_MSGS <CEC-EVENT-LOST-MSGS>` + event. .. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}| @@ -183,25 +138,19 @@ it is guaranteed that the state did change in between the two events. :stub-columns: 0 :widths: 3 1 16 + * .. _`CEC-EVENT-STATE-CHANGE`: - - .. _`CEC-EVENT-STATE-CHANGE`: - - - ``CEC_EVENT_STATE_CHANGE`` - - - 1 - - - Generated when the CEC Adapter's state changes. When open() is - called an initial event will be generated for that filehandle with - the CEC Adapter's state at that time. - - - .. _`CEC-EVENT-LOST-MSGS`: + - ``CEC_EVENT_STATE_CHANGE`` + - 1 + - Generated when the CEC Adapter's state changes. When open() is + called an initial event will be generated for that filehandle with + the CEC Adapter's state at that time. + * .. _`CEC-EVENT-LOST-MSGS`: - - ``CEC_EVENT_LOST_MSGS`` - - - 2 - - - Generated if one or more CEC messages were lost because the - application didn't dequeue CEC messages fast enough. + - ``CEC_EVENT_LOST_MSGS`` + - 2 + - Generated if one or more CEC messages were lost because the + application didn't dequeue CEC messages fast enough. .. tabularcolumns:: |p{6.0cm}|p{0.6cm}|p{10.9cm}| @@ -213,17 +162,14 @@ it is guaranteed that the state did change in between the two events. :stub-columns: 0 :widths: 3 1 8 + * .. _`CEC-EVENT-FL-INITIAL-VALUE`: - - .. _`CEC-EVENT-FL-INITIAL-VALUE`: - - - ``CEC_EVENT_FL_INITIAL_VALUE`` - - - 1 - - - Set for the initial events that are generated when the device is - opened. See the table above for which events do this. This allows - applications to learn the initial state of the CEC adapter at - open() time. + - ``CEC_EVENT_FL_INITIAL_VALUE`` + - 1 + - Set for the initial events that are generated when the device is + opened. See the table above for which events do this. This allows + applications to learn the initial state of the CEC adapter at + open() time. diff --git a/Documentation/media/uapi/cec/cec-ioc-g-mode.rst b/Documentation/media/uapi/cec/cec-ioc-g-mode.rst index 70a41902ab58..4f5818b9d277 100644 --- a/Documentation/media/uapi/cec/cec-ioc-g-mode.rst +++ b/Documentation/media/uapi/cec/cec-ioc-g-mode.rst @@ -83,37 +83,28 @@ Available initiator modes are: :stub-columns: 0 :widths: 3 1 16 - - - .. _`CEC-MODE-NO-INITIATOR`: - - - ``CEC_MODE_NO_INITIATOR`` - - - 0x0 - - - This is not an initiator, i.e. it cannot transmit CEC messages or - make any other changes to the CEC adapter. - - - .. _`CEC-MODE-INITIATOR`: - - - ``CEC_MODE_INITIATOR`` - - - 0x1 - - - This is an initiator (the default when the device is opened) and - it can transmit CEC messages and make changes to the CEC adapter, - unless there is an exclusive initiator. - - - .. _`CEC-MODE-EXCL-INITIATOR`: - - - ``CEC_MODE_EXCL_INITIATOR`` - - - 0x2 - - - This is an exclusive initiator and this file descriptor is the - only one that can transmit CEC messages and make changes to the - CEC adapter. If someone else is already the exclusive initiator - then an attempt to become one will return the ``EBUSY`` error code - error. + * .. _`CEC-MODE-NO-INITIATOR`: + + - ``CEC_MODE_NO_INITIATOR`` + - 0x0 + - This is not an initiator, i.e. it cannot transmit CEC messages or + make any other changes to the CEC adapter. + * .. _`CEC-MODE-INITIATOR`: + + - ``CEC_MODE_INITIATOR`` + - 0x1 + - This is an initiator (the default when the device is opened) and + it can transmit CEC messages and make changes to the CEC adapter, + unless there is an exclusive initiator. + * .. _`CEC-MODE-EXCL-INITIATOR`: + + - ``CEC_MODE_EXCL_INITIATOR`` + - 0x2 + - This is an exclusive initiator and this file descriptor is the + only one that can transmit CEC messages and make changes to the + CEC adapter. If someone else is already the exclusive initiator + then an attempt to become one will return the ``EBUSY`` error code + error. Available follower modes are: @@ -127,86 +118,68 @@ Available follower modes are: :stub-columns: 0 :widths: 3 1 16 - - - .. _`CEC-MODE-NO-FOLLOWER`: - - - ``CEC_MODE_NO_FOLLOWER`` - - - 0x00 - - - This is not a follower (the default when the device is opened). - - - .. _`CEC-MODE-FOLLOWER`: - - - ``CEC_MODE_FOLLOWER`` - - - 0x10 - - - This is a follower and it will receive CEC messages unless there - is an exclusive follower. You cannot become a follower if - :ref:`CEC_CAP_TRANSMIT <CEC-CAP-TRANSMIT>` is not set or if :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>` - was specified, the ``EINVAL`` error code is returned in that case. - - - .. _`CEC-MODE-EXCL-FOLLOWER`: - - - ``CEC_MODE_EXCL_FOLLOWER`` - - - 0x20 - - - This is an exclusive follower and only this file descriptor will - receive CEC messages for processing. If someone else is already - the exclusive follower then an attempt to become one will return - the ``EBUSY`` error code. You cannot become a follower if - :ref:`CEC_CAP_TRANSMIT <CEC-CAP-TRANSMIT>` is not set or if :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>` - was specified, the ``EINVAL`` error code is returned in that case. - - - .. _`CEC-MODE-EXCL-FOLLOWER-PASSTHRU`: - - - ``CEC_MODE_EXCL_FOLLOWER_PASSTHRU`` - - - 0x30 - - - This is an exclusive follower and only this file descriptor will - receive CEC messages for processing. In addition it will put the - CEC device into passthrough mode, allowing the exclusive follower - to handle most core messages instead of relying on the CEC - framework for that. If someone else is already the exclusive - follower then an attempt to become one will return the ``EBUSY`` error - code. You cannot become a follower if :ref:`CEC_CAP_TRANSMIT <CEC-CAP-TRANSMIT>` - is not set or if :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>` was specified, - the ``EINVAL`` error code is returned in that case. - - - .. _`CEC-MODE-MONITOR`: - - - ``CEC_MODE_MONITOR`` - - - 0xe0 - - - Put the file descriptor into monitor mode. Can only be used in - combination with :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>`, otherwise EINVAL error - code will be returned. In monitor mode all messages this CEC - device transmits and all messages it receives (both broadcast - messages and directed messages for one its logical addresses) will - be reported. This is very useful for debugging. This is only - allowed if the process has the ``CAP_NET_ADMIN`` capability. If - that is not set, then the ``EPERM`` error code is returned. - - - .. _`CEC-MODE-MONITOR-ALL`: - - - ``CEC_MODE_MONITOR_ALL`` - - - 0xf0 - - - Put the file descriptor into 'monitor all' mode. Can only be used - 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 - this CEC device transmits and all messages it receives, including - directed messages for other CEC devices will be reported. This is - 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, - otherwise the ``EINVAL`` error code is returned. This is only allowed if - the process has the ``CAP_NET_ADMIN`` capability. If that is not - set, then the ``EPERM`` error code is returned. + * .. _`CEC-MODE-NO-FOLLOWER`: + + - ``CEC_MODE_NO_FOLLOWER`` + - 0x00 + - This is not a follower (the default when the device is opened). + * .. _`CEC-MODE-FOLLOWER`: + + - ``CEC_MODE_FOLLOWER`` + - 0x10 + - This is a follower and it will receive CEC messages unless there + is an exclusive follower. You cannot become a follower if + :ref:`CEC_CAP_TRANSMIT <CEC-CAP-TRANSMIT>` is not set or if :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>` + was specified, the ``EINVAL`` error code is returned in that case. + * .. _`CEC-MODE-EXCL-FOLLOWER`: + + - ``CEC_MODE_EXCL_FOLLOWER`` + - 0x20 + - This is an exclusive follower and only this file descriptor will + receive CEC messages for processing. If someone else is already + the exclusive follower then an attempt to become one will return + the ``EBUSY`` error code. You cannot become a follower if + :ref:`CEC_CAP_TRANSMIT <CEC-CAP-TRANSMIT>` is not set or if :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>` + was specified, the ``EINVAL`` error code is returned in that case. + * .. _`CEC-MODE-EXCL-FOLLOWER-PASSTHRU`: + + - ``CEC_MODE_EXCL_FOLLOWER_PASSTHRU`` + - 0x30 + - This is an exclusive follower and only this file descriptor will + receive CEC messages for processing. In addition it will put the + CEC device into passthrough mode, allowing the exclusive follower + to handle most core messages instead of relying on the CEC + framework for that. If someone else is already the exclusive + follower then an attempt to become one will return the ``EBUSY`` error + code. You cannot become a follower if :ref:`CEC_CAP_TRANSMIT <CEC-CAP-TRANSMIT>` + is not set or if :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>` was specified, + the ``EINVAL`` error code is returned in that case. + * .. _`CEC-MODE-MONITOR`: + + - ``CEC_MODE_MONITOR`` + - 0xe0 + - Put the file descriptor into monitor mode. Can only be used in + combination with :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>`, otherwise EINVAL error + code will be returned. In monitor mode all messages this CEC + device transmits and all messages it receives (both broadcast + messages and directed messages for one its logical addresses) will + be reported. This is very useful for debugging. This is only + allowed if the process has the ``CAP_NET_ADMIN`` capability. If + that is not set, then the ``EPERM`` error code is returned. + * .. _`CEC-MODE-MONITOR-ALL`: + + - ``CEC_MODE_MONITOR_ALL`` + - 0xf0 + - Put the file descriptor into 'monitor all' mode. Can only be used + 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 + this CEC device transmits and all messages it receives, including + directed messages for other CEC devices will be reported. This is + 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, + otherwise the ``EINVAL`` error code is returned. This is only allowed if + the process has the ``CAP_NET_ADMIN`` capability. If that is not + set, then the ``EPERM`` error code is returned. Core message processing details: @@ -220,76 +193,58 @@ Core message processing details: :stub-columns: 0 :widths: 1 8 - - - .. _`CEC-MSG-GET-CEC-VERSION`: - - - ``CEC_MSG_GET_CEC_VERSION`` - - - When in passthrough mode this message has to be handled by - userspace, otherwise the core will return the CEC version that was - set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`. - - - .. _`CEC-MSG-GIVE-DEVICE-VENDOR-ID`: - - - ``CEC_MSG_GIVE_DEVICE_VENDOR_ID`` - - - When in passthrough mode this message has to be handled by - userspace, otherwise the core will return the vendor ID that was - set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`. - - - .. _`CEC-MSG-ABORT`: - - - ``CEC_MSG_ABORT`` - - - When in passthrough mode this message has to be handled by - userspace, otherwise the core will return a feature refused - message as per the specification. - - - .. _`CEC-MSG-GIVE-PHYSICAL-ADDR`: - - - ``CEC_MSG_GIVE_PHYSICAL_ADDR`` - - - When in passthrough mode this message has to be handled by - userspace, otherwise the core will report the current physical - address. - - - .. _`CEC-MSG-GIVE-OSD-NAME`: - - - ``CEC_MSG_GIVE_OSD_NAME`` - - - When in passthrough mode this message has to be handled by - userspace, otherwise the core will report the current OSD name as - was set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`. - - - .. _`CEC-MSG-GIVE-FEATURES`: - - - ``CEC_MSG_GIVE_FEATURES`` - - - When in passthrough mode this message has to be handled by - userspace, otherwise the core will report the current features as - was set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` - or the message is ignored if the CEC version was older than 2.0. - - - .. _`CEC-MSG-USER-CONTROL-PRESSED`: - - - ``CEC_MSG_USER_CONTROL_PRESSED`` - - - If :ref:`CEC_CAP_RC <CEC-CAP-RC>` is set, then generate a remote control key - press. This message is always passed on to userspace. - - - .. _`CEC-MSG-USER-CONTROL-RELEASED`: - - - ``CEC_MSG_USER_CONTROL_RELEASED`` - - - If :ref:`CEC_CAP_RC <CEC-CAP-RC>` is set, then generate a remote control key - release. This message is always passed on to userspace. - - - .. _`CEC-MSG-REPORT-PHYSICAL-ADDR`: - - - ``CEC_MSG_REPORT_PHYSICAL_ADDR`` - - - The CEC framework will make note of the reported physical address - and then just pass the message on to userspace. + * .. _`CEC-MSG-GET-CEC-VERSION`: + + - ``CEC_MSG_GET_CEC_VERSION`` + - When in passthrough mode this message has to be handled by + userspace, otherwise the core will return the CEC version that was + set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`. + * .. _`CEC-MSG-GIVE-DEVICE-VENDOR-ID`: + + - ``CEC_MSG_GIVE_DEVICE_VENDOR_ID`` + - When in passthrough mode this message has to be handled by + userspace, otherwise the core will return the vendor ID that was + set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`. + * .. _`CEC-MSG-ABORT`: + + - ``CEC_MSG_ABORT`` + - When in passthrough mode this message has to be handled by + userspace, otherwise the core will return a feature refused + message as per the specification. + * .. _`CEC-MSG-GIVE-PHYSICAL-ADDR`: + + - ``CEC_MSG_GIVE_PHYSICAL_ADDR`` + - When in passthrough mode this message has to be handled by + userspace, otherwise the core will report the current physical + address. + * .. _`CEC-MSG-GIVE-OSD-NAME`: + + - ``CEC_MSG_GIVE_OSD_NAME`` + - When in passthrough mode this message has to be handled by + userspace, otherwise the core will report the current OSD name as + was set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`. + * .. _`CEC-MSG-GIVE-FEATURES`: + + - ``CEC_MSG_GIVE_FEATURES`` + - When in passthrough mode this message has to be handled by + userspace, otherwise the core will report the current features as + was set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>` + or the message is ignored if the CEC version was older than 2.0. + * .. _`CEC-MSG-USER-CONTROL-PRESSED`: + + - ``CEC_MSG_USER_CONTROL_PRESSED`` + - If :ref:`CEC_CAP_RC <CEC-CAP-RC>` is set, then generate a remote control key + press. This message is always passed on to userspace. + * .. _`CEC-MSG-USER-CONTROL-RELEASED`: + + - ``CEC_MSG_USER_CONTROL_RELEASED`` + - If :ref:`CEC_CAP_RC <CEC-CAP-RC>` is set, then generate a remote control key + release. This message is always passed on to userspace. + * .. _`CEC-MSG-REPORT-PHYSICAL-ADDR`: + + - ``CEC_MSG_REPORT_PHYSICAL_ADDR`` + - The CEC framework will make note of the reported physical address + and then just pass the message on to userspace. diff --git a/Documentation/media/uapi/cec/cec-ioc-receive.rst b/Documentation/media/uapi/cec/cec-ioc-receive.rst index d585b1bba6ac..bdf015b1d1dc 100644 --- a/Documentation/media/uapi/cec/cec-ioc-receive.rst +++ b/Documentation/media/uapi/cec/cec-ioc-receive.rst @@ -86,173 +86,126 @@ result. :stub-columns: 0 :widths: 1 1 16 + * - __u64 + - ``tx_ts`` + - Timestamp in ns of when the last byte of the message was transmitted. + The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access + the same clock from userspace use :c:func:`clock_gettime`. + * - __u64 + - ``rx_ts`` + - Timestamp in ns of when the last byte of the message was received. + The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access + the same clock from userspace use :c:func:`clock_gettime`. + * - __u32 + - ``len`` + - The length of the message. For :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>` this is filled in + by the application. The driver will fill this in for + :ref:`ioctl CEC_RECEIVE <CEC_RECEIVE>`. For :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>` it will be + filled in by the driver with the length of the reply message if ``reply`` was set. + * - __u32 + - ``timeout`` + - The timeout in milliseconds. This is the time the device will wait + for a message to be received before timing out. If it is set to 0, + then it will wait indefinitely when it is called by :ref:`ioctl CEC_RECEIVE <CEC_RECEIVE>`. + If it is 0 and it is called by :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`, + then it will be replaced by 1000 if the ``reply`` is non-zero or + ignored if ``reply`` is 0. + * - __u32 + - ``sequence`` + - A non-zero sequence number is automatically assigned by the CEC framework + for all transmitted messages. It is used by the CEC framework when it queues + the transmit result (when transmit was called in non-blocking mode). This + allows the application to associate the received message with the original + transmit. + * - __u32 + - ``flags`` + - Flags. See :ref:`cec-msg-flags` for a list of available flags. + * - __u8 + - ``tx_status`` + - The status bits of the transmitted message. See + :ref:`cec-tx-status` for the possible status values. It is 0 if + this messages was received, not transmitted. + * - __u8 + - ``msg[16]`` + - The message payload. For :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>` this is filled in by the + application. The driver will fill this in for :ref:`ioctl CEC_RECEIVE <CEC_RECEIVE>`. + For :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>` it will be filled in by the driver with + the payload of the reply message if ``timeout`` was set. + * - __u8 + - ``reply`` + - Wait until this message is replied. If ``reply`` is 0 and the + ``timeout`` is 0, then don't wait for a reply but return after + transmitting the message. Ignored by :ref:`ioctl CEC_RECEIVE <CEC_RECEIVE>`. + The case where ``reply`` is 0 (this is the opcode for the Feature Abort + message) and ``timeout`` is non-zero is specifically allowed to make it + possible to send a message and wait up to ``timeout`` milliseconds for a + Feature Abort reply. In this case ``rx_status`` will either be set + to :ref:`CEC_RX_STATUS_TIMEOUT <CEC-RX-STATUS-TIMEOUT>` or + :ref:`CEC_RX_STATUS_FEATURE_ABORT <CEC-RX-STATUS-FEATURE-ABORT>`. + + If the transmitter message is ``CEC_MSG_INITIATE_ARC`` then the ``reply`` + values ``CEC_MSG_REPORT_ARC_INITIATED`` and ``CEC_MSG_REPORT_ARC_TERMINATED`` + are processed differently: either value will match both possible replies. + The reason is that the ``CEC_MSG_INITIATE_ARC`` message is the only CEC + message that has two possible replies other than Feature Abort. The + ``reply`` field will be updated with the actual reply so that it is + synchronized with the contents of the received message. + * - __u8 + - ``rx_status`` + - The status bits of the received message. See + :ref:`cec-rx-status` for the possible status values. It is 0 if + this message was transmitted, not received, unless this is the + reply to a transmitted message. In that case both ``rx_status`` + and ``tx_status`` are set. + * - __u8 + - ``tx_status`` + - The status bits of the transmitted message. See + :ref:`cec-tx-status` for the possible status values. It is 0 if + this messages was received, not transmitted. + * - __u8 + - ``tx_arb_lost_cnt`` + - A counter of the number of transmit attempts that resulted in the + Arbitration Lost error. This is only set if the hardware supports + this, otherwise it is always 0. This counter is only valid if the + :ref:`CEC_TX_STATUS_ARB_LOST <CEC-TX-STATUS-ARB-LOST>` status bit is set. + * - __u8 + - ``tx_nack_cnt`` + - A counter of the number of transmit attempts that resulted in the + Not Acknowledged error. This is only set if the hardware supports + this, otherwise it is always 0. This counter is only valid if the + :ref:`CEC_TX_STATUS_NACK <CEC-TX-STATUS-NACK>` status bit is set. + * - __u8 + - ``tx_low_drive_cnt`` + - A counter of the number of transmit attempts that resulted in the + Arbitration Lost error. This is only set if the hardware supports + this, otherwise it is always 0. This counter is only valid if the + :ref:`CEC_TX_STATUS_LOW_DRIVE <CEC-TX-STATUS-LOW-DRIVE>` status bit is set. + * - __u8 + - ``tx_error_cnt`` + - A counter of the number of transmit errors other than Arbitration + Lost or Not Acknowledged. This is only set if the hardware + supports this, otherwise it is always 0. This counter is only + valid if the :ref:`CEC_TX_STATUS_ERROR <CEC-TX-STATUS-ERROR>` status bit is set. + + +.. _cec-msg-flags: + +.. flat-table:: Flags for struct cec_msg + :header-rows: 0 + :stub-columns: 0 + :widths: 3 1 4 - - .. row 1 - - - __u64 - - - ``tx_ts`` - - - Timestamp in ns of when the last byte of the message was transmitted. - The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access - the same clock from userspace use :c:func:`clock_gettime`. - - - .. row 2 - - - __u64 - - - ``rx_ts`` - - - Timestamp in ns of when the last byte of the message was received. - The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access - the same clock from userspace use :c:func:`clock_gettime`. - - - .. row 3 - - - __u32 - - - ``len`` - - - The length of the message. For :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>` this is filled in - by the application. The driver will fill this in for - :ref:`ioctl CEC_RECEIVE <CEC_RECEIVE>`. For :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>` it will be - filled in by the driver with the length of the reply message if ``reply`` was set. - - - .. row 4 - - - __u32 - - - ``timeout`` - - - The timeout in milliseconds. This is the time the device will wait - for a message to be received before timing out. If it is set to 0, - then it will wait indefinitely when it is called by :ref:`ioctl CEC_RECEIVE <CEC_RECEIVE>`. - If it is 0 and it is called by :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`, - then it will be replaced by 1000 if the ``reply`` is non-zero or - ignored if ``reply`` is 0. - - - .. row 5 - - - __u32 - - - ``sequence`` - - - A non-zero sequence number is automatically assigned by the CEC framework - for all transmitted messages. It is used by the CEC framework when it queues - the transmit result (when transmit was called in non-blocking mode). This - allows the application to associate the received message with the original - transmit. - - - .. row 6 - - - __u32 - - - ``flags`` - - - Flags. No flags are defined yet, so set this to 0. - - - .. row 7 - - - __u8 - - - ``tx_status`` - - - The status bits of the transmitted message. See - :ref:`cec-tx-status` for the possible status values. It is 0 if - this messages was received, not transmitted. - - - .. row 8 - - - __u8 - - - ``msg[16]`` - - - The message payload. For :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>` this is filled in by the - application. The driver will fill this in for :ref:`ioctl CEC_RECEIVE <CEC_RECEIVE>`. - For :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>` it will be filled in by the driver with - the payload of the reply message if ``timeout`` was set. - - - .. row 8 - - - __u8 - - - ``reply`` - - - Wait until this message is replied. If ``reply`` is 0 and the - ``timeout`` is 0, then don't wait for a reply but return after - transmitting the message. Ignored by :ref:`ioctl CEC_RECEIVE <CEC_RECEIVE>`. - The case where ``reply`` is 0 (this is the opcode for the Feature Abort - message) and ``timeout`` is non-zero is specifically allowed to make it - possible to send a message and wait up to ``timeout`` milliseconds for a - Feature Abort reply. In this case ``rx_status`` will either be set - to :ref:`CEC_RX_STATUS_TIMEOUT <CEC-RX-STATUS-TIMEOUT>` or - :ref:`CEC_RX_STATUS_FEATURE_ABORT <CEC-RX-STATUS-FEATURE-ABORT>`. - - - .. row 9 - - - __u8 - - - ``rx_status`` - - - The status bits of the received message. See - :ref:`cec-rx-status` for the possible status values. It is 0 if - this message was transmitted, not received, unless this is the - reply to a transmitted message. In that case both ``rx_status`` - and ``tx_status`` are set. - - - .. row 10 - - - __u8 - - - ``tx_status`` - - - The status bits of the transmitted message. See - :ref:`cec-tx-status` for the possible status values. It is 0 if - this messages was received, not transmitted. - - - .. row 11 - - - __u8 - - - ``tx_arb_lost_cnt`` - - - A counter of the number of transmit attempts that resulted in the - Arbitration Lost error. This is only set if the hardware supports - this, otherwise it is always 0. This counter is only valid if the - :ref:`CEC_TX_STATUS_ARB_LOST <CEC-TX-STATUS-ARB-LOST>` status bit is set. - - - .. row 12 - - - __u8 - - - ``tx_nack_cnt`` - - - A counter of the number of transmit attempts that resulted in the - Not Acknowledged error. This is only set if the hardware supports - this, otherwise it is always 0. This counter is only valid if the - :ref:`CEC_TX_STATUS_NACK <CEC-TX-STATUS-NACK>` status bit is set. - - - .. row 13 - - - __u8 - - - ``tx_low_drive_cnt`` - - - A counter of the number of transmit attempts that resulted in the - Arbitration Lost error. This is only set if the hardware supports - this, otherwise it is always 0. This counter is only valid if the - :ref:`CEC_TX_STATUS_LOW_DRIVE <CEC-TX-STATUS-LOW-DRIVE>` status bit is set. - - - .. row 14 - - - __u8 - - - ``tx_error_cnt`` + * .. _`CEC-MSG-FL-REPLY-TO-FOLLOWERS`: - - A counter of the number of transmit errors other than Arbitration - Lost or Not Acknowledged. This is only set if the hardware - supports this, otherwise it is always 0. This counter is only - valid if the :ref:`CEC_TX_STATUS_ERROR <CEC-TX-STATUS-ERROR>` status bit is set. + - ``CEC_MSG_FL_REPLY_TO_FOLLOWERS`` + - 1 + - If a CEC transmit expects a reply, then by default that reply is only sent to + the filehandle that called :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`. If this + flag is set, then the reply is also sent to all followers, if any. If the + filehandle that called :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>` is also a + follower, then that filehandle will receive the reply twice: once as the + result of the :ref:`ioctl CEC_TRANSMIT <CEC_TRANSMIT>`, and once via + :ref:`ioctl CEC_RECEIVE <CEC_RECEIVE>`. .. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}| @@ -264,64 +217,46 @@ result. :stub-columns: 0 :widths: 3 1 16 - - - .. _`CEC-TX-STATUS-OK`: - - - ``CEC_TX_STATUS_OK`` - - - 0x01 - - - The message was transmitted successfully. This is mutually - exclusive with :ref:`CEC_TX_STATUS_MAX_RETRIES <CEC-TX-STATUS-MAX-RETRIES>`. Other bits can still - be set if earlier attempts met with failure before the transmit - was eventually successful. - - - .. _`CEC-TX-STATUS-ARB-LOST`: - - - ``CEC_TX_STATUS_ARB_LOST`` - - - 0x02 - - - CEC line arbitration was lost. - - - .. _`CEC-TX-STATUS-NACK`: - - - ``CEC_TX_STATUS_NACK`` - - - 0x04 - - - Message was not acknowledged. - - - .. _`CEC-TX-STATUS-LOW-DRIVE`: - - - ``CEC_TX_STATUS_LOW_DRIVE`` - - - 0x08 - - - Low drive was detected on the CEC bus. This indicates that a - follower detected an error on the bus and requests a - retransmission. - - - .. _`CEC-TX-STATUS-ERROR`: - - - ``CEC_TX_STATUS_ERROR`` - - - 0x10 - - - Some error occurred. This is used for any errors that do not fit - the previous two, either because the hardware could not tell which - error occurred, or because the hardware tested for other - conditions besides those two. - - - .. _`CEC-TX-STATUS-MAX-RETRIES`: - - - ``CEC_TX_STATUS_MAX_RETRIES`` - - - 0x20 - - - The transmit failed after one or more retries. This status bit is - mutually exclusive with :ref:`CEC_TX_STATUS_OK <CEC-TX-STATUS-OK>`. Other bits can still - be set to explain which failures were seen. + * .. _`CEC-TX-STATUS-OK`: + + - ``CEC_TX_STATUS_OK`` + - 0x01 + - The message was transmitted successfully. This is mutually + exclusive with :ref:`CEC_TX_STATUS_MAX_RETRIES <CEC-TX-STATUS-MAX-RETRIES>`. Other bits can still + be set if earlier attempts met with failure before the transmit + was eventually successful. + * .. _`CEC-TX-STATUS-ARB-LOST`: + + - ``CEC_TX_STATUS_ARB_LOST`` + - 0x02 + - CEC line arbitration was lost. + * .. _`CEC-TX-STATUS-NACK`: + + - ``CEC_TX_STATUS_NACK`` + - 0x04 + - Message was not acknowledged. + * .. _`CEC-TX-STATUS-LOW-DRIVE`: + + - ``CEC_TX_STATUS_LOW_DRIVE`` + - 0x08 + - Low drive was detected on the CEC bus. This indicates that a + follower detected an error on the bus and requests a + retransmission. + * .. _`CEC-TX-STATUS-ERROR`: + + - ``CEC_TX_STATUS_ERROR`` + - 0x10 + - Some error occurred. This is used for any errors that do not fit + the previous two, either because the hardware could not tell which + error occurred, or because the hardware tested for other + conditions besides those two. + * .. _`CEC-TX-STATUS-MAX-RETRIES`: + + - ``CEC_TX_STATUS_MAX_RETRIES`` + - 0x20 + - The transmit failed after one or more retries. This status bit is + mutually exclusive with :ref:`CEC_TX_STATUS_OK <CEC-TX-STATUS-OK>`. Other bits can still + be set to explain which failures were seen. .. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}| @@ -333,32 +268,23 @@ result. :stub-columns: 0 :widths: 3 1 16 + * .. _`CEC-RX-STATUS-OK`: - - .. _`CEC-RX-STATUS-OK`: - - - ``CEC_RX_STATUS_OK`` - - - 0x01 - - - The message was received successfully. - - - .. _`CEC-RX-STATUS-TIMEOUT`: - - - ``CEC_RX_STATUS_TIMEOUT`` - - - 0x02 - - - The reply to an earlier transmitted message timed out. - - - .. _`CEC-RX-STATUS-FEATURE-ABORT`: - - - ``CEC_RX_STATUS_FEATURE_ABORT`` + - ``CEC_RX_STATUS_OK`` + - 0x01 + - The message was received successfully. + * .. _`CEC-RX-STATUS-TIMEOUT`: - - 0x04 + - ``CEC_RX_STATUS_TIMEOUT`` + - 0x02 + - The reply to an earlier transmitted message timed out. + * .. _`CEC-RX-STATUS-FEATURE-ABORT`: - - The message was received successfully but the reply was - ``CEC_MSG_FEATURE_ABORT``. This status is only set if this message - was the reply to an earlier transmitted message. + - ``CEC_RX_STATUS_FEATURE_ABORT`` + - 0x04 + - The message was received successfully but the reply was + ``CEC_MSG_FEATURE_ABORT``. This status is only set if this message + was the reply to an earlier transmitted message. diff --git a/Documentation/media/uapi/v4l/control.rst b/Documentation/media/uapi/v4l/control.rst index d3f1450c4b08..51112badb804 100644 --- a/Documentation/media/uapi/v4l/control.rst +++ b/Documentation/media/uapi/v4l/control.rst @@ -312,21 +312,20 @@ more menu type controls. .. _enum_all_controls: -Example: Enumerating all user controls -====================================== +Example: Enumerating all controls +================================= .. code-block:: c - struct v4l2_queryctrl queryctrl; struct v4l2_querymenu querymenu; - static void enumerate_menu(void) + static void enumerate_menu(__u32 id) { printf(" Menu items:\\n"); memset(&querymenu, 0, sizeof(querymenu)); - querymenu.id = queryctrl.id; + querymenu.id = id; for (querymenu.index = queryctrl.minimum; querymenu.index <= queryctrl.maximum; @@ -339,6 +338,55 @@ Example: Enumerating all user controls memset(&queryctrl, 0, sizeof(queryctrl)); + queryctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL; + while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) { + if (!(queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)) { + printf("Control %s\\n", queryctrl.name); + + if (queryctrl.type == V4L2_CTRL_TYPE_MENU) + enumerate_menu(queryctrl.id); + } + + queryctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL; + } + if (errno != EINVAL) { + perror("VIDIOC_QUERYCTRL"); + exit(EXIT_FAILURE); + } + +Example: Enumerating all controls including compound controls +============================================================= + +.. code-block:: c + + struct v4l2_query_ext_ctrl query_ext_ctrl; + + memset(&query_ext_ctrl, 0, sizeof(query_ext_ctrl)); + + query_ext_ctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL | V4L2_CTRL_FLAG_NEXT_COMPOUND; + while (0 == ioctl(fd, VIDIOC_QUERY_EXT_CTRL, &query_ext_ctrl)) { + if (!(query_ext_ctrl.flags & V4L2_CTRL_FLAG_DISABLED)) { + printf("Control %s\\n", query_ext_ctrl.name); + + if (query_ext_ctrl.type == V4L2_CTRL_TYPE_MENU) + enumerate_menu(query_ext_ctrl.id); + } + + query_ext_ctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL | V4L2_CTRL_FLAG_NEXT_COMPOUND; + } + if (errno != EINVAL) { + perror("VIDIOC_QUERY_EXT_CTRL"); + exit(EXIT_FAILURE); + } + +Example: Enumerating all user controls (old style) +================================================== + +.. code-block:: c + + + memset(&queryctrl, 0, sizeof(queryctrl)); + for (queryctrl.id = V4L2_CID_BASE; queryctrl.id < V4L2_CID_LASTP1; queryctrl.id++) { @@ -349,7 +397,7 @@ Example: Enumerating all user controls printf("Control %s\\n", queryctrl.name); if (queryctrl.type == V4L2_CTRL_TYPE_MENU) - enumerate_menu(); + enumerate_menu(queryctrl.id); } else { if (errno == EINVAL) continue; @@ -368,7 +416,7 @@ Example: Enumerating all user controls printf("Control %s\\n", queryctrl.name); if (queryctrl.type == V4L2_CTRL_TYPE_MENU) - enumerate_menu(); + enumerate_menu(queryctrl.id); } else { if (errno == EINVAL) break; @@ -379,32 +427,6 @@ Example: Enumerating all user controls } -Example: Enumerating all user controls (alternative) -==================================================== - -.. code-block:: c - - memset(&queryctrl, 0, sizeof(queryctrl)); - - queryctrl.id = V4L2_CTRL_CLASS_USER | V4L2_CTRL_FLAG_NEXT_CTRL; - while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) { - if (V4L2_CTRL_ID2CLASS(queryctrl.id) != V4L2_CTRL_CLASS_USER) - break; - if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) - continue; - - printf("Control %s\\n", queryctrl.name); - - if (queryctrl.type == V4L2_CTRL_TYPE_MENU) - enumerate_menu(); - - queryctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL; - } - if (errno != EINVAL) { - perror("VIDIOC_QUERYCTRL"); - exit(EXIT_FAILURE); - } - Example: Changing controls ========================== diff --git a/Documentation/media/uapi/v4l/dev-codec.rst b/Documentation/media/uapi/v4l/dev-codec.rst index d9f218449ddd..c61e938bd8dc 100644 --- a/Documentation/media/uapi/v4l/dev-codec.rst +++ b/Documentation/media/uapi/v4l/dev-codec.rst @@ -26,7 +26,7 @@ parameters The MPEG controls actually support many more codecs than just MPEG. See :ref:`mpeg-controls`. -Memory-to-memory devices can often be used as a shared resource: you can +Memory-to-memory devices function as a shared resource: you can open the video node multiple times, each application setting up their own codec properties that are local to the file handle, and each can use it independently from the others. The driver will arbitrate access to diff --git a/Documentation/media/uapi/v4l/extended-controls.rst b/Documentation/media/uapi/v4l/extended-controls.rst index 7725c33d8b69..abb105724c05 100644 --- a/Documentation/media/uapi/v4l/extended-controls.rst +++ b/Documentation/media/uapi/v4l/extended-controls.rst @@ -2846,7 +2846,7 @@ JPEG Control IDs input image is sampled, in respect to maximum sample rate in each spatial dimension. See :ref:`itu-t81`, clause A.1.1. for more details. The ``V4L2_CID_JPEG_CHROMA_SUBSAMPLING`` control determines - how Cb and Cr components are downsampled after coverting an input + how Cb and Cr components are downsampled after converting an input image from RGB to Y'CbCr color space. .. tabularcolumns:: |p{7.0cm}|p{10.5cm}| @@ -3017,6 +3017,10 @@ Image Process Control IDs test pattern images. These hardware specific test patterns can be used to test if a device is working properly. +``V4L2_CID_DEINTERLACING_MODE (menu)`` + The video deinterlacing mode (such as Bob, Weave, ...). The menu items are + driver specific and are documented in :ref:`v4l-drivers`. + .. _dv-controls: diff --git a/Documentation/media/uapi/v4l/hsv-formats.rst b/Documentation/media/uapi/v4l/hsv-formats.rst new file mode 100644 index 000000000000..f0f2615eaa95 --- /dev/null +++ b/Documentation/media/uapi/v4l/hsv-formats.rst @@ -0,0 +1,19 @@ +.. -*- coding: utf-8; mode: rst -*- + +.. _hsv-formats: + +*********** +HSV Formats +*********** + +These formats store the color information of the image +in a geometrical representation. The colors are mapped into a +cylinder, where the angle is the HUE, the height is the VALUE +and the distance to the center is the SATURATION. This is a very +useful format for image segmentation algorithms. + + +.. toctree:: + :maxdepth: 1 + + pixfmt-packed-hsv diff --git a/Documentation/media/uapi/v4l/pixfmt-002.rst b/Documentation/media/uapi/v4l/pixfmt-002.rst index 0d9e697f5d4e..2ee164c25637 100644 --- a/Documentation/media/uapi/v4l/pixfmt-002.rst +++ b/Documentation/media/uapi/v4l/pixfmt-002.rst @@ -121,6 +121,11 @@ Single-planar format structure - This information supplements the ``colorspace`` and must be set by the driver for capture streams and by the application for output streams, see :ref:`colorspaces`. + * - enum :c:type:`v4l2_hsv_encoding` + - ``hsv_enc`` + - This information supplements the ``colorspace`` and must be set by + the driver for capture streams and by the application for output + streams, see :ref:`colorspaces`. * - enum :c:type:`v4l2_quantization` - ``quantization`` - This information supplements the ``colorspace`` and must be set by diff --git a/Documentation/media/uapi/v4l/pixfmt-003.rst b/Documentation/media/uapi/v4l/pixfmt-003.rst index ae9ea7a791de..337e8188caf1 100644 --- a/Documentation/media/uapi/v4l/pixfmt-003.rst +++ b/Documentation/media/uapi/v4l/pixfmt-003.rst @@ -78,6 +78,11 @@ describing all planes of that format. - This information supplements the ``colorspace`` and must be set by the driver for capture streams and by the application for output streams, see :ref:`colorspaces`. + * - enum :c:type:`v4l2_hsv_encoding` + - ``hsv_enc`` + - This information supplements the ``colorspace`` and must be set by + the driver for capture streams and by the application for output + streams, see :ref:`colorspaces`. * - enum :c:type:`v4l2_quantization` - ``quantization`` - This information supplements the ``colorspace`` and must be set by diff --git a/Documentation/media/uapi/v4l/pixfmt-006.rst b/Documentation/media/uapi/v4l/pixfmt-006.rst index a9890ff6038b..7ae7dcf73f63 100644 --- a/Documentation/media/uapi/v4l/pixfmt-006.rst +++ b/Documentation/media/uapi/v4l/pixfmt-006.rst @@ -19,9 +19,16 @@ colorspace field of struct :c:type:`v4l2_pix_format` or struct :c:type:`v4l2_pix_format_mplane` needs to be filled in. -.. note:: +.. _hsv-colorspace: - The default R'G'B' quantization is full range for all +On :ref:`HSV formats <hsv-formats>` the *Hue* is defined as the angle on +the cylindrical color representation. Usually this angle is measured in +degrees, i.e. 0-360. When we map this angle value into 8 bits, there are +two basic ways to do it: Divide the angular value by 2 (0-179), or use the +whole range, 0-255, dividing the angular value by 1.41. The enum +:c:type:`v4l2_hsv_encoding` specifies which encoding is used. + +.. note:: The default R'G'B' quantization is full range for all colorspaces except for BT.2020 which uses limited range R'G'B' quantization. @@ -123,6 +130,24 @@ needs to be filled in. +.. c:type:: v4l2_hsv_encoding + +.. tabularcolumns:: |p{6.5cm}|p{11.0cm}| + +.. flat-table:: V4L2 HSV Encodings + :header-rows: 1 + :stub-columns: 0 + + * - Identifier + - Details + * - ``V4L2_HSV_ENC_180`` + - For the Hue, each LSB is two degrees. + * - ``V4L2_HSV_ENC_256`` + - For the Hue, the 360 degrees are mapped into 8 bits, i.e. each + LSB is roughly 1.41 degrees. + + + .. c:type:: v4l2_quantization .. tabularcolumns:: |p{6.5cm}|p{11.0cm}| @@ -136,7 +161,7 @@ needs to be filled in. * - ``V4L2_QUANTIZATION_DEFAULT`` - Use the default quantization encoding as defined by the colorspace. This is always full range for R'G'B' (except for the - BT.2020 colorspace) and usually limited range for Y'CbCr. + BT.2020 colorspace) and HSV. It is usually limited range for Y'CbCr. * - ``V4L2_QUANTIZATION_FULL_RANGE`` - Use the full range quantization encoding. I.e. the range [0…1] is mapped to [0…255] (with possible clipping to [1…254] to avoid the diff --git a/Documentation/media/uapi/v4l/pixfmt-013.rst b/Documentation/media/uapi/v4l/pixfmt-013.rst index 542c087152e3..728d7ede10fa 100644 --- a/Documentation/media/uapi/v4l/pixfmt-013.rst +++ b/Documentation/media/uapi/v4l/pixfmt-013.rst @@ -85,3 +85,8 @@ Compressed Formats - ``V4L2_PIX_FMT_VP8`` - 'VP80' - VP8 video elementary stream. + * .. _V4L2-PIX-FMT-VP9: + + - ``V4L2_PIX_FMT_VP9`` + - 'VP90' + - VP9 video elementary stream. diff --git a/Documentation/media/uapi/v4l/pixfmt-packed-hsv.rst b/Documentation/media/uapi/v4l/pixfmt-packed-hsv.rst new file mode 100644 index 000000000000..3fdb34ce2f09 --- /dev/null +++ b/Documentation/media/uapi/v4l/pixfmt-packed-hsv.rst @@ -0,0 +1,157 @@ +.. -*- coding: utf-8; mode: rst -*- + +.. _packed-hsv: + +****************** +Packed HSV formats +****************** + +Description +=========== + +The *hue* (h) is measured in degrees, the equivalence between degrees and LSBs +depends on the hsv-encoding used, see :ref:`colorspaces`. +The *saturation* (s) and the *value* (v) are measured in percentage of the +cylinder: 0 being the smallest value and 255 the maximum. + + +The values are packed in 24 or 32 bit formats. + +.. raw:: latex + + \newline\begin{adjustbox}{width=\columnwidth} + +.. tabularcolumns:: |p{4.2cm}|p{1.0cm}|p{0.7cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{1.7cm}| + +.. _packed-hsv-formats: + +.. flat-table:: Packed HSV Image Formats + :header-rows: 2 + :stub-columns: 0 + + * - Identifier + - Code + - + - :cspan:`7` Byte 0 in memory + - + - :cspan:`7` Byte 1 + - + - :cspan:`7` Byte 2 + - + - :cspan:`7` Byte 3 + * - + - + - Bit + - 7 + - 6 + - 5 + - 4 + - 3 + - 2 + - 1 + - 0 + - + - 7 + - 6 + - 5 + - 4 + - 3 + - 2 + - 1 + - 0 + - + - 7 + - 6 + - 5 + - 4 + - 3 + - 2 + - 1 + - 0 + - + - 7 + - 6 + - 5 + - 4 + - 3 + - 2 + - 1 + - 0 + * .. _V4L2-PIX-FMT-HSV32: + + - ``V4L2_PIX_FMT_HSV32`` + - 'HSV4' + - + - + - + - + - + - + - + - + - + - + - h\ :sub:`7` + - h\ :sub:`6` + - h\ :sub:`5` + - h\ :sub:`4` + - h\ :sub:`3` + - h\ :sub:`2` + - h\ :sub:`1` + - h\ :sub:`0` + - + - s\ :sub:`7` + - s\ :sub:`6` + - s\ :sub:`5` + - s\ :sub:`4` + - s\ :sub:`3` + - s\ :sub:`2` + - s\ :sub:`1` + - s\ :sub:`0` + - + - v\ :sub:`7` + - v\ :sub:`6` + - v\ :sub:`5` + - v\ :sub:`4` + - v\ :sub:`3` + - v\ :sub:`2` + - v\ :sub:`1` + - v\ :sub:`0` + * .. _V4L2-PIX-FMT-HSV24: + + - ``V4L2_PIX_FMT_HSV24`` + - 'HSV3' + - + - h\ :sub:`7` + - h\ :sub:`6` + - h\ :sub:`5` + - h\ :sub:`4` + - h\ :sub:`3` + - h\ :sub:`2` + - h\ :sub:`1` + - h\ :sub:`0` + - + - s\ :sub:`7` + - s\ :sub:`6` + - s\ :sub:`5` + - s\ :sub:`4` + - s\ :sub:`3` + - s\ :sub:`2` + - s\ :sub:`1` + - s\ :sub:`0` + - + - v\ :sub:`7` + - v\ :sub:`6` + - v\ :sub:`5` + - v\ :sub:`4` + - v\ :sub:`3` + - v\ :sub:`2` + - v\ :sub:`1` + - v\ :sub:`0` + - + - +.. raw:: latex + + \end{adjustbox}\newline\newline + +Bit 7 is the most significant bit. diff --git a/Documentation/media/uapi/v4l/pixfmt-reserved.rst b/Documentation/media/uapi/v4l/pixfmt-reserved.rst index bd7bf3dae6af..521adb795535 100644 --- a/Documentation/media/uapi/v4l/pixfmt-reserved.rst +++ b/Documentation/media/uapi/v4l/pixfmt-reserved.rst @@ -234,7 +234,15 @@ please make a proposal on the linux-media mailing list. repeated for each line, i.e. the number of entries in the pointer array. Anything what's in between the UYVY lines is JPEG data and should be concatenated to form the JPEG stream. - + * .. _V4L2-PIX-FMT-MT21C: + + - ``V4L2_PIX_FMT_MT21C`` + - 'MT21' + - Compressed two-planar YVU420 format used by Mediatek MT8173. + The compression is lossless. + It is an opaque intermediate format and the MDP hardware must be + used to convert ``V4L2_PIX_FMT_MT21C`` to ``V4L2_PIX_FMT_NV12M``, + ``V4L2_PIX_FMT_YUV420M`` or ``V4L2_PIX_FMT_YVU420``. .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| diff --git a/Documentation/media/uapi/v4l/pixfmt-rgb.rst b/Documentation/media/uapi/v4l/pixfmt-rgb.rst index 9cc980882e80..b0f35136021e 100644 --- a/Documentation/media/uapi/v4l/pixfmt-rgb.rst +++ b/Documentation/media/uapi/v4l/pixfmt-rgb.rst @@ -12,9 +12,9 @@ RGB Formats pixfmt-packed-rgb pixfmt-srggb8 - pixfmt-sbggr16 pixfmt-srggb10 pixfmt-srggb10p pixfmt-srggb10alaw8 pixfmt-srggb10dpcm8 pixfmt-srggb12 + pixfmt-srggb16 diff --git a/Documentation/media/uapi/v4l/pixfmt-srggb10p.rst b/Documentation/media/uapi/v4l/pixfmt-srggb10p.rst index 9a41c8d811d0..b6d426c70ccd 100644 --- a/Documentation/media/uapi/v4l/pixfmt-srggb10p.rst +++ b/Documentation/media/uapi/v4l/pixfmt-srggb10p.rst @@ -28,7 +28,7 @@ bits of each pixel, in the same order. Each n-pixel row contains n/2 green samples and n/2 blue or red samples, with alternating green-red and green-blue rows. They are conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example -of one of these formats: +of a small V4L2_PIX_FMT_SBGGR10P image: **Byte Order.** Each cell is one byte. diff --git a/Documentation/media/uapi/v4l/pixfmt-srggb12.rst b/Documentation/media/uapi/v4l/pixfmt-srggb12.rst index a50ee143cb08..15041e568a0a 100644 --- a/Documentation/media/uapi/v4l/pixfmt-srggb12.rst +++ b/Documentation/media/uapi/v4l/pixfmt-srggb12.rst @@ -26,7 +26,7 @@ high bits filled with zeros. Each n-pixel row contains n/2 green samples and n/2 blue or red samples, with alternating red and blue rows. Bytes are stored in memory in little endian order. They are conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example -of one of these formats: +of a small V4L2_PIX_FMT_SBGGR12 image: **Byte Order.** Each cell is one byte, the 4 most significant bits in the high bytes are diff --git a/Documentation/media/uapi/v4l/pixfmt-sbggr16.rst b/Documentation/media/uapi/v4l/pixfmt-srggb16.rst index 6f7f327db85c..d407b2b2050f 100644 --- a/Documentation/media/uapi/v4l/pixfmt-sbggr16.rst +++ b/Documentation/media/uapi/v4l/pixfmt-srggb16.rst @@ -1,21 +1,28 @@ .. -*- coding: utf-8; mode: rst -*- -.. _V4L2-PIX-FMT-SBGGR16: +.. _V4L2-PIX-FMT-SRGGB16: +.. _v4l2-pix-fmt-sbggr16: +.. _v4l2-pix-fmt-sgbrg16: +.. _v4l2-pix-fmt-sgrbg16: -***************************** -V4L2_PIX_FMT_SBGGR16 ('BYR2') -***************************** -Bayer RGB format +*************************************************************************************************************************** +V4L2_PIX_FMT_SRGGB16 ('RG16'), V4L2_PIX_FMT_SGRBG16 ('GR16'), V4L2_PIX_FMT_SGBRG16 ('GB16'), V4L2_PIX_FMT_SBGGR16 ('BYR2'), +*************************************************************************************************************************** + + +16-bit Bayer formats Description =========== -This format is similar to -:ref:`V4L2_PIX_FMT_SBGGR8 <V4L2-PIX-FMT-SBGGR8>`, except each pixel -has a depth of 16 bits. The least significant byte is stored at lower -memory addresses (little-endian). +These four pixel formats are raw sRGB / Bayer formats with 16 bits per +sample. Each sample is stored in a 16-bit word. Each n-pixel row contains +n/2 green samples and n/2 blue or red samples, with alternating red and blue +rows. Bytes are stored in memory in little endian order. They are +conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is +an example of a small V4L2_PIX_FMT_SBGGR16 image: **Byte Order.** Each cell is one byte. diff --git a/Documentation/media/uapi/v4l/pixfmt-srggb8.rst b/Documentation/media/uapi/v4l/pixfmt-srggb8.rst index a3987d2e97fd..5ac25a634d30 100644 --- a/Documentation/media/uapi/v4l/pixfmt-srggb8.rst +++ b/Documentation/media/uapi/v4l/pixfmt-srggb8.rst @@ -20,7 +20,7 @@ These four pixel formats are raw sRGB / Bayer formats with 8 bits per sample. Each sample is stored in a byte. Each n-pixel row contains n/2 green samples and n/2 blue or red samples, with alternating red and blue rows. They are conventionally described as GRGR... BGBG..., -RGRG... GBGB..., etc. Below is an example of one of these formats: +RGRG... GBGB..., etc. Below is an example of a small V4L2_PIX_FMT_SBGGR8 image: **Byte Order.** Each cell is one byte. diff --git a/Documentation/media/uapi/v4l/pixfmt.rst b/Documentation/media/uapi/v4l/pixfmt.rst index 4d297f6eb5f1..4f184c7aedab 100644 --- a/Documentation/media/uapi/v4l/pixfmt.rst +++ b/Documentation/media/uapi/v4l/pixfmt.rst @@ -29,6 +29,7 @@ see also :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>`.) pixfmt-indexed pixfmt-rgb yuv-formats + hsv-formats depth-formats pixfmt-013 sdr-formats diff --git a/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg b/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg index ba02e6f6214d..1903dd3846c2 100644 --- a/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg +++ b/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg @@ -7,9 +7,9 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="43cm" - height="10cm" - viewBox="-194 128 844 196" + width="42.799767cm" + height="9.9348345cm" + viewBox="-194 128 840.06984 194.72276" id="svg2" version="1.1" inkscape:version="0.91 r13725" @@ -22,6 +22,7 @@ <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> </cc:Work> </rdf:RDF> </metadata> @@ -40,23 +41,27 @@ inkscape:window-height="997" id="namedview96" showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" inkscape:zoom="0.3649199" - inkscape:cx="767.29168" - inkscape:cy="177.16535" + inkscape:cx="764.40286" + inkscape:cy="176.91347" inkscape:window-x="1920" inkscape:window-y="30" inkscape:window-maximized="1" inkscape:current-layer="svg2" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - x="-8" - y="130" - width="469.774" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + x="-9.6002426" + y="128.86047" + width="469.77399" height="193" id="rect4" /> <g id="g6" - style=""> + transform="translate(-1.6002426,-1.1395339)"> <rect style="fill:#ffffff" x="4.5" @@ -65,7 +70,7 @@ height="104" id="rect8" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a52a2a" + style="fill:none;fill-opacity:0;stroke:#a52a2a;stroke-width:2" x="4.5" y="189" width="159" @@ -74,7 +79,7 @@ </g> <g id="g12" - style=""> + transform="translate(-1.6002426,-1.1395339)"> <rect style="fill:#ffffff" x="63.5" @@ -83,7 +88,7 @@ height="77" id="rect14" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#0000ff" + style="fill:none;fill-opacity:0;stroke:#0000ff;stroke-width:2" x="63.5" y="211" width="94" @@ -91,223 +96,207 @@ id="rect16" /> </g> <text - style="fill:#0000ff;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="74.5" - y="227.75" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#0000ff" + x="72.899757" + y="226.61047" id="text18"> <tspan - x="74.5" - y="227.75" - id="tspan20" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">sink</tspan> + x="72.899757" + y="226.61047" + id="tspan20">sink</tspan> <tspan - x="74.5" - y="243.75" - id="tspan22" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">crop</tspan> + x="72.899757" + y="242.61047" + id="tspan22">crop</tspan> <tspan - x="74.5" - y="259.75" - id="tspan24" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">selection</tspan> + x="72.899757" + y="258.61047" + id="tspan24">selection</tspan> </text> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="29.5" - y="158" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="27.899757" + y="156.86047" id="text26"> <tspan - x="29.5" - y="158" - id="tspan28" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;" /> + x="27.899757" + y="156.86047" + id="tspan28" /> </text> <text - style="fill:#a52a2a;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="8.53836" - y="157.914" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#a52a2a" + x="6.938117" + y="156.77448" id="text30"> <tspan - x="8.53836" - y="157.914" - id="tspan32" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">sink media</tspan> + x="6.938117" + y="156.77448" + id="tspan32">sink media</tspan> <tspan - x="8.53836" - y="173.914" - id="tspan34" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">bus format</tspan> + x="6.938117" + y="172.77448" + id="tspan34">bus format</tspan> </text> <text - style="fill:#8b6914;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="349.774" - y="155" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#8b6914" + x="348.17374" + y="153.86047" id="text36"> <tspan - x="349.774" - y="155" - id="tspan38" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">source media</tspan> + x="348.17374" + y="153.86047" + id="tspan38">source media</tspan> <tspan - x="349.774" - y="171" - id="tspan40" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">bus format</tspan> + x="348.17374" + y="169.86047" + id="tspan40">bus format</tspan> </text> <g id="g42" - style=""> + transform="translate(-1.6002426,-1.1395339)"> <rect style="fill:#ffffff" - x="350.488" + x="350.48801" y="190.834" - width="93.2863" + width="93.286301" height="75.166" id="rect44" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#8b6914" - x="350.488" + style="fill:none;fill-opacity:0;stroke:#8b6914;stroke-width:2" + x="350.48801" y="190.834" - width="93.2863" + width="93.286301" height="75.166" id="rect46" /> </g> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="350.488" - y1="266" - x2="63.5" - y2="288" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="348.88776" + y1="264.86047" + x2="61.899757" + y2="286.86047" id="line48" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="350.488" - y1="190.834" - x2="63.5" - y2="211" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="348.88776" + y1="189.69447" + x2="61.899757" + y2="209.86047" id="line50" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="443.774" - y1="266" - x2="157.5" - y2="288" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="442.17374" + y1="264.86047" + x2="155.89977" + y2="286.86047" id="line52" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="443.774" - y1="190.834" - x2="157.5" - y2="211" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="442.17374" + y1="189.69447" + x2="155.89977" + y2="209.86047" id="line54" /> <g id="g56" - style=""> - <ellipse + transform="translate(-1.6002426,-1.1395339)"> + <circle style="fill:#ffffff" - cx="473.1" - cy="219.984" - rx="8.5" - ry="8.5" - id="ellipse58" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="473.1" - cy="219.984" - rx="8.5" - ry="8.5" - id="ellipse60" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="473.1" - cy="219.984" - rx="8.5" - ry="8.5" - id="ellipse62" /> + cx="473.10001" + cy="219.98399" + id="ellipse58" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="473.10001" + cy="219.98399" + id="ellipse60" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="473.10001" + cy="219.98399" + id="ellipse62" + r="8.5" /> </g> <g id="g64" - style=""> + transform="translate(-1.6002426,-1.1395339)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - x1="481.6" - y1="219.984" - x2="637.934" - y2="220.012" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + x1="481.60001" + y1="219.98399" + x2="637.93402" + y2="220.01199" id="line66" /> <polygon style="fill:#000000" - points="645.434,220.014 635.433,225.012 637.934,220.012 635.435,215.012 " + points="635.435,215.012 645.434,220.014 635.433,225.012 637.934,220.012 " id="polygon68" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - points="645.434,220.014 635.433,225.012 637.934,220.012 635.435,215.012 " + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + points="635.435,215.012 645.434,220.014 635.433,225.012 637.934,220.012 " id="polygon70" /> </g> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="506.908" - y="209.8" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="505.30774" + y="208.66048" id="text72"> <tspan - x="506.908" - y="209.8" - id="tspan74" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">pad 1 (source)</tspan> + x="505.30774" + y="208.66048" + id="tspan74">pad 1 (source)</tspan> </text> <g id="g76" - style=""> - <ellipse + transform="translate(-1.6002426,-1.1395339)"> + <circle style="fill:#ffffff" - cx="-20.3982" - cy="241.512" - rx="8.5" - ry="8.5" - id="ellipse78" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="-20.3982" - cy="241.512" - rx="8.5" - ry="8.5" - id="ellipse80" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="-20.3982" - cy="241.512" - rx="8.5" - ry="8.5" - id="ellipse82" /> + cx="-20.398199" + cy="241.51199" + id="ellipse78" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="-20.398199" + cy="241.51199" + id="ellipse80" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="-20.398199" + cy="241.51199" + id="ellipse82" + r="8.5" /> </g> <g id="g84" - style=""> + transform="translate(-1.6002426,-1.1395339)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - x1="-192.398" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + x1="-192.39799" y1="241.8" x2="-38.6343" - y2="241.529" + y2="241.52901" id="line86" /> <polygon style="fill:#000000" - points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 " + points="-41.1431,236.534 -31.1343,241.516 -41.1254,246.534 -38.6343,241.529 " id="polygon88" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 " + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + points="-41.1431,236.534 -31.1343,241.516 -41.1254,246.534 -38.6343,241.529 " id="polygon90" /> </g> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="-147.858" - y="229.8" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="-149.45824" + y="228.66048" id="text92"> <tspan - x="-147.858" - y="229.8" - id="tspan94" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">pad 0 (sink)</tspan> + x="-149.45824" + y="228.66048" + id="tspan94">pad 0 (sink)</tspan> </text> </svg> diff --git a/Documentation/media/uapi/v4l/subdev-image-processing-full.svg b/Documentation/media/uapi/v4l/subdev-image-processing-full.svg index c82291a4493e..91cf51832c12 100644 --- a/Documentation/media/uapi/v4l/subdev-image-processing-full.svg +++ b/Documentation/media/uapi/v4l/subdev-image-processing-full.svg @@ -7,9 +7,9 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="59cm" - height="18cm" - viewBox="-186 71 1178 346" + width="58.825298cm" + height="17.279287cm" + viewBox="-186 71 1174.5119 332.1463" id="svg2" version="1.1" inkscape:version="0.91 r13725" @@ -22,6 +22,7 @@ <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> </cc:Work> </rdf:RDF> </metadata> @@ -40,151 +41,147 @@ inkscape:window-height="997" id="namedview256" showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" inkscape:zoom="0.26595857" - inkscape:cx="1052.7956" - inkscape:cy="318.89764" + inkscape:cx="1050.1367" + inkscape:cy="307.01645" inkscape:window-x="1920" inkscape:window-y="30" inkscape:window-maximized="1" inkscape:current-layer="svg2" /> <g id="g4" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <rect style="fill:#ffffff" - x="318.9" + x="318.89999" y="129" - width="208.1" + width="208.10001" height="249" id="rect6" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#ff765a" - x="318.9" + style="fill:none;fill-opacity:0;stroke:#ff765a;stroke-width:2" + x="318.89999" y="129" - width="208.1" + width="208.10001" height="249" id="rect8" /> </g> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - x="-2" - y="73" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + x="-3.4982376" + y="65.305092" width="806" height="343" id="rect10" /> <g id="g12" - style=""> - <ellipse + transform="translate(-1.4982376,-7.6949076)"> + <circle style="fill:#ffffff" cx="-12.5" - cy="166.712" - rx="8.5" - ry="8.5" - id="ellipse14" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" + cy="166.71201" + id="ellipse14" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" cx="-12.5" - cy="166.712" - rx="8.5" - ry="8.5" - id="ellipse16" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" + cy="166.71201" + id="ellipse16" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" cx="-12.5" - cy="166.712" - rx="8.5" - ry="8.5" - id="ellipse18" /> + cy="166.71201" + id="ellipse18" + r="8.5" /> </g> <g id="g20" - style=""> - <ellipse + transform="translate(-1.4982376,-7.6949076)"> + <circle style="fill:#ffffff" - cx="815.232" - cy="205.184" - rx="8.5" - ry="8.5" - id="ellipse22" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="815.232" - cy="205.184" - rx="8.5" - ry="8.5" - id="ellipse24" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="815.232" - cy="205.184" - rx="8.5" - ry="8.5" - id="ellipse26" /> + cx="815.23199" + cy="205.18401" + id="ellipse22" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="815.23199" + cy="205.18401" + id="ellipse24" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="815.23199" + cy="205.18401" + id="ellipse26" + r="8.5" /> </g> <g id="g28" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" x1="-184.5" y1="167" - x2="-30.7361" + x2="-30.736099" y2="166.729" id="line30" /> <polygon style="fill:#000000" - points="-23.2361,166.716 -33.2272,171.734 -30.7361,166.729 -33.2449,161.734 " + points="-33.2449,161.734 -23.2361,166.716 -33.2272,171.734 -30.7361,166.729 " id="polygon32" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - points="-23.2361,166.716 -33.2272,171.734 -30.7361,166.729 -33.2449,161.734 " + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + points="-33.2449,161.734 -23.2361,166.716 -33.2272,171.734 -30.7361,166.729 " id="polygon34" /> </g> <g id="g36" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - x1="823.732" - y1="205.184" - x2="980.066" - y2="205.212" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + x1="823.73199" + y1="205.18401" + x2="980.06598" + y2="205.21201" id="line38" /> <polygon style="fill:#000000" - points="987.566,205.214 977.565,210.212 980.066,205.212 977.567,200.212 " + points="977.567,200.212 987.566,205.214 977.565,210.212 980.066,205.212 " id="polygon40" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - points="987.566,205.214 977.565,210.212 980.066,205.212 977.567,200.212 " + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + points="977.567,200.212 987.566,205.214 977.565,210.212 980.066,205.212 " id="polygon42" /> </g> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="-139.96" - y="155" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="-141.45824" + y="147.3051" id="text44"> <tspan - x="-139.96" - y="155" - id="tspan46" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">pad 0 (sink)</tspan> + x="-141.45824" + y="147.3051" + id="tspan46">pad 0 (sink)</tspan> </text> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="849.04" - y="195" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="847.54175" + y="187.3051" id="text48"> <tspan - x="849.04" - y="195" - id="tspan50" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">pad 2 (source)</tspan> + x="847.54175" + y="187.3051" + id="tspan50">pad 2 (source)</tspan> </text> <g id="g52" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <rect style="fill:#ffffff" x="5.5" @@ -193,7 +190,7 @@ height="104" id="rect54" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a52a2a" + style="fill:none;fill-opacity:0;stroke:#a52a2a;stroke-width:2" x="5.5" y="120" width="159" @@ -202,7 +199,7 @@ </g> <g id="g58" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <rect style="fill:#ffffff" x="62.5" @@ -211,7 +208,7 @@ height="77" id="rect60" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#0000ff" + style="fill:none;fill-opacity:0;stroke:#0000ff;stroke-width:2" x="62.5" y="136" width="94" @@ -219,551 +216,527 @@ id="rect62" /> </g> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="30.5" - y="89" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="29.001762" + y="81.305092" id="text64"> <tspan - x="30.5" - y="89" - id="tspan66" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;" /> + x="29.001762" + y="81.305092" + id="tspan66" /> </text> <text - style="fill:#a52a2a;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="9.53836" - y="88.9138" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#a52a2a" + x="8.040122" + y="81.218895" id="text68"> <tspan - x="9.53836" - y="88.9138" - id="tspan70" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">sink media</tspan> + x="8.040122" + y="81.218895" + id="tspan70">sink media</tspan> <tspan - x="9.53836" - y="104.914" - id="tspan72" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">bus format</tspan> + x="8.040122" + y="97.219093" + id="tspan72">bus format</tspan> </text> <g id="g74" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <rect style="fill:#ffffff" - x="333.644" - y="185.65" + x="333.64401" + y="185.64999" width="165.2" height="172.478" id="rect76" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#00ff00" - x="333.644" - y="185.65" + style="fill:none;fill-opacity:0;stroke:#00ff00;stroke-width:2" + x="333.64401" + y="185.64999" width="165.2" height="172.478" id="rect78" /> </g> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="333.644" - y1="358.128" - x2="62.5" - y2="213" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="332.14578" + y1="350.43307" + x2="61.001762" + y2="205.3051" id="line80" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="333.644" - y1="185.65" - x2="62.5" - y2="136" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="332.14578" + y1="177.95509" + x2="61.001762" + y2="128.3051" id="line82" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="498.844" - y1="358.128" - x2="156.5" - y2="213" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="497.34576" + y1="350.43307" + x2="155.00177" + y2="205.3051" id="line84" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="498.844" - y1="185.65" - x2="156.5" - y2="136" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="497.34576" + y1="177.95509" + x2="155.00177" + y2="128.3051" id="line86" /> <text - style="fill:#00ff00;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="334.704" - y="149.442" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#00ff00" + x="333.20578" + y="141.7471" id="text88"> <tspan - x="334.704" - y="149.442" - id="tspan90" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">sink compose</tspan> + x="333.20578" + y="141.7471" + id="tspan90">sink compose</tspan> <tspan - x="334.704" - y="165.442" - id="tspan92" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">selection (scaling)</tspan> + x="333.20578" + y="157.7471" + id="tspan92">selection (scaling)</tspan> </text> <g id="g94" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <rect style="fill:#ffffff" - x="409.322" + x="409.32199" y="194.565" width="100.186" - height="71.4523" + height="71.452301" id="rect96" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" - x="409.322" + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" + x="409.32199" y="194.565" width="100.186" - height="71.4523" + height="71.452301" id="rect98" /> </g> <text - style="fill:#8b6914;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="689.5" - y="105.128" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#8b6914" + x="688.00177" + y="97.43309" id="text100"> <tspan - x="689.5" - y="105.128" - id="tspan102" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">source media</tspan> + x="688.00177" + y="97.43309" + id="tspan102">source media</tspan> <tspan - x="689.5" - y="121.128" - id="tspan104" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">bus format</tspan> + x="688.00177" + y="113.43309" + id="tspan104">bus format</tspan> </text> <g id="g106" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <rect style="fill:#ffffff" - x="688.488" + x="688.48798" y="173.834" width="100.186" - height="71.4523" + height="71.452301" id="rect108" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#8b6914" - x="688.488" + style="fill:none;fill-opacity:0;stroke:#8b6914;stroke-width:2" + x="688.48798" y="173.834" width="100.186" - height="71.4523" + height="71.452301" id="rect110" /> </g> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="688.488" - y1="245.286" - x2="409.322" - y2="266.018" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="686.98975" + y1="237.59109" + x2="407.82376" + y2="258.32309" id="line112" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="688.488" - y1="173.834" - x2="409.322" - y2="194.565" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="686.98975" + y1="166.1391" + x2="407.82376" + y2="186.8701" id="line114" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="788.674" - y1="245.286" - x2="509.508" - y2="266.018" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="787.17578" + y1="237.59109" + x2="508.00977" + y2="258.32309" id="line116" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="788.674" - y1="173.834" - x2="509.508" - y2="194.565" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="787.17578" + y1="166.1391" + x2="508.00977" + y2="186.8701" id="line118" /> <text - style="fill:#ff765a;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="325" - y="103" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#ff765a" + x="323.50177" + y="95.305092" id="text120"> <tspan - x="325" - y="103" - id="tspan122" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">sink compose</tspan> + x="323.50177" + y="95.305092" + id="tspan122">sink compose</tspan> <tspan - x="325" - y="119" - id="tspan124" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">bounds selection</tspan> + x="323.50177" + y="111.30509" + id="tspan124">bounds selection</tspan> </text> <g id="g126" - style=""> - <ellipse + transform="translate(-1.4982376,-7.6949076)"> + <circle style="fill:#ffffff" cx="-12.0982" - cy="341.512" - rx="8.5" - ry="8.5" - id="ellipse128" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" + cy="341.51199" + id="ellipse128" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" cx="-12.0982" - cy="341.512" - rx="8.5" - ry="8.5" - id="ellipse130" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" + cy="341.51199" + id="ellipse130" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" cx="-12.0982" - cy="341.512" - rx="8.5" - ry="8.5" - id="ellipse132" /> + cy="341.51199" + id="ellipse132" + r="8.5" /> </g> <g id="g134" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - x1="-184.098" - y1="341.8" - x2="-30.3343" - y2="341.529" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + x1="-184.09801" + y1="341.79999" + x2="-30.334299" + y2="341.52899" id="line136" /> <polygon style="fill:#000000" - points="-22.8343,341.516 -32.8254,346.534 -30.3343,341.529 -32.8431,336.534 " + points="-32.8431,336.534 -22.8343,341.516 -32.8254,346.534 -30.3343,341.529 " id="polygon138" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - points="-22.8343,341.516 -32.8254,346.534 -30.3343,341.529 -32.8431,336.534 " + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + points="-32.8431,336.534 -22.8343,341.516 -32.8254,346.534 -30.3343,341.529 " id="polygon140" /> </g> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="-139" - y="329" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="-140.49823" + y="321.30508" id="text142"> <tspan - x="-139" - y="329" - id="tspan144" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">pad 1 (sink)</tspan> + x="-140.49823" + y="321.30508" + id="tspan144">pad 1 (sink)</tspan> </text> <g id="g146" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <rect style="fill:#ffffff" - x="7.80824" - y="292.8" + x="7.8082399" + y="292.79999" width="112.092" - height="82.2" + height="82.199997" id="rect148" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a52a2a" - x="7.80824" - y="292.8" + style="fill:none;fill-opacity:0;stroke:#a52a2a;stroke-width:2" + x="7.8082399" + y="292.79999" width="112.092" - height="82.2" + height="82.199997" id="rect150" /> </g> <g id="g152" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <rect style="fill:#ffffff" - x="52.9" - y="314.8" - width="58.1" - height="50.2" + x="52.900002" + y="314.79999" + width="58.099998" + height="50.200001" id="rect154" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#0000ff" - x="52.9" - y="314.8" - width="58.1" - height="50.2" + style="fill:none;fill-opacity:0;stroke:#0000ff;stroke-width:2" + x="52.900002" + y="314.79999" + width="58.099998" + height="50.200001" id="rect156" /> </g> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="31.9" - y="259.8" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="30.401762" + y="252.10509" id="text158"> <tspan - x="31.9" - y="259.8" - id="tspan160" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;" /> + x="30.401762" + y="252.10509" + id="tspan160" /> </text> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="358.9" - y1="251.9" - x2="52.9" - y2="314.8" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="357.40176" + y1="244.20509" + x2="51.401764" + y2="307.10507" id="line162" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="358.9" - y1="316" - x2="52.9" - y2="365" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="357.40176" + y1="308.30508" + x2="51.401764" + y2="357.30508" id="line164" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="434" - y1="316" - x2="111" - y2="365" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="432.50177" + y1="308.30508" + x2="109.50176" + y2="357.30508" id="line166" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="434" - y1="251.9" - x2="111" - y2="314.8" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="432.50177" + y1="244.20509" + x2="109.50176" + y2="307.10507" id="line168" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#00ff00" - x="358.9" - y="251.9" - width="75.1" - height="64.1" + style="fill:none;fill-opacity:0;stroke:#00ff00;stroke-width:2" + x="357.40176" + y="244.20509" + width="75.099998" + height="64.099998" id="rect170" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" - x="443.262" - y="284.466" - width="64.738" + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" + x="441.76376" + y="276.77109" + width="64.737999" height="48.534" id="rect172" /> <g id="g174" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <rect style="fill:#ffffff" - x="693.428" - y="324.734" - width="63.572" - height="49.266" + x="693.42798" + y="324.73401" + width="63.571999" + height="49.265999" id="rect176" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#8b6914" - x="693.428" - y="324.734" - width="63.572" - height="49.266" + style="fill:none;fill-opacity:0;stroke:#8b6914;stroke-width:2" + x="693.42798" + y="324.73401" + width="63.571999" + height="49.265999" id="rect178" /> </g> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="693.428" - y1="374" - x2="443.262" - y2="333" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="691.92975" + y1="366.30508" + x2="441.76376" + y2="325.30508" id="line180" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="693.428" - y1="324.734" - x2="443.262" - y2="284.466" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="691.92975" + y1="317.03909" + x2="441.76376" + y2="276.77109" id="line182" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="757" - y1="374" - x2="508" - y2="333" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="755.50177" + y1="366.30508" + x2="506.50177" + y2="325.30508" id="line184" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="757" - y1="324.734" - x2="508" - y2="284.466" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="755.50177" + y1="317.03909" + x2="506.50177" + y2="276.77109" id="line186" /> <g id="g188" - style=""> - <ellipse + transform="translate(-1.4982376,-7.6949076)"> + <circle style="fill:#ffffff" cx="815.44" - cy="343.984" - rx="8.5" - ry="8.5" - id="ellipse190" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" + cy="343.98401" + id="ellipse190" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" cx="815.44" - cy="343.984" - rx="8.5" - ry="8.5" - id="ellipse192" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" + cy="343.98401" + id="ellipse192" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" cx="815.44" - cy="343.984" - rx="8.5" - ry="8.5" - id="ellipse194" /> + cy="343.98401" + id="ellipse194" + r="8.5" /> </g> <g id="g196" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" x1="823.94" - y1="343.984" - x2="980.274" - y2="344.012" + y1="343.98401" + x2="980.27399" + y2="344.01199" id="line198" /> <polygon style="fill:#000000" - points="987.774,344.014 977.773,349.012 980.274,344.012 977.775,339.012 " + points="977.775,339.012 987.774,344.014 977.773,349.012 980.274,344.012 " id="polygon200" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - points="987.774,344.014 977.773,349.012 980.274,344.012 977.775,339.012 " + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + points="977.775,339.012 987.774,344.014 977.773,349.012 980.274,344.012 " id="polygon202" /> </g> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="849.248" - y="333.8" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="847.74976" + y="326.10507" id="text204"> <tspan - x="849.248" - y="333.8" - id="tspan206" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">pad 3 (source)</tspan> + x="847.74976" + y="326.10507" + id="tspan206">pad 3 (source)</tspan> </text> <text - style="fill:#0000ff;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="197" - y="91" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#0000ff" + x="195.50177" + y="83.305092" id="text208"> <tspan - x="197" - y="91" - id="tspan210" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">sink</tspan> + x="195.50177" + y="83.305092" + id="tspan210">sink</tspan> <tspan - x="197" - y="107" - id="tspan212" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">crop</tspan> + x="195.50177" + y="99.305092" + id="tspan212">crop</tspan> <tspan - x="197" - y="123" - id="tspan214" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">selection</tspan> + x="195.50177" + y="115.30509" + id="tspan214">selection</tspan> </text> <text - style="fill:#a020f0;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="553" - y="95" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#a020f0" + x="551.50177" + y="87.305092" id="text216"> <tspan - x="553" - y="95" - id="tspan218" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">source</tspan> + x="551.50177" + y="87.305092" + id="tspan218">source</tspan> <tspan - x="553" - y="111" - id="tspan220" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">crop</tspan> + x="551.50177" + y="103.30509" + id="tspan220">crop</tspan> <tspan - x="553" - y="127" - id="tspan222" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">selection</tspan> + x="551.50177" + y="119.30509" + id="tspan222">selection</tspan> </text> <g id="g224" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#0000ff" + style="fill:none;fill-opacity:0;stroke:#0000ff;stroke-width:2" x1="211" y1="132" - x2="166.21" + x2="166.21001" y2="135.287" id="line226" /> <polygon style="fill:#0000ff" - points="158.73,135.836 168.337,130.118 166.21,135.287 169.069,140.091 " + points="169.069,140.091 158.73,135.836 168.337,130.118 166.21,135.287 " id="polygon228" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#0000ff" - points="158.73,135.836 168.337,130.118 166.21,135.287 169.069,140.091 " + style="fill:none;fill-opacity:0;stroke:#0000ff;stroke-width:2" + points="169.069,140.091 158.73,135.836 168.337,130.118 166.21,135.287 " id="polygon230" /> </g> <g id="g232" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#0000ff" + style="fill:none;fill-opacity:0;stroke:#0000ff;stroke-width:2" x1="209" y1="131" x2="115.581" - y2="306.209" + y2="306.20901" id="line234" /> <polygon style="fill:#0000ff" - points="112.052,312.827 112.345,301.65 115.581,306.209 121.169,306.355 " + points="121.169,306.355 112.052,312.827 112.345,301.65 115.581,306.209 " id="polygon236" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#0000ff" - points="112.052,312.827 112.345,301.65 115.581,306.209 121.169,306.355 " + style="fill:none;fill-opacity:0;stroke:#0000ff;stroke-width:2" + points="121.169,306.355 112.052,312.827 112.345,301.65 115.581,306.209 " id="polygon238" /> </g> <g id="g240" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" x1="550.492" y1="133.214" - x2="514.916" - y2="186.469" + x2="514.91602" + y2="186.46899" id="line242" /> <polygon style="fill:#a020f0" - points="510.75,192.706 512.147,181.613 514.916,186.469 520.463,187.168 " + points="520.463,187.168 510.75,192.706 512.147,181.613 514.916,186.469 " id="polygon244" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" - points="510.75,192.706 512.147,181.613 514.916,186.469 520.463,187.168 " + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" + points="520.463,187.168 510.75,192.706 512.147,181.613 514.916,186.469 " id="polygon246" /> </g> <g id="g248" - style=""> + transform="translate(-1.4982376,-7.6949076)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" - x1="550.072" + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" + x1="550.07202" y1="133.787" - x2="510.618" - y2="275.089" + x2="510.61801" + y2="275.08899" id="line250" /> <polygon style="fill:#a020f0" - points="508.601,282.312 506.475,271.336 510.618,275.089 516.106,274.025 " + points="516.106,274.025 508.601,282.312 506.475,271.336 510.618,275.089 " id="polygon252" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" - points="508.601,282.312 506.475,271.336 510.618,275.089 516.106,274.025 " + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" + points="516.106,274.025 508.601,282.312 506.475,271.336 510.618,275.089 " id="polygon254" /> </g> </svg> diff --git a/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg b/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg index e7b3786f8a9b..cedcbf598923 100644 --- a/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg +++ b/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg @@ -7,9 +7,9 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="59cm" - height="17cm" - viewBox="-194 128 1179 330" + width="58.803326cm" + height="16.463955cm" + viewBox="-194 128 1175.0698 319.59442" id="svg2" version="1.1" inkscape:version="0.91 r13725" @@ -22,6 +22,7 @@ <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> </cc:Work> </rdf:RDF> </metadata> @@ -40,23 +41,27 @@ inkscape:window-height="997" id="namedview182" showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" inkscape:zoom="0.26595857" - inkscape:cx="1052.7956" - inkscape:cy="301.1811" + inkscape:cx="1049.9581" + inkscape:cy="292.5708" inkscape:window-x="1920" inkscape:window-y="30" inkscape:window-maximized="1" inkscape:current-layer="svg2" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - x="-8" - y="130" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + x="-9.6002426" + y="124.14409" width="806" height="327" id="rect4" /> <g id="g6" - style=""> + transform="translate(-1.6002426,-5.8559115)"> <rect style="fill:#ffffff" x="4.5" @@ -65,7 +70,7 @@ height="104" id="rect8" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a52a2a" + style="fill:none;fill-opacity:0;stroke:#a52a2a;stroke-width:2" x="4.5" y="189" width="159" @@ -74,7 +79,7 @@ </g> <g id="g12" - style=""> + transform="translate(-1.6002426,-5.8559115)"> <rect style="fill:#ffffff" x="49.5" @@ -83,7 +88,7 @@ height="77" id="rect14" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#0000ff" + style="fill:none;fill-opacity:0;stroke:#0000ff;stroke-width:2" x="49.5" y="204" width="94" @@ -91,470 +96,445 @@ id="rect16" /> </g> <text - style="fill:#0000ff;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="60" - y="224" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#0000ff" + x="58.399757" + y="218.14409" id="text18"> <tspan - x="60" - y="224" - id="tspan20" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">sink</tspan> + x="58.399757" + y="218.14409" + id="tspan20">sink</tspan> <tspan - x="60" - y="240" - id="tspan22" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">crop</tspan> + x="58.399757" + y="234.14409" + id="tspan22">crop</tspan> <tspan - x="60" - y="256" - id="tspan24" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">selection</tspan> + x="58.399757" + y="250.14409" + id="tspan24">selection</tspan> </text> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="29.5" - y="158" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="27.899757" + y="152.14409" id="text26"> <tspan - x="29.5" - y="158" - id="tspan28" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;" /> + x="27.899757" + y="152.14409" + id="tspan28" /> </text> <text - style="fill:#a52a2a;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="8.53836" - y="157.914" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#a52a2a" + x="6.938117" + y="152.05809" id="text30"> <tspan - x="8.53836" - y="157.914" - id="tspan32" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">sink media</tspan> + x="6.938117" + y="152.05809" + id="tspan32">sink media</tspan> <tspan - x="8.53836" - y="173.914" - id="tspan34" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">bus format</tspan> + x="6.938117" + y="168.05809" + id="tspan34">bus format</tspan> </text> <g id="g36" - style=""> + transform="translate(-1.6002426,-5.8559115)"> <rect style="fill:#ffffff" - x="333.644" - y="185.65" + x="333.64401" + y="185.64999" width="165.2" height="172.478" id="rect38" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#00ff00" - x="333.644" - y="185.65" + style="fill:none;fill-opacity:0;stroke:#00ff00;stroke-width:2" + x="333.64401" + y="185.64999" width="165.2" height="172.478" id="rect40" /> </g> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="333.644" - y1="358.128" - x2="49.5" - y2="281" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="332.04376" + y1="352.27206" + x2="47.899757" + y2="275.14407" id="line42" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="333.644" - y1="185.65" - x2="49.5" - y2="204" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="332.04376" + y1="179.79408" + x2="47.899757" + y2="198.14409" id="line44" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="498.844" - y1="358.128" - x2="143.5" - y2="281" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="497.24374" + y1="352.27206" + x2="141.89977" + y2="275.14407" id="line46" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="498.844" - y1="185.65" - x2="143.5" - y2="204" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="497.24374" + y1="179.79408" + x2="141.89977" + y2="198.14409" id="line48" /> <text - style="fill:#00ff00;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="334.704" - y="149.442" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#00ff00" + x="333.10376" + y="143.58609" id="text50"> <tspan - x="334.704" - y="149.442" - id="tspan52" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">sink compose</tspan> + x="333.10376" + y="143.58609" + id="tspan52">sink compose</tspan> <tspan - x="334.704" - y="165.442" - id="tspan54" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">selection (scaling)</tspan> + x="333.10376" + y="159.58609" + id="tspan54">selection (scaling)</tspan> </text> <g id="g56" - style=""> + transform="translate(-1.6002426,-5.8559115)"> <rect style="fill:#ffffff" - x="382.322" + x="382.32199" y="199.565" width="100.186" - height="71.4523" + height="71.452301" id="rect58" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" - x="382.322" + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" + x="382.32199" y="199.565" width="100.186" - height="71.4523" + height="71.452301" id="rect60" /> </g> <text - style="fill:#a020f0;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="543.322" - y="149.442" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#a020f0" + x="541.7218" + y="143.58609" id="text62"> <tspan - x="543.322" - y="149.442" - id="tspan64" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">source</tspan> + x="541.7218" + y="143.58609" + id="tspan64">source</tspan> <tspan - x="543.322" - y="165.442" - id="tspan66" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">crop</tspan> + x="541.7218" + y="159.58609" + id="tspan66">crop</tspan> <tspan - x="543.322" - y="181.442" - id="tspan68" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">selection</tspan> + x="541.7218" + y="175.58609" + id="tspan68">selection</tspan> </text> <text - style="fill:#8b6914;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="691.5" - y="157.128" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#8b6914" + x="689.89978" + y="151.27209" id="text70"> <tspan - x="691.5" - y="157.128" - id="tspan72" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">source media</tspan> + x="689.89978" + y="151.27209" + id="tspan72">source media</tspan> <tspan - x="691.5" - y="173.128" - id="tspan74" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">bus format</tspan> + x="689.89978" + y="167.27209" + id="tspan74">bus format</tspan> </text> <g id="g76" - style=""> + transform="translate(-1.6002426,-5.8559115)"> <rect style="fill:#ffffff" - x="690.488" + x="690.48798" y="225.834" width="100.186" - height="71.4523" + height="71.452301" id="rect78" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#8b6914" - x="690.488" + style="fill:none;fill-opacity:0;stroke:#8b6914;stroke-width:2" + x="690.48798" y="225.834" width="100.186" - height="71.4523" + height="71.452301" id="rect80" /> </g> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="690.488" - y1="297.286" - x2="382.322" - y2="271.018" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="688.88776" + y1="291.43008" + x2="380.72174" + y2="265.16208" id="line82" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="690.488" - y1="225.834" - x2="382.322" - y2="199.565" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="688.88776" + y1="219.97809" + x2="380.72174" + y2="193.70909" id="line84" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="790.674" - y1="297.286" - x2="482.508" - y2="271.018" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="789.07379" + y1="291.43008" + x2="480.90775" + y2="265.16208" id="line86" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="790.674" - y1="225.834" - x2="482.508" - y2="199.565" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="789.07379" + y1="219.97809" + x2="480.90775" + y2="193.70909" id="line88" /> <g id="g90" - style=""> - <ellipse + transform="translate(-1.6002426,-5.8559115)"> + <circle style="fill:#ffffff" - cx="808.1" - cy="249.984" - rx="8.5" - ry="8.5" - id="ellipse92" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="808.1" - cy="249.984" - rx="8.5" - ry="8.5" - id="ellipse94" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="808.1" - cy="249.984" - rx="8.5" - ry="8.5" - id="ellipse96" /> + cx="808.09998" + cy="249.98399" + id="ellipse92" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="808.09998" + cy="249.98399" + id="ellipse94" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="808.09998" + cy="249.98399" + id="ellipse96" + r="8.5" /> </g> <g id="g98" - style=""> + transform="translate(-1.6002426,-5.8559115)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - x1="816.6" - y1="249.984" - x2="972.934" - y2="250.012" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + x1="816.59998" + y1="249.98399" + x2="972.93402" + y2="250.01199" id="line100" /> <polygon style="fill:#000000" - points="980.434,250.014 970.433,255.012 972.934,250.012 970.435,245.012 " + points="970.435,245.012 980.434,250.014 970.433,255.012 972.934,250.012 " id="polygon102" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - points="980.434,250.014 970.433,255.012 972.934,250.012 970.435,245.012 " + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + points="970.435,245.012 980.434,250.014 970.433,255.012 972.934,250.012 " id="polygon104" /> </g> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="841.908" - y="239.8" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="840.3078" + y="233.94409" id="text106"> <tspan - x="841.908" - y="239.8" - id="tspan108" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">pad 1 (source)</tspan> + x="840.3078" + y="233.94409" + id="tspan108">pad 1 (source)</tspan> </text> <g id="g110" - style=""> - <ellipse + transform="translate(-1.6002426,-5.8559115)"> + <circle style="fill:#ffffff" - cx="-20.3982" - cy="241.512" - rx="8.5" - ry="8.5" - id="ellipse112" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="-20.3982" - cy="241.512" - rx="8.5" - ry="8.5" - id="ellipse114" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="-20.3982" - cy="241.512" - rx="8.5" - ry="8.5" - id="ellipse116" /> + cx="-20.398199" + cy="241.51199" + id="ellipse112" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="-20.398199" + cy="241.51199" + id="ellipse114" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="-20.398199" + cy="241.51199" + id="ellipse116" + r="8.5" /> </g> <g id="g118" - style=""> + transform="translate(-1.6002426,-5.8559115)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - x1="-192.398" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + x1="-192.39799" y1="241.8" x2="-38.6343" - y2="241.529" + y2="241.52901" id="line120" /> <polygon style="fill:#000000" - points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 " + points="-41.1431,236.534 -31.1343,241.516 -41.1254,246.534 -38.6343,241.529 " id="polygon122" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 " + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + points="-41.1431,236.534 -31.1343,241.516 -41.1254,246.534 -38.6343,241.529 " id="polygon124" /> </g> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="-147.858" - y="229.8" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="-149.45824" + y="223.94409" id="text126"> <tspan - x="-147.858" - y="229.8" - id="tspan128" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">pad 0 (sink)</tspan> + x="-149.45824" + y="223.94409" + id="tspan128">pad 0 (sink)</tspan> </text> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" - x="389.822" - y="276.666" + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" + x="388.22174" + y="270.81006" width="100.186" - height="71.4523" + height="71.452301" id="rect130" /> <g id="g132" - style=""> + transform="translate(-1.6002426,-5.8559115)"> <rect style="fill:#ffffff" - x="689.988" - y="345.934" + x="689.98798" + y="345.93399" width="100.186" - height="71.4523" + height="71.452301" id="rect134" /> <rect - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#8b6914" - x="689.988" - y="345.934" + style="fill:none;fill-opacity:0;stroke:#8b6914;stroke-width:2" + x="689.98798" + y="345.93399" width="100.186" - height="71.4523" + height="71.452301" id="rect136" /> </g> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="689.988" - y1="417.386" - x2="389.822" - y2="348.118" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="688.38776" + y1="411.53006" + x2="388.22174" + y2="342.26208" id="line138" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="689.988" - y1="345.934" - x2="389.822" - y2="276.666" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="688.38776" + y1="340.07806" + x2="388.22174" + y2="270.81006" id="line140" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="790.174" - y1="417.386" - x2="490.008" - y2="348.118" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="788.57379" + y1="411.53006" + x2="488.40775" + y2="342.26208" id="line142" /> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke-dasharray:4;stroke:#e60505" - x1="790.174" - y1="345.934" - x2="490.008" - y2="276.666" + style="fill:none;fill-opacity:0;stroke:#e60505;stroke-width:2;stroke-dasharray:4" + x1="788.57379" + y1="340.07806" + x2="488.40775" + y2="270.81006" id="line144" /> <g id="g146" - style=""> - <ellipse + transform="translate(-1.6002426,-5.8559115)"> + <circle style="fill:#ffffff" - cx="805.6" - cy="384.084" - rx="8.5" - ry="8.5" - id="ellipse148" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="805.6" - cy="384.084" - rx="8.5" - ry="8.5" - id="ellipse150" /> - <ellipse - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - cx="805.6" - cy="384.084" - rx="8.5" - ry="8.5" - id="ellipse152" /> + cx="805.59998" + cy="384.08401" + id="ellipse148" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="805.59998" + cy="384.08401" + id="ellipse150" + r="8.5" /> + <circle + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + cx="805.59998" + cy="384.08401" + id="ellipse152" + r="8.5" /> </g> <g id="g154" - style=""> + transform="translate(-1.6002426,-5.8559115)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - x1="814.1" - y1="384.084" - x2="970.434" + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + x1="814.09998" + y1="384.08401" + x2="970.43402" y2="384.112" id="line156" /> <polygon style="fill:#000000" - points="977.934,384.114 967.933,389.112 970.434,384.112 967.935,379.112 " + points="967.935,379.112 977.934,384.114 967.933,389.112 970.434,384.112 " id="polygon158" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#000000" - points="977.934,384.114 967.933,389.112 970.434,384.112 967.935,379.112 " + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:2" + points="967.935,379.112 977.934,384.114 967.933,389.112 970.434,384.112 " id="polygon160" /> </g> <text - style="fill:#000000;text-anchor:start;font-size:12.8;font-family:sans-serif;font-style:normal;font-weight:normal;-inkscape-font-specification:sans-serif;font-stretch:normal;font-variant:normal;" - x="839.408" - y="373.9" + style="font-style:normal;font-weight:normal;font-size:12.80000019px;font-family:sanserif;text-anchor:start;fill:#000000" + x="837.8078" + y="368.04407" id="text162"> <tspan - x="839.408" - y="373.9" - id="tspan164" - style="-inkscape-font-specification:sans-serif;font-family:sans-serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;">pad 2 (source)</tspan> + x="837.8078" + y="368.04407" + id="tspan164">pad 2 (source)</tspan> </text> <g id="g166" - style=""> + transform="translate(-1.6002426,-5.8559115)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" x1="546" y1="191" - x2="492.157" + x2="492.15701" y2="198.263" id="line168" /> <polygon style="fill:#a020f0" - points="484.724,199.266 493.966,192.974 492.157,198.263 495.303,202.884 " + points="495.303,202.884 484.724,199.266 493.966,192.974 492.157,198.263 " id="polygon170" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" - points="484.724,199.266 493.966,192.974 492.157,198.263 495.303,202.884 " + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" + points="495.303,202.884 484.724,199.266 493.966,192.974 492.157,198.263 " id="polygon172" /> </g> <g id="g174" - style=""> + transform="translate(-1.6002426,-5.8559115)"> <line - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" - x1="546.908" - y1="190.725" + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" + x1="546.90802" + y1="190.72501" x2="495.383" y2="268.548" id="line176" /> <polygon style="fill:#a020f0" - points="491.242,274.802 492.594,263.703 495.383,268.548 500.932,269.224 " + points="500.932,269.224 491.242,274.802 492.594,263.703 495.383,268.548 " id="polygon178" /> <polygon - style="fill:none;fill-opacity:0;stroke-width:2;stroke:#a020f0" - points="491.242,274.802 492.594,263.703 495.383,268.548 500.932,269.224 " + style="fill:none;fill-opacity:0;stroke:#a020f0;stroke-width:2" + points="500.932,269.224 491.242,274.802 492.594,263.703 495.383,268.548 " id="polygon180" /> </g> </svg> diff --git a/Documentation/media/uapi/v4l/v4l2.rst b/Documentation/media/uapi/v4l/v4l2.rst index 55b959dda07e..f52a11c949d3 100644 --- a/Documentation/media/uapi/v4l/v4l2.rst +++ b/Documentation/media/uapi/v4l/v4l2.rst @@ -68,6 +68,10 @@ Authors, in alphabetical order: - SDR API. +- Ribalda, Ricardo + + - Introduce HSV formats and other minor changes. + - Rubli, Martin - Designed and documented the VIDIOC_ENUM_FRAMESIZES and VIDIOC_ENUM_FRAMEINTERVALS ioctls. @@ -89,6 +93,11 @@ part can be used and distributed without restrictions. Revision History **************** +:revision: 4.10 / 2016-07-15 (*rr*) + +Introduce HSV formats. + + :revision: 4.5 / 2015-10-29 (*rr*) Extend VIDIOC_G_EXT_CTRLS;. Replace ctrl_class with a new union with diff --git a/Documentation/media/uapi/v4l/vidioc-g-dv-timings.rst b/Documentation/media/uapi/v4l/vidioc-g-dv-timings.rst index 7dd943ff14cd..aea276502f5e 100644 --- a/Documentation/media/uapi/v4l/vidioc-g-dv-timings.rst +++ b/Documentation/media/uapi/v4l/vidioc-g-dv-timings.rst @@ -270,3 +270,14 @@ EBUSY - Some formats like SMPTE-125M have an interlaced signal with a odd total height. For these formats, if this flag is set, the first field has the extra line. Else, it is the second field. + * - ``V4L2_DV_FL_HAS_PICTURE_ASPECT`` + - If set, then the picture_aspect field is valid. Otherwise assume that + the pixels are square, so the picture aspect ratio is the same as the + width to height ratio. + * - ``V4L2_DV_FL_HAS_CEA861_VIC`` + - If set, then the cea861_vic field is valid and contains the Video + Identification Code as per the CEA-861 standard. + * - ``V4L2_DV_FL_HAS_HDMI_VIC`` + - If set, then the hdmi_vic field is valid and contains the Video + Identification Code as per the HDMI standard (HDMI Vendor Specific + InfoFrame). diff --git a/Documentation/media/uapi/v4l/vidioc-g-tuner.rst b/Documentation/media/uapi/v4l/vidioc-g-tuner.rst index e8aa8cd7065f..57c79fa43866 100644 --- a/Documentation/media/uapi/v4l/vidioc-g-tuner.rst +++ b/Documentation/media/uapi/v4l/vidioc-g-tuner.rst @@ -201,10 +201,10 @@ To change the radio frequency the * - ``V4L2_TUNER_SDR`` - 4 - Tuner controls the A/D and/or D/A block of a - Sofware Digital Radio (SDR) + Software Digital Radio (SDR) * - ``V4L2_TUNER_RF`` - 5 - - Tuner controls the RF part of a Sofware Digital Radio (SDR) + - Tuner controls the RF part of a Software Digital Radio (SDR) .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| |