Jsphinx.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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget?/translations/pt_BR/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)}(hjh]hv4l2grab}(hj hhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1jhjubah}(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:}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h libv4lconverth]h libv4lconvert}(hjChhhNhNubah}(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.}(hjQhhhNhNubah}(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: }(hj_hhhNhNubh)}(h.:ref:`V4L2_PIX_FMT_BGR24 `h]j)}(hjih]hV4L2_PIX_FMT_BGR24}(hjkhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]refdocj  refdomainjureftyperef refexplicitrefwarnj&v4l2-pix-fmt-bgr24uh1hhhhKhj_ubh, }(hj_hhhNhNubh)}(h8:ref:`V4L2_PIX_FMT_NV12_16L16 `h]j)}(hjh]hV4L2_PIX_FMT_NV12_16L16}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-nv12-16l16uh1hhhhKhj_ubh, }hj_sbh)}(h,:ref:`V4L2_PIX_FMT_JPEG `h]j)}(hjh]hV4L2_PIX_FMT_JPEG}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-jpeguh1hhhhKhj_ubh, }hj_sbh)}(h.:ref:`V4L2_PIX_FMT_MJPEG `h]j)}(hjh]hV4L2_PIX_FMT_MJPEG}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-mjpeguh1hhhhKhj_ubh, }hj_sbh)}(h4:ref:`V4L2_PIX_FMT_MR97310A `h]j)}(hjh]hV4L2_PIX_FMT_MR97310A}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-mr97310auh1hhhhKhj_ubh, }hj_sbh)}(h.:ref:`V4L2_PIX_FMT_OV511 `h]j)}(hjh]hV4L2_PIX_FMT_OV511}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainj)reftyperef refexplicitrefwarnj&v4l2-pix-fmt-ov511uh1hhhhKhj_ubh, }hj_sbh)}(h.:ref:`V4L2_PIX_FMT_OV518 `h]j)}(hjAh]hV4L2_PIX_FMT_OV518}(hjChhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]refdocj  refdomainjMreftyperef refexplicitrefwarnj&v4l2-pix-fmt-ov518uh1hhhhKhj_ubh, }hj_sbh)}(h0:ref:`V4L2_PIX_FMT_PAC207 `h]j)}(hjeh]hV4L2_PIX_FMT_PAC207}(hjghhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]refdocj  refdomainjqreftyperef refexplicitrefwarnj&v4l2-pix-fmt-pac207uh1hhhhKhj_ubh, }hj_sbh)}(h,:ref:`V4L2_PIX_FMT_PJPG `h]j)}(hjh]hV4L2_PIX_FMT_PJPG}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-pjpguh1hhhhKhj_ubh, }hj_sbh)}(h.:ref:`V4L2_PIX_FMT_RGB24 `h]j)}(hjh]hV4L2_PIX_FMT_RGB24}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-rgb24uh1hhhhKhj_ubh, }hj_sbh)}(h0:ref:`V4L2_PIX_FMT_SBGGR8 `h]j)}(hjh]hV4L2_PIX_FMT_SBGGR8}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-sbggr8uh1hhhhKhj_ubh, }hj_sbh)}(h0:ref:`V4L2_PIX_FMT_SGBRG8 `h]j)}(hjh]hV4L2_PIX_FMT_SGBRG8}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-sgbrg8uh1hhhhKhj_ubh, }hj_sbh)}(h0:ref:`V4L2_PIX_FMT_SGRBG8 `h]j)}(hjh]hV4L2_PIX_FMT_SGRBG8}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainj%reftyperef refexplicitrefwarnj&v4l2-pix-fmt-sgrbg8uh1hhhhKhj_ubh, }hj_sbh)}(h2:ref:`V4L2_PIX_FMT_SN9C10X `h]j)}(hj=h]hV4L2_PIX_FMT_SN9C10X}(hj?hhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]refdocj  refdomainjIreftyperef refexplicitrefwarnj&v4l2-pix-fmt-sn9c10xuh1hhhhKhj_ubh, }hj_sbh)}(h<:ref:`V4L2_PIX_FMT_SN9C20X_I420 `h]j)}(hjah]hV4L2_PIX_FMT_SN9C20X_I420}(hjchhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]refdocj  refdomainjmreftyperef refexplicitrefwarnj&v4l2-pix-fmt-sn9c20x-i420uh1hhhhKhj_ubh, }hj_sbh)}(h2:ref:`V4L2_PIX_FMT_SPCA501 `h]j)}(hjh]hV4L2_PIX_FMT_SPCA501}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-spca501uh1hhhhKhj_ubh, }hj_sbh)}(h2:ref:`V4L2_PIX_FMT_SPCA505 `h]j)}(hjh]hV4L2_PIX_FMT_SPCA505}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-spca505uh1hhhhKhj_ubh, }hj_sbh)}(h2:ref:`V4L2_PIX_FMT_SPCA508 `h]j)}(hjh]hV4L2_PIX_FMT_SPCA508}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-spca508uh1hhhhKhj_ubh, }hj_sbh)}(h2:ref:`V4L2_PIX_FMT_SPCA561 `h]j)}(hjh]hV4L2_PIX_FMT_SPCA561}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-spca561uh1hhhhKhj_ubh, }hj_sbh)}(h0:ref:`V4L2_PIX_FMT_SQ905C `h]j)}(hjh]hV4L2_PIX_FMT_SQ905C}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainj!reftyperef refexplicitrefwarnj&v4l2-pix-fmt-sq905cuh1hhhhKhj_ubh, }hj_sbh)}(h0:ref:`V4L2_PIX_FMT_SRGGB8 `h]j)}(hj9h]hV4L2_PIX_FMT_SRGGB8}(hj;hhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]refdocj  refdomainjEreftyperef refexplicitrefwarnj&v4l2-pix-fmt-srggb8uh1hhhhKhj_ubh, }hj_sbh)}(h,:ref:`V4L2_PIX_FMT_UYVY `h]j)}(hj]h]hV4L2_PIX_FMT_UYVY}(hj_hhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]refdocj  refdomainjireftyperef refexplicitrefwarnj&v4l2-pix-fmt-uyvyuh1hhhhKhj_ubh, }hj_sbh)}(h0:ref:`V4L2_PIX_FMT_YUV420 `h]j)}(hjh]hV4L2_PIX_FMT_YUV420}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-yuv420uh1hhhhKhj_ubh, }hj_sbh)}(h,:ref:`V4L2_PIX_FMT_YUYV `h]j)}(hjh]hV4L2_PIX_FMT_YUYV}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-yuyvuh1hhhhKhj_ubh, }hj_sbh)}(h0:ref:`V4L2_PIX_FMT_YVU420 `h]j)}(hjh]hV4L2_PIX_FMT_YVU420}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-yvu420uh1hhhhKhj_ubh, and }(hj_hhhNhNubh)}(h,:ref:`V4L2_PIX_FMT_YVYU `h]j)}(hjh]hV4L2_PIX_FMT_YVYU}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-yvyuuh1hhhhKhj_ubh.}(hj_hhhNhNubeh}(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.}(hj#hhhNhNubah}(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]j)}(hjh]hVIDIOC_TRY_FMT}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj& vidioc_g_fmtuh1hhhhKZhjubh, }(hjhhhNhNubh)}(h":ref:`VIDIOC_G_FMT `h]j)}(hjh]h VIDIOC_G_FMT}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj& vidioc_g_fmtuh1hhhhKZhjubh, }hjsbh)}(h":ref:`VIDIOC_S_FMT `h]j)}(hjh]h VIDIOC_S_FMT}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj& vidioc_g_fmtuh1hhhhKZhjubh, }hjsbh)}(h6:ref:`VIDIOC_ENUM_FRAMESIZES `h]j)}(hjh]hVIDIOC_ENUM_FRAMESIZES}(hj!hhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainj+reftyperef refexplicitrefwarnj&vidioc_enum_framesizesuh1hhhhKZhjubh and }(hjhhhNhNubh)}(h>:ref:`VIDIOC_ENUM_FRAMEINTERVALS `h]j)}(hjCh]hVIDIOC_ENUM_FRAMEINTERVALS}(hjEhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]refdocj  refdomainjOreftyperef refexplicitrefwarnj&vidioc_enum_frameintervalsuh1hhhhKZhjubh! in order to emulate the formats }(hjhhhNhNubh)}(h.:ref:`V4L2_PIX_FMT_BGR24 `h]j)}(hjgh]hV4L2_PIX_FMT_BGR24}(hjihhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftyperef refexplicitrefwarnj&v4l2-pix-fmt-bgr24uh1hhhhKZhjubh, }hjsbh)}(h.:ref:`V4L2_PIX_FMT_RGB24 `h]j)}(hjh]hV4L2_PIX_FMT_RGB24}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-rgb24uh1hhhhKZhjubh, }hjsbh)}(h0:ref:`V4L2_PIX_FMT_YUV420 `h]j)}(hjh]hV4L2_PIX_FMT_YUV420}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-yuv420uh1hhhhKZhjubh, and }(hjhhhNhNubh)}(h0:ref:`V4L2_PIX_FMT_YVU420 `h]j)}(hjh]hV4L2_PIX_FMT_YVU420}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&v4l2-pix-fmt-yvu420uh1hhhhKZhjubh,, if they aren’t available in the driver. }(hjhhhNhNubh)}(h(:ref:`VIDIOC_ENUM_FMT `h]j)}(hjh]hVIDIOC_ENUM_FMT}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjreftyperef refexplicitrefwarnj&vidioc_enum_fmtuh1hhhhKZhjubhj keeps enumerating the hardware supported formats, plus the emulated formats offered by libv4l at the end.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKZhj|hhubh)}(h.. _libv4l-ops:h]h}(h]h ]h"]h$]h&]hԌ libv4l-opsuh1hhKjhj|hhhhubh)}(hhh](h)}(hLibv4l device control functionsh]hLibv4l device control functions}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hhhhhKmubh)}(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&]uh1hhhhKohj*hhubh)}(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 }(hjIhhhNhNubhliteral)}(h ``dup()``h]hdup()}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjIubh and V4L2 functions }(hjIhhhNhNubh)}(h:c:func:`open()`h]jR)}(hjgh]hopen()}(hjihhhNhNubah}(h]h ](jcc-funceh"]h$]h&]uh1jQhjeubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)} identifierV4LsbNasbj&openuh1hhhhKqhjIubh, }(hjIhhhNhNubh)}(h:c:func:`close()`h]jR)}(hjh]hclose()}(hjhhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjjj&closeuh1hhhhKqhjIubh, }(hjIhhhNhNubh)}(h:c:func:`ioctl()`h]jR)}(hjh]hioctl()}(hjhhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjjj&ioctluh1hhhhKqhjIubh, }hjIsbh)}(h:c:func:`read()`h]jR)}(hjh]hread()}(hjhhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjjj&readuh1hhhhKqhjIubh, }hjIsbh)}(h:c:func:`mmap()`h]jR)}(hjh]hmmap()}(hjhhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjjj&mmapuh1hhhhKqhjIubh and }(hjIhhhNhNubh)}(h:c:func:`munmap()`h]jR)}(hj&h]hmunmap()}(hj(hhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhj$ubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjjj&munmapuh1hhhhKqhjIubh:}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKqhj*hhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleV4L.v4l2_open (C function)c.V4L.v4l2_openhNtauh1jMhj*hhhhhNubhdesc)}(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}(hjqhhhNhNubah}(h]h ]ktah"]h$]h&]uh1johjkhhhhhKwubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjkhhhhhKwubh 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&]hhuh1jhjkhhhhhKwubhdesc_parameterlist)}(h"(const char *file, int oflag, ...)h](hdesc_parameter)}(hconst char *fileh](hdesc_sig_keyword)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjp)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjubj)}(hfileh]hfile}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int oflagh](jp)}(hinth]hint}(hj! hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj ubj)}(h h]h }(hj/ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hoflagh]hoflag}(hj= hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h...h]j)}(h...h]h...}(hjV hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjR ubah}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjkhhhhhKwubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jisphinx_line_type declaratorhjehhhhhKwubah}(h]j\ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jchhhKwhj`hhubh desc_content)}(hhh]h)}(h,operates like the :c:func:`open()` function.h](hoperates like the }(hj hhhNhNubh)}(h:c:func:`open()`h]jR)}(hj h]hopen()}(hj hhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhj ubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjj)}j](jNj)}jjsbc.V4L.v4l2_openesbj&openuh1hhhhKhj ubh function.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKyhj hhubah}(h]h ]h"]h$]h&]uh1j hj`hhhhhKwubeh}(h]h ](jsfunctioneh"]h$]h&]domainjsobjtypej desctypej noindex noindexentrynocontentsentryuh1j^hhhj*hhhNubjN)}(hhh]h}(h]h ]h"]h$]h&]entries](jZV4L.v4l2_close (C function)c.V4L.v4l2_closehNtauh1jMhj*hhhhhNubj_)}(hhh](jd)}(hint v4l2_close(int fd)h]jj)}(hint v4l2_close(int fd)h](jp)}(hinth]hint}(hj hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj hhhhhK{ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 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&]hhuh1jhj hhhhhK{ubj)}(h(int fd)h]j)}(hint fdh](jp)}(hinth]hint}(hj+ hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj' ubj)}(h h]h }(hj9 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj' ubj)}(hfdh]hfd}(hjG 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&]hhjw uh1jijx jy hj hhhhhK{ubah}(h]j ah ](j} j~ eh"]h$]h&]j j )j huh1jchhhK{hj hhubj )}(hhh]h)}(h-operates like the :c:func:`close()` function.h](hoperates like the }(hjq hhhNhNubh)}(h:c:func:`close()`h]jR)}(hj{ h]hclose()}(hj} hhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhjy ubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjj)}j](jNj)}jj sbc.V4L.v4l2_closeesbj&closeuh1hhhhKhjq ubh function.}(hjq hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK}hjn hhubah}(h]h ]h"]h$]h&]uh1j hj hhhhhK{ubeh}(h]h ](jsfunctioneh"]h$]h&]j jsj j j j j j j uh1j^hhhj*hhhNubjN)}(hhh]h}(h]h ]h"]h$]h&]entries](jZV4L.v4l2_dup (C function)c.V4L.v4l2_duphNtauh1jMhj*hhhhhNubj_)}(hhh](jd)}(hint v4l2_dup(int fd)h]jj)}(hint v4l2_dup(int fd)h](jp)}(hinth]hint}(hj hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj hhhhhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhhhKubj)}(hv4l2_duph]j)}(hv4l2_duph]hv4l2_dup}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhhhhKubj)}(h(int fd)h]j)}(hint fdh](jp)}(hinth]hint}(hj hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 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&]hhjw uh1jijx jy hj hhhhhKubah}(h]j ah ](j} j~ eh"]h$]h&]j j )j huh1jchhhKhj hhubj )}(hhh]h)}(hFoperates like the libc ``dup()`` function, duplicating a file handler.h](hoperates like the libc }(hjR hhhNhNubjR)}(h ``dup()``h]hdup()}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjR ubh& function, duplicating a file handler.}(hjR hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjO hhubah}(h]h ]h"]h$]h&]uh1j hj hhhhhKubeh}(h]h ](jsfunctioneh"]h$]h&]j jsj j{ j j{ j j j uh1j^hhhj*hhhNubjN)}(hhh]h}(h]h ]h"]h$]h&]entries](jZV4L.v4l2_ioctl (C function)c.V4L.v4l2_ioctlhNtauh1jMhj*hhhhhNubj_)}(hhh](jd)}(h7int v4l2_ioctl (int fd, unsigned long int request, ...)h]jj)}(h6int v4l2_ioctl(int fd, unsigned long int request, ...)h](jp)}(hinth]hint}(hj hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj hhhhhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 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&]hhuh1jhj hhhhhKubj)}(h((int fd, unsigned long int request, ...)h](j)}(hint fdh](jp)}(hinth]hint}(hj hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hfdh]hfd}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hunsigned long int requesth](jp)}(hunsignedh]hunsigned}(hj hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjp)}(hlongh]hlong}(hj% hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj ubj)}(h h]h }(hj3 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjp)}(hinth]hint}(hjA hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj ubj)}(h h]h }(hjO hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hrequesth]hrequest}(hj] hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h...h]j)}(hjX h]h...}(hjv hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjr ubah}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhhhKubeh}(h]h ]h"]h$]h&]hhjw uh1jijx jy hj hhhhhKubah}(h]j ah ](j} j~ eh"]h$]h&]j j )j huh1jchhhKhj hhubj )}(hhh]h)}(h-operates like the :c:func:`ioctl()` function.h](hoperates like the }(hj hhhNhNubh)}(h:c:func:`ioctl()`h]jR)}(hj h]hioctl()}(hj hhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhj ubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjj)}j](jNj)}jj sbc.V4L.v4l2_ioctlesbj&ioctluh1hhhhKhj ubh function.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubah}(h]h ]h"]h$]h&]uh1j hj hhhhhKubeh}(h]h ](jsfunctioneh"]h$]h&]j jsj j j j j j j uh1j^hhhj*hhhNubjN)}(hhh]h}(h]h ]h"]h$]h&]entries](jZV4L.v4l2_read (C function)c.V4L.v4l2_readhNtauh1jMhj*hhhhhNubj_)}(hhh](jd)}(h.int v4l2_read (int fd, void* buffer, size_t n)h]jj)}(h-int v4l2_read(int fd, void *buffer, size_t n)h](jp)}(hinth]hint}(hj hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj hhhhhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 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&]hhuh1jhj hhhhhKubj)}(h (int fd, void *buffer, size_t n)h](j)}(hint fdh](jp)}(hinth]hint}(hj: hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj6 ubj)}(h h]h }(hjH hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6 ubj)}(hfdh]hfd}(hjV hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6 ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2 ubj)}(h void *bufferh](jp)}(hvoidh]hvoid}(hjo hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjk ubj)}(h h]h }(hj} hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjk ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjk ubj)}(hbufferh]hbuffer}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjk ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2 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&] refdomainjsreftypej reftargetj modnameN classnameNjj)}j](jNj)}jj sbc.V4L.v4l2_readesbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]hn}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2 ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhhhKubeh}(h]h ]h"]h$]h&]hhjw uh1jijx jy hj hhhhhKubah}(h]j ah ](j} j~ eh"]h$]h&]j j )j huh1jchhhKhj hhubj )}(hhh]h)}(h,operates like the :c:func:`read()` function.h](hoperates like the }(hj hhhNhNubh)}(h:c:func:`read()`h]jR)}(hjh]hread()}(hjhhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjj)}j](jNj c.V4L.v4l2_readesbj&readuh1hhhhKhj ubh function.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubah}(h]h ]h"]h$]h&]uh1j hj hhhhhKubeh}(h]h ](jsfunctioneh"]h$]h&]j jsj jLj jLj j j uh1j^hhhj*hhhNubjN)}(hhh]h}(h]h ]h"]h$]h&]entries](jZV4L.v4l2_mmap (C function)c.V4L.v4l2_mmaphNtauh1jMhj*hhhhhNubj_)}(hhh](jd)}(hYvoid *v4l2_mmap(void *start, size_t length, int prot, int flags, int fd, int64_t offset);h]jj)}(hYvoid *v4l2_mmap(void *start, size_t length, int prot, int flags, int fd, int64_t offset);h](jp)}(hvoidh]hvoid}(hjihhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjehhhhhKubj)}(h h]h }(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjehhhhhKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjehhhhhKubj)}(h v4l2_mmaph]j)}(h v4l2_mmaph]h v4l2_mmap}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjehhhhhKubj)}(hI(void *start, size_t length, int prot, int flags, int fd, int64_t offset)h](j)}(h void *starth](jp)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j ah"]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&] refdomainjsreftypej reftargetjmodnameN classnameNjj)}j](jNj)}jjsbc.V4L.v4l2_mmapesbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hlengthh]hlength}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint proth](jp)}(hinth]hint}(hj?hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj;ubj)}(h h]h }(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubj)}(hproth]hprot}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h int flagsh](jp)}(hinth]hint}(hjthhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjpubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint fdh](jp)}(hinth]hint}(hjhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(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&] refdomainjsreftypej reftargetjmodnameN classnameNjj)}j](jNjc.V4L.v4l2_mmapesbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjehhhhhKubj)}(h;h]h;}(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjehhhhhKubeh}(h]h ]h"]h$]h&]hhjw uh1jijx jy hjahhhhhKubah}(h]j\ah ](j} j~ eh"]h$]h&]j j )j huh1jchhhKhj^hhubj )}(hhh]h)}(h,operates like the :c:func:`mmap()` function.h](hoperates like the }(hjFhhhNhNubh)}(h:c:func:`mmap()`h]jR)}(hjPh]hmmap()}(hjRhhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhjNubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjj)}j](jNjc.V4L.v4l2_mmapesbj&mmapuh1hhhhKhjFubh function.}(hjFhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjChhubah}(h]h ]h"]h$]h&]uh1j hj^hhhhhKubeh}(h]h ](jsfunctioneh"]h$]h&]j jsj jj jj j j uh1j^hhhj*hhhNubjN)}(hhh]h}(h]h ]h"]h$]h&]entries](jZV4L.v4l2_munmap (C function)c.V4L.v4l2_munmaphNtauh1jMhj*hhhhhNubj_)}(hhh](jd)}(h-int v4l2_munmap(void *_start, size_t length);h]jj)}(h-int v4l2_munmap(void *_start, size_t length);h](jp)}(hinth]hint}(hjhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjhhhhhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubj)}(h v4l2_munmaph]j)}(h v4l2_munmaph]h v4l2_munmap}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhhhKubj)}(h(void *_start, size_t length)h](j)}(h void *_starth](jp)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]j ah"]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}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetj&modnameN classnameNjj)}j](jNj)}jjsbc.V4L.v4l2_munmapesbuh1hhjubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hlengthh]hlength}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhhKubj)}(hj+h]h;}(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]hhjw uh1jijx jy hjhhhhhKubah}(h]jah ](j} j~ eh"]h$]h&]j j )j huh1jchhhKhjhhubj )}(hhh]h)}(h.operates like the :c:func:`munmap()` function.h](hoperates like the }(hjhhhNhNubh)}(h:c:func:`munmap()`h]jR)}(hjh]hmunmap()}(hjhhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjj)}j](jNjAc.V4L.v4l2_munmapesbj&munmapuh1hhhhKhjubh function.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhhhKubeh}(h]h ](jsfunctioneh"]h$]h&]j jsj jj jj j j uh1j^hhhj*hhhNubh)}(h+Those functions provide additional control:h]h+Those functions provide additional control:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj*hhubjN)}(hhh]h}(h]h ]h"]h$]h&]entries](jZV4L.v4l2_fd_open (C function)c.V4L.v4l2_fd_openhNtauh1jMhj*hhhhhNubj_)}(hhh](jd)}(h(int v4l2_fd_open(int fd, int v4l2_flags)h]jj)}(h(int v4l2_fd_open(int fd, int v4l2_flags)h](jp)}(hinth]hint}(hjhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjhhhhhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubj)}(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&]hhuh1jhjhhhhhKubj)}(h(int fd, int v4l2_flags)h](j)}(hint fdh](jp)}(hinth]hint}(hj1hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj-ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubj)}(hfdh]hfd}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubj)}(hint v4l2_flagsh](jp)}(hinth]hint}(hjfhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjbubj)}(h h]h }(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubj)}(h v4l2_flagsh]h v4l2_flags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]hhjw uh1jijx jy hjhhhhhKubah}(h]jah ](j} j~ eh"]h$]h&]j j )j huh1jchhhKhjhhubj )}(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 }(hjhhhNhNubjR)}(h``v4l2_flags``h]h v4l2_flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjubh argument. Currently, }(hjhhhNhNubjR)}(h``v4l2_flags``h]h v4l2_flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjubh can be }(hjhhhNhNubjR)}(h``V4L2_DISABLE_CONVERSION``h]hV4L2_DISABLE_CONVERSION}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jQhjubh, to disable format conversion.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhhhKubeh}(h]h ](jsfunctioneh"]h$]h&]j jsj jj jj j j uh1j^hhhj*hhhNubjN)}(hhh]h}(h]h ]h"]h$]h&]entries](jZ!V4L.v4l2_set_control (C function)c.V4L.v4l2_set_controlhNtauh1jMhj*hhhhhNubj_)}(hhh](jd)}(h0int v4l2_set_control(int fd, int cid, int value)h]jj)}(h0int v4l2_set_control(int fd, int cid, int value)h](jp)}(hinth]hint}(hjhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjhhhhhKubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubj)}(hv4l2_set_controlh]j)}(hv4l2_set_controlh]hv4l2_set_control}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhhhKubj)}(h(int fd, int cid, int value)h](j)}(hint fdh](jp)}(hinth]hint}(hjRhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjNubj)}(h h]h }(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubj)}(hfdh]hfd}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hint cidh](jp)}(hinth]hint}(hjhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hcidh]hcid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(h int valueh](jp)}(hinth]hint}(hjhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hvalueh]hvalue}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]hhjw uh1jijx jy hjhhhhhKubah}(h]j ah ](j} j~ eh"]h$]h&]j j )j huh1jchhhKhj hhubj )}(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&]uh1j hj hhhhhKubeh}(h]h ](jsfunctioneh"]h$]h&]j jsj jj jj j j uh1j^hhhj*hhhNubjN)}(hhh]h}(h]h ]h"]h$]h&]entries](jZ!V4L.v4l2_get_control (C function)c.V4L.v4l2_get_controlhNtauh1jMhj*hhhhhNubj_)}(hhh](jd)}(h%int v4l2_get_control(int fd, int cid)h]jj)}(h%int v4l2_get_control(int fd, int cid)h](jp)}(hinth]hint}(hj6hhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johj2hhhhhKubj)}(h h]h }(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2hhhhhKubj)}(hv4l2_get_controlh]j)}(hv4l2_get_controlh]hv4l2_get_control}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubah}(h]h ](jjeh"]h$]h&]hhuh1jhj2hhhhhKubj)}(h(int fd, int cid)h](j)}(hint fdh](jp)}(hinth]hint}(hjrhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjnubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj)}(hfdh]hfd}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjubj)}(hint cidh](jp)}(hinth]hint}(hjhhhNhNubah}(h]h ]j|ah"]h$]h&]uh1johjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hcidh]hcid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjubeh}(h]h ]h"]h$]h&]hhuh1jhj2hhhhhKubeh}(h]h ]h"]h$]h&]hhjw uh1jijx jy hj.hhhhhKubah}(h]j)ah ](j} j~ eh"]h$]h&]j j )j huh1jchhhKhj+hhubj )}(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&]uh1j hj+hhhhhKubeh}(h]h ](jsfunctioneh"]h$]h&]j jsj jj jj j j uh1j^hhhj*hhhNubeh}(h](libv4l-device-control-functionsj)eh ]h"](libv4l device control functions libv4l-opseh$]h&]uh1hhj|hhhhhKmexpect_referenced_by_name}jjsexpect_referenced_by_id}j)jsubeh}(h]libv4l2ah ]h"]libv4l2ah$]h&]uh1hhhhhhhhKQubh)}(hhh](h)}(hv4l1compat.so wrapper libraryh]hv4l1compat.so wrapper library}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(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 }(hj.hhhNhNubh)}(h:c:func:`open()`h]jR)}(hj8h]hopen()}(hj:hhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhj6ubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjjj&openuh1hhhhKhj.ubh, }(hj.hhhNhNubh)}(h:c:func:`close()`h]jR)}(hj[h]hclose()}(hj]hhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhjYubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjjj&closeuh1hhhhKhj.ubh, }(hj.hhhNhNubh)}(h:c:func:`ioctl()`h]jR)}(hj~h]hioctl()}(hjhhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhj|ubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjjj&ioctluh1hhhhKhj.ubh, }hj.sbh)}(h:c:func:`mmap()`h]jR)}(hjh]hmmap()}(hjhhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjjj&mmapuh1hhhhKhj.ubh and }(hj.hhhNhNubh)}(h:c:func:`munmap()`h]jR)}(hjh]hmunmap()}(hjhhhNhNubah}(h]h ](jjsc-funceh"]h$]h&]uh1jQhjubah}(h]h ]h"]h$]h&]refdocj  refdomainjsreftypefunc refexplicitrefwarnjjj&munmapuh1hhhhKhj.ubhD operations and redirects them to the libv4l counterparts, by using }(hj.hhhNhNubjR)}(h%``LD_PRELOAD=/usr/lib/v4l1compat.so``h]h!LD_PRELOAD=/usr/lib/v4l1compat.so}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jQhj.ubh+. It also emulates V4L1 calls via V4L2 API.}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(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&]uh1hhhhKhjhhubeh}(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_handlerjAerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _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)]jaunameids}(jhjjjDjAjyjvjjjj)j j jj u nametypes}(jjjDjyjjj juh}(hhjhjAj@jvjGjj|j)j*j j*j\jej j j j j j j j j\jajjjjj jj)j.j ju 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&]levelKtypeINFOsourcehnjlineKuh1jubj)}(hhh]h)}(hhh]h0Hyperlink target "libv4l-ops" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKjuh1jube transformerN include_log] decorationNhhub.