sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget4/translations/zh_CN/userspace-api/media/v4l/v4l2-ispmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget4/translations/zh_TW/userspace-api/media/v4l/v4l2-ispmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget4/translations/it_IT/userspace-api/media/v4l/v4l2-ispmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget4/translations/ja_JP/userspace-api/media/v4l/v4l2-ispmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget4/translations/ko_KR/userspace-api/media/v4l/v4l2-ispmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget4/translations/sp_SP/userspace-api/media/v4l/v4l2-ispmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-laterh]h8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhN/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp.rsthKubhtarget)}(h .. _v4l2-isp:h]h}(h]h ]h"]h$]h&]refidv4l2-ispuh1hhKhhhhhhubhsection)}(hhh](htitle)}(hGeneric V4L2 ISP formatsh]hGeneric V4L2 ISP formats}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hGeneric 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]hGeneric 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.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hhh](h)}(hISP parametersh]hISP parameters}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(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.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(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](hThe }(hjhhhNhNubh)}(h :c:type:`v4l2_isp_params_buffer`h]hliteral)}(hjh]hv4l2_isp_params_buffer}(hjhhhNhNubah}(h]h ](xrefcc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdoc userspace-api/media/v4l/v4l2-isp refdomainjreftypetype refexplicitrefwarn reftargetv4l2_isp_params_bufferuh1hhhhKhjubhX- 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.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hEach *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](hEach }(hj=hhhNhNubhemphasis)}(h*ISP configuration block*h]hISP configuration block}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj=ubh- is preceded by an header implemented by the }(hj=hhhNhNubh)}(h&:c:type:`v4l2_isp_params_block_header`h]j)}(hj[h]hv4l2_isp_params_block_header}(hj]hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]refdocj+ refdomainjreftypetype refexplicitrefwarnj1v4l2_isp_params_block_headeruh1hhhhKhj=ubh| structure, followed by the configuration parameters for that specific block, defined by the ISP driver specific data types.}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hUserspace applications are responsible for correctly populating each block's header fields (type, flags and size) and the block-specific parameters.h]hUserspace applications are responsible for correctly populating each block’s header fields (type, flags and size) and the block-specific parameters.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hhh](h)}(h/ISP block enabling, disabling and configurationh]h/ISP block enabling, disabling and configuration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK$ubh)}(hWhen 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](hWhen 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 }(hjhhhNhNubhtitle_reference)}(h`flags`h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh field.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK&hjhhubh)}(hWhen 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](hWhen userspace simply wants to disable an ISP block the V4L2_ISP_PARAMS_FL_BLOCK_DISABLE bit should be set in block header’s }(hjhhhNhNubj)}(h`flags`h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhn field. Drivers accept a configuration parameters block with no additional data after the header in this case.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK*hjhhubh)}(hIf 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](hIf 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 }(hjhhhNhNubj)}(h`flags`h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh field.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK/hjhhubh)}(hSetting 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]hSetting 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjhhubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjhhubeh}(h].isp-block-enabling-disabling-and-configurationah ]h"]/isp block enabling, disabling and configurationah$]h&]uh1hhhhhhhhK$ubeh}(h]isp-parametersah ]h"]isp parametersah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hISP statisticsh]hISP statistics}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hhhhhKhj/hhubeh}(h]isp-statisticsah ]h"]isp statisticsah$]h&]uh1hhhhhhhhKSize (in bytes) of the parameters block, including this headerh]h>Size (in bytes) of the parameters block, including this header}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhK4hj;ubah}(h]h ]h"]h$]h&]uh1jKhjubeh}(h]h ]h"]h$]h&]uh1j+hj:hK3hjubeh}(h]h ]h"]h$]h&]uh1j&hj`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjVhhhjxhNubh)}(h**Description**h]j)}(hjhh]h Description}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhK7hjVhhubh)}(hThis 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]hThis 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~hhhNhNubah}(h]h ]h"]h$]h&]uh1hht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhK4hjVhhubh)}(hThe **type** field is an ISP driver-specific value that identifies the block type. The **size** field specifies the size of the parameters block.h](hThe }(hjhhhNhNubj)}(h**type**h]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhK field is an ISP driver-specific value that identifies the block type. The }(hjhhhNhNubj)}(h**size**h]hsize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh2 field specifies the size of the parameters block.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhK8hjVhhubh)}(hThe **flags** field is a bitmask of per-block flags V4L2_PARAMS_ISP_FL_* and driver-specific flags specified by the driver header.h](hThe }(hjhhhNhNubj)}(h **flags**h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhu field is a bitmask of per-block flags V4L2_PARAMS_ISP_FL_* and driver-specific flags specified by the driver header.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhK;hjVhhubjh)}(hhh]h}(h]h ]h"]h$]h&]entries](jt!v4l2_isp_params_buffer (C struct)c.v4l2_isp_params_bufferhNtauh1jghjVhhhjxhNubjz)}(hhh](j)}(hv4l2_isp_params_bufferh]j)}(hstruct v4l2_isp_params_bufferh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhKAubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKAubj)}(hv4l2_isp_params_bufferh]j)}(hjh]hv4l2_isp_params_buffer}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKAubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhjhKAubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j~hjhKAhjhhubj)}(hhh]h)}(h(V4L2 extensible parameters configurationh]h(V4L2 extensible parameters configuration}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhKFhj9hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKAubeh}(h]h ](jstructeh"]h$]h&]jjjjTjjTjjjuh1jyhhhjVhjxhNubj)}(hX5**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 datah](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubh:}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhKJhjXubj)}(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[] ; };}hjysbah}(h]h ]h"]h$]h&]hhuh1jht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhKLhjXubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhKRhjXubj')}(hhh](j,)}(h<``version`` The parameters buffer version (driver-specific) h](j2)}(h ``version``h]j)}(hjh]hversion}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j1ht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhKHhjubjL)}(hhh]h)}(h/The parameters buffer version (driver-specific)h]h/The parameters buffer version (driver-specific)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKHhjubah}(h]h ]h"]h$]h&]uh1jKhjubeh}(h]h ]h"]h$]h&]uh1j+hjhKHhjubj,)}(hK``data_size`` The configuration data effective size, excluding this header h](j2)}(h ``data_size``h]j)}(hjh]h data_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j1ht/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/v4l2-isp:67: ./include/uapi/linux/media/v4l2-isp.hhKIhjubjL)}(hhh]h)}(h