€•†ŽŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ4/translations/zh_CN/userspace-api/media/v4l/v4l2-isp”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/zh_TW/userspace-api/media/v4l/v4l2-isp”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/it_IT/userspace-api/media/v4l/v4l2-isp”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/ja_JP/userspace-api/media/v4l/v4l2-isp”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/ko_KR/userspace-api/media/v4l/v4l2-isp”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/pt_BR/userspace-api/media/v4l/v4l2-isp”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ4/translations/sp_SP/userspace-api/media/v4l/v4l2-isp”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later”h]”hŒ8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp.rst”h´KubhŒtarget”“”)”}”(hŒ .. _v4l2-isp:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œv4l2-isp”uh1hÈh´Khhh²hh³hÇubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒGeneric V4L2 ISP formats”h]”hŒGeneric V4L2 ISP formats”…””}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒÝGeneric ISP formats are metadata formats that define a mechanism to pass ISP parameters and statistics between userspace and drivers in V4L2 buffers. They are designed to allow extending them in a backward-compatible way.”h]”hŒÝGeneric ISP formats are metadata formats that define a mechanism to pass ISP parameters and statistics between userspace and drivers in V4L2 buffers. They are designed to allow extending them in a backward-compatible way.”…””}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K hhØh²hubh×)”}”(hhh]”(hÜ)”}”(hŒISP parameters”h]”hŒISP parameters”…””}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhûh²hh³hÇh´Kubhì)”}”(hXThe generic ISP configuration parameters format is realized by a defining a single C structure that contains a header, followed by a binary buffer where userspace programs a variable number of ISP configuration data block, one for each supported ISP feature.”h]”hXThe generic ISP configuration parameters format is realized by a defining a single C structure that contains a header, followed by a binary buffer where userspace programs a variable number of ISP configuration data block, one for each supported ISP feature.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khhûh²hubhì)”}”(hXQThe :c:type:`v4l2_isp_params_buffer` structure defines the buffer header which is followed by a binary buffer of ISP configuration data. Userspace shall correctly populate the buffer header with the generic parameters format version and with the size (in bytes) of the binary data buffer where it will store the ISP blocks configuration.”h]”(hŒThe ”…””}”(hjh²hh³Nh´Nubh)”}”(hŒ :c:type:`v4l2_isp_params_buffer`”h]”hŒliteral”“”)”}”(hj$h]”hŒv4l2_isp_params_buffer”…””}”(hj(h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œc”Œc-type”eh"]”h$]”h&]”uh1j&hj"ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ userspace-api/media/v4l/v4l2-isp”Œ refdomain”j3Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰Œ reftarget”Œv4l2_isp_params_buffer”uh1hh³hÇh´KhjubhX- structure defines the buffer header which is followed by a binary buffer of ISP configuration data. Userspace shall correctly populate the buffer header with the generic parameters format version and with the size (in bytes) of the binary data buffer where it will store the ISP blocks configuration.”…””}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khhûh²hubhì)”}”(hŒíEach *ISP configuration block* is preceded by an header implemented by the :c:type:`v4l2_isp_params_block_header` structure, followed by the configuration parameters for that specific block, defined by the ISP driver specific data types.”h]”(hŒEach ”…””}”(hjQh²hh³Nh´NubhŒemphasis”“”)”}”(hŒ*ISP configuration block*”h]”hŒISP configuration block”…””}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjQubhŒ- is preceded by an header implemented by the ”…””}”(hjQh²hh³Nh´Nubh)”}”(hŒ&:c:type:`v4l2_isp_params_block_header`”h]”j')”}”(hjoh]”hŒv4l2_isp_params_block_header”…””}”(hjqh²hh³Nh´Nubah}”(h]”h ]”(j2j3Œc-type”eh"]”h$]”h&]”uh1j&hjmubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j?Œ refdomain”j3Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jEŒv4l2_isp_params_block_header”uh1hh³hÇh´KhjQubhŒ| structure, followed by the configuration parameters for that specific block, defined by the ISP driver specific data types.”…””}”(hjQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khhûh²hubhì)”}”(hŒ”Userspace applications are responsible for correctly populating each block's header fields (type, flags and size) and the block-specific parameters.”h]”hŒ–Userspace applications are responsible for correctly populating each block’s header fields (type, flags and size) and the block-specific parameters.”…””}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K hhûh²hubh×)”}”(hhh]”(hÜ)”}”(hŒ/ISP block enabling, disabling and configuration”h]”hŒ/ISP block enabling, disabling and configuration”…””}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj¤h²hh³hÇh´K$ubhì)”}”(hŒ¾When userspace wants to configure and enable an ISP block it shall fully populate the block configuration and set the V4L2_ISP_PARAMS_FL_BLOCK_ENABLE bit in the block header's `flags` field.”h]”(hŒ²When userspace wants to configure and enable an ISP block it shall fully populate the block configuration and set the V4L2_ISP_PARAMS_FL_BLOCK_ENABLE bit in the block header’s ”…””}”(hjµh²hh³Nh´NubhŒtitle_reference”“”)”}”(hŒ`flags`”h]”hŒflags”…””}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjµubhŒ field.”…””}”(hjµh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K&hj¤h²hubhì)”}”(hŒòWhen userspace simply wants to disable an ISP block the V4L2_ISP_PARAMS_FL_BLOCK_DISABLE bit should be set in block header's `flags` field. Drivers accept a configuration parameters block with no additional data after the header in this case.”h]”(hŒWhen userspace simply wants to disable an ISP block the V4L2_ISP_PARAMS_FL_BLOCK_DISABLE bit should be set in block header’s ”…””}”(hj×h²hh³Nh´Nubj¾)”}”(hŒ`flags`”h]”hŒflags”…””}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj×ubhŒn field. Drivers accept a configuration parameters block with no additional data after the header in this case.”…””}”(hj×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K*hj¤h²hubhì)”}”(hŒüIf the configuration of an already active ISP block has to be updated, userspace shall fully populate the ISP block parameters and omit setting the V4L2_ISP_PARAMS_FL_BLOCK_ENABLE and V4L2_ISP_PARAMS_FL_BLOCK_DISABLE bits in the header's `flags` field.”h]”(hŒðIf the configuration of an already active ISP block has to be updated, userspace shall fully populate the ISP block parameters and omit setting the V4L2_ISP_PARAMS_FL_BLOCK_ENABLE and V4L2_ISP_PARAMS_FL_BLOCK_DISABLE bits in the header’s ”…””}”(hj÷h²hh³Nh´Nubj¾)”}”(hŒ`flags`”h]”hŒflags”…””}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj÷ubhŒ field.”…””}”(hj÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K/hj¤h²hubhì)”}”(hŒ’Setting both the V4L2_ISP_PARAMS_FL_BLOCK_ENABLE and V4L2_ISP_PARAMS_FL_BLOCK_DISABLE bits in the flags field is not allowed and returns an error.”h]”hŒ’Setting both the V4L2_ISP_PARAMS_FL_BLOCK_ENABLE and V4L2_ISP_PARAMS_FL_BLOCK_DISABLE bits in the flags field is not allowed and returns an error.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K4hj¤h²hubhì)”}”(hŒ}Extension to the parameters format can be implemented by adding new blocks definition without invalidating the existing ones.”h]”hŒ}Extension to the parameters format can be implemented by adding new blocks definition without invalidating the existing ones.”…””}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K8hj¤h²hubeh}”(h]”Œ.isp-block-enabling-disabling-and-configuration”ah ]”h"]”Œ/isp block enabling, disabling and configuration”ah$]”h&]”uh1hÖhhûh²hh³hÇh´K$ubeh}”(h]”Œisp-parameters”ah ]”h"]”Œisp parameters”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kubh×)”}”(hhh]”(hÜ)”}”(hŒISP statistics”h]”hŒISP statistics”…””}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjCh²hh³hÇh´KhjCh²hubeh}”(h]”Œisp-statistics”ah ]”h"]”Œisp statistics”ah$]”h&]”uh1hÖhhØh²hh³hÇh´KSize (in bytes) of the parameters block, including this header”h]”hŒ>Size (in bytes) of the parameters block, including this header”…””}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´K4hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j?h³jNh´K3hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j:hjtubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjjh²hh³jŒh´Nubhì)”}”(hŒ**Description**”h]”j%)”}”(hj|h]”hŒ Description”…””}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´K7hjjh²hubhì)”}”(hŒÛThis structure represents the common part of all the ISP configuration blocks. Each parameters block shall embed an instance of this structure type as its first member, followed by the block-specific configuration data.”h]”hŒÛThis structure represents the common part of all the ISP configuration blocks. Each parameters block shall embed an instance of this structure type as its first member, followed by the block-specific configuration data.”…””}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´K4hjjh²hubhì)”}”(hŒ‘The **type** field is an ISP driver-specific value that identifies the block type. The **size** field specifies the size of the parameters block.”h]”(hŒThe ”…””}”(hj¡h²hh³Nh´Nubj%)”}”(hŒ**type**”h]”hŒtype”…””}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj¡ubhŒK field is an ISP driver-specific value that identifies the block type. The ”…””}”(hj¡h²hh³Nh´Nubj%)”}”(hŒ**size**”h]”hŒsize”…””}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj¡ubhŒ2 field specifies the size of the parameters block.”…””}”(hj¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´K8hjjh²hubhì)”}”(hŒ‚The **flags** field is a bitmask of per-block flags V4L2_PARAMS_ISP_FL_* and driver-specific flags specified by the driver header.”h]”(hŒThe ”…””}”(hjÔh²hh³Nh´Nubj%)”}”(hŒ **flags**”h]”hŒflags”…””}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÔubhŒu field is a bitmask of per-block flags V4L2_PARAMS_ISP_FL_* and driver-specific flags specified by the driver header.”…””}”(hjÔh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´K;hjjh²hubj|)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jˆŒ!v4l2_isp_params_buffer (C struct)”Œc.v4l2_isp_params_buffer”hNt”auh1j{hjjh²hh³jŒh´NubjŽ)”}”(hhh]”(j“)”}”(hŒv4l2_isp_params_buffer”h]”j™)”}”(hŒstruct v4l2_isp_params_buffer”h]”(jŸ)”}”(hjh]”hŒstruct”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj h²hh³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´KAubj±)”}”(hŒ ”h]”hŒ ”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j°hj h²hh³jh´KAubjÂ)”}”(hŒv4l2_isp_params_buffer”h]”jÈ)”}”(hjh]”hŒv4l2_isp_params_buffer”…””}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jÓah"]”h$]”h&]”uh1jÇhj*ubah}”(h]”h ]”(jÚjÛeh"]”h$]”h&]”hÅhÆuh1jÁhj h²hh³jh´KAubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjåˆuh1j˜jæjçhjh²hh³jh´KAubah}”(h]”jah ]”(jëjìeh"]”h$]”h&]”jðˆjñ)jòhuh1j’h³jh´KAhjh²hubjô)”}”(hhh]”hì)”}”(hŒ(V4L2 extensible parameters configuration”h]”hŒ(V4L2 extensible parameters configuration”…””}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´KFhjMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jóhjh²hh³jh´KAubeh}”(h]”h ]”(j3Œstruct”eh"]”h$]”h&]”jj3jjhjjhj‰j‰j‰uh1jh²hhjjh³jŒh´Nubj)”}”(hX4**Definition**:: struct v4l2_isp_params_buffer { __u32 version; __u32 data_size; __u8 data[]; }; **Members** ``version`` The parameters buffer version (driver-specific) ``data_size`` The configuration data effective size, excluding this header ``data`` The configuration data”h]”(hì)”}”(hŒ**Definition**::”h]”(j%)”}”(hŒ**Definition**”h]”hŒ Definition”…””}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjpubhŒ:”…””}”(hjph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´KJhjlubj–)”}”(hŒ[struct v4l2_isp_params_buffer { __u32 version; __u32 data_size; __u8 data[]; };”h]”hŒ[struct v4l2_isp_params_buffer { __u32 version; __u32 data_size; __u8 data[]; };”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j•h³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´KLhjlubhì)”}”(hŒ **Members**”h]”j%)”}”(hjžh]”hŒMembers”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´KRhjlubj;)”}”(hhh]”(j@)”}”(hŒ<``version`` The parameters buffer version (driver-specific) ”h]”(jF)”}”(hŒ ``version``”h]”j')”}”(hj½h]”hŒversion”…””}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j&hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jEh³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´KHhj·ubj`)”}”(hhh]”hì)”}”(hŒ/The parameters buffer version (driver-specific)”h]”hŒ/The parameters buffer version (driver-specific)”…””}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÒh´KHhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j?h³jÒh´KHhj´ubj@)”}”(hŒK``data_size`` The configuration data effective size, excluding this header ”h]”(jF)”}”(hŒ ``data_size``”h]”j')”}”(hjöh]”hŒ data_size”…””}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j&hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jEh³Œt/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.h”h´KIhjðubj`)”}”(hhh]”hì)”}”(hŒ