€•tÑŒ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”Œ8/translations/zh_CN/userspace-api/media/drivers/uvcvideo”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/zh_TW/userspace-api/media/drivers/uvcvideo”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/it_IT/userspace-api/media/drivers/uvcvideo”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/ja_JP/userspace-api/media/drivers/uvcvideo”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/ko_KR/userspace-api/media/drivers/uvcvideo”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/pt_BR/userspace-api/media/drivers/uvcvideo”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/sp_SP/userspace-api/media/drivers/uvcvideo”Œ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Œ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/userspace-api/media/drivers/uvcvideo.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ&The Linux USB Video Class (UVC) driver”h]”hŒ&The Linux USB Video Class (UVC) driver”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒ|This file documents some driver-specific aspects of the UVC driver, such as driver-specific ioctls and implementation notes.”h]”hŒ|This file documents some driver-specific aspects of the UVC driver, such as driver-specific ioctls and implementation notes.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒkQuestions and remarks can be sent to the Linux UVC development mailing list at linux-media@vger.kernel.org.”h]”(hŒOQuestions and remarks can be sent to the Linux UVC development mailing list at ”…”�”}”(hhíh²hh³Nh´NubhŒ reference”“”)�”}”(hŒlinux-media@vger.kernel.org”h]”hŒlinux-media@vger.kernel.org”…”�”}”(hh÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ"mailto:linux-media@vger.kernel.org”uh1hõhhíubhŒ.”…”�”}”(hhíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒExtension Unit (XU) support”h]”hŒExtension Unit (XU) support”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj"h²hh³hÇh´KubhÞ)�”}”(hŒ¿The UVC specification allows for vendor-specific extensions through extension units (XUs). The Linux UVC driver supports extension unit controls (XU controls) through two separate mechanisms:”h]”hŒ¿The UVC specification allows for vendor-specific extensions through extension units (XUs). The Linux UVC driver supports extension unit controls (XU controls) through two separate mechanisms:”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj"h²hubhŒ block_quote”“”)�”}”(hŒ_- through mappings of XU controls to V4L2 controls - through a driver-specific ioctl interface ”h]”hŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ0through mappings of XU controls to V4L2 controls”h]”hÞ)�”}”(hjPh]”hŒ0through mappings of XU controls to V4L2 controls”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jLhjIubjM)�”}”(hŒ*through a driver-specific ioctl interface ”h]”hÞ)�”}”(hŒ)through a driver-specific ioctl interface”h]”hŒ)through a driver-specific ioctl interface”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jLhjIubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jGh³hÇh´KhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³hÇh´Khj"h²hubhÞ)�”}”(hŒ¬The first one allows generic V4L2 applications to use XU controls by mapping certain XU controls onto V4L2 controls, which then show up during ordinary control enumeration.”h]”hŒ¬The first one allows generic V4L2 applications to use XU controls by mapping certain XU controls onto V4L2 controls, which then show up during ordinary control enumeration.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj"h²hubhÞ)�”}”(hŒ°The second mechanism requires uvcvideo-specific knowledge for the application to access XU controls but exposes the entire UVC XU concept to user space for maximum flexibility.”h]”hŒ°The second mechanism requires uvcvideo-specific knowledge for the application to access XU controls but exposes the entire UVC XU concept to user space for maximum flexibility.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj"h²hubhÞ)�”}”(hŒMBoth mechanisms complement each other and are described in more detail below.”h]”hŒMBoth mechanisms complement each other and are described in more detail below.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K"hj"h²hubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1hÈhjh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒControl mappings”h]”hŒControl mappings”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj½h²hh³hÇh´K&ubhÞ)�”}”(hXºThe UVC driver provides an API for user space applications to define so-called control mappings at runtime. These allow for individual XU controls or byte ranges thereof to be mapped to new V4L2 controls. Such controls appear and function exactly like normal V4L2 controls (i.e. the stock controls, such as brightness, contrast, etc.). However, reading or writing of such a V4L2 controls triggers a read or write of the associated XU control.”h]”hXºThe UVC driver provides an API for user space applications to define so-called control mappings at runtime. These allow for individual XU controls or byte ranges thereof to be mapped to new V4L2 controls. Such controls appear and function exactly like normal V4L2 controls (i.e. the stock controls, such as brightness, contrast, etc.). However, reading or writing of such a V4L2 controls triggers a read or write of the associated XU control.”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K(hj½h²hubhÞ)�”}”(hXJThe ioctl used to create these control mappings is called UVCIOC_CTRL_MAP. Previous driver versions (before 0.2.0) required another ioctl to be used beforehand (UVCIOC_CTRL_ADD) to pass XU control information to the UVC driver. This is no longer necessary as newer uvcvideo versions query the information directly from the device.”h]”hXJThe ioctl used to create these control mappings is called UVCIOC_CTRL_MAP. Previous driver versions (before 0.2.0) required another ioctl to be used beforehand (UVCIOC_CTRL_ADD) to pass XU control information to the UVC driver. This is no longer necessary as newer uvcvideo versions query the information directly from the device.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K/hj½h²hubhÞ)�”}”(hŒdFor details on the UVCIOC_CTRL_MAP ioctl please refer to the section titled "IOCTL reference" below.”h]”hŒhFor details on the UVCIOC_CTRL_MAP ioctl please refer to the section titled “IOCTL referenceâ€� below.”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K5hj½h²hubhŒenumerated_list”“”)�”}”(hhh]”jM)�”}”(hŒ%Driver specific XU control interface ”h]”hÞ)�”}”(hŒ$Driver specific XU control interface”h]”hŒ$Driver specific XU control interface”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jLhjúh²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”Œstart”Kuh1jøhj½h²hh³hÇh´K9ubhÞ)�”}”(hŒûFor applications that need to access XU controls directly, e.g. for testing purposes, firmware upload, or accessing binary controls, a second mechanism to access XU controls is provided in the form of a driver-specific ioctl, namely UVCIOC_CTRL_QUERY.”h]”hŒûFor applications that need to access XU controls directly, e.g. for testing purposes, firmware upload, or accessing binary controls, a second mechanism to access XU controls is provided in the form of a driver-specific ioctl, namely UVCIOC_CTRL_QUERY.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K;hj½h²hubhÞ)�”}”(hŒƒA call to this ioctl allows applications to send queries to the UVC driver that directly map to the low-level UVC control requests.”h]”hŒƒA call to this ioctl allows applications to send queries to the UVC driver that directly map to the low-level UVC control requests.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K@hj½h²hubhÞ)�”}”(hXPIn order to make such a request the UVC unit ID of the control's extension unit and the control selector need to be known. This information either needs to be hardcoded in the application or queried using other ways such as by parsing the UVC descriptor or, if available, using the media controller API to enumerate a device's entities.”h]”hXTIn order to make such a request the UVC unit ID of the control’s extension unit and the control selector need to be known. This information either needs to be hardcoded in the application or queried using other ways such as by parsing the UVC descriptor or, if available, using the media controller API to enumerate a device’s entities.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KChj½h²hubhÞ)�”}”(hXºUnless the control size is already known it is necessary to first make a UVC_GET_LEN requests in order to be able to allocate a sufficiently large buffer and set the buffer size to the correct value. Similarly, to find out whether UVC_GET_CUR or UVC_SET_CUR are valid requests for a given control, a UVC_GET_INFO request should be made. The bits 0 (GET supported) and 1 (SET supported) of the resulting byte indicate which requests are valid.”h]”hXºUnless the control size is already known it is necessary to first make a UVC_GET_LEN requests in order to be able to allocate a sufficiently large buffer and set the buffer size to the correct value. Similarly, to find out whether UVC_GET_CUR or UVC_SET_CUR are valid requests for a given control, a UVC_GET_INFO request should be made. The bits 0 (GET supported) and 1 (SET supported) of the resulting byte indicate which requests are valid.”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KIhj½h²hubhÞ)�”}”(hX'With the addition of the UVCIOC_CTRL_QUERY ioctl the UVCIOC_CTRL_GET and UVCIOC_CTRL_SET ioctls have become obsolete since their functionality is a subset of the former ioctl. For the time being they are still supported but application developers are encouraged to use UVCIOC_CTRL_QUERY instead.”h]”hX'With the addition of the UVCIOC_CTRL_QUERY ioctl the UVCIOC_CTRL_GET and UVCIOC_CTRL_SET ioctls have become obsolete since their functionality is a subset of the former ioctl. For the time being they are still supported but application developers are encouraged to use UVCIOC_CTRL_QUERY instead.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KPhj½h²hubhÞ)�”}”(hŒfFor details on the UVCIOC_CTRL_QUERY ioctl please refer to the section titled "IOCTL reference" below.”h]”hŒjFor details on the UVCIOC_CTRL_QUERY ioctl please refer to the section titled “IOCTL referenceâ€� below.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KUhj½h²hubeh}”(h]”Œcontrol-mappings”ah ]”h"]”Œcontrol mappings”ah$]”h&]”uh1hÈhjh²hh³hÇh´K&ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSecurity”h]”hŒSecurity”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj}h²hh³hÇh´KZubhÞ)�”}”(hŒ˜The API doesn't currently provide a fine-grained access control facility. The UVCIOC_CTRL_ADD and UVCIOC_CTRL_MAP ioctls require super user permissions.”h]”hŒšThe API doesn’t currently provide a fine-grained access control facility. The UVCIOC_CTRL_ADD and UVCIOC_CTRL_MAP ioctls require super user permissions.”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K\hj}h²hubhÞ)�”}”(hŒ/Suggestions on how to improve this are welcome.”h]”hŒ/Suggestions on how to improve this are welcome.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K_hj}h²hubeh}”(h]”Œsecurity”ah ]”h"]”Œsecurity”ah$]”h&]”uh1hÈhjh²hh³hÇh´KZubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Debugging”h]”hŒ Debugging”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj²h²hh³hÇh´KcubhÞ)�”}”(hŒÛIn order to debug problems related to XU controls or controls in general it is recommended to enable the UVC_TRACE_CONTROL bit in the module parameter 'trace'. This causes extra output to be written into the system log.”h]”hŒßIn order to debug problems related to XU controls or controls in general it is recommended to enable the UVC_TRACE_CONTROL bit in the module parameter ‘trace’. This causes extra output to be written into the system log.”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kehj²h²hubeh}”(h]”Œ debugging”ah ]”h"]”Œ debugging”ah$]”h&]”uh1hÈhjh²hh³hÇh´KcubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒIOCTL reference”h]”hŒIOCTL reference”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÙh²hh³hÇh´KkubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ5UVCIOC_CTRL_MAP - Map a UVC control to a V4L2 control”h]”hŒ5UVCIOC_CTRL_MAP - Map a UVC control to a V4L2 control”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjêh²hh³hÇh´KnubhÞ)�”}”(hŒ;**This IOCTL is deprecated and will be eventually removed**”h]”hŒstrong”“”)�”}”(hjýh]”hŒ7This IOCTL is deprecated and will be eventually removed”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kphjêh²hubhÞ)�”}”(hŒ'Argument: struct uvc_xu_control_mapping”h]”hŒ'Argument: struct uvc_xu_control_mapping”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Krhjêh²hubhÞ)�”}”(hŒ**Description**:”h]”(j)�”}”(hŒ**Description**”h]”hŒ Description”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj"ubhŒ:”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kthjêh²hubjB)�”}”(hX0This ioctl creates a mapping between a UVC control or part of a UVC control and a V4L2 control. Once mappings are defined, userspace applications can access vendor-defined UVC control through the V4L2 control API. To create a mapping, applications fill the uvc_xu_control_mapping structure with information about an existing UVC control defined with UVCIOC_CTRL_ADD and a new V4L2 control. A UVC control can be mapped to several V4L2 controls. For instance, a UVC pan/tilt control could be mapped to separate pan and tilt V4L2 controls. The UVC control is divided into non overlapping fields using the 'size' and 'offset' fields and are then independently mapped to V4L2 control. For signed integer V4L2 controls the data_type field should be set to UVC_CTRL_DATA_TYPE_SIGNED. Other values are currently ignored. ”h]”(hÞ)�”}”(hŒÕThis ioctl creates a mapping between a UVC control or part of a UVC control and a V4L2 control. Once mappings are defined, userspace applications can access vendor-defined UVC control through the V4L2 control API.”h]”hŒÕThis ioctl creates a mapping between a UVC control or part of a UVC control and a V4L2 control. Once mappings are defined, userspace applications can access vendor-defined UVC control through the V4L2 control API.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kvhj>ubhÞ)�”}”(hŒ¯To create a mapping, applications fill the uvc_xu_control_mapping structure with information about an existing UVC control defined with UVCIOC_CTRL_ADD and a new V4L2 control.”h]”hŒ¯To create a mapping, applications fill the uvc_xu_control_mapping structure with information about an existing UVC control defined with UVCIOC_CTRL_ADD and a new V4L2 control.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K{hj>ubhÞ)�”}”(hX!A UVC control can be mapped to several V4L2 controls. For instance, a UVC pan/tilt control could be mapped to separate pan and tilt V4L2 controls. The UVC control is divided into non overlapping fields using the 'size' and 'offset' fields and are then independently mapped to V4L2 control.”h]”hX)A UVC control can be mapped to several V4L2 controls. For instance, a UVC pan/tilt control could be mapped to separate pan and tilt V4L2 controls. The UVC control is divided into non overlapping fields using the ‘size’ and ‘offset’ fields and are then independently mapped to V4L2 control.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj>ubhÞ)�”}”(hŒ„For signed integer V4L2 controls the data_type field should be set to UVC_CTRL_DATA_TYPE_SIGNED. Other values are currently ignored.”h]”hŒ„For signed integer V4L2 controls the data_type field should be set to UVC_CTRL_DATA_TYPE_SIGNED. Other values are currently ignored.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K…hj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jAh³hÇh´Kvhjêh²hubhÞ)�”}”(hŒ**Return value**:”h]”(j)�”}”(hŒ**Return value**”h]”hŒ Return value”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj€ubhŒ:”…”�”}”(hj€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kˆhjêh²hubjB)�”}”(hXuOn success 0 is returned. On error -1 is returned and errno is set appropriately. ENOMEM Not enough memory to perform the operation. EPERM Insufficient privileges (super user privileges are required). EINVAL No such UVC control. EOVERFLOW The requested offset and size would overflow the UVC control. EEXIST Mapping already exists. ”h]”(hÞ)�”}”(hŒQOn success 0 is returned. On error -1 is returned and errno is set appropriately.”h]”hŒQOn success 0 is returned. On error -1 is returned and errno is set appropriately.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KŠhjœubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ2ENOMEM Not enough memory to perform the operation.”h]”(hŒterm”“”)�”}”(hŒENOMEM”h]”hŒENOMEM”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K�hjµubhŒ definition”“”)�”}”(hhh]”hÞ)�”}”(hŒ+Not enough memory to perform the operation.”h]”hŒ+Not enough memory to perform the operation.”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KŽhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´K�hj°ubj´)�”}”(hŒCEPERM Insufficient privileges (super user privileges are required).”h]”(jº)�”}”(hŒEPERM”h]”hŒEPERM”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K�hjèubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ=Insufficient privileges (super user privileges are required).”h]”hŒ=Insufficient privileges (super user privileges are required).”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K�hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´K�hj°ubj´)�”}”(hŒEINVAL No such UVC control.”h]”(jº)�”}”(hŒEINVAL”h]”hŒEINVAL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K‘hjubjÊ)�”}”(hhh]”hÞ)�”}”(hŒNo such UVC control.”h]”hŒNo such UVC control.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K’hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´K‘hj°ubj´)�”}”(hŒGEOVERFLOW The requested offset and size would overflow the UVC control.”h]”(jº)�”}”(hŒ EOVERFLOW”h]”hŒ EOVERFLOW”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K“hjFubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ=The requested offset and size would overflow the UVC control.”h]”hŒ=The requested offset and size would overflow the UVC control.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K”hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´K“hj°ubj´)�”}”(hŒEEXIST Mapping already exists. ”h]”(jº)�”}”(hŒEEXIST”h]”hŒEEXIST”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´K–hjuubjÊ)�”}”(hhh]”hÞ)�”}”(hŒMapping already exists.”h]”hŒMapping already exists.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K–hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´K–hj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®hjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jAh³hÇh´KŠhjêh²hubhÞ)�”}”(hŒ**Data types**:”h]”(j)�”}”(hŒ**Data types**”h]”hŒ Data types”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj°ubhŒ:”…”�”}”(hj°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K˜hjêh²hubhŒ literal_block”“”)�”}”(hXO* struct uvc_xu_control_mapping __u32 id V4L2 control identifier __u8 name[32] V4L2 control name __u8 entity[16] UVC extension unit GUID __u8 selector UVC control selector __u8 size V4L2 control size (in bits) __u8 offset V4L2 control offset (in bits) enum v4l2_ctrl_type v4l2_type V4L2 control type enum uvc_control_data_type data_type UVC control data type struct uvc_menu_info *menu_info Array of menu entries (for menu controls only) __u32 menu_count Number of menu entries (for menu controls only) * struct uvc_menu_info __u32 value Menu entry value used by the device __u8 name[32] Menu entry name * enum uvc_control_data_type UVC_CTRL_DATA_TYPE_RAW Raw control (byte array) UVC_CTRL_DATA_TYPE_SIGNED Signed integer UVC_CTRL_DATA_TYPE_UNSIGNED Unsigned integer UVC_CTRL_DATA_TYPE_BOOLEAN Boolean UVC_CTRL_DATA_TYPE_ENUM Enumeration UVC_CTRL_DATA_TYPE_BITMASK Bitmask UVC_CTRL_DATA_TYPE_RECT Rectangular area”h]”hXO* struct uvc_xu_control_mapping __u32 id V4L2 control identifier __u8 name[32] V4L2 control name __u8 entity[16] UVC extension unit GUID __u8 selector UVC control selector __u8 size V4L2 control size (in bits) __u8 offset V4L2 control offset (in bits) enum v4l2_ctrl_type v4l2_type V4L2 control type enum uvc_control_data_type data_type UVC control data type struct uvc_menu_info *menu_info Array of menu entries (for menu controls only) __u32 menu_count Number of menu entries (for menu controls only) * struct uvc_menu_info __u32 value Menu entry value used by the device __u8 name[32] Menu entry name * enum uvc_control_data_type UVC_CTRL_DATA_TYPE_RAW Raw control (byte array) UVC_CTRL_DATA_TYPE_SIGNED Signed integer UVC_CTRL_DATA_TYPE_UNSIGNED Unsigned integer UVC_CTRL_DATA_TYPE_BOOLEAN Boolean UVC_CTRL_DATA_TYPE_ENUM Enumeration UVC_CTRL_DATA_TYPE_BITMASK Bitmask UVC_CTRL_DATA_TYPE_RECT Rectangular area”…”�”}”hjÎsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œnone”Œhighlight_args”}”uh1jÌh³hÇh´Kšhjêh²hubeh}”(h]”Œ3uvcioc-ctrl-map-map-a-uvc-control-to-a-v4l2-control”ah ]”h"]”Œ5uvcioc_ctrl_map - map a uvc control to a v4l2 control”ah$]”h&]”uh1hÈhjÙh²hh³hÇh´KnubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ*UVCIOC_CTRL_QUERY - Query a UVC XU control”h]”hŒ*UVCIOC_CTRL_QUERY - Query a UVC XU control”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjéh²hh³hÇh´K¾ubhÞ)�”}”(hŒ%Argument: struct uvc_xu_control_query”h]”hŒ%Argument: struct uvc_xu_control_query”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¿hjéh²hubhÞ)�”}”(hŒ**Description**:”h]”(j)�”}”(hŒ**Description**”h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjubhŒ:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÁhjéh²hubjB)�”}”(hXÐThis ioctl queries a UVC XU control identified by its extension unit ID and control selector. There are a number of different queries available that closely correspond to the low-level control requests described in the UVC specification. These requests are: UVC_GET_CUR Obtain the current value of the control. UVC_GET_MIN Obtain the minimum value of the control. UVC_GET_MAX Obtain the maximum value of the control. UVC_GET_DEF Obtain the default value of the control. UVC_GET_RES Query the resolution of the control, i.e. the step size of the allowed control values. UVC_GET_LEN Query the size of the control in bytes. UVC_GET_INFO Query the control information bitmap, which indicates whether get/set requests are supported. UVC_SET_CUR Update the value of the control. Applications must set the 'size' field to the correct length for the control. Exceptions are the UVC_GET_LEN and UVC_GET_INFO queries, for which the size must be set to 2 and 1, respectively. The 'data' field must point to a valid writable buffer big enough to hold the indicated number of data bytes. Data is copied directly from the device without any driver-side processing. Applications are responsible for data buffer formatting, including little-endian/big-endian conversion. This is particularly important for the result of the UVC_GET_LEN requests, which is always returned as a little-endian 16-bit integer by the device. ”h]”(hÞ)�”}”(hŒ]This ioctl queries a UVC XU control identified by its extension unit ID and control selector.”h]”hŒ]This ioctl queries a UVC XU control identified by its extension unit ID and control selector.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÃhj$ubhÞ)�”}”(hŒ£There are a number of different queries available that closely correspond to the low-level control requests described in the UVC specification. These requests are:”h]”hŒ£There are a number of different queries available that closely correspond to the low-level control requests described in the UVC specification. These requests are:”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÆhj$ubj¯)�”}”(hhh]”(j´)�”}”(hŒ4UVC_GET_CUR Obtain the current value of the control.”h]”(jº)�”}”(hŒ UVC_GET_CUR”h]”hŒ UVC_GET_CUR”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÊhjGubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ(Obtain the current value of the control.”h]”hŒ(Obtain the current value of the control.”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KËhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´KÊhjDubj´)�”}”(hŒ4UVC_GET_MIN Obtain the minimum value of the control.”h]”(jº)�”}”(hŒ UVC_GET_MIN”h]”hŒ UVC_GET_MIN”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÌhjvubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ(Obtain the minimum value of the control.”h]”hŒ(Obtain the minimum value of the control.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÍhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´KÌhjDubj´)�”}”(hŒ4UVC_GET_MAX Obtain the maximum value of the control.”h]”(jº)�”}”(hŒ UVC_GET_MAX”h]”hŒ UVC_GET_MAX”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÎhj¥ubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ(Obtain the maximum value of the control.”h]”hŒ(Obtain the maximum value of the control.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÏhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´KÎhjDubj´)�”}”(hŒ4UVC_GET_DEF Obtain the default value of the control.”h]”(jº)�”}”(hŒ UVC_GET_DEF”h]”hŒ UVC_GET_DEF”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÐhjÔubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ(Obtain the default value of the control.”h]”hŒ(Obtain the default value of the control.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÑhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´KÐhjDubj´)�”}”(hŒbUVC_GET_RES Query the resolution of the control, i.e. the step size of the allowed control values.”h]”(jº)�”}”(hŒ UVC_GET_RES”h]”hŒ UVC_GET_RES”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÓhjubjÊ)�”}”(hhh]”hÞ)�”}”(hŒVQuery the resolution of the control, i.e. the step size of the allowed control values.”h]”hŒVQuery the resolution of the control, i.e. the step size of the allowed control values.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÓhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´KÓhjDubj´)�”}”(hŒ3UVC_GET_LEN Query the size of the control in bytes.”h]”(jº)�”}”(hŒ UVC_GET_LEN”h]”hŒ UVC_GET_LEN”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÕhj2ubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ'Query the size of the control in bytes.”h]”hŒ'Query the size of the control in bytes.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÖhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´KÕhjDubj´)�”}”(hŒjUVC_GET_INFO Query the control information bitmap, which indicates whether get/set requests are supported.”h]”(jº)�”}”(hŒ UVC_GET_INFO”h]”hŒ UVC_GET_INFO”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KØhjaubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ]Query the control information bitmap, which indicates whether get/set requests are supported.”h]”hŒ]Query the control information bitmap, which indicates whether get/set requests are supported.”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KØhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´KØhjDubj´)�”}”(hŒ-UVC_SET_CUR Update the value of the control. ”h]”(jº)�”}”(hŒ UVC_SET_CUR”h]”hŒ UVC_SET_CUR”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KÛhj�ubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ Update the value of the control.”h]”hŒ Update the value of the control.”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÛhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´KÛhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®hj$ubhÞ)�”}”(hX-Applications must set the 'size' field to the correct length for the control. Exceptions are the UVC_GET_LEN and UVC_GET_INFO queries, for which the size must be set to 2 and 1, respectively. The 'data' field must point to a valid writable buffer big enough to hold the indicated number of data bytes.”h]”hX5Applications must set the ‘size’ field to the correct length for the control. Exceptions are the UVC_GET_LEN and UVC_GET_INFO queries, for which the size must be set to 2 and 1, respectively. The ‘data’ field must point to a valid writable buffer big enough to hold the indicated number of data bytes.”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÝhj$ubhÞ)�”}”(hXHData is copied directly from the device without any driver-side processing. Applications are responsible for data buffer formatting, including little-endian/big-endian conversion. This is particularly important for the result of the UVC_GET_LEN requests, which is always returned as a little-endian 16-bit integer by the device.”h]”hXHData is copied directly from the device without any driver-side processing. Applications are responsible for data buffer formatting, including little-endian/big-endian conversion. This is particularly important for the result of the UVC_GET_LEN requests, which is always returned as a little-endian 16-bit integer by the device.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kãhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jAh³hÇh´KÃhjéh²hubhÞ)�”}”(hŒ**Return value**:”h]”(j)�”}”(hŒ**Return value**”h]”hŒ Return value”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjçubhŒ:”…”�”}”(hjçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kéhjéh²hubjB)�”}”(hXßOn success 0 is returned. On error -1 is returned and errno is set appropriately. ENOENT The device does not support the given control or the specified extension unit could not be found. ENOBUFS The specified buffer size is incorrect (too big or too small). EINVAL An invalid request code was passed. EBADRQC The given request is not supported by the given control. EFAULT The data pointer references an inaccessible memory area. ”h]”(hÞ)�”}”(hŒQOn success 0 is returned. On error -1 is returned and errno is set appropriately.”h]”hŒQOn success 0 is returned. On error -1 is returned and errno is set appropriately.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Këhjubj¯)�”}”(hhh]”(j´)�”}”(hŒhENOENT The device does not support the given control or the specified extension unit could not be found.”h]”(jº)�”}”(hŒENOENT”h]”hŒENOENT”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KïhjubjÊ)�”}”(hhh]”hÞ)�”}”(hŒaThe device does not support the given control or the specified extension unit could not be found.”h]”hŒaThe device does not support the given control or the specified extension unit could not be found.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kïhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´Kïhjubj´)�”}”(hŒFENOBUFS The specified buffer size is incorrect (too big or too small).”h]”(jº)�”}”(hŒENOBUFS”h]”hŒENOBUFS”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KñhjGubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ>The specified buffer size is incorrect (too big or too small).”h]”hŒ>The specified buffer size is incorrect (too big or too small).”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KòhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´Kñhjubj´)�”}”(hŒ*EINVAL An invalid request code was passed.”h]”(jº)�”}”(hŒEINVAL”h]”hŒEINVAL”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KóhjvubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ#An invalid request code was passed.”h]”hŒ#An invalid request code was passed.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kôhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´Kóhjubj´)�”}”(hŒ@EBADRQC The given request is not supported by the given control.”h]”(jº)�”}”(hŒEBADRQC”h]”hŒEBADRQC”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´Kõhj¥ubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ8The given request is not supported by the given control.”h]”hŒ8The given request is not supported by the given control.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Köhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´Kõhjubj´)�”}”(hŒ@EFAULT The data pointer references an inaccessible memory area. ”h]”(jº)�”}”(hŒEFAULT”h]”hŒEFAULT”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´KøhjÔubjÊ)�”}”(hhh]”hÞ)�”}”(hŒ8The data pointer references an inaccessible memory area.”h]”hŒ8The data pointer references an inaccessible memory area.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Køhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´Køhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jAh³hÇh´Këhjéh²hubhÞ)�”}”(hŒ**Data types**:”h]”(j)�”}”(hŒ**Data types**”h]”hŒ Data types”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjubhŒ:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kúhjéh²hubjÍ)�”}”(hX* struct uvc_xu_control_query __u8 unit Extension unit ID __u8 selector Control selector __u8 query Request code to send to the device __u16 size Control data size (in bytes) __u8 *data Control value”h]”hX* struct uvc_xu_control_query __u8 unit Extension unit ID __u8 selector Control selector __u8 query Request code to send to the device __u16 size Control data size (in bytes) __u8 *data Control value”…”�”}”hj+sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj܉jÝŒnone”jß}”uh1jÌh³hÇh´Kühjéh²hubeh}”(h]”Œ(uvcioc-ctrl-query-query-a-uvc-xu-control”ah ]”h"]”Œ*uvcioc_ctrl_query - query a uvc xu control”ah$]”h&]”uh1hÈhjÙh²hh³hÇh´K¾ubeh}”(h]”Œioctl-reference”ah ]”h"]”Œioctl reference”ah$]”h&]”uh1hÈhjh²hh³hÇh´Kkubeh}”(h]”Œextension-unit-xu-support”ah ]”h"]”Œextension unit (xu) support”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDriver-specific V4L2 controls”h]”hŒDriver-specific V4L2 controls”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjSh²hh³hÇh´MubhÞ)�”}”(hŒCThe uvcvideo driver implements the following UVC-specific controls:”h]”hŒCThe uvcvideo driver implements the following UVC-specific controls:”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hjSh²hubj¯)�”}”(hhh]”(j´)�”}”(hX``V4L2_CID_UVC_REGION_OF_INTEREST_RECT (struct)`` This control determines the region of interest (ROI). ROI is a rectangular area represented by a struct :c:type:`v4l2_rect`. The rectangle is in global sensor coordinates using pixel units. It is independent of the field of view, not impacted by any cropping or scaling. Use ``V4L2_CTRL_WHICH_MIN_VAL`` and ``V4L2_CTRL_WHICH_MAX_VAL`` to query the range of rectangle sizes. Setting a ROI allows the camera to optimize the capture for the region. The value of ``V4L2_CID_REGION_OF_INTEREST_AUTO`` control determines the detailed behavior. An example of use of this control, can be found in the: `Chrome OS USB camera HAL. ` ”h]”(jº)�”}”(hŒ1``V4L2_CID_UVC_REGION_OF_INTEREST_RECT (struct)``”h]”hŒliteral”“”)�”}”(hj{h]”hŒ-V4L2_CID_UVC_REGION_OF_INTEREST_RECT (struct)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´MhjuubjÊ)�”}”(hhh]”(hÞ)�”}”(hXThis control determines the region of interest (ROI). ROI is a rectangular area represented by a struct :c:type:`v4l2_rect`. The rectangle is in global sensor coordinates using pixel units. It is independent of the field of view, not impacted by any cropping or scaling.”h]”(hŒhThis control determines the region of interest (ROI). ROI is a rectangular area represented by a struct ”…”�”}”(hj•h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_rect`”h]”j~)�”}”(hjŸh]”hŒ v4l2_rect”…”�”}”(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/drivers/uvcvideo”Œ refdomain”j¬Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰Œ reftarget”Œ v4l2_rect”uh1hh³hÇh´M hj•ubhŒ“. The rectangle is in global sensor coordinates using pixel units. It is independent of the field of view, not impacted by any cropping or scaling.”…”�”}”(hj•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj’ubhÞ)�”}”(hŒfUse ``V4L2_CTRL_WHICH_MIN_VAL`` and ``V4L2_CTRL_WHICH_MAX_VAL`` to query the range of rectangle sizes.”h]”(hŒUse ”…”�”}”(hjÊh²hh³Nh´Nubj~)�”}”(hŒ``V4L2_CTRL_WHICH_MIN_VAL``”h]”hŒV4L2_CTRL_WHICH_MIN_VAL”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hjÊubhŒ and ”…”�”}”(hjÊh²hh³Nh´Nubj~)�”}”(hŒ``V4L2_CTRL_WHICH_MAX_VAL``”h]”hŒV4L2_CTRL_WHICH_MAX_VAL”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hjÊubhŒ' to query the range of rectangle sizes.”…”�”}”(hjÊh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj’ubhÞ)�”}”(hŒ£Setting a ROI allows the camera to optimize the capture for the region. The value of ``V4L2_CID_REGION_OF_INTEREST_AUTO`` control determines the detailed behavior.”h]”(hŒUSetting a ROI allows the camera to optimize the capture for the region. The value of ”…”�”}”(hjüh²hh³Nh´Nubj~)�”}”(hŒ$``V4L2_CID_REGION_OF_INTEREST_AUTO``”h]”hŒ V4L2_CID_REGION_OF_INTEREST_AUTO”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hjüubhŒ* control determines the detailed behavior.”…”�”}”(hjüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj’ubhÞ)�”}”(hŒ¾An example of use of this control, can be found in the: `Chrome OS USB camera HAL. `”h]”(hŒ8An example of use of this control, can be found in the: ”…”�”}”(hj h²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ†`Chrome OS USB camera HAL. `”h]”hŒ„Chrome OS USB camera HAL. ”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j$ hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´Mhjrubj´)�”}”(hX``V4L2_CID_UVC_REGION_OF_INTEREST_AUTO (bitmask)`` This determines which, if any, on-board features should track to the Region of Interest specified by the current value of ``V4L2_CID_UVD__REGION_OF_INTEREST_RECT``. Max value is a mask indicating all supported Auto Controls. ”h]”(jº)�”}”(hŒ2``V4L2_CID_UVC_REGION_OF_INTEREST_AUTO (bitmask)``”h]”j~)�”}”(hjL h]”hŒ.V4L2_CID_UVC_REGION_OF_INTEREST_AUTO (bitmask)”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hjJ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹h³hÇh´M$hjF ubjÊ)�”}”(hhh]”(hÞ)�”}”(hŒ¤This determines which, if any, on-board features should track to the Region of Interest specified by the current value of ``V4L2_CID_UVD__REGION_OF_INTEREST_RECT``.”h]”(hŒzThis determines which, if any, on-board features should track to the Region of Interest specified by the current value of ”…”�”}”(hjd h²hh³Nh´Nubj~)�”}”(hŒ)``V4L2_CID_UVD__REGION_OF_INTEREST_RECT``”h]”hŒ%V4L2_CID_UVD__REGION_OF_INTEREST_RECT”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hjd ubhŒ.”…”�”}”(hjd h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hja ubhÞ)�”}”(hŒ;Max value is a mask indicating all supported Auto Controls.”h]”hŒ;Max value is a mask indicating all supported Auto Controls.”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M$hja ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÉhjF ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³h³hÇh´M$hjrh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®hjSh²hh³hÇh´NubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K2uh1j® hj« ubj¯ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K2uh1j® hj« ubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÞ)�”}”(hŒ-``V4L2_UVC_REGION_OF_INTEREST_AUTO_EXPOSURE``”h]”j~)�”}”(hjÕ h]”hŒ)V4L2_UVC_REGION_OF_INTEREST_AUTO_EXPOSURE”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hjÓ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M*hjÐ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hjË ubjÏ )�”}”(hhh]”hÞ)�”}”(hŒfSetting this bit causes automatic exposure to track the region of interest instead of the whole image.”h]”hŒfSetting this bit causes automatic exposure to track the region of interest instead of the whole image.”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M+hjð ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hjË ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÆ ubjÊ )�”}”(hhh]”(jÏ )�”}”(hhh]”hÞ)�”}”(hŒ)``V4L2_UVC_REGION_OF_INTEREST_AUTO_IRIS``”h]”j~)�”}”(hj h]”hŒ%V4L2_UVC_REGION_OF_INTEREST_AUTO_IRIS”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M-hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hj ubjÏ )�”}”(hhh]”hÞ)�”}”(hŒbSetting this bit causes automatic iris to track the region of interest instead of the whole image.”h]”hŒbSetting this bit causes automatic iris to track the region of interest instead of the whole image.”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M.hj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÆ ubjÊ )�”}”(hhh]”(jÏ )�”}”(hhh]”hÞ)�”}”(hŒ2``V4L2_UVC_REGION_OF_INTEREST_AUTO_WHITE_BALANCE``”h]”j~)�”}”(hjU h]”hŒ.V4L2_UVC_REGION_OF_INTEREST_AUTO_WHITE_BALANCE”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hjS ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M0hjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hjM ubjÏ )�”}”(hhh]”hÞ)�”}”(hŒkSetting this bit causes automatic white balance to track the region of interest instead of the whole image.”h]”hŒkSetting this bit causes automatic white balance to track the region of interest instead of the whole image.”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M1hjp ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hjM ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÆ ubjÊ )�”}”(hhh]”(jÏ )�”}”(hhh]”hÞ)�”}”(hŒ*``V4L2_UVC_REGION_OF_INTEREST_AUTO_FOCUS``”h]”j~)�”}”(hj• h]”hŒ&V4L2_UVC_REGION_OF_INTEREST_AUTO_FOCUS”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hj“ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M3hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hj� ubjÏ )�”}”(hhh]”hÞ)�”}”(hŒnSetting this bit causes automatic focus adjustment to track the region of interest instead of the whole image.”h]”hŒnSetting this bit causes automatic focus adjustment to track the region of interest instead of the whole image.”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M4hj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÆ ubjÊ )�”}”(hhh]”(jÏ )�”}”(hhh]”hÞ)�”}”(hŒ0``V4L2_UVC_REGION_OF_INTEREST_AUTO_FACE_DETECT``”h]”j~)�”}”(hjÕ h]”hŒ,V4L2_UVC_REGION_OF_INTEREST_AUTO_FACE_DETECT”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hjÓ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M6hjÐ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hjÍ ubjÏ )�”}”(hhh]”hÞ)�”}”(hŒlSetting this bit causes automatic face detection to track the region of interest instead of the whole image.”h]”hŒlSetting this bit causes automatic face detection to track the region of interest instead of the whole image.”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M7hjð ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hjÍ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÆ ubjÊ )�”}”(hhh]”(jÏ )�”}”(hhh]”hÞ)�”}”(hŒ5``V4L2_UVC_REGION_OF_INTEREST_AUTO_DETECT_AND_TRACK``”h]”j~)�”}”(hj h]”hŒ1V4L2_UVC_REGION_OF_INTEREST_AUTO_DETECT_AND_TRACK”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M9hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hj ubjÏ )�”}”(hhh]”hÞ)�”}”(hŒ—Setting this bit enables automatic face detection and tracking. The current value of ``V4L2_CID_REGION_OF_INTEREST_RECT`` may be updated by the driver.”h]”(hŒUSetting this bit enables automatic face detection and tracking. The current value of ”…”�”}”(hj3 h²hh³Nh´Nubj~)�”}”(hŒ$``V4L2_CID_REGION_OF_INTEREST_RECT``”h]”hŒ V4L2_CID_REGION_OF_INTEREST_RECT”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hj3 ubhŒ may be updated by the driver.”…”�”}”(hj3 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M:hj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÆ ubjÊ )�”}”(hhh]”(jÏ )�”}”(hhh]”hÞ)�”}”(hŒ8``V4L2_UVC_REGION_OF_INTEREST_AUTO_IMAGE_STABILIZATION``”h]”j~)�”}”(hjg h]”hŒ4V4L2_UVC_REGION_OF_INTEREST_AUTO_IMAGE_STABILIZATION”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hje ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M=hjb ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hj_ ubjÏ )�”}”(hhh]”hÞ)�”}”(hŒ�Setting this bit enables automatic image stabilization. The current value of ``V4L2_CID_REGION_OF_INTEREST_RECT`` may be updated by the driver.”h]”(hŒMSetting this bit enables automatic image stabilization. The current value of ”…”�”}”(hj… h²hh³Nh´Nubj~)�”}”(hŒ$``V4L2_CID_REGION_OF_INTEREST_RECT``”h]”hŒ V4L2_CID_REGION_OF_INTEREST_RECT”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hj… ubhŒ may be updated by the driver.”…”�”}”(hj… h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M>hj‚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hj_ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÆ ubjÊ )�”}”(hhh]”(jÏ )�”}”(hhh]”hÞ)�”}”(hŒ3``V4L2_UVC_REGION_OF_INTEREST_AUTO_HIGHER_QUALITY``”h]”j~)�”}”(hj¹ h]”hŒ/V4L2_UVC_REGION_OF_INTEREST_AUTO_HIGHER_QUALITY”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}hj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MAhj´ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hj± ubjÏ )�”}”(hhh]”hÞ)�”}”(hŒdSetting this bit enables automatically capture the specified region with higher quality if possible.”h]”hŒdSetting this bit enables automatically capture the specified region with higher quality if possible.”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MBhjÔ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÎ hj± ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÆ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÄ hj« ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j© hj¦ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¤ hjSh²hh³Nh´Nubeh}”(h]”Œdriver-specific-v4l2-controls”ah ]”h"]”Œdriver-specific v4l2 controls”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Mubeh}”(h]”Œ$the-linux-usb-video-class-uvc-driver”ah ]”h"]”Œ&the linux usb video class (uvc) driver”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”jÎ Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j6 Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j j jPjMjºj·jzjwj¯j¬jÖjÓjHjEjæjãj@j=j j uŒ nametypes”}”(j ‰jP‰jº‰jz‰j¯‰jÖ‰jH‰jæ‰j@‰j ‰uh}”(j hÊjMjj·j"jwj½j¬j}jÓj²jEjÙjãjêj=jéj jSuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”hŒsystem_message”“”)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "3" (ordinal 3)”h]”hŒ>Enumerated list start value not ordinal-1: “3â€� (ordinal 3)”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjš ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1j˜ hj½h²hh³hÇh´K9ubaŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.