sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget?/translations/zh_CN/userspace-api/media/v4l/libv4l-introductionmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget?/translations/zh_TW/userspace-api/media/v4l/libv4l-introductionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget?/translations/it_IT/userspace-api/media/v4l/libv4l-introductionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget?/translations/ja_JP/userspace-api/media/v4l/libv4l-introductionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget?/translations/ko_KR/userspace-api/media/v4l/libv4l-introductionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget?/translations/sp_SP/userspace-api/media/v4l/libv4l-introductionmodnameN 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:spacepreserveuh1hhhhhhY/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/libv4l-introduction.rsthKubhtarget)}(h.. _libv4l-introduction:h]h}(h]h ]h"]h$]h&]refidlibv4l-introductionuh1hhKhhhhhhubhsection)}(hhh](htitle)}(h Introductionh]h Introduction}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hX'libv4l is a collection of libraries which adds a thin abstraction layer on top of video4linux2 devices. The purpose of this (thin) layer is to make it easy for application writers to support a wide variety of devices without having to write separate code for different devices in the same class.h]hX'libv4l is a collection of libraries which adds a thin abstraction layer on top of video4linux2 devices. The purpose of this (thin) layer is to make it easy for application writers to support a wide variety of devices without having to write separate code for different devices in the same class.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hMAn example of using libv4l is provided by :ref:`v4l2grab `.h](h*An example of using libv4l is provided by }(hhhhhNhNubh)}(h":ref:`v4l2grab `h]hinline)}(hhh]hv4l2grab}(hhhhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1hhhubah}(h]h ]h"]h$]h&]refdoc+userspace-api/media/v4l/libv4l-introduction refdomainjreftyperef refexplicitrefwarn reftargetv4l2grab-exampleuh1hhhhKhhubh.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h)libv4l consists of 3 different libraries:h]h)libv4l consists of 3 different libraries:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h libv4lconverth]h libv4lconvert}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hhhhhKubh)}(hlibv4lconvert is a library that converts several different pixelformats found in V4L2 drivers into a few common RGB and YUY formats.h]hlibv4lconvert is a library that converts several different pixelformats found in V4L2 drivers into a few common RGB and YUY formats.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj,hhubh)}(hXSIt currently accepts the following V4L2 driver formats: :ref:`V4L2_PIX_FMT_BGR24 `, :ref:`V4L2_PIX_FMT_NV12_16L16 `, :ref:`V4L2_PIX_FMT_JPEG `, :ref:`V4L2_PIX_FMT_MJPEG `, :ref:`V4L2_PIX_FMT_MR97310A `, :ref:`V4L2_PIX_FMT_OV511 `, :ref:`V4L2_PIX_FMT_OV518 `, :ref:`V4L2_PIX_FMT_PAC207 `, :ref:`V4L2_PIX_FMT_PJPG `, :ref:`V4L2_PIX_FMT_RGB24 `, :ref:`V4L2_PIX_FMT_SBGGR8 `, :ref:`V4L2_PIX_FMT_SGBRG8 `, :ref:`V4L2_PIX_FMT_SGRBG8 `, :ref:`V4L2_PIX_FMT_SN9C10X `, :ref:`V4L2_PIX_FMT_SN9C20X_I420 `, :ref:`V4L2_PIX_FMT_SPCA501 `, :ref:`V4L2_PIX_FMT_SPCA505 `, :ref:`V4L2_PIX_FMT_SPCA508 `, :ref:`V4L2_PIX_FMT_SPCA561 `, :ref:`V4L2_PIX_FMT_SQ905C `, :ref:`V4L2_PIX_FMT_SRGGB8 `, :ref:`V4L2_PIX_FMT_UYVY `, :ref:`V4L2_PIX_FMT_YUV420 `, :ref:`V4L2_PIX_FMT_YUYV `, :ref:`V4L2_PIX_FMT_YVU420 `, and :ref:`V4L2_PIX_FMT_YVYU `.h](h8It currently accepts the following V4L2 driver formats: }(hjKhhhNhNubh)}(h.:ref:`V4L2_PIX_FMT_BGR24 `h]h)}(hjUh]hV4L2_PIX_FMT_BGR24}(hjWhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjSubah}(h]h ]h"]h$]h&]refdocj  refdomainjareftyperef refexplicitrefwarnjv4l2-pix-fmt-bgr24uh1hhhhKhjKubh, }(hjKhhhNhNubh)}(h8:ref:`V4L2_PIX_FMT_NV12_16L16 `h]h)}(hjyh]hV4L2_PIX_FMT_NV12_16L16}(hj{hhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjwubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-nv12-16l16uh1hhhhKhjKubh, }hjKsbh)}(h,:ref:`V4L2_PIX_FMT_JPEG `h]h)}(hjh]hV4L2_PIX_FMT_JPEG}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-jpeguh1hhhhKhjKubh, }hjKsbh)}(h.:ref:`V4L2_PIX_FMT_MJPEG `h]h)}(hjh]hV4L2_PIX_FMT_MJPEG}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-mjpeguh1hhhhKhjKubh, }hjKsbh)}(h4:ref:`V4L2_PIX_FMT_MR97310A `h]h)}(hjh]hV4L2_PIX_FMT_MR97310A}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-mr97310auh1hhhhKhjKubh, }hjKsbh)}(h.:ref:`V4L2_PIX_FMT_OV511 `h]h)}(hj h]hV4L2_PIX_FMT_OV511}(hj hhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-ov511uh1hhhhKhjKubh, }hjKsbh)}(h.:ref:`V4L2_PIX_FMT_OV518 `h]h)}(hj-h]hV4L2_PIX_FMT_OV518}(hj/hhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhj+ubah}(h]h ]h"]h$]h&]refdocj  refdomainj9reftyperef refexplicitrefwarnjv4l2-pix-fmt-ov518uh1hhhhKhjKubh, }hjKsbh)}(h0:ref:`V4L2_PIX_FMT_PAC207 `h]h)}(hjQh]hV4L2_PIX_FMT_PAC207}(hjShhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjOubah}(h]h ]h"]h$]h&]refdocj  refdomainj]reftyperef refexplicitrefwarnjv4l2-pix-fmt-pac207uh1hhhhKhjKubh, }hjKsbh)}(h,:ref:`V4L2_PIX_FMT_PJPG `h]h)}(hjuh]hV4L2_PIX_FMT_PJPG}(hjwhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjsubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-pjpguh1hhhhKhjKubh, }hjKsbh)}(h.:ref:`V4L2_PIX_FMT_RGB24 `h]h)}(hjh]hV4L2_PIX_FMT_RGB24}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-rgb24uh1hhhhKhjKubh, }hjKsbh)}(h0:ref:`V4L2_PIX_FMT_SBGGR8 `h]h)}(hjh]hV4L2_PIX_FMT_SBGGR8}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-sbggr8uh1hhhhKhjKubh, }hjKsbh)}(h0:ref:`V4L2_PIX_FMT_SGBRG8 `h]h)}(hjh]hV4L2_PIX_FMT_SGBRG8}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-sgbrg8uh1hhhhKhjKubh, }hjKsbh)}(h0:ref:`V4L2_PIX_FMT_SGRBG8 `h]h)}(hjh]hV4L2_PIX_FMT_SGRBG8}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-sgrbg8uh1hhhhKhjKubh, }hjKsbh)}(h2:ref:`V4L2_PIX_FMT_SN9C10X `h]h)}(hj)h]hV4L2_PIX_FMT_SN9C10X}(hj+hhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhj'ubah}(h]h ]h"]h$]h&]refdocj  refdomainj5reftyperef refexplicitrefwarnjv4l2-pix-fmt-sn9c10xuh1hhhhKhjKubh, }hjKsbh)}(h<:ref:`V4L2_PIX_FMT_SN9C20X_I420 `h]h)}(hjMh]hV4L2_PIX_FMT_SN9C20X_I420}(hjOhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjKubah}(h]h ]h"]h$]h&]refdocj  refdomainjYreftyperef refexplicitrefwarnjv4l2-pix-fmt-sn9c20x-i420uh1hhhhKhjKubh, }hjKsbh)}(h2:ref:`V4L2_PIX_FMT_SPCA501 `h]h)}(hjqh]hV4L2_PIX_FMT_SPCA501}(hjshhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjoubah}(h]h ]h"]h$]h&]refdocj  refdomainj}reftyperef refexplicitrefwarnjv4l2-pix-fmt-spca501uh1hhhhKhjKubh, }hjKsbh)}(h2:ref:`V4L2_PIX_FMT_SPCA505 `h]h)}(hjh]hV4L2_PIX_FMT_SPCA505}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-spca505uh1hhhhKhjKubh, }hjKsbh)}(h2:ref:`V4L2_PIX_FMT_SPCA508 `h]h)}(hjh]hV4L2_PIX_FMT_SPCA508}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-spca508uh1hhhhKhjKubh, }hjKsbh)}(h2:ref:`V4L2_PIX_FMT_SPCA561 `h]h)}(hjh]hV4L2_PIX_FMT_SPCA561}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-spca561uh1hhhhKhjKubh, }hjKsbh)}(h0:ref:`V4L2_PIX_FMT_SQ905C `h]h)}(hjh]hV4L2_PIX_FMT_SQ905C}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainj reftyperef refexplicitrefwarnjv4l2-pix-fmt-sq905cuh1hhhhKhjKubh, }hjKsbh)}(h0:ref:`V4L2_PIX_FMT_SRGGB8 `h]h)}(hj%h]hV4L2_PIX_FMT_SRGGB8}(hj'hhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhj#ubah}(h]h ]h"]h$]h&]refdocj  refdomainj1reftyperef refexplicitrefwarnjv4l2-pix-fmt-srggb8uh1hhhhKhjKubh, }hjKsbh)}(h,:ref:`V4L2_PIX_FMT_UYVY `h]h)}(hjIh]hV4L2_PIX_FMT_UYVY}(hjKhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjGubah}(h]h ]h"]h$]h&]refdocj  refdomainjUreftyperef refexplicitrefwarnjv4l2-pix-fmt-uyvyuh1hhhhKhjKubh, }hjKsbh)}(h0:ref:`V4L2_PIX_FMT_YUV420 `h]h)}(hjmh]hV4L2_PIX_FMT_YUV420}(hjohhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjkubah}(h]h ]h"]h$]h&]refdocj  refdomainjyreftyperef refexplicitrefwarnjv4l2-pix-fmt-yuv420uh1hhhhKhjKubh, }hjKsbh)}(h,:ref:`V4L2_PIX_FMT_YUYV `h]h)}(hjh]hV4L2_PIX_FMT_YUYV}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-yuyvuh1hhhhKhjKubh, }hjKsbh)}(h0:ref:`V4L2_PIX_FMT_YVU420 `h]h)}(hjh]hV4L2_PIX_FMT_YVU420}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-yvu420uh1hhhhKhjKubh, and }(hjKhhhNhNubh)}(h,:ref:`V4L2_PIX_FMT_YVYU `h]h)}(hjh]hV4L2_PIX_FMT_YVYU}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-yvyuuh1hhhhKhjKubh.}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj,hhubh)}(hLater on libv4lconvert was expanded to also be able to do various video processing functions to improve webcam video quality. The video processing is split in to 2 parts: libv4lconvert/control and libv4lconvert/processing.h]hLater on libv4lconvert was expanded to also be able to do various video processing functions to improve webcam video quality. The video processing is split in to 2 parts: libv4lconvert/control and libv4lconvert/processing.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hj,hhubh)}(hThe control part is used to offer video controls which can be used to control the video processing functions made available by libv4lconvert/processing. These controls are stored application wide (until reboot) by using a persistent shared memory object.h]hThe control part is used to offer video controls which can be used to control the video processing functions made available by libv4lconvert/processing. These controls are stored application wide (until reboot) by using a persistent shared memory object.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK`, :ref:`VIDIOC_G_FMT `, :ref:`VIDIOC_S_FMT `, :ref:`VIDIOC_ENUM_FRAMESIZES ` and :ref:`VIDIOC_ENUM_FRAMEINTERVALS ` in order to emulate the formats :ref:`V4L2_PIX_FMT_BGR24 `, :ref:`V4L2_PIX_FMT_RGB24 `, :ref:`V4L2_PIX_FMT_YUV420 `, and :ref:`V4L2_PIX_FMT_YVU420 `, if they aren't available in the driver. :ref:`VIDIOC_ENUM_FMT ` keeps enumerating the hardware supported formats, plus the emulated formats offered by libv4l at the end.h](hlIn most cases, libv4l2 just passes the calls directly through to the v4l2 driver, intercepting the calls to }(hjhhhNhNubh)}(h$:ref:`VIDIOC_TRY_FMT `h]h)}(hjh]hVIDIOC_TRY_FMT}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj vidioc_g_fmtuh1hhhhKZhjubh, }(hjhhhNhNubh)}(h":ref:`VIDIOC_G_FMT `h]h)}(hjh]h VIDIOC_G_FMT}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj vidioc_g_fmtuh1hhhhKZhjubh, }hjsbh)}(h":ref:`VIDIOC_S_FMT `h]h)}(hjh]h VIDIOC_S_FMT}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj vidioc_g_fmtuh1hhhhKZhjubh, }hjsbh)}(h6:ref:`VIDIOC_ENUM_FRAMESIZES `h]h)}(hj h]hVIDIOC_ENUM_FRAMESIZES}(hj hhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjvidioc_enum_framesizesuh1hhhhKZhjubh and }(hjhhhNhNubh)}(h>:ref:`VIDIOC_ENUM_FRAMEINTERVALS `h]h)}(hj/h]hVIDIOC_ENUM_FRAMEINTERVALS}(hj1hhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhj-ubah}(h]h ]h"]h$]h&]refdocj  refdomainj;reftyperef refexplicitrefwarnjvidioc_enum_frameintervalsuh1hhhhKZhjubh! in order to emulate the formats }(hjhhhNhNubh)}(h.:ref:`V4L2_PIX_FMT_BGR24 `h]h)}(hjSh]hV4L2_PIX_FMT_BGR24}(hjUhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjQubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftyperef refexplicitrefwarnjv4l2-pix-fmt-bgr24uh1hhhhKZhjubh, }hjsbh)}(h.:ref:`V4L2_PIX_FMT_RGB24 `h]h)}(hjwh]hV4L2_PIX_FMT_RGB24}(hjyhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjuubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-rgb24uh1hhhhKZhjubh, }hjsbh)}(h0:ref:`V4L2_PIX_FMT_YUV420 `h]h)}(hjh]hV4L2_PIX_FMT_YUV420}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-yuv420uh1hhhhKZhjubh, and }(hjhhhNhNubh)}(h0:ref:`V4L2_PIX_FMT_YVU420 `h]h)}(hjh]hV4L2_PIX_FMT_YVU420}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjv4l2-pix-fmt-yvu420uh1hhhhKZhjubh,, if they aren’t available in the driver. }(hjhhhNhNubh)}(h(:ref:`VIDIOC_ENUM_FMT `h]h)}(hjh]hVIDIOC_ENUM_FMT}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnjvidioc_enum_fmtuh1hhhhKZhjubhj keeps enumerating the hardware supported formats, plus the emulated formats offered by libv4l at the end.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKZhjhhhubh)}(h.. _libv4l-ops:h]h}(h]h ]h"]h$]h&]h libv4l-opsuh1hhKjhjhhhhhubh)}(hhh](h)}(hLibv4l device control functionsh]hLibv4l device control functions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKmubh)}(h9The common file operation methods are provided by libv4l.h]h9The common file operation methods are provided by libv4l.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohjhhubh)}(hThose functions operate just like the gcc function ``dup()`` and V4L2 functions :c:func:`open()`, :c:func:`close()`, :c:func:`ioctl()`, :c:func:`read()`, :c:func:`mmap()` and :c:func:`munmap()`:h](h3Those functions operate just like the gcc function }(hj5hhhNhNubhliteral)}(h ``dup()``h]hdup()}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj5ubh and V4L2 functions }(hj5hhhNhNubh)}(h:c:func:`open()`h]j>)}(hjSh]hopen()}(hjUhhhNhNubah}(h]h ](hcc-funceh"]h$]h&]uh1j=hjQubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]jq ASTIdentifier)} identifierV4LsbNasbjopenuh1hhhhKqhj5ubh, }(hj5hhhNhNubh)}(h:c:func:`close()`h]j>)}(hjh]hclose()}(hjhhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hjubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjtjcloseuh1hhhhKqhj5ubh, }(hj5hhhNhNubh)}(h:c:func:`ioctl()`h]j>)}(hjh]hioctl()}(hjhhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hjubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjtjioctluh1hhhhKqhj5ubh, }hj5sbh)}(h:c:func:`read()`h]j>)}(hjh]hread()}(hjhhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hjubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjtjreaduh1hhhhKqhj5ubh, }hj5sbh)}(h:c:func:`mmap()`h]j>)}(hjh]hmmap()}(hjhhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hjubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjtjmmapuh1hhhhKqhj5ubh and }(hj5hhhNhNubh)}(h:c:func:`munmap()`h]j>)}(hjh]hmunmap()}(hjhhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hjubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjtjmunmapuh1hhhhKqhj5ubh:}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKqhjhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleV4L.v4l2_open (C function)c.V4L.v4l2_openhNtauh1j9hjhhhhhNubhdesc)}(hhh](hdesc_signature)}(h/int v4l2_open(const char *file, int oflag, ...)h]hdesc_signature_line)}(h/int v4l2_open(const char *file, int oflag, ...)h](hdesc_sig_keyword_type)}(hinth]hint}(hj]hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j[hjWhhhhhKwubhdesc_sig_space)}(h h]h }(hjnhhhNhNubah}(h]h ]wah"]h$]h&]uh1jlhjWhhhhhKwubh desc_name)}(h v4l2_openh]h desc_sig_name)}(h v4l2_openh]h v4l2_open}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1j}hjWhhhhhKwubhdesc_parameterlist)}(h"(const char *file, int oflag, ...)h](hdesc_parameter)}(hconst char *fileh](hdesc_sig_keyword)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjubj\)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjubj)}(hfileh]hfile}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int oflagh](j\)}(hinth]hint}(hj hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj ubjm)}(h h]h }(hj hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj ubj)}(hoflagh]hoflag}(hj) hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h...h]j)}(h...h]h...}(hjB hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj> ubah}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjWhhhhhKwubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1jUsphinx_line_type declaratorhjQhhhhhKwubah}(h]jHah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jOhhhKwhjLhhubh desc_content)}(hhh]h)}(h,operates like the :c:func:`open()` function.h](hoperates like the }(hjv hhhNhNubh)}(h:c:func:`open()`h]j>)}(hj h]hopen()}(hj hhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hj~ ubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjs)}jv](jzNjy)}j|jsbc.V4L.v4l2_openesbjopenuh1hhhhKhjv ubh function.}(hjv hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKyhjs hhubah}(h]h ]h"]h$]h&]uh1jq hjLhhhhhKwubeh}(h]h ](j_functioneh"]h$]h&]domainj_objtypej desctypej noindex noindexentrynocontentsentryuh1jJhhhjhhhNubj:)}(hhh]h}(h]h ]h"]h$]h&]entries](jFV4L.v4l2_close (C function)c.V4L.v4l2_closehNtauh1j9hjhhhhhNubjK)}(hhh](jP)}(hint v4l2_close(int fd)h]jV)}(hint v4l2_close(int fd)h](j\)}(hinth]hint}(hj hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj hhhhhK{ubjm)}(h h]h }(hj hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj hhhhhK{ubj~)}(h v4l2_closeh]j)}(h v4l2_closeh]h v4l2_close}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1j}hj hhhhhK{ubj)}(h(int fd)h]j)}(hint fdh](j\)}(hinth]hint}(hj hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj ubjm)}(h h]h }(hj% hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj ubj)}(hfdh]hfd}(hj3 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhhhK{ubeh}(h]h ]h"]h$]h&]hhjc uh1jUjd je hj hhhhhK{ubah}(h]j ah ](ji jj eh"]h$]h&]jn jo )jp huh1jOhhhK{hj hhubjr )}(hhh]h)}(h-operates like the :c:func:`close()` function.h](hoperates like the }(hj] hhhNhNubh)}(h:c:func:`close()`h]j>)}(hjg h]hclose()}(hji hhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hje ubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjs)}jv](jzNjy)}j|j sbc.V4L.v4l2_closeesbjcloseuh1hhhhKhj] ubh function.}(hj] hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK}hjZ hhubah}(h]h ]h"]h$]h&]uh1jq hj hhhhhK{ubeh}(h]h ](j_functioneh"]h$]h&]j j_j j j j j j j uh1jJhhhjhhhNubj:)}(hhh]h}(h]h ]h"]h$]h&]entries](jFV4L.v4l2_dup (C function)c.V4L.v4l2_duphNtauh1j9hjhhhhhNubjK)}(hhh](jP)}(hint v4l2_dup(int fd)h]jV)}(hint v4l2_dup(int fd)h](j\)}(hinth]hint}(hj hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj hhhhhKubjm)}(h h]h }(hj hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj hhhhhKubj~)}(hv4l2_duph]j)}(hv4l2_duph]hv4l2_dup}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1j}hj hhhhhKubj)}(h(int fd)h]j)}(hint fdh](j\)}(hinth]hint}(hj hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj ubjm)}(h h]h }(hj hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj ubj)}(hfdh]hfd}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhhhKubeh}(h]h ]h"]h$]h&]hhjc uh1jUjd je hj hhhhhKubah}(h]j ah ](ji jj eh"]h$]h&]jn jo )jp huh1jOhhhKhj hhubjr )}(hhh]h)}(hFoperates like the libc ``dup()`` function, duplicating a file handler.h](hoperates like the libc }(hj> hhhNhNubj>)}(h ``dup()``h]hdup()}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1j=hj> ubh& function, duplicating a file handler.}(hj> hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj; hhubah}(h]h ]h"]h$]h&]uh1jq hj hhhhhKubeh}(h]h ](j_functioneh"]h$]h&]j j_j jg j jg j j j uh1jJhhhjhhhNubj:)}(hhh]h}(h]h ]h"]h$]h&]entries](jFV4L.v4l2_ioctl (C function)c.V4L.v4l2_ioctlhNtauh1j9hjhhhhhNubjK)}(hhh](jP)}(h7int v4l2_ioctl (int fd, unsigned long int request, ...)h]jV)}(h6int v4l2_ioctl(int fd, unsigned long int request, ...)h](j\)}(hinth]hint}(hj hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj hhhhhKubjm)}(h h]h }(hj hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj hhhhhKubj~)}(h v4l2_ioctlh]j)}(h v4l2_ioctlh]h v4l2_ioctl}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1j}hj hhhhhKubj)}(h((int fd, unsigned long int request, ...)h](j)}(hint fdh](j\)}(hinth]hint}(hj hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj ubjm)}(h h]h }(hj hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj ubj)}(hfdh]hfd}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hunsigned long int requesth](j\)}(hunsignedh]hunsigned}(hj hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj ubjm)}(h h]h }(hj hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj ubj\)}(hlongh]hlong}(hj hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj ubjm)}(h h]h }(hj hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj ubj\)}(hinth]hint}(hj- hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj ubjm)}(h h]h }(hj; hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj ubj)}(hrequesth]hrequest}(hjI hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h...h]j)}(hjD h]h...}(hjb hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ ubah}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhhhKubeh}(h]h ]h"]h$]h&]hhjc uh1jUjd je hj| hhhhhKubah}(h]jw ah ](ji jj eh"]h$]h&]jn jo )jp huh1jOhhhKhjy hhubjr )}(hhh]h)}(h-operates like the :c:func:`ioctl()` function.h](hoperates like the }(hj hhhNhNubh)}(h:c:func:`ioctl()`h]j>)}(hj h]hioctl()}(hj hhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hj ubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjs)}jv](jzNjy)}j|j sbc.V4L.v4l2_ioctlesbjioctluh1hhhhKhj ubh function.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubah}(h]h ]h"]h$]h&]uh1jq hjy hhhhhKubeh}(h]h ](j_functioneh"]h$]h&]j j_j j j j j j j uh1jJhhhjhhhNubj:)}(hhh]h}(h]h ]h"]h$]h&]entries](jFV4L.v4l2_read (C function)c.V4L.v4l2_readhNtauh1j9hjhhhhhNubjK)}(hhh](jP)}(h.int v4l2_read (int fd, void* buffer, size_t n)h]jV)}(h-int v4l2_read(int fd, void *buffer, size_t n)h](j\)}(hinth]hint}(hj hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj hhhhhKubjm)}(h h]h }(hj hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj hhhhhKubj~)}(h v4l2_readh]j)}(h v4l2_readh]h v4l2_read}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1j}hj hhhhhKubj)}(h (int fd, void *buffer, size_t n)h](j)}(hint fdh](j\)}(hinth]hint}(hj& hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj" ubjm)}(h h]h }(hj4 hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj" ubj)}(hfdh]hfd}(hjB hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj" ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h void *bufferh](j\)}(hvoidh]hvoid}(hj[ hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjW ubjm)}(h h]h }(hji hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjW ubj)}(hjh]h*}(hjw hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjW ubj)}(hbufferh]hbuffer}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjW ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hsize_t nh](h)}(hhh]j)}(hsize_th]hsize_t}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj_reftypej| reftargetj modnameN classnameNjpjs)}jv](jzNjy)}j|j sbc.V4L.v4l2_readesbuh1hhj ubjm)}(h h]h }(hj hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj ubj)}(hjh]hn}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhhhKubeh}(h]h ]h"]h$]h&]hhjc uh1jUjd je hj hhhhhKubah}(h]j ah ](ji jj eh"]h$]h&]jn jo )jp huh1jOhhhKhj hhubjr )}(hhh]h)}(h,operates like the :c:func:`read()` function.h](hoperates like the }(hj hhhNhNubh)}(h:c:func:`read()`h]j>)}(hjh]hread()}(hjhhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hjubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjs)}jv](jzNj c.V4L.v4l2_readesbjreaduh1hhhhKhj ubh function.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubah}(h]h ]h"]h$]h&]uh1jq hj hhhhhKubeh}(h]h ](j_functioneh"]h$]h&]j j_j j8j j8j j j uh1jJhhhjhhhNubj:)}(hhh]h}(h]h ]h"]h$]h&]entries](jFV4L.v4l2_mmap (C function)c.V4L.v4l2_mmaphNtauh1j9hjhhhhhNubjK)}(hhh](jP)}(hYvoid *v4l2_mmap(void *start, size_t length, int prot, int flags, int fd, int64_t offset);h]jV)}(hYvoid *v4l2_mmap(void *start, size_t length, int prot, int flags, int fd, int64_t offset);h](j\)}(hvoidh]hvoid}(hjUhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjQhhhhhKubjm)}(h h]h }(hjchhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjQhhhhhKubj)}(hjh]h*}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQhhhhhKubj~)}(h v4l2_mmaph]j)}(h v4l2_mmaph]h v4l2_mmap}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubah}(h]h ](jjeh"]h$]h&]hhuh1j}hjQhhhhhKubj)}(hI(void *start, size_t length, int prot, int flags, int fd, int64_t offset)h](j)}(h void *starth](j\)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hstarth]hstart}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t lengthh](h)}(hhh]j)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj_reftypej| reftargetjmodnameN classnameNjpjs)}jv](jzNjy)}j|jsbc.V4L.v4l2_mmapesbuh1hhjubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjubj)}(hlengthh]hlength}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint proth](j\)}(hinth]hint}(hj+hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj'ubjm)}(h h]h }(hj9hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj'ubj)}(hproth]hprot}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int flagsh](j\)}(hinth]hint}(hj`hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj\ubjm)}(h h]h }(hjnhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj\ubj)}(hflagsh]hflags}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint fdh](j\)}(hinth]hint}(hjhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjubj)}(hfdh]hfd}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint64_t offseth](h)}(hhh]j)}(hint64_th]hint64_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj_reftypej| reftargetjmodnameN classnameNjpjs)}jv](jzNjc.V4L.v4l2_mmapesbuh1hhjubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjubj)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjQhhhhhKubj)}(h;h]h;}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQhhhhhKubeh}(h]h ]h"]h$]h&]hhjc uh1jUjd je hjMhhhhhKubah}(h]jHah ](ji jj eh"]h$]h&]jn jo )jp huh1jOhhhKhjJhhubjr )}(hhh]h)}(h,operates like the :c:func:`mmap()` function.h](hoperates like the }(hj2hhhNhNubh)}(h:c:func:`mmap()`h]j>)}(hj<h]hmmap()}(hj>hhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hj:ubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjs)}jv](jzNjc.V4L.v4l2_mmapesbjmmapuh1hhhhKhj2ubh function.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj/hhubah}(h]h ]h"]h$]h&]uh1jq hjJhhhhhKubeh}(h]h ](j_functioneh"]h$]h&]j j_j jrj jrj j j uh1jJhhhjhhhNubj:)}(hhh]h}(h]h ]h"]h$]h&]entries](jFV4L.v4l2_munmap (C function)c.V4L.v4l2_munmaphNtauh1j9hjhhhhhNubjK)}(hhh](jP)}(h-int v4l2_munmap(void *_start, size_t length);h]jV)}(h-int v4l2_munmap(void *_start, size_t length);h](j\)}(hinth]hint}(hjhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjhhhhhKubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjhhhhhKubj~)}(h v4l2_munmaph]j)}(h v4l2_munmaph]h v4l2_munmap}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1j}hjhhhhhKubj)}(h(void *_start, size_t length)h](j)}(h void *_starth](j\)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h_starth]h_start}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h size_t lengthh](h)}(hhh]j)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj_reftypej| reftargetjmodnameN classnameNjpjs)}jv](jzNjy)}j|jsbc.V4L.v4l2_munmapesbuh1hhj ubjm)}(h h]h }(hj1hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj ubj)}(hlengthh]hlength}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhhKubj)}(hjh]h;}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]hhjc uh1jUjd je hjhhhhhKubah}(h]jah ](ji jj eh"]h$]h&]jn jo )jp huh1jOhhhKhjhhubjr )}(hhh]h)}(h.operates like the :c:func:`munmap()` function.h](hoperates like the }(hjvhhhNhNubh)}(h:c:func:`munmap()`h]j>)}(hjh]hmunmap()}(hjhhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hj~ubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjs)}jv](jzNj-c.V4L.v4l2_munmapesbjmunmapuh1hhhhKhjvubh function.}(hjvhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjshhubah}(h]h ]h"]h$]h&]uh1jq hjhhhhhKubeh}(h]h ](j_functioneh"]h$]h&]j j_j jj jj j j uh1jJhhhjhhhNubh)}(h+Those functions provide additional control:h]h+Those functions provide additional control:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj:)}(hhh]h}(h]h ]h"]h$]h&]entries](jFV4L.v4l2_fd_open (C function)c.V4L.v4l2_fd_openhNtauh1j9hjhhhhhNubjK)}(hhh](jP)}(h(int v4l2_fd_open(int fd, int v4l2_flags)h]jV)}(h(int v4l2_fd_open(int fd, int v4l2_flags)h](j\)}(hinth]hint}(hjhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjhhhhhKubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjhhhhhKubj~)}(h v4l2_fd_openh]j)}(h v4l2_fd_openh]h v4l2_fd_open}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1j}hjhhhhhKubj)}(h(int fd, int v4l2_flags)h](j)}(hint fdh](j\)}(hinth]hint}(hjhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjubjm)}(h h]h }(hj+hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjubj)}(hfdh]hfd}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint v4l2_flagsh](j\)}(hinth]hint}(hjRhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjNubjm)}(h h]h }(hj`hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjNubj)}(h v4l2_flagsh]h v4l2_flags}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]hhjc uh1jUjd je hjhhhhhKubah}(h]jah ](ji jj eh"]h$]h&]jn jo )jp huh1jOhhhKhjhhubjr )}(hhh]h)}(hopens an already opened fd for further use through v4l2lib and possibly modify libv4l2's default behavior through the ``v4l2_flags`` argument. Currently, ``v4l2_flags`` can be ``V4L2_DISABLE_CONVERSION``, to disable format conversion.h](hxopens an already opened fd for further use through v4l2lib and possibly modify libv4l2’s default behavior through the }(hjhhhNhNubj>)}(h``v4l2_flags``h]h v4l2_flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjubh argument. Currently, }(hjhhhNhNubj>)}(h``v4l2_flags``h]h v4l2_flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjubh can be }(hjhhhNhNubj>)}(h``V4L2_DISABLE_CONVERSION``h]hV4L2_DISABLE_CONVERSION}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjubh, to disable format conversion.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubah}(h]h ]h"]h$]h&]uh1jq hjhhhhhKubeh}(h]h ](j_functioneh"]h$]h&]j j_j jj jj j j uh1jJhhhjhhhNubj:)}(hhh]h}(h]h ]h"]h$]h&]entries](jF!V4L.v4l2_set_control (C function)c.V4L.v4l2_set_controlhNtauh1j9hjhhhhhNubjK)}(hhh](jP)}(h0int v4l2_set_control(int fd, int cid, int value)h]jV)}(h0int v4l2_set_control(int fd, int cid, int value)h](j\)}(hinth]hint}(hjhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjhhhhhKubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjhhhhhKubj~)}(hv4l2_set_controlh]j)}(hv4l2_set_controlh]hv4l2_set_control}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1j}hjhhhhhKubj)}(h(int fd, int cid, int value)h](j)}(hint fdh](j\)}(hinth]hint}(hj>hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hj:ubjm)}(h h]h }(hjLhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhj:ubj)}(hfdh]hfd}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(hint cidh](j\)}(hinth]hint}(hjshhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjoubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjoubj)}(hcidh]hcid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(h int valueh](j\)}(hinth]hint}(hjhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjubj)}(hvalueh]hvalue}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]hhjc uh1jUjd je hjhhhhhKubah}(h]jah ](ji jj eh"]h$]h&]jn jo )jp huh1jOhhhKhjhhubjr )}(hhh]h)}(hThis function takes a value of 0 - 65535, and then scales that range to the actual range of the given v4l control id, and then if the cid exists and is not locked sets the cid to the scaled value.h]hThis function takes a value of 0 - 65535, and then scales that range to the actual range of the given v4l control id, and then if the cid exists and is not locked sets the cid to the scaled value.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubah}(h]h ]h"]h$]h&]uh1jq hjhhhhhKubeh}(h]h ](j_functioneh"]h$]h&]j j_j jj jj j j uh1jJhhhjhhhNubj:)}(hhh]h}(h]h ]h"]h$]h&]entries](jF!V4L.v4l2_get_control (C function)c.V4L.v4l2_get_controlhNtauh1j9hjhhhhhNubjK)}(hhh](jP)}(h%int v4l2_get_control(int fd, int cid)h]jV)}(h%int v4l2_get_control(int fd, int cid)h](j\)}(hinth]hint}(hj"hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjhhhhhKubjm)}(h h]h }(hj0hhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjhhhhhKubj~)}(hv4l2_get_controlh]j)}(hv4l2_get_controlh]hv4l2_get_control}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubah}(h]h ](jjeh"]h$]h&]hhuh1j}hjhhhhhKubj)}(h(int fd, int cid)h](j)}(hint fdh](j\)}(hinth]hint}(hj^hhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjZubjm)}(h h]h }(hjlhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjZubj)}(hfdh]hfd}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubj)}(hint cidh](j\)}(hinth]hint}(hjhhhNhNubah}(h]h ]jhah"]h$]h&]uh1j[hjubjm)}(h h]h }(hjhhhNhNubah}(h]h ]jyah"]h$]h&]uh1jlhjubj)}(hcidh]hcid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]hhjc uh1jUjd je hjhhhhhKubah}(h]jah ](ji jj eh"]h$]h&]jn jo )jp huh1jOhhhKhjhhubjr )}(hhh]h)}(hThis function returns a value of 0 - 65535, scaled to from the actual range of the given v4l control id. when the cid does not exist, could not be accessed for some reason, or some error occurred 0 is returned.h]hThis function returns a value of 0 - 65535, scaled to from the actual range of the given v4l control id. when the cid does not exist, could not be accessed for some reason, or some error occurred 0 is returned.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubah}(h]h ]h"]h$]h&]uh1jq hjhhhhhKubeh}(h]h ](j_functioneh"]h$]h&]j j_j jj jj j j uh1jJhhhjhhhNubeh}(h](libv4l-device-control-functionsjeh ]h"](libv4l device control functions libv4l-opseh$]h&]uh1hhjhhhhhhKmexpect_referenced_by_name}jj sexpect_referenced_by_id}jj subeh}(h]libv4l2ah ]h"]libv4l2ah$]h&]uh1hhhhhhhhKQubh)}(hhh](h)}(hv4l1compat.so wrapper libraryh]hv4l1compat.so wrapper library}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(hXThis library intercepts calls to :c:func:`open()`, :c:func:`close()`, :c:func:`ioctl()`, :c:func:`mmap()` and :c:func:`munmap()` operations and redirects them to the libv4l counterparts, by using ``LD_PRELOAD=/usr/lib/v4l1compat.so``. It also emulates V4L1 calls via V4L2 API.h](h!This library intercepts calls to }(hjhhhNhNubh)}(h:c:func:`open()`h]j>)}(hj$h]hopen()}(hj&hhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hj"ubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjtjopenuh1hhhhKhjubh, }(hjhhhNhNubh)}(h:c:func:`close()`h]j>)}(hjGh]hclose()}(hjIhhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hjEubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjtjcloseuh1hhhhKhjubh, }(hjhhhNhNubh)}(h:c:func:`ioctl()`h]j>)}(hjjh]hioctl()}(hjlhhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hjhubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjtjioctluh1hhhhKhjubh, }hjsbh)}(h:c:func:`mmap()`h]j>)}(hjh]hmmap()}(hjhhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hjubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjtjmmapuh1hhhhKhjubh and }(hjhhhNhNubh)}(h:c:func:`munmap()`h]j>)}(hjh]hmunmap()}(hjhhhNhNubah}(h]h ](hj_c-funceh"]h$]h&]uh1j=hjubah}(h]h ]h"]h$]h&]refdocj  refdomainj_reftypefunc refexplicitrefwarnjpjtjmunmapuh1hhhhKhjubhD operations and redirects them to the libv4l counterparts, by using }(hjhhhNhNubj>)}(h%``LD_PRELOAD=/usr/lib/v4l1compat.so``h]h!LD_PRELOAD=/usr/lib/v4l1compat.so}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j=hjubh+. It also emulates V4L1 calls via V4L2 API.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hJIt allows usage of binary legacy applications that still don't use libv4l.h]hLIt allows usage of binary legacy applications that still don’t use libv4l.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubeh}(h]v4l1compat-so-wrapper-libraryah ]h"]v4l1compat.so wrapper libraryah$]h&]uh1hhhhhhhhKubeh}(h]( introductionheh ]h"]( introductionlibv4l-introductioneh$]h&]uh1hhhhhhhhKj}jhsj}hhsubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj-error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}(h]haj]j aunameids}(jhjjj0j-jejbjjjjjjjju nametypes}(jjj0jejjjjuh}(hhjhj-j,jbj3jjhjjjjjHjQj j j j jw j| j j jHjMjjjjjjjjjj u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages](hsystem_message)}(hhh]h)}(hhh]h9Hyperlink target "libv4l-introduction" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineKuh1jubj)}(hhh]h)}(hhh]h0Hyperlink target "libv4l-ops" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKjuh1jube transformerN include_log] decorationNhhub.