€•JŒ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”Œ7/translations/zh_CN/userspace-api/media/v4l/dev-encoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/zh_TW/userspace-api/media/v4l/dev-encoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/it_IT/userspace-api/media/v4l/dev-encoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/ja_JP/userspace-api/media/v4l/dev-encoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/ko_KR/userspace-api/media/v4l/dev-encoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/pt_BR/userspace-api/media/v4l/dev-encoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/sp_SP/userspace-api/media/v4l/dev-encoder”Œ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ŒCSPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later”h]”hŒCSPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/dev-encoder.rst”h´KubhŒtarget”“”)�”}”(hŒ .. _encoder:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œencoder”uh1hÈh´Khhh²hh³hÇubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ1Memory-to-Memory Stateful Video Encoder Interface”h]”hŒ1Memory-to-Memory Stateful Video Encoder Interface”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hXA stateful video encoder takes raw video frames in display order and encodes them into a bytestream. It generates complete chunks of the bytestream, including all metadata, headers, etc. The resulting bytestream does not require any further post-processing by the client.”h]”hXA stateful video encoder takes raw video frames in display order and encodes them into a bytestream. It generates complete chunks of the bytestream, including all metadata, headers, etc. The resulting bytestream does not require any further post-processing by the client.”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K hhØh²hubhì)�”}”(hŒþPerforming software stream processing, header generation etc. in the driver in order to support this interface is strongly discouraged. In case such operations are needed, use of the Stateless Video Encoder Interface (in development) is strongly advised.”h]”hŒþPerforming software stream processing, header generation etc. in the driver in order to support this interface is strongly discouraged. In case such operations are needed, use of the Stateless Video Encoder Interface (in development) is strongly advised.”…”�”}”(hhûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubh×)�”}”(hhh]”(hÜ)�”}”(hŒ/Conventions and Notations Used in This Document”h]”hŒ/Conventions and Notations Used in This Document”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj h²hh³hÇh´KubhŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒNThe general V4L2 API rules apply if not specified in this document otherwise. ”h]”hì)�”}”(hŒMThe general V4L2 API rules apply if not specified in this document otherwise.”h]”hŒMThe general V4L2 API rules apply if not specified in this document otherwise.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj )�”}”(hŒpThe meaning of words "must", "may", "should", etc. is as per `RFC 2119 `_. ”h]”hì)�”}”(hŒoThe meaning of words "must", "may", "should", etc. is as per `RFC 2119 `_.”h]”(hŒIThe meaning of words “mustâ€�, “mayâ€�, “shouldâ€�, etc. is as per ”…”�”}”(hj=h²hh³Nh´NubhŒ reference”“”)�”}”(hŒ1`RFC 2119 `_”h]”hŒRFC 2119”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒRFC 2119”Œrefuri”Œ#https://tools.ietf.org/html/rfc2119”uh1jEhj=ubhÉ)�”}”(hŒ& ”h]”h}”(h]”Œrfc-2119”ah ]”h"]”Œrfc 2119”ah$]”h&]”Œrefuri”jXuh1hÈŒ referenced”Khj=ubhŒ.”…”�”}”(hj=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj )�”}”(hŒ.All steps not marked "optional" are required. ”h]”hì)�”}”(hŒ-All steps not marked "optional" are required.”h]”hŒ1All steps not marked “optionalâ€� are required.”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj )�”}”(hŒ°:c:func:`VIDIOC_G_EXT_CTRLS` and :c:func:`VIDIOC_S_EXT_CTRLS` may be used interchangeably with :c:func:`VIDIOC_G_CTRL` and :c:func:`VIDIOC_S_CTRL`, unless specified otherwise. ”h]”hì)�”}”(hŒ¯:c:func:`VIDIOC_G_EXT_CTRLS` and :c:func:`VIDIOC_S_EXT_CTRLS` may be used interchangeably with :c:func:`VIDIOC_G_CTRL` and :c:func:`VIDIOC_S_CTRL`, unless specified otherwise.”h]”(h)�”}”(hŒ:c:func:`VIDIOC_G_EXT_CTRLS`”h]”hŒliteral”“”)�”}”(hj™h]”hŒVIDIOC_G_EXT_CTRLS()”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œc”Œc-func”eh"]”h$]”h&]”uh1j›hj—ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ#userspace-api/media/v4l/dev-encoder”Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j»Œ ASTIdentifier”“”)�”}”Œ identifier”ŒV4L”sbN†”asbŒ reftarget”ŒVIDIOC_G_EXT_CTRLS”uh1hh³hÇh´Khj“ubhŒ and ”…”�”}”(hj“h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_S_EXT_CTRLS`”h]”jœ)�”}”(hjÑh]”hŒVIDIOC_S_EXT_CTRLS()”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjÏubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_S_EXT_CTRLS”uh1hh³hÇh´Khj“ubhŒ" may be used interchangeably with ”…”�”}”(hj“h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_G_CTRL`”h]”jœ)�”}”(hjôh]”hŒVIDIOC_G_CTRL()”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjòubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ VIDIOC_G_CTRL”uh1hh³hÇh´Khj“ubhŒ and ”…”�”}”hj“sbh)�”}”(hŒ:c:func:`VIDIOC_S_CTRL`”h]”jœ)�”}”(hjh]”hŒVIDIOC_S_CTRL()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ VIDIOC_S_CTRL”uh1hh³hÇh´Khj“ubhŒ, unless specified otherwise.”…”�”}”(hj“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj )�”}”(hŒáSingle-planar API (see :ref:`planar-apis`) and applicable structures may be used interchangeably with multi-planar API, unless specified otherwise, depending on encoder capabilities and following the general V4L2 guidelines. ”h]”hì)�”}”(hŒàSingle-planar API (see :ref:`planar-apis`) and applicable structures may be used interchangeably with multi-planar API, unless specified otherwise, depending on encoder capabilities and following the general V4L2 guidelines.”h]”(hŒSingle-planar API (see ”…”�”}”(hjHh²hh³Nh´Nubh)�”}”(hŒ:ref:`planar-apis`”h]”hŒinline”“”)�”}”(hjRh]”hŒ planar-apis”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”(j§Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jThjPubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j`Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjÉŒ planar-apis”uh1hh³hÇh´K#hjHubhŒ·) and applicable structures may be used interchangeably with multi-planar API, unless specified otherwise, depending on encoder capabilities and following the general V4L2 guidelines.”…”�”}”(hjHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K#hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj )�”}”(hŒWi = [a..b]: sequence of integers from a to b, inclusive, i.e. i = [0..2]: i = 0, 1, 2. ”h]”hì)�”}”(hŒVi = [a..b]: sequence of integers from a to b, inclusive, i.e. i = [0..2]: i = 0, 1, 2.”h]”hŒVi = [a..b]: sequence of integers from a to b, inclusive, i.e. i = [0..2]: i = 0, 1, 2.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K'hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj )�”}”(hŒ‹Given an ``OUTPUT`` buffer A, then A' represents a buffer on the ``CAPTURE`` queue containing data that resulted from processing buffer A. ”h]”hì)�”}”(hŒŠGiven an ``OUTPUT`` buffer A, then A' represents a buffer on the ``CAPTURE`` queue containing data that resulted from processing buffer A.”h]”(hŒ Given an ”…”�”}”(hjžh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjžubhŒ0 buffer A, then A’ represents a buffer on the ”…”�”}”(hjžh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjžubhŒ> queue containing data that resulted from processing buffer A.”…”�”}”(hjžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K*hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jhj h²hh³hÇh´Kubeh}”(h]”Œ/conventions-and-notations-used-in-this-document”ah ]”h"]”Œ/conventions and notations used in this document”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kubh×)�”}”(hhh]”(hÜ)�”}”(hŒGlossary”h]”hŒGlossary”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjéh²hh³hÇh´K.ubhì)�”}”(hŒ!Refer to :ref:`decoder-glossary`.”h]”(hŒ Refer to ”…”�”}”(hjúh²hh³Nh´Nubh)�”}”(hŒ:ref:`decoder-glossary`”h]”jU)�”}”(hjh]”hŒdecoder-glossary”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j§Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jThjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”jŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjÉŒdecoder-glossary”uh1hh³hÇh´K0hjúubhŒ.”…”�”}”(hjúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K0hjéh²hubeh}”(h]”Œglossary”ah ]”h"]”Œglossary”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K.ubh×)�”}”(hhh]”(hÜ)�”}”(hŒ State Machine”h]”hŒ State Machine”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj4h²hh³hÇh´K3ubhŒfigure”“”)�”}”(hhh]”(Œkfigure”Œ kernel_render”“”)�”}”(hhh]”hŒ literal_block”“”)�”}”(hXNdigraph encoder_state_machine { node [shape = doublecircle, label="Encoding"] Encoding; node [shape = circle, label="Initialization"] Initialization; node [shape = circle, label="Stopped"] Stopped; node [shape = circle, label="Drain"] Drain; node [shape = circle, label="Reset"] Reset; node [shape = point]; qi qi -> Initialization [ label = "open()" ]; Initialization -> Encoding [ label = "Both queues streaming" ]; Encoding -> Drain [ label = "V4L2_ENC_CMD_STOP" ]; Encoding -> Reset [ label = "VIDIOC_STREAMOFF(CAPTURE)" ]; Encoding -> Stopped [ label = "VIDIOC_STREAMOFF(OUTPUT)" ]; Encoding -> Encoding; Drain -> Stopped [ label = "All CAPTURE\nbuffers dequeued\nor\nVIDIOC_STREAMOFF(OUTPUT)" ]; Drain -> Reset [ label = "VIDIOC_STREAMOFF(CAPTURE)" ]; Reset -> Encoding [ label = "VIDIOC_STREAMON(CAPTURE)" ]; Reset -> Initialization [ label = "VIDIOC_REQBUFS(OUTPUT, 0)" ]; Stopped -> Encoding [ label = "V4L2_ENC_CMD_START\nor\nVIDIOC_STREAMON(OUTPUT)" ]; Stopped -> Reset [ label = "VIDIOC_STREAMOFF(CAPTURE)" ]; }”h]”hXNdigraph encoder_state_machine { node [shape = doublecircle, label="Encoding"] Encoding; node [shape = circle, label="Initialization"] Initialization; node [shape = circle, label="Stopped"] Stopped; node [shape = circle, label="Drain"] Drain; node [shape = circle, label="Reset"] Reset; node [shape = point]; qi qi -> Initialization [ label = "open()" ]; Initialization -> Encoding [ label = "Both queues streaming" ]; Encoding -> Drain [ label = "V4L2_ENC_CMD_STOP" ]; Encoding -> Reset [ label = "VIDIOC_STREAMOFF(CAPTURE)" ]; Encoding -> Stopped [ label = "VIDIOC_STREAMOFF(OUTPUT)" ]; Encoding -> Encoding; Drain -> Stopped [ label = "All CAPTURE\nbuffers dequeued\nor\nVIDIOC_STREAMOFF(OUTPUT)" ]; Drain -> Reset [ label = "VIDIOC_STREAMOFF(CAPTURE)" ]; Reset -> Encoding [ label = "VIDIOC_STREAMON(CAPTURE)" ]; Reset -> Initialization [ label = "VIDIOC_REQBUFS(OUTPUT, 0)" ]; Stopped -> Encoding [ label = "V4L2_ENC_CMD_START\nor\nVIDIOC_STREAMON(OUTPUT)" ]; Stopped -> Reset [ label = "VIDIOC_STREAMOFF(CAPTURE)" ]; }”…”�”}”hjRsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jPhjMh³hÇubah}”(h]”h ]”h"]”h$]”h&]”Œalt”Œ$DOT digraph of encoder state machine”Œsrclang”ŒDOT”uh1jKhjGubhŒcaption”“”)�”}”(hŒEncoder State Machine”h]”hŒEncoder State Machine”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjh³hh´KhjGubeh}”(h]”Œid1”ah ]”h"]”h$]”h&]”Œalt”jgŒcaption”jnuh1jEhj4h²hh³hh´Nubeh}”(h]”Œ state-machine”ah ]”h"]”Œ state machine”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K3ubh×)�”}”(hhh]”(hÜ)�”}”(hŒQuerying Capabilities”h]”hŒQuerying Capabilities”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj‹h²hh³hÇh´KVubj)�”}”(hhh]”(j )�”}”(hŒãTo enumerate the set of coded formats supported by the encoder, the client may call :c:func:`VIDIOC_ENUM_FMT` on ``CAPTURE``. * The full set of supported formats will be returned, regardless of the format set on ``OUTPUT``. ”h]”(hì)�”}”(hŒ}To enumerate the set of coded formats supported by the encoder, the client may call :c:func:`VIDIOC_ENUM_FMT` on ``CAPTURE``.”h]”(hŒTTo enumerate the set of coded formats supported by the encoder, the client may call ”…”�”}”(hj£h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_ENUM_FMT`”h]”jœ)�”}”(hj­h]”hŒVIDIOC_ENUM_FMT()”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj«ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENUM_FMT”uh1hh³hÇh´KXhj£ubhŒ on ”…”�”}”(hj£h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(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´KXhjŸubhŒ bullet_list”“”)�”}”(hhh]”j )�”}”(hŒ`The full set of supported formats will be returned, regardless of the format set on ``OUTPUT``. ”h]”hì)�”}”(hŒ_The full set of supported formats will be returned, regardless of the format set on ``OUTPUT``.”h]”(hŒTThe full set of supported formats will be returned, regardless of the format set on ”…”�”}”(hjïh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(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ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjèubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jæh³hÇh´K[hjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjœh²hh³Nh´Nubj )�”}”(hX‚To enumerate the set of supported raw formats, the client may call :c:func:`VIDIOC_ENUM_FMT` on ``OUTPUT``. * Only the formats supported for the format currently active on ``CAPTURE`` will be returned. * In order to enumerate raw formats supported by a given coded format, the client must first set that coded format on ``CAPTURE`` and then enumerate the formats on ``OUTPUT``. ”h]”(hì)�”}”(hŒkTo enumerate the set of supported raw formats, the client may call :c:func:`VIDIOC_ENUM_FMT` on ``OUTPUT``.”h]”(hŒCTo enumerate the set of supported raw formats, the client may call ”…”�”}”(hj'h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_ENUM_FMT`”h]”jœ)�”}”(hj1h]”hŒVIDIOC_ENUM_FMT()”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj/ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENUM_FMT”uh1hh³hÇh´K^hj'ubhŒ on ”…”�”}”(hj'h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjRh²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#ubjç)�”}”(hhh]”(j )�”}”(hŒ\Only the formats supported for the format currently active on ``CAPTURE`` will be returned. ”h]”hì)�”}”(hŒ[Only the formats supported for the format currently active on ``CAPTURE`` will be returned.”h]”(hŒ>Only the formats supported for the format currently active on ”…”�”}”(hjqh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjqubhŒ will be returned.”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kahjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjubj )�”}”(hŒ®In order to enumerate raw formats supported by a given coded format, the client must first set that coded format on ``CAPTURE`` and then enumerate the formats on ``OUTPUT``. ”h]”hì)�”}”(hŒ­In order to enumerate raw formats supported by a given coded format, the client must first set that coded format on ``CAPTURE`` and then enumerate the formats on ``OUTPUT``.”h]”(hŒtIn order to enumerate raw formats supported by a given coded format, the client must first set that coded format on ”…”�”}”(hj›h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj›ubhŒ# and then enumerate the formats on ”…”�”}”(hj›h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(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´Kdhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´Kahj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjœh²hh³Nh´Nubj )�”}”(hXbThe client may use :c:func:`VIDIOC_ENUM_FRAMESIZES` to detect supported resolutions for a given format, passing the desired pixel format in :c:type:`v4l2_frmsizeenum` ``pixel_format``. * Values returned by :c:func:`VIDIOC_ENUM_FRAMESIZES` for a coded pixel format will include all possible coded resolutions supported by the encoder for the given coded pixel format. * Values returned by :c:func:`VIDIOC_ENUM_FRAMESIZES` for a raw pixel format will include all possible frame buffer resolutions supported by the encoder for the given raw pixel format and coded format currently set on ``CAPTURE``. ”h]”(hì)�”}”(hŒ¸The client may use :c:func:`VIDIOC_ENUM_FRAMESIZES` to detect supported resolutions for a given format, passing the desired pixel format in :c:type:`v4l2_frmsizeenum` ``pixel_format``.”h]”(hŒThe client may use ”…”�”}”(hjãh²hh³Nh´Nubh)�”}”(hŒ :c:func:`VIDIOC_ENUM_FRAMESIZES`”h]”jœ)�”}”(hjíh]”hŒVIDIOC_ENUM_FRAMESIZES()”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjëubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENUM_FRAMESIZES”uh1hh³hÇh´KhhjãubhŒY to detect supported resolutions for a given format, passing the desired pixel format in ”…”�”}”(hjãh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_frmsizeenum`”h]”jœ)�”}”(hjh]”hŒv4l2_frmsizeenum”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-type”eh"]”h$]”h&]”uh1j›hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒv4l2_frmsizeenum”uh1hh³hÇh´KhhjãubhŒ ”…”�”}”(hjãh²hh³Nh´Nubjœ)�”}”(hŒ``pixel_format``”h]”hŒ pixel_format”…”�”}”(hj1h²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´Khhjßubjç)�”}”(hhh]”(j )�”}”(hŒ´Values returned by :c:func:`VIDIOC_ENUM_FRAMESIZES` for a coded pixel format will include all possible coded resolutions supported by the encoder for the given coded pixel format. ”h]”hì)�”}”(hŒ³Values returned by :c:func:`VIDIOC_ENUM_FRAMESIZES` for a coded pixel format will include all possible coded resolutions supported by the encoder for the given coded pixel format.”h]”(hŒValues returned by ”…”�”}”(hjPh²hh³Nh´Nubh)�”}”(hŒ :c:func:`VIDIOC_ENUM_FRAMESIZES`”h]”jœ)�”}”(hjZh]”hŒVIDIOC_ENUM_FRAMESIZES()”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjXubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENUM_FRAMESIZES”uh1hh³hÇh´KlhjPubhŒ€ for a coded pixel format will include all possible coded resolutions supported by the encoder for the given coded pixel format.”…”�”}”(hjPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KlhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubj )�”}”(hŒåValues returned by :c:func:`VIDIOC_ENUM_FRAMESIZES` for a raw pixel format will include all possible frame buffer resolutions supported by the encoder for the given raw pixel format and coded format currently set on ``CAPTURE``. ”h]”hì)�”}”(hŒäValues returned by :c:func:`VIDIOC_ENUM_FRAMESIZES` for a raw pixel format will include all possible frame buffer resolutions supported by the encoder for the given raw pixel format and coded format currently set on ``CAPTURE``.”h]”(hŒValues returned by ”…”�”}”(hj‹h²hh³Nh´Nubh)�”}”(hŒ :c:func:`VIDIOC_ENUM_FRAMESIZES`”h]”jœ)�”}”(hj•h]”hŒVIDIOC_ENUM_FRAMESIZES()”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENUM_FRAMESIZES”uh1hh³hÇh´Kphj‹ubhŒ¥ for a raw pixel format will include all possible frame buffer resolutions supported by the encoder for the given raw pixel format and coded format currently set on ”…”�”}”(hj‹h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(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´Kphj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´Klhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjœh²hh³Nh´Nubj )�”}”(hXThe client may use :c:func:`VIDIOC_ENUM_FRAMEINTERVALS` to detect supported frame intervals for a given format and resolution, passing the desired pixel format in :c:type:`v4l2_frmivalenum` ``pixel_format`` and the resolution in :c:type:`v4l2_frmivalenum` ``width`` and :c:type:`v4l2_frmivalenum` ``height``. * Values returned by :c:func:`VIDIOC_ENUM_FRAMEINTERVALS` for a coded pixel format and coded resolution will include all possible frame intervals supported by the encoder for the given coded pixel format and resolution. * Values returned by :c:func:`VIDIOC_ENUM_FRAMEINTERVALS` for a raw pixel format and resolution will include all possible frame intervals supported by the encoder for the given raw pixel format and resolution and for the coded format, coded resolution and coded frame interval currently set on ``CAPTURE``. * Support for :c:func:`VIDIOC_ENUM_FRAMEINTERVALS` is optional. If it is not implemented, then there are no special restrictions other than the limits of the codec itself. ”h]”(hì)�”}”(hX4The client may use :c:func:`VIDIOC_ENUM_FRAMEINTERVALS` to detect supported frame intervals for a given format and resolution, passing the desired pixel format in :c:type:`v4l2_frmivalenum` ``pixel_format`` and the resolution in :c:type:`v4l2_frmivalenum` ``width`` and :c:type:`v4l2_frmivalenum` ``height``.”h]”(hŒThe client may use ”…”�”}”(hjäh²hh³Nh´Nubh)�”}”(hŒ$:c:func:`VIDIOC_ENUM_FRAMEINTERVALS`”h]”jœ)�”}”(hjîh]”hŒVIDIOC_ENUM_FRAMEINTERVALS()”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjìubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENUM_FRAMEINTERVALS”uh1hh³hÇh´KuhjäubhŒl to detect supported frame intervals for a given format and resolution, passing the desired pixel format in ”…”�”}”(hjäh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_frmivalenum`”h]”jœ)�”}”(hjh]”hŒv4l2_frmivalenum”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-type”eh"]”h$]”h&]”uh1j›hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒv4l2_frmivalenum”uh1hh³hÇh´KuhjäubhŒ ”…”�”}”(hjäh²hh³Nh´Nubjœ)�”}”(hŒ``pixel_format``”h]”hŒ pixel_format”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjäubhŒ and the resolution in ”…”�”}”(hjäh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_frmivalenum`”h]”jœ)�”}”(hjFh]”hŒv4l2_frmivalenum”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-type”eh"]”h$]”h&]”uh1j›hjDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒv4l2_frmivalenum”uh1hh³hÇh´KuhjäubhŒ ”…”�”}”hjäsbjœ)�”}”(hŒ ``width``”h]”hŒwidth”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjäubhŒ and ”…”�”}”(hjäh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_frmivalenum`”h]”jœ)�”}”(hj{h]”hŒv4l2_frmivalenum”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-type”eh"]”h$]”h&]”uh1j›hjyubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒv4l2_frmivalenum”uh1hh³hÇh´KuhjäubhŒ ”…”�”}”(hjäh²hh³Nh´Nubjœ)�”}”(hŒ ``height``”h]”hŒheight”…”�”}”(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´Kuhjàubjç)�”}”(hhh]”(j )�”}”(hŒÚValues returned by :c:func:`VIDIOC_ENUM_FRAMEINTERVALS` for a coded pixel format and coded resolution will include all possible frame intervals supported by the encoder for the given coded pixel format and resolution. ”h]”hì)�”}”(hŒÙValues returned by :c:func:`VIDIOC_ENUM_FRAMEINTERVALS` for a coded pixel format and coded resolution will include all possible frame intervals supported by the encoder for the given coded pixel format and resolution.”h]”(hŒValues returned by ”…”�”}”(hj»h²hh³Nh´Nubh)�”}”(hŒ$:c:func:`VIDIOC_ENUM_FRAMEINTERVALS`”h]”jœ)�”}”(hjÅh]”hŒVIDIOC_ENUM_FRAMEINTERVALS()”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjÃubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENUM_FRAMEINTERVALS”uh1hh³hÇh´K{hj»ubhŒ¢ for a coded pixel format and coded resolution will include all possible frame intervals supported by the encoder for the given coded pixel format and resolution.”…”�”}”(hj»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K{hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubj )�”}”(hX1Values returned by :c:func:`VIDIOC_ENUM_FRAMEINTERVALS` for a raw pixel format and resolution will include all possible frame intervals supported by the encoder for the given raw pixel format and resolution and for the coded format, coded resolution and coded frame interval currently set on ``CAPTURE``. ”h]”hì)�”}”(hX0Values returned by :c:func:`VIDIOC_ENUM_FRAMEINTERVALS` for a raw pixel format and resolution will include all possible frame intervals supported by the encoder for the given raw pixel format and resolution and for the coded format, coded resolution and coded frame interval currently set on ``CAPTURE``.”h]”(hŒValues returned by ”…”�”}”(hjöh²hh³Nh´Nubh)�”}”(hŒ$:c:func:`VIDIOC_ENUM_FRAMEINTERVALS`”h]”jœ)�”}”(hjh]”hŒVIDIOC_ENUM_FRAMEINTERVALS()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjþubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENUM_FRAMEINTERVALS”uh1hh³hÇh´KhjöubhŒí for a raw pixel format and resolution will include all possible frame intervals supported by the encoder for the given raw pixel format and resolution and for the coded format, coded resolution and coded frame interval currently set on ”…”�”}”(hjöh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(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´Khjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubj )�”}”(hŒªSupport for :c:func:`VIDIOC_ENUM_FRAMEINTERVALS` is optional. If it is not implemented, then there are no special restrictions other than the limits of the codec itself. ”h]”hì)�”}”(hŒ©Support for :c:func:`VIDIOC_ENUM_FRAMEINTERVALS` is optional. If it is not implemented, then there are no special restrictions other than the limits of the codec itself.”h]”(hŒ Support for ”…”�”}”(hjCh²hh³Nh´Nubh)�”}”(hŒ$:c:func:`VIDIOC_ENUM_FRAMEINTERVALS`”h]”jœ)�”}”(hjMh]”hŒVIDIOC_ENUM_FRAMEINTERVALS()”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjKubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENUM_FRAMEINTERVALS”uh1hh³hÇh´K…hjCubhŒy is optional. If it is not implemented, then there are no special restrictions other than the limits of the codec itself.”…”�”}”(hjCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K…hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´K{hjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjœh²hh³Nh´Nubj )�”}”(hŒ¯Supported profiles and levels for the coded format currently set on ``CAPTURE``, if applicable, may be queried using their respective controls via :c:func:`VIDIOC_QUERYCTRL`. ”h]”hì)�”}”(hŒ®Supported profiles and levels for the coded format currently set on ``CAPTURE``, if applicable, may be queried using their respective controls via :c:func:`VIDIOC_QUERYCTRL`.”h]”(hŒDSupported profiles and levels for the coded format currently set on ”…”�”}”(hjŠh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠubhŒD, if applicable, may be queried using their respective controls via ”…”�”}”(hjŠh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_QUERYCTRL`”h]”jœ)�”}”(hj¦h]”hŒVIDIOC_QUERYCTRL()”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj¤ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_QUERYCTRL”uh1hh³hÇh´K‰hjŠubhŒ.”…”�”}”(hjŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K‰hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœh²hh³hÇh´Nubj )�”}”(hŒ]Any additional encoder capabilities may be discovered by querying their respective controls. ”h]”hì)�”}”(hŒ\Any additional encoder capabilities may be discovered by querying their respective controls.”h]”hŒ\Any additional encoder capabilities may be discovered by querying their respective controls.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K�hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jÜjÝjÞhjßjàuh1jhj‹h²hh³hÇh´KXubeh}”(h]”Œquerying-capabilities”ah ]”h"]”Œquerying capabilities”ah$]”h&]”uh1hÖhhØh²hh³hÇh´KVubh×)�”}”(hhh]”(hÜ)�”}”(hŒInitialization”h]”hŒInitialization”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjùh²hh³hÇh´K‘ubj)�”}”(hhh]”(j )�”}”(hX§Set the coded format on the ``CAPTURE`` queue via :c:func:`VIDIOC_S_FMT`. * **Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ``pixelformat`` the coded format to be produced. ``sizeimage`` desired size of ``CAPTURE`` buffers; the encoder may adjust it to match hardware requirements. ``width``, ``height`` ignored (read-only). other fields follow standard semantics. * **Returned fields:** ``sizeimage`` adjusted size of ``CAPTURE`` buffers. ``width``, ``height`` the coded size selected by the encoder based on current state, e.g. ``OUTPUT`` format, selection rectangles, etc. (read-only). .. important:: Changing the ``CAPTURE`` format may change the currently set ``OUTPUT`` format. How the new ``OUTPUT`` format is determined is up to the encoder and the client must ensure it matches its needs afterwards. ”h]”(hì)�”}”(hŒISet the coded format on the ``CAPTURE`` queue via :c:func:`VIDIOC_S_FMT`.”h]”(hŒSet the coded format on the ”…”�”}”(hjh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubhŒ queue via ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_S_FMT`”h]”jœ)�”}”(hj-h]”hŒVIDIOC_S_FMT()”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ VIDIOC_S_FMT”uh1hh³hÇh´K“hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K“hj ubjç)�”}”(hhh]”(j )�”}”(hXd**Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ``pixelformat`` the coded format to be produced. ``sizeimage`` desired size of ``CAPTURE`` buffers; the encoder may adjust it to match hardware requirements. ``width``, ``height`` ignored (read-only). other fields follow standard semantics. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”hŒstrong”“”)�”}”(hj]h]”hŒRequired fields:”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K•hjWubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒA``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ”h]”(hŒterm”“”)�”}”(hŒ``type``”h]”jœ)�”}”(hjƒh]”hŒtype”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K˜hj{ubhŒ definition”“”)�”}”(hhh]”hì)�”}”(hŒ7a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``.”h]”(hŒa ”…”�”}”(hj�h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_TYPE_*``”h]”hŒV4L2_BUF_TYPE_*”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj�ubhŒ enum appropriate for ”…”�”}”(hj�h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(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šubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´K˜hjvubjz)�”}”(hŒ1``pixelformat`` the coded format to be produced. ”h]”(j€)�”}”(hŒ``pixelformat``”h]”jœ)�”}”(hjáh]”hŒ pixelformat”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K›hjÛubj™)�”}”(hhh]”hì)�”}”(hŒ the coded format to be produced.”h]”hŒ the coded format to be produced.”…”�”}”(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&]”uh1jyh³hÇh´K›hjvubjz)�”}”(hŒm``sizeimage`` desired size of ``CAPTURE`` buffers; the encoder may adjust it to match hardware requirements. ”h]”(j€)�”}”(hŒ ``sizeimage``”h]”jœ)�”}”(hj h]”hŒ sizeimage”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KŸhj ubj™)�”}”(hhh]”hì)�”}”(hŒ^desired size of ``CAPTURE`` buffers; the encoder may adjust it to match hardware requirements.”h]”(hŒdesired size of ”…”�”}”(hj1 h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj1 ubhŒC buffers; the encoder may adjust it to match hardware requirements.”…”�”}”(hj1 h²hh³Nh´Nubeh}”(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&]”uh1jyh³hÇh´KŸhjvubjz)�”}”(hŒ+``width``, ``height`` ignored (read-only). ”h]”(j€)�”}”(hŒ``width``, ``height``”h]”(jœ)�”}”(hŒ ``width``”h]”hŒwidth”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hja ubhŒ, ”…”�”}”(hja h²hh³Nh´Nubjœ)�”}”(hŒ ``height``”h]”hŒheight”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hja ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K¢hj] ubj™)�”}”(hhh]”hì)�”}”(hŒignored (read-only).”h]”hŒignored (read-only).”…”�”}”(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&]”uh1jyh³hÇh´K¢hjvubjz)�”}”(hŒ(other fields follow standard semantics. ”h]”(j€)�”}”(hŒ other fields”h]”hŒ other fields”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K¥hj¨ ubj™)�”}”(hhh]”hì)�”}”(hŒfollow standard semantics.”h]”hŒfollow standard semantics.”…”�”}”(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&]”uh1jyh³hÇh´K¥hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jthjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjTubj )�”}”(hŒì**Returned fields:** ``sizeimage`` adjusted size of ``CAPTURE`` buffers. ``width``, ``height`` the coded size selected by the encoder based on current state, e.g. ``OUTPUT`` format, selection rectangles, etc. (read-only). ”h]”(hì)�”}”(hŒ**Returned fields:**”h]”j`)�”}”(hjé h]”hŒReturned fields:”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjç ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K§hjã ubju)�”}”(hhh]”(jz)�”}”(hŒ4``sizeimage`` adjusted size of ``CAPTURE`` buffers. ”h]”(j€)�”}”(hŒ ``sizeimage``”h]”jœ)�”}”(hj h]”hŒ sizeimage”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Kªhj ubj™)�”}”(hhh]”hì)�”}”(hŒ%adjusted size of ``CAPTURE`` buffers.”h]”(hŒadjusted size of ”…”�”}”(hj h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj ubhŒ buffers.”…”�”}”(hj h²hh³Nh´Nubeh}”(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&]”uh1jyh³hÇh´Kªhjþ ubjz)�”}”(hŒ•``width``, ``height`` the coded size selected by the encoder based on current state, e.g. ``OUTPUT`` format, selection rectangles, etc. (read-only). ”h]”(j€)�”}”(hŒ``width``, ``height``”h]”(jœ)�”}”(hŒ ``width``”h]”hŒwidth”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjO ubhŒ, ”…”�”}”(hjO h²hh³Nh´Nubjœ)�”}”(hŒ ``height``”h]”hŒheight”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjO ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K®hjK ubj™)�”}”(hhh]”hì)�”}”(hŒ~the coded size selected by the encoder based on current state, e.g. ``OUTPUT`` format, selection rectangles, etc. (read-only).”h]”(hŒDthe coded size selected by the encoder based on current state, e.g. ”…”�”}”(hj| h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj| ubhŒ0 format, selection rectangles, etc. (read-only).”…”�”}”(hj| h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K­hjy ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjK ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´K®hjþ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jthjã ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjTubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´K•hj ubhŒ important”“”)�”}”(hŒÌChanging the ``CAPTURE`` format may change the currently set ``OUTPUT`` format. How the new ``OUTPUT`` format is determined is up to the encoder and the client must ensure it matches its needs afterwards.”h]”hì)�”}”(hŒÌChanging the ``CAPTURE`` format may change the currently set ``OUTPUT`` format. How the new ``OUTPUT`` format is determined is up to the encoder and the client must ensure it matches its needs afterwards.”h]”(hŒ Changing the ”…”�”}”(hjÀ h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÀ ubhŒ% format may change the currently set ”…”�”}”(hjÀ h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÀ ubhŒ format. How the new ”…”�”}”(hjÀ h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÀ ubhŒf format is determined is up to the encoder and the client must ensure it matches its needs afterwards.”…”�”}”(hjÀ h²hh³Nh´Nubeh}”(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&]”uh1jhj h²hh³Nh´Nubj )�”}”(hXÜ**Optional.** Enumerate supported ``OUTPUT`` formats (raw formats for source) for the selected coded format via :c:func:`VIDIOC_ENUM_FMT`. * **Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. other fields follow standard semantics. * **Returned fields:** ``pixelformat`` raw format supported for the coded format currently selected on the ``CAPTURE`` queue. other fields follow standard semantics. ”h]”(hì)�”}”(hŒŠ**Optional.** Enumerate supported ``OUTPUT`` formats (raw formats for source) for the selected coded format via :c:func:`VIDIOC_ENUM_FMT`.”h]”(j`)�”}”(hŒ **Optional.**”h]”hŒ Optional.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj ubhŒ Enumerate supported ”…”�”}”(hj h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj ubhŒD formats (raw formats for source) for the selected coded format via ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_ENUM_FMT`”h]”jœ)�”}”(hj> h]”hŒVIDIOC_ENUM_FMT()”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj< ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENUM_FMT”uh1hh³hÇh´K¶hj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K¶hj ubjç)�”}”(hhh]”(j )�”}”(hŒ‡**Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. other fields follow standard semantics. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”j`)�”}”(hjn h]”hŒRequired fields:”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjl ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K¹hjh ubju)�”}”(hhh]”(jz)�”}”(hŒ@``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ”h]”(j€)�”}”(hŒ``type``”h]”jœ)�”}”(hjŒ h]”hŒtype”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K¼hj† ubj™)�”}”(hhh]”hì)�”}”(hŒ6a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``.”h]”(hŒa ”…”�”}”(hj¤ h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_TYPE_*``”h]”hŒV4L2_BUF_TYPE_*”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¤ ubhŒ enum appropriate for ”…”�”}”(hj¤ h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(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¡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj† ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´K¼hjƒ ubjz)�”}”(hŒ(other fields follow standard semantics. ”h]”(j€)�”}”(hŒ other fields”h]”hŒ other fields”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K¿hjâ ubj™)�”}”(hhh]”hì)�”}”(hŒfollow standard semantics.”h]”hŒfollow standard semantics.”…”�”}”(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&]”uh1jyh³hÇh´K¿hjƒ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jthjh ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhje ubj )�”}”(hŒ²**Returned fields:** ``pixelformat`` raw format supported for the coded format currently selected on the ``CAPTURE`` queue. other fields follow standard semantics. ”h]”(hì)�”}”(hŒ**Returned fields:**”h]”j`)�”}”(hj# h]”hŒReturned fields:”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj! ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÁhj ubju)�”}”(hhh]”(jz)�”}”(hŒg``pixelformat`` raw format supported for the coded format currently selected on the ``CAPTURE`` queue. ”h]”(j€)�”}”(hŒ``pixelformat``”h]”jœ)�”}”(hjA h]”hŒ pixelformat”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj? ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÅhj; ubj™)�”}”(hhh]”hì)�”}”(hŒVraw format supported for the coded format currently selected on the ``CAPTURE`` queue.”h]”(hŒDraw format supported for the coded format currently selected on the ”…”�”}”(hjY h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjY ubhŒ queue.”…”�”}”(hjY h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÄhjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj; ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´KÅhj8 ubjz)�”}”(hŒ(other fields follow standard semantics. ”h]”(j€)�”}”(hŒ other fields”h]”hŒ other fields”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÈhj… ubj™)�”}”(hhh]”hì)�”}”(hŒfollow standard semantics.”h]”hŒfollow standard semantics.”…”�”}”(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&]”uh1jyh³hÇh´KÈhj8 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jthj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhje ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´K¹hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj h²hh³Nh´Nubj )�”}”(hXSet the raw source format on the ``OUTPUT`` queue via :c:func:`VIDIOC_S_FMT`. * **Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ``pixelformat`` raw format of the source. ``width``, ``height`` source resolution. other fields follow standard semantics. * **Returned fields:** ``width``, ``height`` may be adjusted to match encoder minimums, maximums and alignment requirements, as required by the currently selected formats, as reported by :c:func:`VIDIOC_ENUM_FRAMESIZES`. other fields follow standard semantics. * Setting the ``OUTPUT`` format will reset the selection rectangles to their default values, based on the new resolution, as described in the next step. ”h]”(hì)�”}”(hŒMSet the raw source format on the ``OUTPUT`` queue via :c:func:`VIDIOC_S_FMT`.”h]”(hŒ!Set the raw source format on the ”…”�”}”(hjÐ h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÐ ubhŒ queue via ”…”�”}”(hjÐ h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_S_FMT`”h]”jœ)�”}”(hjì h]”hŒVIDIOC_S_FMT()”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjê ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ VIDIOC_S_FMT”uh1hh³hÇh´KÊhjÐ ubhŒ.”…”�”}”(hjÐ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÊhjÌ ubjç)�”}”(hhh]”(j )�”}”(hŒä**Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ``pixelformat`` raw format of the source. ``width``, ``height`` source resolution. other fields follow standard semantics. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”j`)�”}”(hj h]”hŒRequired fields:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÍhj ubju)�”}”(hhh]”(jz)�”}”(hŒ@``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ”h]”(j€)�”}”(hŒ``type``”h]”jœ)�”}”(hj: h]”hŒtype”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj8 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÐhj4 ubj™)�”}”(hhh]”hì)�”}”(hŒ6a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``.”h]”(hŒa ”…”�”}”(hjR h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_TYPE_*``”h]”hŒV4L2_BUF_TYPE_*”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjR ubhŒ enum appropriate for ”…”�”}”(hjR h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjR ubhŒ.”…”�”}”(hjR h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÐhjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj4 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´KÐhj1 ubjz)�”}”(hŒ*``pixelformat`` raw format of the source. ”h]”(j€)�”}”(hŒ``pixelformat``”h]”jœ)�”}”(hj– h]”hŒ pixelformat”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj” ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÓhj� ubj™)�”}”(hhh]”hì)�”}”(hŒraw format of the source.”h]”hŒraw format of the source.”…”�”}”(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&]”uh1jyh³hÇh´KÓhj1 ubjz)�”}”(hŒ)``width``, ``height`` source resolution. ”h]”(j€)�”}”(hŒ``width``, ``height``”h]”(jœ)�”}”(hŒ ``width``”h]”hŒwidth”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÌ ubhŒ, ”…”�”}”(hjÌ h²hh³Nh´Nubjœ)�”}”(hŒ ``height``”h]”hŒheight”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÌ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÖhjÈ ubj™)�”}”(hhh]”hì)�”}”(hŒsource resolution.”h]”hŒsource resolution.”…”�”}”(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&]”uh1jyh³hÇh´KÖhj1 ubjz)�”}”(hŒ(other fields follow standard semantics. ”h]”(j€)�”}”(hŒ other fields”h]”hŒ other fields”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÙhjubj™)�”}”(hhh]”hì)�”}”(hŒfollow standard semantics.”h]”hŒfollow standard semantics.”…”�”}”(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&]”uh1jyh³hÇh´KÙhj1 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jthj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubj )�”}”(hX**Returned fields:** ``width``, ``height`` may be adjusted to match encoder minimums, maximums and alignment requirements, as required by the currently selected formats, as reported by :c:func:`VIDIOC_ENUM_FRAMESIZES`. other fields follow standard semantics. ”h]”(hì)�”}”(hŒ**Returned fields:**”h]”j`)�”}”(hjTh]”hŒReturned fields:”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÛhjNubju)�”}”(hhh]”(jz)�”}”(hŒÆ``width``, ``height`` may be adjusted to match encoder minimums, maximums and alignment requirements, as required by the currently selected formats, as reported by :c:func:`VIDIOC_ENUM_FRAMESIZES`. ”h]”(j€)�”}”(hŒ``width``, ``height``”h]”(jœ)�”}”(hŒ ``width``”h]”hŒwidth”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjpubhŒ, ”…”�”}”(hjph²hh³Nh´Nubjœ)�”}”(hŒ ``height``”h]”hŒheight”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Kàhjlubj™)�”}”(hhh]”hì)�”}”(hŒ¯may be adjusted to match encoder minimums, maximums and alignment requirements, as required by the currently selected formats, as reported by :c:func:`VIDIOC_ENUM_FRAMESIZES`.”h]”(hŒŽmay be adjusted to match encoder minimums, maximums and alignment requirements, as required by the currently selected formats, as reported by ”…”�”}”(hj�h²hh³Nh´Nubh)�”}”(hŒ :c:func:`VIDIOC_ENUM_FRAMESIZES`”h]”jœ)�”}”(hj§h]”hŒVIDIOC_ENUM_FRAMESIZES()”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENUM_FRAMESIZES”uh1hh³hÇh´KÞhj�ubhŒ.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÞhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´Kàhjiubjz)�”}”(hŒ(other fields follow standard semantics. ”h]”(j€)�”}”(hŒ other fields”h]”hŒ other fields”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KãhjÚubj™)�”}”(hhh]”hì)�”}”(hŒfollow standard semantics.”h]”hŒfollow standard semantics.”…”�”}”(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&]”uh1jyh³hÇh´Kãhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jthjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubj )�”}”(hŒ—Setting the ``OUTPUT`` format will reset the selection rectangles to their default values, based on the new resolution, as described in the next step. ”h]”hì)�”}”(hŒ–Setting the ``OUTPUT`` format will reset the selection rectangles to their default values, based on the new resolution, as described in the next step.”h]”(hŒ Setting the ”…”�”}”(hjh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubhŒ€ format will reset the selection rectangles to their default values, based on the new resolution, as described in the next step.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kåhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´KÍhjÌ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj h²hh³Nh´Nubj )�”}”(hXÀSet the raw frame interval on the ``OUTPUT`` queue via :c:func:`VIDIOC_S_PARM`. This also sets the coded frame interval on the ``CAPTURE`` queue to the same value. * **Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ``parm.output`` set all fields except ``parm.output.timeperframe`` to 0. ``parm.output.timeperframe`` the desired frame interval; the encoder may adjust it to match hardware requirements. * **Returned fields:** ``parm.output.timeperframe`` the adjusted frame interval. .. important:: Changing the ``OUTPUT`` frame interval *also* sets the framerate that the encoder uses to encode the video. So setting the frame interval to 1/24 (or 24 frames per second) will produce a coded video stream that can be played back at that speed. The frame interval for the ``OUTPUT`` queue is just a hint, the application may provide raw frames at a different rate. It can be used by the driver to help schedule multiple encoders running in parallel. In the next step the ``CAPTURE`` frame interval can optionally be changed to a different value. This is useful for off-line encoding were the coded frame interval can be different from the rate at which raw frames are supplied. .. important:: ``timeperframe`` deals with *frames*, not fields. So for interlaced formats this is the time per two fields, since a frame consists of a top and a bottom field. .. note:: It is due to historical reasons that changing the ``OUTPUT`` frame interval also changes the coded frame interval on the ``CAPTURE`` queue. Ideally these would be independent settings, but that would break the existing API. ”h]”(hì)�”}”(hŒ£Set the raw frame interval on the ``OUTPUT`` queue via :c:func:`VIDIOC_S_PARM`. This also sets the coded frame interval on the ``CAPTURE`` queue to the same value.”h]”(hŒ"Set the raw frame interval on the ”…”�”}”(hjOh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjOubhŒ queue via ”…”�”}”(hjOh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_S_PARM`”h]”jœ)�”}”(hjkh]”hŒVIDIOC_S_PARM()”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjiubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ VIDIOC_S_PARM”uh1hh³hÇh´KéhjOubhŒ1. This also sets the coded frame interval on the ”…”�”}”(hjOh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjOubhŒ queue to the same value.”…”�”}”(hjOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KéhjKubjç)�”}”(hhh]”(j )�”}”(hX$**Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ``parm.output`` set all fields except ``parm.output.timeperframe`` to 0. ``parm.output.timeperframe`` the desired frame interval; the encoder may adjust it to match hardware requirements. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”j`)�”}”(hj­h]”hŒRequired fields:”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kíhj§ubju)�”}”(hhh]”(jz)�”}”(hŒ@``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ”h]”(j€)�”}”(hŒ``type``”h]”jœ)�”}”(hjËh]”hŒtype”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KðhjÅubj™)�”}”(hhh]”hì)�”}”(hŒ6a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``.”h]”(hŒa ”…”�”}”(hjãh²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_TYPE_*``”h]”hŒV4L2_BUF_TYPE_*”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjãubhŒ enum appropriate for ”…”�”}”(hjãh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(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àubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´KðhjÂubjz)�”}”(hŒI``parm.output`` set all fields except ``parm.output.timeperframe`` to 0. ”h]”(j€)�”}”(hŒ``parm.output``”h]”jœ)�”}”(hj'h]”hŒ parm.output”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Kóhj!ubj™)�”}”(hhh]”hì)�”}”(hŒ8set all fields except ``parm.output.timeperframe`` to 0.”h]”(hŒset all fields except ”…”�”}”(hj?h²hh³Nh´Nubjœ)�”}”(hŒ``parm.output.timeperframe``”h]”hŒparm.output.timeperframe”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj?ubhŒ to 0.”…”�”}”(hj?h²hh³Nh´Nubeh}”(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&]”uh1jyh³hÇh´KóhjÂubjz)�”}”(hŒs``parm.output.timeperframe`` the desired frame interval; the encoder may adjust it to match hardware requirements. ”h]”(j€)�”}”(hŒ``parm.output.timeperframe``”h]”jœ)�”}”(hjqh]”hŒparm.output.timeperframe”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K÷hjkubj™)�”}”(hhh]”hì)�”}”(hŒUthe desired frame interval; the encoder may adjust it to match hardware requirements.”h]”hŒUthe desired frame interval; the encoder may adjust it to match hardware requirements.”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Köhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´K÷hjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jthj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤ubj )�”}”(hŒT**Returned fields:** ``parm.output.timeperframe`` the adjusted frame interval. ”h]”(hì)�”}”(hŒ**Returned fields:**”h]”j`)�”}”(hjµh]”hŒReturned fields:”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kùhj¯ubju)�”}”(hhh]”jz)�”}”(hŒ:``parm.output.timeperframe`` the adjusted frame interval. ”h]”(j€)�”}”(hŒ``parm.output.timeperframe``”h]”jœ)�”}”(hjÓh]”hŒparm.output.timeperframe”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KühjÍubj™)�”}”(hhh]”hì)�”}”(hŒthe adjusted frame interval.”h]”hŒthe adjusted frame interval.”…”�”}”(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&]”uh1jyh³hÇh´KühjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´KíhjKubj» )�”}”(hX¦Changing the ``OUTPUT`` frame interval *also* sets the framerate that the encoder uses to encode the video. So setting the frame interval to 1/24 (or 24 frames per second) will produce a coded video stream that can be played back at that speed. The frame interval for the ``OUTPUT`` queue is just a hint, the application may provide raw frames at a different rate. It can be used by the driver to help schedule multiple encoders running in parallel. In the next step the ``CAPTURE`` frame interval can optionally be changed to a different value. This is useful for off-line encoding were the coded frame interval can be different from the rate at which raw frames are supplied.”h]”(hì)�”}”(hXÁChanging the ``OUTPUT`` frame interval *also* sets the framerate that the encoder uses to encode the video. So setting the frame interval to 1/24 (or 24 frames per second) will produce a coded video stream that can be played back at that speed. The frame interval for the ``OUTPUT`` queue is just a hint, the application may provide raw frames at a different rate. It can be used by the driver to help schedule multiple encoders running in parallel.”h]”(hŒ Changing the ”…”�”}”(hjh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubhŒ frame interval ”…”�”}”(hjh²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*also*”h]”hŒalso”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjubhŒã sets the framerate that the encoder uses to encode the video. So setting the frame interval to 1/24 (or 24 frames per second) will produce a coded video stream that can be played back at that speed. The frame interval for the ”…”�”}”(hjh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubhŒ§ queue is just a hint, the application may provide raw frames at a different rate. It can be used by the driver to help schedule multiple encoders running in parallel.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjubhì)�”}”(hŒãIn the next step the ``CAPTURE`` frame interval can optionally be changed to a different value. This is useful for off-line encoding were the coded frame interval can be different from the rate at which raw frames are supplied.”h]”(hŒIn the next step the ”…”�”}”(hjah²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjaubhŒÃ frame interval can optionally be changed to a different value. This is useful for off-line encoding were the coded frame interval can be different from the rate at which raw frames are supplied.”…”�”}”(hjah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jº hjKubj» )�”}”(hŒ ``timeperframe`` deals with *frames*, not fields. So for interlaced formats this is the time per two fields, since a frame consists of a top and a bottom field.”h]”hì)�”}”(hŒ ``timeperframe`` deals with *frames*, not fields. So for interlaced formats this is the time per two fields, since a frame consists of a top and a bottom field.”h]”(jœ)�”}”(hŒ``timeperframe``”h]”hŒ timeperframe”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‹ubhŒ deals with ”…”�”}”(hj‹h²hh³Nh´Nubj6)�”}”(hŒ*frames*”h]”hŒframes”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj‹ubhŒ|, not fields. So for interlaced formats this is the time per two fields, since a frame consists of a top and a bottom field.”…”�”•D}”(hj‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jº hjKubhŒnote”“”)�”}”(hŒßIt is due to historical reasons that changing the ``OUTPUT`` frame interval also changes the coded frame interval on the ``CAPTURE`` queue. Ideally these would be independent settings, but that would break the existing API.”h]”hì)�”}”(hŒßIt is due to historical reasons that changing the ``OUTPUT`` frame interval also changes the coded frame interval on the ``CAPTURE`` queue. Ideally these would be independent settings, but that would break the existing API.”h]”(hŒ2It is due to historical reasons that changing the ”…”�”}”(hjÅh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÅubhŒ= frame interval also changes the coded frame interval on the ”…”�”}”(hjÅh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÅubhŒ[ queue. Ideally these would be independent settings, but that would break the existing API.”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj h²hh³Nh´Nubj )�”}”(hXð**Optional** Set the coded frame interval on the ``CAPTURE`` queue via :c:func:`VIDIOC_S_PARM`. This is only necessary if the coded frame interval is different from the raw frame interval, which is typically the case for off-line encoding. Support for this feature is signalled by the :ref:`V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL ` format flag. * **Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ``parm.capture`` set all fields except ``parm.capture.timeperframe`` to 0. ``parm.capture.timeperframe`` the desired coded frame interval; the encoder may adjust it to match hardware requirements. * **Returned fields:** ``parm.capture.timeperframe`` the adjusted frame interval. .. important:: Changing the ``CAPTURE`` frame interval sets the framerate for the coded video. It does *not* set the rate at which buffers arrive on the ``CAPTURE`` queue, that depends on how fast the encoder is and how fast raw frames are queued on the ``OUTPUT`` queue. .. important:: ``timeperframe`` deals with *frames*, not fields. So for interlaced formats this is the time per two fields, since a frame consists of a top and a bottom field. .. note:: Not all drivers support this functionality, in that case just set the desired coded frame interval for the ``OUTPUT`` queue. However, drivers that can schedule multiple encoders based on the ``OUTPUT`` frame interval must support this optional feature. ”h]”(hì)�”}”(hXe**Optional** Set the coded frame interval on the ``CAPTURE`` queue via :c:func:`VIDIOC_S_PARM`. This is only necessary if the coded frame interval is different from the raw frame interval, which is typically the case for off-line encoding. Support for this feature is signalled by the :ref:`V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL ` format flag.”h]”(j`)�”}”(hŒ **Optional**”h]”hŒOptional”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjubhŒ% Set the coded frame interval on the ”…”�”}”(hjh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubhŒ queue via ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_S_PARM`”h]”jœ)�”}”(hj1h]”hŒVIDIOC_S_PARM()”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj/ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ VIDIOC_S_PARM”uh1hh³hÇh´MhjubhŒ¿. This is only necessary if the coded frame interval is different from the raw frame interval, which is typically the case for off-line encoding. Support for this feature is signalled by the ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ;:ref:`V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL `”h]”jU)�”}”(hjTh]”hŒ$V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”(j§Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jThjRubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j`Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjÉŒ fmtdesc-flags”uh1hh³hÇh´MhjubhŒ format flag.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjubjç)�”}”(hhh]”(j )�”}”(hX.**Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ``parm.capture`` set all fields except ``parm.capture.timeperframe`` to 0. ``parm.capture.timeperframe`` the desired coded frame interval; the encoder may adjust it to match hardware requirements. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”j`)�”}”(hj…h]”hŒRequired fields:”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjubju)�”}”(hhh]”(jz)�”}”(hŒA``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ”h]”(j€)�”}”(hŒ``type``”h]”jœ)�”}”(hj£h]”hŒtype”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M#hj�ubj™)�”}”(hhh]”hì)�”}”(hŒ7a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``.”h]”(hŒa ”…”�”}”(hj»h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_TYPE_*``”h]”hŒV4L2_BUF_TYPE_*”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj»ubhŒ enum appropriate for ”…”�”}”(hj»h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(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´M#hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´M#hjšubjz)�”}”(hŒK``parm.capture`` set all fields except ``parm.capture.timeperframe`` to 0. ”h]”(j€)�”}”(hŒ``parm.capture``”h]”jœ)�”}”(hjÿh]”hŒ parm.capture”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M&hjùubj™)�”}”(hhh]”hì)�”}”(hŒ9set all fields except ``parm.capture.timeperframe`` to 0.”h]”(hŒset all fields except ”…”�”}”(hjh²hh³Nh´Nubjœ)�”}”(hŒ``parm.capture.timeperframe``”h]”hŒparm.capture.timeperframe”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubhŒ to 0.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M&hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´M&hjšubjz)�”}”(hŒz``parm.capture.timeperframe`` the desired coded frame interval; the encoder may adjust it to match hardware requirements. ”h]”(j€)�”}”(hŒ``parm.capture.timeperframe``”h]”jœ)�”}”(hjIh]”hŒparm.capture.timeperframe”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M*hjCubj™)�”}”(hhh]”hì)�”}”(hŒ[the desired coded frame interval; the encoder may adjust it to match hardware requirements.”h]”hŒ[the desired coded frame interval; the encoder may adjust it to match hardware requirements.”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M)hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´M*hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jthjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubj )�”}”(hŒU**Returned fields:** ``parm.capture.timeperframe`` the adjusted frame interval. ”h]”(hì)�”}”(hŒ**Returned fields:**”h]”j`)�”}”(hj�h]”hŒReturned fields:”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M,hj‡ubju)�”}”(hhh]”jz)�”}”(hŒ;``parm.capture.timeperframe`` the adjusted frame interval. ”h]”(j€)�”}”(hŒ``parm.capture.timeperframe``”h]”jœ)�”}”(hj«h]”hŒparm.capture.timeperframe”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M/hj¥ubj™)�”}”(hhh]”hì)�”}”(hŒthe adjusted frame interval.”h]”hŒthe adjusted frame interval.”…”�”}”(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&]”uh1jyh³hÇh´M/hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´M hjubj» )�”}”(hXChanging the ``CAPTURE`` frame interval sets the framerate for the coded video. It does *not* set the rate at which buffers arrive on the ``CAPTURE`` queue, that depends on how fast the encoder is and how fast raw frames are queued on the ``OUTPUT`` queue.”h]”hì)�”}”(hXChanging the ``CAPTURE`` frame interval sets the framerate for the coded video. It does *not* set the rate at which buffers arrive on the ``CAPTURE`` queue, that depends on how fast the encoder is and how fast raw frames are queued on the ``OUTPUT`` queue.”h]”(hŒ Changing the ”…”�”}”(hjóh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóubhŒ@ frame interval sets the framerate for the coded video. It does ”…”�”}”(hjóh²hh³Nh´Nubj6)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjóubhŒ- set the rate at which buffers arrive on the ”…”�”}”(hjóh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóubhŒZ queue, that depends on how fast the encoder is and how fast raw frames are queued on the ”…”�”}”(hjóh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóubhŒ queue.”…”�”}”(hjóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M3hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jº hjubj» )�”}”(hŒ ``timeperframe`` deals with *frames*, not fields. So for interlaced formats this is the time per two fields, since a frame consists of a top and a bottom field.”h]”hì)�”}”(hŒ ``timeperframe`` deals with *frames*, not fields. So for interlaced formats this is the time per two fields, since a frame consists of a top and a bottom field.”h]”(jœ)�”}”(hŒ``timeperframe``”h]”hŒ timeperframe”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjSubhŒ deals with ”…”�”}”(hjSh²hh³Nh´Nubj6)�”}”(hŒ*frames*”h]”hŒframes”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjSubhŒ|, not fields. So for interlaced formats this is the time per two fields, since a frame consists of a top and a bottom field.”…”�”}”(hjSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M:hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jº hjubjÀ)�”}”(hŒýNot all drivers support this functionality, in that case just set the desired coded frame interval for the ``OUTPUT`` queue. However, drivers that can schedule multiple encoders based on the ``OUTPUT`` frame interval must support this optional feature.”h]”(hì)�”}”(hŒ|Not all drivers support this functionality, in that case just set the desired coded frame interval for the ``OUTPUT`` queue.”h]”(hŒkNot all drivers support this functionality, in that case just set the desired coded frame interval for the ”…”�”}”(hj‹h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‹ubhŒ queue.”…”�”}”(hj‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M@hj‡ubhì)�”}”(hŒHowever, drivers that can schedule multiple encoders based on the ``OUTPUT`` frame interval must support this optional feature.”h]”(hŒBHowever, drivers that can schedule multiple encoders based on the ”…”�”}”(hj«h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj«ubhŒ3 frame interval must support this optional feature.”…”�”}”(hj«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MChj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj h²hh³Nh´Nubj )�”}”(hXõ**Optional.** Set the visible resolution for the stream metadata via :c:func:`VIDIOC_S_SELECTION` on the ``OUTPUT`` queue if it is desired to be different than the full OUTPUT resolution. * **Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ``target`` set to ``V4L2_SEL_TGT_CROP``. ``r.left``, ``r.top``, ``r.width``, ``r.height`` visible rectangle; this must fit within the `V4L2_SEL_TGT_CROP_BOUNDS` rectangle and may be subject to adjustment to match codec and hardware constraints. * **Returned fields:** ``r.left``, ``r.top``, ``r.width``, ``r.height`` visible rectangle adjusted by the encoder. * The following selection targets are supported on ``OUTPUT``: ``V4L2_SEL_TGT_CROP_BOUNDS`` equal to the full source frame, matching the active ``OUTPUT`` format. ``V4L2_SEL_TGT_CROP_DEFAULT`` equal to ``V4L2_SEL_TGT_CROP_BOUNDS``. ``V4L2_SEL_TGT_CROP`` rectangle within the source buffer to be encoded into the ``CAPTURE`` stream; defaults to ``V4L2_SEL_TGT_CROP_DEFAULT``. .. note:: A common use case for this selection target is encoding a source video with a resolution that is not a multiple of a macroblock, e.g. the common 1920x1080 resolution may require the source buffers to be aligned to 1920x1088 for codecs with 16x16 macroblock size. To avoid encoding the padding, the client needs to explicitly configure this selection target to 1920x1080. .. warning:: The encoder may adjust the crop/compose rectangles to the nearest supported ones to meet codec and hardware requirements. The client needs to check the adjusted rectangle returned by :c:func:`VIDIOC_S_SELECTION`. ”h]”(hì)�”}”(hŒ»**Optional.** Set the visible resolution for the stream metadata via :c:func:`VIDIOC_S_SELECTION` on the ``OUTPUT`` queue if it is desired to be different than the full OUTPUT resolution.”h]”(j`)�”}”(hŒ **Optional.**”h]”hŒ Optional.”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjÛubhŒ8 Set the visible resolution for the stream metadata via ”…”�”}”(hjÛh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_S_SELECTION`”h]”jœ)�”}”(hjóh]”hŒVIDIOC_S_SELECTION()”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjñubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_S_SELECTION”uh1hh³hÇh´MFhjÛubhŒ on the ”…”�”}”(hjÛh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÛubhŒH queue if it is desired to be different than the full OUTPUT resolution.”…”�”}”(hjÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MFhj×ubjç)�”}”(hhh]”(j )�”}”(hXa**Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ``target`` set to ``V4L2_SEL_TGT_CROP``. ``r.left``, ``r.top``, ``r.width``, ``r.height`` visible rectangle; this must fit within the `V4L2_SEL_TGT_CROP_BOUNDS` rectangle and may be subject to adjustment to match codec and hardware constraints. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”j`)�”}”(hj5h]”hŒRequired fields:”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MJhj/ubju)�”}”(hhh]”(jz)�”}”(hŒ@``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ”h]”(j€)�”}”(hŒ``type``”h]”jœ)�”}”(hjSh]”hŒtype”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´MMhjMubj™)�”}”(hhh]”hì)�”}”(hŒ6a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``.”h]”(hŒa ”…”�”}”(hjkh²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_TYPE_*``”h]”hŒV4L2_BUF_TYPE_*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjkubhŒ enum appropriate for ”…”�”}”(hjkh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjkubhŒ.”…”�”}”(hjkh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MMhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´MMhjJubjz)�”}”(hŒ)``target`` set to ``V4L2_SEL_TGT_CROP``. ”h]”(j€)�”}”(hŒ ``target``”h]”jœ)�”}”(hj¯h]”hŒtarget”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´MPhj©ubj™)�”}”(hhh]”hì)�”}”(hŒset to ``V4L2_SEL_TGT_CROP``.”h]”(hŒset to ”…”�”}”(hjÇh²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_SEL_TGT_CROP``”h]”hŒV4L2_SEL_TGT_CROP”…”�”}”(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´MPhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´MPhjJubjz)�”}”(hŒÌ``r.left``, ``r.top``, ``r.width``, ``r.height`` visible rectangle; this must fit within the `V4L2_SEL_TGT_CROP_BOUNDS` rectangle and may be subject to adjustment to match codec and hardware constraints. ”h]”(j€)�”}”(hŒ0``r.left``, ``r.top``, ``r.width``, ``r.height``”h]”(jœ)�”}”(hŒ ``r.left``”h]”hŒr.left”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj÷ubhŒ, ”…”�”}”(hj÷h²hh³Nh´Nubjœ)�”}”(hŒ ``r.top``”h]”hŒr.top”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj÷ubhŒ, ”…”�”}”hj÷sbjœ)�”}”(hŒ ``r.width``”h]”hŒr.width”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj÷ubhŒ, ”…”�”}”hj÷sbjœ)�”}”(hŒ ``r.height``”h]”hŒr.height”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´MUhjóubj™)�”}”(hhh]”hì)�”}”(hŒšvisible rectangle; this must fit within the `V4L2_SEL_TGT_CROP_BOUNDS` rectangle and may be subject to adjustment to match codec and hardware constraints.”h]”(hŒ,visible rectangle; this must fit within the ”…”�”}”(hjHh²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ`V4L2_SEL_TGT_CROP_BOUNDS`”h]”hŒV4L2_SEL_TGT_CROP_BOUNDS”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhjHubhŒT rectangle and may be subject to adjustment to match codec and hardware constraints.”…”�”}”(hjHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MShjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´MUhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jthj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj,ubj )�”}”(hŒv**Returned fields:** ``r.left``, ``r.top``, ``r.width``, ``r.height`` visible rectangle adjusted by the encoder. ”h]”(hì)�”}”(hŒ**Returned fields:**”h]”j`)�”}”(hjˆh]”hŒReturned fields:”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MWhj‚ubju)�”}”(hhh]”jz)�”}”(hŒ\``r.left``, ``r.top``, ``r.width``, ``r.height`` visible rectangle adjusted by the encoder. ”h]”(j€)�”}”(hŒ0``r.left``, ``r.top``, ``r.width``, ``r.height``”h]”(jœ)�”}”(hŒ ``r.left``”h]”hŒr.left”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¤ubhŒ, ”…”�”}”(hj¤h²hh³Nh´Nubjœ)�”}”(hŒ ``r.top``”h]”hŒr.top”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¤ubhŒ, ”…”�”}”hj¤sbjœ)�”}”(hŒ ``r.width``”h]”hŒr.width”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¤ubhŒ, ”…”�”}”hj¤sbjœ)�”}”(hŒ ``r.height``”h]”hŒr.height”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´MZhj ubj™)�”}”(hhh]”hì)�”}”(hŒ*visible rectangle adjusted by the encoder.”h]”hŒ*visible rectangle adjusted by the encoder.”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MZhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´MZhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj,ubj )�”}”(hX:The following selection targets are supported on ``OUTPUT``: ``V4L2_SEL_TGT_CROP_BOUNDS`` equal to the full source frame, matching the active ``OUTPUT`` format. ``V4L2_SEL_TGT_CROP_DEFAULT`` equal to ``V4L2_SEL_TGT_CROP_BOUNDS``. ``V4L2_SEL_TGT_CROP`` rectangle within the source buffer to be encoded into the ``CAPTURE`` stream; defaults to ``V4L2_SEL_TGT_CROP_DEFAULT``. .. note:: A common use case for this selection target is encoding a source video with a resolution that is not a multiple of a macroblock, e.g. the common 1920x1080 resolution may require the source buffers to be aligned to 1920x1088 for codecs with 16x16 macroblock size. To avoid encoding the padding, the client needs to explicitly configure this selection target to 1920x1080. ”h]”(hì)�”}”(hŒ queue may differ from the order of queuing raw frames to the ”…”�”}”(hjóh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóubhŒN queue, due to properties of the selected coded format, e.g. frame reordering.”…”�”}”(hjóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MËhj\h²hubhì)�”}”(hŒ­The client must not assume any direct relationship between ``CAPTURE`` and ``OUTPUT`` buffers and any specific timing of buffers becoming available to dequeue. Specifically:”h]”(hŒ;The client must not assume any direct relationship between ”…”�”}”(hj%h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj%ubhŒ and ”…”�”}”(hj%h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj%ubhŒX buffers and any specific timing of buffers becoming available to dequeue. Specifically:”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÑhj\h²hubjç)�”}”(hhh]”(j )�”}”(hX%a buffer queued to ``OUTPUT`` may result in more than one buffer produced on ``CAPTURE`` (for example, if returning an encoded frame allowed the encoder to return a frame that preceded it in display, but succeeded it in the decode order; however, there may be other reasons for this as well), ”h]”hì)�”}”(hX$a buffer queued to ``OUTPUT`` may result in more than one buffer produced on ``CAPTURE`` (for example, if returning an encoded frame allowed the encoder to return a frame that preceded it in display, but succeeded it in the decode order; however, there may be other reasons for this as well),”h]”(hŒa buffer queued to ”…”�”}”(hj^h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj^ubhŒ0 may result in more than one buffer produced on ”…”�”}”(hj^h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj^ubhŒÌ (for example, if returning an encoded frame allowed the encoder to return a frame that preceded it in display, but succeeded it in the decode order; however, there may be other reasons for this as well),”…”�”}”(hj^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÕhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWh²hh³hÇh´Nubj )�”}”(hŒãa buffer queued to ``OUTPUT`` may result in a buffer being produced on ``CAPTURE`` later into encode process, and/or after processing further ``OUTPUT`` buffers, or be returned out of order, e.g. if display reordering is used, ”h]”hì)�”}”(hŒâa buffer queued to ``OUTPUT`` may result in a buffer being produced on ``CAPTURE`` later into encode process, and/or after processing further ``OUTPUT`` buffers, or be returned out of order, e.g. if display reordering is used,”h]”(hŒa buffer queued to ”…”�”}”(hjšh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjšubhŒ* may result in a buffer being produced on ”…”�”}”(hjšh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjšubhŒ< later into encode process, and/or after processing further ”…”�”}”(hjšh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjšubhŒJ buffers, or be returned out of order, e.g. if display reordering is used,”…”�”}”(hjšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÚhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWh²hh³hÇh´Nubj )�”}”(hXbuffers may become available on the ``CAPTURE`` queue without additional buffers queued to ``OUTPUT`` (e.g. during drain or ``EOS``), because of the ``OUTPUT`` buffers queued in the past whose encoding results are only available at later time, due to specifics of the encoding process, ”h]”hì)�”}”(hXbuffers may become available on the ``CAPTURE`` queue without additional buffers queued to ``OUTPUT`` (e.g. during drain or ``EOS``), because of the ``OUTPUT`` buffers queued in the past whose encoding results are only available at later time, due to specifics of the encoding process,”h]”(hŒ$buffers may become available on the ”…”�”}”(hjèh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjèubhŒ, queue without additional buffers queued to ”…”�”}”(hjèh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjèubhŒ (e.g. during drain or ”…”�”}”(hjèh²hh³Nh´Nubjœ)�”}”(hŒ``EOS``”h]”hŒEOS”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjèubhŒ), because of the ”…”�”}”(hjèh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjèubhŒ~ buffers queued in the past whose encoding results are only available at later time, due to specifics of the encoding process,”…”�”}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mßhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWh²hh³hÇh´Nubj )�”}”(hŒßbuffers queued to ``OUTPUT`` may not become available to dequeue instantly after being encoded into a corresponding ``CAPTURE`` buffer, e.g. if the encoder needs to use the frame as a reference for encoding further frames. ”h]”hì)�”}”(hŒÞbuffers queued to ``OUTPUT`` may not become available to dequeue instantly after being encoded into a corresponding ``CAPTURE`` buffer, e.g. if the encoder needs to use the frame as a reference for encoding further frames.”h]”(hŒbuffers queued to ”…”�”}”(hjHh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjHubhŒX may not become available to dequeue instantly after being encoded into a corresponding ”…”�”}”(hjHh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjHubhŒ_ buffer, e.g. if the encoder needs to use the frame as a reference for encoding further frames.”…”�”}”(hjHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MähjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´MÕhj\h²hubjÀ)�”}”(hXXTo allow matching encoded ``CAPTURE`` buffers with ``OUTPUT`` buffers they originated from, the client can set the ``timestamp`` field of the :c:type:`v4l2_buffer` struct when queuing an ``OUTPUT`` buffer. The ``CAPTURE`` buffer(s), which resulted from encoding that ``OUTPUT`` buffer will have their ``timestamp`` field set to the same value when dequeued. In addition to the straightforward case of one ``OUTPUT`` buffer producing one ``CAPTURE`` buffer, the following cases are defined: * one ``OUTPUT`` buffer generates multiple ``CAPTURE`` buffers: the same ``OUTPUT`` timestamp will be copied to multiple ``CAPTURE`` buffers, * the encoding order differs from the presentation order (i.e. the ``CAPTURE`` buffers are out-of-order compared to the ``OUTPUT`` buffers): ``CAPTURE`` timestamps will not retain the order of ``OUTPUT`` timestamps.”h]”(hì)�”}”(hXeTo allow matching encoded ``CAPTURE`` buffers with ``OUTPUT`` buffers they originated from, the client can set the ``timestamp`` field of the :c:type:`v4l2_buffer` struct when queuing an ``OUTPUT`` buffer. The ``CAPTURE`` buffer(s), which resulted from encoding that ``OUTPUT`` buffer will have their ``timestamp`` field set to the same value when dequeued.”h]”(hŒTo allow matching encoded ”…”�”}”(hjŠh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠubhŒ buffers with ”…”�”}”(hjŠh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠubhŒ6 buffers they originated from, the client can set the ”…”�”}”(hjŠh²hh³Nh´Nubjœ)�”}”(hŒ ``timestamp``”h]”hŒ timestamp”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠubhŒ field of the ”…”�”}”(hjŠh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_buffer`”h]”jœ)�”}”(hjÊh]”hŒ v4l2_buffer”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-type”eh"]”h$]”h&]”uh1j›hjÈubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ v4l2_buffer”uh1hh³hÇh´MêhjŠubhŒ struct when queuing an ”…”�”}”(hjŠh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠubhŒ buffer. The ”…”�”}”(hjŠh²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠubhŒ. buffer(s), which resulted from encoding that ”…”�”}”(hjŠh²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠubhŒ buffer will have their ”…”�”}”(hjŠh²hh³Nh´Nubjœ)�”}”(hŒ ``timestamp``”h]”hŒ timestamp”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠubhŒ+ field set to the same value when dequeued.”…”�”}”(hjŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mêhj†ubhì)�”}”(hŒƒIn addition to the straightforward case of one ``OUTPUT`` buffer producing one ``CAPTURE`` buffer, the following cases are defined:”h]”(hŒ/In addition to the straightforward case of one ”…”�”}”(hj9 h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj9 ubhŒ buffer producing one ”…”�”}”(hj9 h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj9 ubhŒ) buffer, the following cases are defined:”…”�”}”(hj9 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mðhj†ubjç)�”}”(hhh]”(j )�”}”(hŒŒone ``OUTPUT`` buffer generates multiple ``CAPTURE`` buffers: the same ``OUTPUT`` timestamp will be copied to multiple ``CAPTURE`` buffers, ”h]”hì)�”}”(hŒ‹one ``OUTPUT`` buffer generates multiple ``CAPTURE`` buffers: the same ``OUTPUT`` timestamp will be copied to multiple ``CAPTURE`` buffers,”h]”(hŒone ”…”�”}”(hjr h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjr ubhŒ buffer generates multiple ”…”�”}”(hjr h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjr ubhŒ buffers: the same ”…”�”}”(hjr h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjr ubhŒ& timestamp will be copied to multiple ”…”�”}”(hjr h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjr ubhŒ buffers,”…”�”}”(hjr h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Móhjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjk ubj )�”}”(hŒÕthe encoding order differs from the presentation order (i.e. the ``CAPTURE`` buffers are out-of-order compared to the ``OUTPUT`` buffers): ``CAPTURE`` timestamps will not retain the order of ``OUTPUT`` timestamps.”h]”hì)�”}”(hŒÕthe encoding order differs from the presentation order (i.e. the ``CAPTURE`` buffers are out-of-order compared to the ``OUTPUT`` buffers): ``CAPTURE`` timestamps will not retain the order of ``OUTPUT`` timestamps.”h]”(hŒAthe encoding order differs from the presentation order (i.e. the ”…”�”}”(hjÒ h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÒ ubhŒ* buffers are out-of-order compared to the ”…”�”}”(hjÒ h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÒ ubhŒ buffers): ”…”�”}”(hjÒ h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÒ ubhŒ) timestamps will not retain the order of ”…”�”}”(hjÒ h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÒ ubhŒ timestamps.”…”�”}”(hjÒ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MöhjÎ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjk ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´Móhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj\h²hh³Nh´NubjÀ)�”}”(hXrTo let the client distinguish between frame types (keyframes, intermediate frames; the exact list of types depends on the coded format), the ``CAPTURE`` buffers will have corresponding flag bits set in their :c:type:`v4l2_buffer` struct when dequeued. See the documentation of :c:type:`v4l2_buffer` and each coded pixel format for exact list of flags and their meanings.”h]”hì)�”}”(hXrTo let the client distinguish between frame types (keyframes, intermediate frames; the exact list of types depends on the coded format), the ``CAPTURE`` buffers will have corresponding flag bits set in their :c:type:`v4l2_buffer` struct when dequeued. See the documentation of :c:type:`v4l2_buffer` and each coded pixel format for exact list of flags and their meanings.”h]”(hŒ�To let the client distinguish between frame types (keyframes, intermediate frames; the exact list of types depends on the coded format), the ”…”�”}”(hj>!h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjF!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj>!ubhŒ8 buffers will have corresponding flag bits set in their ”…”�”}”(hj>!h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_buffer`”h]”jœ)�”}”(hjZ!h]”hŒ v4l2_buffer”…”�”}”(hj\!h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-type”eh"]”h$]”h&]”uh1j›hjX!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ v4l2_buffer”uh1hh³hÇh´Mühj>!ubhŒ0 struct when dequeued. See the documentation of ”…”�”}”(hj>!h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_buffer`”h]”jœ)�”}”(hj}!h]”hŒ v4l2_buffer”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-type”eh"]”h$]”h&]”uh1j›hj{!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ v4l2_buffer”uh1hh³hÇh´Mühj>!ubhŒH and each coded pixel format for exact list of flags and their meanings.”…”�”}”(hj>!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mühj:!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj\h²hh³hÇh´Nubhì)�”}”(hŒ�Should an encoding error occur, it will be reported to the client with the level of details depending on the encoder capabilities. Specifically:”h]”hŒ�Should an encoding error occur, it will be reported to the client with the level of details depending on the encoder capabilities. Specifically:”…”�”}”(hjª!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj\h²hubjç)�”}”(hhh]”(j )�”}”(hŒ•the ``CAPTURE`` buffer (if any) that contains the results of the failed encode operation will be returned with the ``V4L2_BUF_FLAG_ERROR`` flag set, ”h]”hì)�”}”(hŒ”the ``CAPTURE`` buffer (if any) that contains the results of the failed encode operation will be returned with the ``V4L2_BUF_FLAG_ERROR`` flag set,”h]”(hŒthe ”…”�”}”(hj¿!h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjÇ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¿!ubhŒd buffer (if any) that contains the results of the failed encode operation will be returned with the ”…”�”}”(hj¿!h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_FLAG_ERROR``”h]”hŒV4L2_BUF_FLAG_ERROR”…”�”}”(hjÙ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¿!ubhŒ flag set,”…”�”}”(hj¿!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj»!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸!h²hh³hÇh´Nubj )�”}”(hŒ©if the encoder is able to precisely report the ``OUTPUT`` buffer(s) that triggered the error, such buffer(s) will be returned with the ``V4L2_BUF_FLAG_ERROR`` flag set. ”h]”hì)�”}”(hŒ¨if the encoder is able to precisely report the ``OUTPUT`` buffer(s) that triggered the error, such buffer(s) will be returned with the ``V4L2_BUF_FLAG_ERROR`` flag set.”h]”(hŒ/if the encoder is able to precisely report the ”…”�”}”(hjû!h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjû!ubhŒN buffer(s) that triggered the error, such buffer(s) will be returned with the ”…”�”}”(hjû!h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_FLAG_ERROR``”h]”hŒV4L2_BUF_FLAG_ERROR”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjû!ubhŒ flag set.”…”�”}”(hjû!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hj÷!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸!h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´Mhj\h²hubjÀ)�”}”(hXIf a ``CAPTURE`` buffer is too small then it is just returned with the ``V4L2_BUF_FLAG_ERROR`` flag set. More work is needed to detect that this error occurred because the buffer was too small, and to provide support to free existing buffers that were too small.”h]”hì)�”}”(hXIf a ``CAPTURE`` buffer is too small then it is just returned with the ``V4L2_BUF_FLAG_ERROR`` flag set. More work is needed to detect that this error occurred because the buffer was too small, and to provide support to free existing buffers that were too small.”h]”(hŒIf a ”…”�”}”(hj="h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjE"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj="ubhŒ7 buffer is too small then it is just returned with the ”…”�”}”(hj="h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_FLAG_ERROR``”h]”hŒV4L2_BUF_FLAG_ERROR”…”�”}”(hjW"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj="ubhŒ¨ flag set. More work is needed to detect that this error occurred because the buffer was too small, and to provide support to free existing buffers that were too small.”…”�”}”(hj="h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj9"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj\h²hh³hÇh´Nubhì)�”}”(hXwIn case of a fatal failure that does not allow the encoding to continue, any further operations on corresponding encoder file handle will return the -EIO error code. The client may close the file handle and open a new one, or alternatively reinitialize the instance by stopping streaming on both queues, releasing all buffers and performing the Initialization sequence again.”•ºÐh]”hXwIn case of a fatal failure that does not allow the encoding to continue, any further operations on corresponding encoder file handle will return the -EIO error code. The client may close the file handle and open a new one, or alternatively reinitialize the instance by stopping streaming on both queues, releasing all buffers and performing the Initialization sequence again.”…”�”}”(hju"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj\h²hubeh}”(h]”Œencoding”ah ]”h"]”Œencoding”ah$]”h&]”uh1hÖhhØh²hh³hÇh´MÀubh×)�”}”(hhh]”(hÜ)�”}”(hŒEncoding Parameter Changes”h]”hŒEncoding Parameter Changes”…”�”}”(hjŽ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj‹"h²hh³hÇh´Mubhì)�”}”(hŒÞThe client is allowed to use :c:func:`VIDIOC_S_CTRL` to change encoder parameters at any time. The availability of parameters is encoder-specific and the client must query the encoder to find the set of available controls.”h]”(hŒThe client is allowed to use ”…”�”}”(hjœ"h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_S_CTRL`”h]”jœ)�”}”(hj¦"h]”hŒVIDIOC_S_CTRL()”…”�”}”(hj¨"h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj¤"ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ VIDIOC_S_CTRL”uh1hh³hÇh´Mhjœ"ubhŒª to change encoder parameters at any time. The availability of parameters is encoder-specific and the client must query the encoder to find the set of available controls.”…”�”}”(hjœ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj‹"h²hubhì)�”}”(hX­The ability to change each parameter during encoding is encoder-specific, as per the standard semantics of the V4L2 control interface. The client may attempt to set a control during encoding and if the operation fails with the -EBUSY error code, the ``CAPTURE`` queue needs to be stopped for the configuration change to be allowed. To do this, it may follow the `Drain` sequence to avoid losing the already queued/encoded frames.”h]”(hŒúThe ability to change each parameter during encoding is encoder-specific, as per the standard semantics of the V4L2 control interface. The client may attempt to set a control during encoding and if the operation fails with the -EBUSY error code, the ”…”�”}”(hjÍ"h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjÕ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÍ"ubhŒe queue needs to be stopped for the configuration change to be allowed. To do this, it may follow the ”…”�”}”(hjÍ"h²hh³Nh´NubjQ)�”}”(hŒ`Drain`”h]”hŒDrain”…”�”}”(hjç"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhjÍ"ubhŒ< sequence to avoid losing the already queued/encoded frames.”…”�”}”(hjÍ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M!hj‹"h²hubhì)�”}”(hXThe timing of parameter updates is encoder-specific, as per the standard semantics of the V4L2 control interface. If the client needs to apply the parameters exactly at specific frame, using the Request API (:ref:`media-request-api`) should be considered, if supported by the encoder.”h]”(hŒÐThe timing of parameter updates is encoder-specific, as per the standard semantics of the V4L2 control interface. If the client needs to apply the parameters exactly at specific frame, using the Request API (”…”�”}”(hjÿ"h²hh³Nh´Nubh)�”}”(hŒ:ref:`media-request-api`”h]”jU)�”}”(hj #h]”hŒmedia-request-api”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”(j§Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jThj#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j#Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjÉŒmedia-request-api”uh1hh³hÇh´M(hjÿ"ubhŒ4) should be considered, if supported by the encoder.”…”�”}”(hjÿ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M(hj‹"h²hubeh}”(h]”Œencoding-parameter-changes”ah ]”h"]”Œencoding parameter changes”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Mubh×)�”}”(hhh]”(hÜ)�”}”(hŒDrain”h]”hŒDrain”…”�”}”(hj<#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj9#h²hh³hÇh´M.ubhì)�”}”(hXITo ensure that all the queued ``OUTPUT`` buffers have been processed and the related ``CAPTURE`` buffers are given to the client, the client must follow the drain sequence described below. After the drain sequence ends, the client has received all encoded frames for all ``OUTPUT`` buffers queued before the sequence was started.”h]”(hŒTo ensure that all the queued ”…”�”}”(hjJ#h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjR#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjJ#ubhŒ- buffers have been processed and the related ”…”�”}”(hjJ#h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjd#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjJ#ubhŒ¯ buffers are given to the client, the client must follow the drain sequence described below. After the drain sequence ends, the client has received all encoded frames for all ”…”�”}”(hjJ#h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjv#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjJ#ubhŒ0 buffers queued before the sequence was started.”…”�”}”(hjJ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M0hj9#h²hubj)�”}”(hhh]”(j )�”}”(hX2Begin the drain sequence by issuing :c:func:`VIDIOC_ENCODER_CMD`. * **Required fields:** ``cmd`` set to ``V4L2_ENC_CMD_STOP``. ``flags`` set to 0. ``pts`` set to 0. .. warning:: The sequence can be only initiated if both ``OUTPUT`` and ``CAPTURE`` queues are streaming. For compatibility reasons, the call to :c:func:`VIDIOC_ENCODER_CMD` will not fail even if any of the queues is not streaming, but at the same time it will not initiate the `Drain` sequence and so the steps described below would not be applicable. ”h]”(hì)�”}”(hŒABegin the drain sequence by issuing :c:func:`VIDIOC_ENCODER_CMD`.”h]”(hŒ$Begin the drain sequence by issuing ”…”�”}”(hj•#h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_ENCODER_CMD`”h]”jœ)�”}”(hjŸ#h]”hŒVIDIOC_ENCODER_CMD()”…”�”}”(hj¡#h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj�#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENCODER_CMD”uh1hh³hÇh´M6hj•#ubhŒ.”…”�”}”(hj•#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M6hj‘#ubjç)�”}”(hhh]”j )�”}”(hŒp**Required fields:** ``cmd`` set to ``V4L2_ENC_CMD_STOP``. ``flags`` set to 0. ``pts`` set to 0. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”j`)�”}”(hjÏ#h]”hŒRequired fields:”…”�”}”(hjÑ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjÍ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M8hjÉ#ubju)�”}”(hhh]”(jz)�”}”(hŒ&``cmd`` set to ``V4L2_ENC_CMD_STOP``. ”h]”(j€)�”}”(hŒ``cmd``”h]”jœ)�”}”(hjí#h]”hŒcmd”…”�”}”(hjï#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjë#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M;hjç#ubj™)�”}”(hhh]”hì)�”}”(hŒset to ``V4L2_ENC_CMD_STOP``.”h]”(hŒset to ”…”�”}”(hj$h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_ENC_CMD_STOP``”h]”hŒV4L2_ENC_CMD_STOP”…”�”}”(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´M;hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjç#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´M;hjä#ubjz)�”}”(hŒ``flags`` set to 0. ”h]”(j€)�”}”(hŒ ``flags``”h]”jœ)�”}”(hj7$h]”hŒflags”…”�”}”(hj9$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj5$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M>hj1$ubj™)�”}”(hhh]”hì)�”}”(hŒ set to 0.”h]”hŒ set to 0.”…”�”}”(hjO$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M>hjL$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj1$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´M>hjä#ubjz)�”}”(hŒ``pts`` set to 0. ”h]”(j€)�”}”(hŒ``pts``”h]”jœ)�”}”(hjo$h]”hŒpts”…”�”}”(hjq$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjm$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´MAhji$ubj™)�”}”(hhh]”hì)�”}”(hŒ set to 0.”h]”hŒ set to 0.”…”�”}”(hj‡$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MAhj„$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hji$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jyh³hÇh´MAhjä#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jthjÉ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆ#ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´M8hj‘#ubj])�”}”(hXRThe sequence can be only initiated if both ``OUTPUT`` and ``CAPTURE`` queues are streaming. For compatibility reasons, the call to :c:func:`VIDIOC_ENCODER_CMD` will not fail even if any of the queues is not streaming, but at the same time it will not initiate the `Drain` sequence and so the steps described below would not be applicable.”h]”hì)�”}”(hXRThe sequence can be only initiated if both ``OUTPUT`` and ``CAPTURE`` queues are streaming. For compatibility reasons, the call to :c:func:`VIDIOC_ENCODER_CMD` will not fail even if any of the queues is not streaming, but at the same time it will not initiate the `Drain` sequence and so the steps described below would not be applicable.”h]”(hŒ+The sequence can be only initiated if both ”…”�”}”(hj·$h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj¿$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj·$ubhŒ and ”…”�”}”(hj·$h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjÑ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj·$ubhŒ> queues are streaming. For compatibility reasons, the call to ”…”�”}”(hj·$h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_ENCODER_CMD`”h]”jœ)�”}”(hjå$h]”hŒVIDIOC_ENCODER_CMD()”…”�”}”(hjç$h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjã$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENCODER_CMD”uh1hh³hÇh´MEhj·$ubhŒi will not fail even if any of the queues is not streaming, but at the same time it will not initiate the ”…”�”}”(hj·$h²hh³Nh´NubjQ)�”}”(hŒ`Drain`”h]”hŒDrain”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj·$ubhŒC sequence and so the steps described below would not be applicable.”…”�”}”(hj·$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MEhj³$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj‘#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ#h²hh³Nh´Nubj )�”}”(hX÷Any ``OUTPUT`` buffers queued by the client before the :c:func:`VIDIOC_ENCODER_CMD` was issued will be processed and encoded as normal. The client must continue to handle both queues independently, similarly to normal encode operation. This includes: * queuing and dequeuing ``CAPTURE`` buffers, until a buffer marked with the ``V4L2_BUF_FLAG_LAST`` flag is dequeued, .. warning:: The last buffer may be empty (with :c:type:`v4l2_buffer` ``bytesused`` = 0) and in that case it must be ignored by the client, as it does not contain an encoded frame. .. note:: Any attempt to dequeue more ``CAPTURE`` buffers beyond the buffer marked with ``V4L2_BUF_FLAG_LAST`` will result in a -EPIPE error from :c:func:`VIDIOC_DQBUF`. * dequeuing processed ``OUTPUT`` buffers, until all the buffers queued before the ``V4L2_ENC_CMD_STOP`` command are dequeued, * dequeuing the ``V4L2_EVENT_EOS`` event, if the client subscribes to it. .. note:: For backwards compatibility, the encoder will signal a ``V4L2_EVENT_EOS`` event when the last frame has been encoded and all frames are ready to be dequeued. It is deprecated behavior and the client must not rely on it. The ``V4L2_BUF_FLAG_LAST`` buffer flag should be used instead. ”h]”(hì)�”}”(hŒúAny ``OUTPUT`` buffers queued by the client before the :c:func:`VIDIOC_ENCODER_CMD` was issued will be processed and encoded as normal. The client must continue to handle both queues independently, similarly to normal encode operation. This includes:”h]”(hŒAny ”…”�”}”(hj.%h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj6%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj.%ubhŒ) buffers queued by the client before the ”…”�”}”(hj.%h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_ENCODER_CMD`”h]”jœ)�”}”(hjJ%h]”hŒVIDIOC_ENCODER_CMD()”…”�”}”(hjL%h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjH%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_ENCODER_CMD”uh1hh³hÇh´MKhj.%ubhŒ§ was issued will be processed and encoded as normal. The client must continue to handle both queues independently, similarly to normal encode operation. This includes:”…”�”}”(hj.%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MKhj*%ubjç)�”}”(hhh]”(j )�”}”(hXèqueuing and dequeuing ``CAPTURE`` buffers, until a buffer marked with the ``V4L2_BUF_FLAG_LAST`` flag is dequeued, .. warning:: The last buffer may be empty (with :c:type:`v4l2_buffer` ``bytesused`` = 0) and in that case it must be ignored by the client, as it does not contain an encoded frame. .. note:: Any attempt to dequeue more ``CAPTURE`` buffers beyond the buffer marked with ``V4L2_BUF_FLAG_LAST`` will result in a -EPIPE error from :c:func:`VIDIOC_DQBUF`. ”h]”(hì)�”}”(hŒrqueuing and dequeuing ``CAPTURE`` buffers, until a buffer marked with the ``V4L2_BUF_FLAG_LAST`` flag is dequeued,”h]”(hŒqueuing and dequeuing ”…”�”}”(hjx%h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj€%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjx%ubhŒ) buffers, until a buffer marked with the ”…”�”}”(hjx%h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_FLAG_LAST``”h]”hŒV4L2_BUF_FLAG_LAST”…”�”}”(hj’%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjx%ubhŒ flag is dequeued,”…”�”}”(hjx%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MPhjt%ubj])�”}”(hŒ§The last buffer may be empty (with :c:type:`v4l2_buffer` ``bytesused`` = 0) and in that case it must be ignored by the client, as it does not contain an encoded frame.”h]”hì)�”}”(hŒ§The last buffer may be empty (with :c:type:`v4l2_buffer` ``bytesused`` = 0) and in that case it must be ignored by the client, as it does not contain an encoded frame.”h]”(hŒ#The last buffer may be empty (with ”…”�”}”(hj®%h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_buffer`”h]”jœ)�”}”(hj¸%h]”hŒ v4l2_buffer”…”�”}”(hjº%h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-type”eh"]”h$]”h&]”uh1j›hj¶%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ v4l2_buffer”uh1hh³hÇh´MUhj®%ubhŒ ”…”�”}”(hj®%h²hh³Nh´Nubjœ)�”}”(hŒ ``bytesused``”h]”hŒ bytesused”…”�”}”(hjÙ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj®%ubhŒa = 0) and in that case it must be ignored by the client, as it does not contain an encoded frame.”…”�”}”(hj®%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MUhjª%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjt%ubjÀ)�”}”(hŒŸAny attempt to dequeue more ``CAPTURE`` buffers beyond the buffer marked with ``V4L2_BUF_FLAG_LAST`` will result in a -EPIPE error from :c:func:`VIDIOC_DQBUF`.”h]”hì)�”}”(hŒŸAny attempt to dequeue more ``CAPTURE`` buffers beyond the buffer marked with ``V4L2_BUF_FLAG_LAST`` will result in a -EPIPE error from :c:func:`VIDIOC_DQBUF`.”h]”(hŒAny attempt to dequeue more ”…”�”}”(hjû%h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjû%ubhŒ' buffers beyond the buffer marked with ”…”�”}”(hjû%h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_FLAG_LAST``”h]”hŒV4L2_BUF_FLAG_LAST”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjû%ubhŒ$ will result in a -EPIPE error from ”…”�”}”(hjû%h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_DQBUF`”h]”jœ)�”}”(hj)&h]”hŒVIDIOC_DQBUF()”…”�”}”(hj+&h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj'&ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒ VIDIOC_DQBUF”uh1hh³hÇh´M[hjû%ubhŒ.”…”�”}”(hjû%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M[hj÷%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjt%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjq%ubj )�”}”(hŒ|dequeuing processed ``OUTPUT`` buffers, until all the buffers queued before the ``V4L2_ENC_CMD_STOP`` command are dequeued, ”h]”hì)�”}”(hŒ{dequeuing processed ``OUTPUT`` buffers, until all the buffers queued before the ``V4L2_ENC_CMD_STOP`` command are dequeued,”h]”(hŒdequeuing processed ”…”�”}”(hj`&h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjh&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj`&ubhŒ2 buffers, until all the buffers queued before the ”…”�”}”(hj`&h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_ENC_CMD_STOP``”h]”hŒV4L2_ENC_CMD_STOP”…”�”}”(hjz&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj`&ubhŒ command are dequeued,”…”�”}”(hj`&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M_hj\&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjq%ubj )�”}”(hŒHdequeuing the ``V4L2_EVENT_EOS`` event, if the client subscribes to it. ”h]”hì)�”}”(hŒGdequeuing the ``V4L2_EVENT_EOS`` event, if the client subscribes to it.”h]”(hŒdequeuing the ”…”�”}”(hjœ&h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_EVENT_EOS``”h]”hŒV4L2_EVENT_EOS”…”�”}”(hj¤&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjœ&ubhŒ' event, if the client subscribes to it.”…”�”}”(hjœ&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mbhj˜&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjq%ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´MPhj*%ubjÀ)�”}”(hXFor backwards compatibility, the encoder will signal a ``V4L2_EVENT_EOS`` event when the last frame has been encoded and all frames are ready to be dequeued. It is deprecated behavior and the client must not rely on it. The ``V4L2_BUF_FLAG_LAST`` buffer flag should be used instead.”h]”hì)�”}”(hXFor backwards compatibility, the encoder will signal a ``V4L2_EVENT_EOS`` event when the last frame has been encoded and all frames are ready to be dequeued. It is deprecated behavior and the client must not rely on it. The ``V4L2_BUF_FLAG_LAST`` buffer flag should be used instead.”h]”(hŒ7For backwards compatibility, the encoder will signal a ”…”�”}”(hjÌ&h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_EVENT_EOS``”h]”hŒV4L2_EVENT_EOS”…”�”}”(hjÔ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÌ&ubhŒ— event when the last frame has been encoded and all frames are ready to be dequeued. It is deprecated behavior and the client must not rely on it. The ”…”�”}”(hjÌ&h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_FLAG_LAST``”h]”hŒV4L2_BUF_FLAG_LAST”…”�”}”(hjæ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÌ&ubhŒ$ buffer flag should be used instead.”…”�”}”(hjÌ&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MfhjÈ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj*%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ#h²hh³Nh´Nubj )�”}”(hXtOnce all ``OUTPUT`` buffers queued before the ``V4L2_ENC_CMD_STOP`` call are dequeued and the last ``CAPTURE`` buffer is dequeued, the encoder is stopped and it will accept, but not process any newly queued ``OUTPUT`` buffers until the client issues any of the following operations: * ``V4L2_ENC_CMD_START`` - the encoder will not be reset and will resume operation normally, with all the state from before the drain, * a pair of :c:func:`VIDIOC_STREAMOFF` and :c:func:`VIDIOC_STREAMON` on the ``CAPTURE`` queue - the encoder will be reset (see the `Reset` sequence) and then resume encoding, * a pair of :c:func:`VIDIOC_STREAMOFF` and :c:func:`VIDIOC_STREAMON` on the ``OUTPUT`` queue - the encoder will resume operation normally, however any source frames queued to the ``OUTPUT`` queue between ``V4L2_ENC_CMD_STOP`` and :c:func:`VIDIOC_STREAMOFF` will be discarded. ”h]”(hì)�”}”(hXOnce all ``OUTPUT`` buffers queued before the ``V4L2_ENC_CMD_STOP`` call are dequeued and the last ``CAPTURE`` buffer is dequeued, the encoder is stopped and it will accept, but not process any newly queued ``OUTPUT`` buffers until the client issues any of the following operations:”h]”(hŒ Once all ”…”�”}”(hj'h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj'ubhŒ buffers queued before the ”…”�”}”(hj'h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_ENC_CMD_STOP``”h]”hŒV4L2_ENC_CMD_STOP”…”�”}”(hj('h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj'ubhŒ call are dequeued and the last ”…”�”}”(hj'h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj:'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj'ubhŒa buffer is dequeued, the encoder is stopped and it will accept, but not process any newly queued ”…”�”}”(hj'h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjL'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj'ubhŒA buffers until the client issues any of the following operations:”…”�”}”(hj'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mkhj 'ubjç)�”}”(hhh]”(j )�”}”(hŒ…``V4L2_ENC_CMD_START`` - the encoder will not be reset and will resume operation normally, with all the state from before the drain, ”h]”hì)�”}”(hŒ„``V4L2_ENC_CMD_START`` - the encoder will not be reset and will resume operation normally, with all the state from before the drain,”h]”(jœ)�”}”(hŒ``V4L2_ENC_CMD_START``”h]”hŒV4L2_ENC_CMD_START”…”�”}”(hjo'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjk'ubhŒn - the encoder will not be reset and will resume operation normally, with all the state from before the drain,”…”�”}”(hjk'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mphjg'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd'ubj )�”}”(hŒ­a pair of :c:func:`VIDIOC_STREAMOFF` and :c:func:`VIDIOC_STREAMON` on the ``CAPTURE`` queue - the encoder will be reset (see the `Reset` sequence) and then resume encoding, ”h]”hì)�”}”(hŒ¬a pair of :c:func:`VIDIOC_STREAMOFF` and :c:func:`VIDIOC_STREAMON` on the ``CAPTURE`` queue - the encoder will be reset (see the `Reset` sequence) and then resume encoding,”h]”(hŒ a pair of ”…”�”}”(hj‘'h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_STREAMOFF`”h]”jœ)�”}”(hj›'h]”hŒVIDIOC_STREAMOFF()”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj™'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_STREAMOFF”uh1hh³hÇh´Mshj‘'ubhŒ and ”…”�”}”(hj‘'h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_STREAMON`”h]”jœ)�”}”(hj¾'h]”hŒVIDIOC_STREAMON()”…”�”}”(hjÀ'h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj¼'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_STREAMON”uh1hh³hÇh´Mshj‘'ubhŒ on the ”…”�”}”(hj‘'h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjß'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‘'ubhŒ, queue - the encoder will be reset (see the ”…”�”}”(hj‘'h²hh³Nh´NubjQ)�”}”(hŒ`Reset`”h]”hŒReset”…”�”}”(hjñ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj‘'ubhŒ$ sequence) and then resume encoding,”…”�”}”(hj‘'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mshj�'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd'ubj )�”}”(hXa pair of :c:func:`VIDIOC_STREAMOFF` and :c:func:`VIDIOC_STREAMON` on the ``OUTPUT`` queue - the encoder will resume operation normally, however any source frames queued to the ``OUTPUT`` queue between ``V4L2_ENC_CMD_STOP`` and :c:func:`VIDIOC_STREAMOFF` will be discarded. ”h]”hì)�”}”(hXa pair of :c:func:`VIDIOC_STREAMOFF` and :c:func:`VIDIOC_STREAMON` on the ``OUTPUT`` queue - the encoder will resume operation normally, however any source frames queued to the ``OUTPUT`` queue between ``V4L2_ENC_CMD_STOP`` and :c:func:`VIDIOC_STREAMOFF` will be discarded.”h]”(hŒ a pair of ”…”�”}”(hj(h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_STREAMOFF`”h]”jœ)�”}”(hj(h]”hŒVIDIOC_STREAMOFF()”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_STREAMOFF”uh1hh³hÇh´Mwhj(ubhŒ and ”…”�”}”(hj(h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_STREAMON`”h]”jœ)�”}”(hj@(h]”hŒVIDIOC_STREAMON()”…”�”}”(hjB(h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj>(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_STREAMON”uh1hh³hÇh´Mwhj(ubhŒ on the ”…”�”}”(hj(h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hja(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj(ubhŒ] queue - the encoder will resume operation normally, however any source frames queued to the ”…”�”}”(hj(h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjs(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj(ubhŒ queue between ”…”�”}”(hj(h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_ENC_CMD_STOP``”h]”hŒV4L2_ENC_CMD_STOP”…”�”}”(hj…(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj(ubhŒ and ”…”�”}”(hj(h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_STREAMOFF`”h]”jœ)�”}”(hj™(h]”hŒVIDIOC_STREAMOFF()”…”�”}”(hj›(h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj—(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_STREAMOFF”uh1hh³hÇh´Mwhj(ubhŒ will be discarded.”…”�”}”(hj(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mwhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd'ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´Mphj 'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jÜjÝjÞhjßjàuh1jhj9#h²hh³hÇh´M6ubjÀ)�”}”(hXýOnce the drain sequence is initiated, the client needs to drive it to completion, as described by the steps above, unless it aborts the process by issuing :c:func:`VIDIOC_STREAMOFF` on any of the ``OUTPUT`` or ``CAPTURE`` queues. The client is not allowed to issue ``V4L2_ENC_CMD_START`` or ``V4L2_ENC_CMD_STOP`` again while the drain sequence is in progress and they will fail with -EBUSY error code if attempted. For reference, handling of various corner cases is described below: * In case of no buffer in the ``OUTPUT`` queue at the time the ``V4L2_ENC_CMD_STOP`` command was issued, the drain sequence completes immediately and the encoder returns an empty ``CAPTURE`` buffer with the ``V4L2_BUF_FLAG_LAST`` flag set. * In case of no buffer in the ``CAPTURE`` queue at the time the drain sequence completes, the next time the client queues a ``CAPTURE`` buffer it is returned at once as an empty buffer with the ``V4L2_BUF_FLAG_LAST`` flag set. * If :c:func:`VIDIOC_STREAMOFF` is called on the ``CAPTURE`` queue in the middle of the drain sequence, the drain sequence is canceled and all ``CAPTURE`` buffers are implicitly returned to the client. * If :c:func:`VIDIOC_STREAMOFF` is called on the ``OUTPUT`` queue in the middle of the drain sequence, the drain sequence completes immediately and next ``CAPTURE`` buffer will be returned empty with the ``V4L2_BUF_FLAG_LAST`` flag set. Although not mandatory, the availability of encoder commands may be queried using :c:func:`VIDIOC_TRY_ENCODER_CMD`.”h]”(hì)�”}”(hXŸOnce the drain sequence is initiated, the client needs to drive it to completion, as described by the steps above, unless it aborts the process by issuing :c:func:`VIDIOC_STREAMOFF` on any of the ``OUTPUT`` or ``CAPTURE`` queues. The client is not allowed to issue ``V4L2_ENC_CMD_START`` or ``V4L2_ENC_CMD_STOP`` again while the drain sequence is in progress and they will fail with -EBUSY error code if attempted.”h]”(hŒ›Once the drain sequence is initiated, the client needs to drive it to completion, as described by the steps above, unless it aborts the process by issuing ”…”�”}”(hjÜ(h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_STREAMOFF`”h]”jœ)�”}”(hjæ(h]”hŒVIDIOC_STREAMOFF()”…”�”}”(hjè(h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjä(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_STREAMOFF”uh1hh³hÇh´M~hjÜ(ubhŒ on any of the ”…”�”}”(hjÜ(h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÜ(ubhŒ or ”…”�”}”(hjÜ(h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÜ(ubhŒ- queues. The client is not allowed to issue ”…”�”}”(hjÜ(h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_ENC_CMD_START``”h]”hŒV4L2_ENC_CMD_START”…”�”}”(hj+)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÜ(ubhŒ or ”…”�”}”(hjÜ(h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_ENC_CMD_STOP``”h]”hŒV4L2_ENC_CMD_STOP”…”�”}”(hj=)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÜ(ubhŒf again while the drain sequence is in progress and they will fail with -EBUSY error code if attempted.”…”�”}”(hjÜ(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M~hjØ(ubhì)�”}”(hŒCFor reference, handling of various corner cases is described below:”h]”hŒCFor reference, handling of various corner cases is described below:”…”�”}”(hjU)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M…hjØ(ubjç)�”}”(hhh]”(j )�”}”(hŒîIn case of no buffer in the ``OUTPUT`` queue at the time the ``V4L2_ENC_CMD_STOP`` command was issued, the drain sequence completes immediately and the encoder returns an empty ``CAPTURE`` buffer with the ``V4L2_BUF_FLAG_LAST`` flag set. ”h]”hì)�”}”(hŒíIn case of no buffer in the ``OUTPUT`` queue at the time the ``V4L2_ENC_CMD_STOP`` command was issued, the drain sequence completes immediately and the encoder returns an empty ``CAPTURE`` buffer with the ``V4L2_BUF_FLAG_LAST`` flag set.”h]”(hŒIn case of no buffer in the ”…”�”}”(hjj)h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjr)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjj)ubhŒ queue at the time the ”…”�”}”(hjj)h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_ENC_CMD_STOP``”h]”hŒV4L2_ENC_CMD_STOP”…”�”}”(hj„)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjj)ubhŒ_ command was issued, the drain sequence completes immediately and the encoder returns an empty ”…”�”}”(hjj)h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj–)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjj)ubhŒ buffer with the ”…”�”}”(hjj)h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_FLAG_LAST``”h]”hŒV4L2_BUF_FLAG_LAST”…”�”}”(hj¨)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjj)ubhŒ flag set.”…”�”}”(hjj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M‡hjf)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc)ubj )�”}”(hŒáIn case of no buffer in the ``CAPTURE`` queue at the time the drain sequence completes, the next time the client queues a ``CAPTURE`` buffer it is returned at once as an empty buffer with the ``V4L2_BUF_FLAG_LAST`` flag set. ”h]”hì)�”}”(hŒàIn case of no buffer in the ``CAPTURE`` queue at the time the drain sequence completes, the next time the client queues a ``CAPTURE`` buffer it is returned at once as an empty buffer with the ``V4L2_BUF_FLAG_LAST`` flag set.”h]”(hŒIn case of no buffer in the ”…”�”}”(hjÊ)h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjÒ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÊ)ubhŒS queue at the time the drain sequence completes, the next time the client queues a ”…”�”}”(hjÊ)h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjä)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÊ)ubhŒ; buffer it is returned at once as an empty buffer with the ”…”�”}”(hjÊ)h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_FLAG_LAST``”h]”hŒV4L2_BUF_FLAG_LAST”…”�”}”(hjö)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÊ)ubhŒ flag set.”…”�”}”(hjÊ)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MŒhjÆ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc)ubj )�”}”(hŒÈIf :c:func:`VIDIOC_STREAMOFF` is called on the ``CAPTURE`` queue in the middle of the drain sequence, the drain sequence is canceled and all ``CAPTURE`` buffers are implicitly returned to the client. ”h]”hì)�”}”(hŒÇIf :c:func:`VIDIOC_STREAMOFF` is called on the ``CAPTURE`` queue in the middle of the drain sequence, the drain sequence is canceled and all ``CAPTURE`` buffers are implicitly returned to the client.”h]”(hŒIf ”…”�”}”(hj*h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_STREAMOFF`”h]”jœ)�”}”(hj"*h]”hŒVIDIOC_STREAMOFF()”…”�”}”(hj$*h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj *ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_STREAMOFF”uh1hh³hÇh´M‘hj*ubhŒ is called on the ”…”�”}”(hj*h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjC*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj*ubhŒS queue in the middle of the drain sequence, the drain sequence is canceled and all ”…”�”}”(hj*h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjU*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj*ubhŒ/ buffers are implicitly returned to the client.”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M‘hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc)ubj )�”}”(hŒëIf :c:func:`VIDIOC_STREAMOFF` is called on the ``OUTPUT`` queue in the middle of the drain sequence, the drain sequence completes immediately and next ``CAPTURE`` buffer will be returned empty with the ``V4L2_BUF_FLAG_LAST`` flag set. ”h]”hì)�”}”(hŒêIf :c:func:`VIDIOC_STREAMOFF` is called on the ``OUTPUT`` queue in the middle of the drain sequence, the drain sequence completes immediately and next ``CAPTURE`` buffer will be returned empty with the ``V4L2_BUF_FLAG_LAST`` flag set.”h]”(hŒIf ”…”�”}”(hjw*h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_STREAMOFF`”h]”jœ)�”}”(hj�*h]”hŒVIDIOC_STREAMOFF()”…”�”}”(hjƒ*h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_STREAMOFF”uh1hh³hÇh´M•hjw*ubhŒ is called on the ”…”�”}”(hjw*h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj¢*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjw*ubhŒ^ queue in the middle of the drain sequence, the drain sequence completes immediately and next ”…”�”}”(hjw*h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj´*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjw*ubhŒ( buffer will be returned empty with the ”…”�”}”(hjw*h²hh³Nh´Nubjœ)�”}”(hŒ``V4L2_BUF_FLAG_LAST``”h]”hŒV4L2_BUF_FLAG_LAST”…”�”}”(hjÆ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjw*ubhŒ flag set.”…”�”}”(hjw*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M•hjs*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc)ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´M‡hjØ(ubhì)�”}”(hŒsAlthough not mandatory, the availability of encoder commands may be queried using :c:func:`VIDIOC_TRY_ENCODER_CMD`.”h]”(hŒRAlthough not mandatory, the availability of encoder commands may be queried using ”…”�”}”(hjê*h²hh³Nh´Nubh)�”}”(hŒ :c:func:`VIDIOC_TRY_ENCODER_CMD`”h]”jœ)�”}”(hjô*h]”hŒVIDIOC_TRY_ENCODER_CMD()”…”�”}”(hjö*h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjò*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_TRY_ENCODER_CMD”uh1hh³hÇh´Mšhjê*ubhŒ.”…”�”}”(hjê*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MšhjØ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj9#h²hh³hÇh´Nubeh}”(h]”Œdrain”ah ]”h"]”Œdrain”ah$]”h&]”uh1hÖhhØh²hh³hÇh´M.ubh×)�”}”(hhh]”(hÜ)�”}”(hŒReset”h]”hŒReset”…”�”}”(hj,+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj)+h²hh³hÇh´Mžubhì)�”}”(hŒÙThe client may want to request the encoder to reinitialize the encoding, so that the following stream data becomes independent from the stream data generated before. Depending on the coded format, that may imply that:”h]”hŒÙThe client may want to request the encoder to reinitialize the encoding, so that the following stream data becomes independent from the stream data generated before. Depending on the coded format, that may imply that:”…”�”}”(hj:+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hj)+h²hubjç)�”}”(hhh]”(j )�”}”(hŒ�encoded frames produced after the restart must not reference any frames produced before the stop, e.g. no long term references for H.264/HEVC, ”h]”hì)�”}”(hŒŽencoded frames produced after the restart must not reference any frames produced before the stop, e.g. no long term references for H.264/HEVC,”h]”hŒŽencoded frames produced after the restart must not reference any frames produced before the stop, e.g. no long term references for H.264/HEVC,”…”�”}”(hjO+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¤hjK+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH+h²hh³hÇh´Nubj )�”}”(hŒrany headers that must be included in a standalone stream must be produced again, e.g. SPS and PPS for H.264/HEVC. ”h]”hì)�”}”(hŒqany headers that must be included in a standalone stream must be produced again, e.g. SPS and PPS for H.264/HEVC.”h]”hŒqany headers that must be included in a standalone stream must be produced again, e.g. SPS and PPS for H.264/HEVC.”…”�”}”(hjg+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M§hjc+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjH+h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jæh³hÇh´M¤hj)+h²hubhì)�”}”(hŒ6This can be achieved by performing the reset sequence.”h]”hŒ6This can be achieved by performing the reset sequence.”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mªhj)+h²hubj)�”}”(hhh]”(j )�”}”(hŒpPerform the `Drain` sequence to ensure all the in-flight encoding finishes and respective buffers are dequeued. ”h]”hì)�”}”(hŒoPerform the `Drain` sequence to ensure all the in-flight encoding finishes and respective buffers are dequeued.”h]”(hŒ Perform the ”…”�”}”(hj–+h²hh³Nh´NubjQ)�”}”(hŒ`Drain`”h]”hŒDrain”…”�”}”(hjž+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj–+ubhŒ\ sequence to ensure all the in-flight encoding finishes and respective buffers are dequeued.”…”�”}”(hj–+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¬hj’+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�+h²hh³hÇh´Nubj )�”}”(hŒ«Stop streaming on the ``CAPTURE`` queue via :c:func:`VIDIOC_STREAMOFF`. This will return all currently queued ``CAPTURE`` buffers to the client, without valid frame data. ”h]”hì)�”}”(hŒªStop streaming on the ``CAPTURE`` queue via :c:func:`VIDIOC_STREAMOFF`. This will return all currently queued ``CAPTURE`` buffers to the client, without valid frame data.”h]”(hŒStop streaming on the ”…”�”}”(hjÀ+h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjÈ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÀ+ubhŒ queue via ”…”�”}”(hjÀ+h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_STREAMOFF`”h]”jœ)�”}”(hjÜ+h]”hŒVIDIOC_STREAMOFF()”…”�”}”(hjÞ+h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hjÚ+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_STREAMOFF”uh1hh³hÇh´M¯hjÀ+ubhŒ(. This will return all currently queued ”…”�”}”(hjÀ+h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjý+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÀ+ubhŒ1 buffers to the client, without valid frame data.”…”�”}”(hjÀ+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¯hj¼+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�+h²hh³hÇh´Nubj )�”}”(hX—Start streaming on the ``CAPTURE`` queue via :c:func:`VIDIOC_STREAMON` and continue with regular encoding sequence. The encoded frames produced into ``CAPTURE`` buffers from now on will contain a standalone stream that can be decoded without the need for frames encoded before the reset sequence, starting at the first ``OUTPUT`` buffer queued after issuing the `V4L2_ENC_CMD_STOP` of the `Drain` sequence. ”h]”hì)�”}”(hX–Start streaming on the ``CAPTURE`` queue via :c:func:`VIDIOC_STREAMON` and continue with regular encoding sequence. The encoded frames produced into ``CAPTURE`` buffers from now on will contain a standalone stream that can be decoded without the need for frames encoded before the reset sequence, starting at the first ``OUTPUT`` buffer queued after issuing the `V4L2_ENC_CMD_STOP` of the `Drain` sequence.”h]”(hŒStart streaming on the ”…”�”}”(hj,h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj',h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj,ubhŒ queue via ”…”�”}”(hj,h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_STREAMON`”h]”jœ)�”}”(hj;,h]”hŒVIDIOC_STREAMON()”…”�”}”(hj=,h²hh³Nh´Nubah}”(h]”h ]”(j§j¨Œc-func”eh"]”h$]”h&]”uh1j›hj9,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j´Œ refdomain”j¨Œreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jºj¾jÉŒVIDIOC_STREAMON”uh1hh³hÇh´M³hj,ubhŒO and continue with regular encoding sequence. The encoded frames produced into ”…”�”}”(hj,h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj\,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj,ubhŒŸ buffers from now on will contain a standalone stream that can be decoded without the need for frames encoded before the reset sequence, starting at the first ”…”�”}”(hj,h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjn,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj,ubhŒ! buffer queued after issuing the ”…”�”}”(hj,h²hh³Nh´NubjQ)�”}”(hŒ`V4L2_ENC_CMD_STOP`”h]”hŒV4L2_ENC_CMD_STOP”…”�”}”(hj€,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj,ubhŒ of the ”…”�”}”(hj,h²hh³Nh´NubjQ)�”}”(hŒ`Drain`”h]”hŒDrain”…”�”}”(hj’,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj,ubhŒ sequence.”…”�”}”(hj,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M³hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�+h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jÜjÝjÞhjßjàuh1jhj)+h²hh³hÇh´M¬ubhì)�”}”(hŒ‚This sequence may be also used to change encoding parameters for encoders without the ability to change the parameters on the fly.”h]”hŒ‚This sequence may be also used to change encoding parameters for encoders without the ability to change the parameters on the fly.”…”�”}”(hj¶,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mºhj)+h²hubeh}”(h]”Œreset”ah ]”h"]”Œreset”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Mžubh×)�”}”(hhh]”(hÜ)�”}”(hŒ Commit Points”h]”hŒ Commit Points”…”�”}”(hjÏ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjÌ,h²hh³hÇh´M¾ubhì)�”}”(hŒWSetting formats and allocating buffers triggers changes in the behavior of the encoder.”h]”hŒWSetting formats and allocating buffers triggers changes in the behavior of the encoder.”…”�”}”(hjÝ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÀhjÌ,h²hubj)�”}”(hhh]”(j )�”}”(hXSetting the format on the ``CAPTURE`` queue may change the set of formats supported/advertised on the ``OUTPUT`` queue. In particular, it also means that the ``OUTPUT`` format may be reset and the client must not rely on the previously set format being preserved. ”h]”hì)�”}”(hXSetting the format on the ``CAPTURE`` queue may change the set of formats supported/advertised on the ``OUTPUT`` queue. In particular, it also means that the ``OUTPUT`` format may be reset and the client must not rely on the previously set format being preserved.”h]”(hŒSetting the format on the ”…”�”}”(hjò,h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjú,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjò,ubhŒA queue may change the set of formats supported/advertised on the ”…”�”}”(hjò,h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjò,ubhŒ. queue. In particular, it also means that the ”…”�”}”(hjò,h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjò,ubhŒ_ format may be reset and the client must not rely on the previously set format being preserved.”…”�”}”(hjò,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÃhjî,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë,h²hh³hÇh´Nubj )�”}”(hŒvEnumerating formats on the ``OUTPUT`` queue always returns only formats supported for the current ``CAPTURE`` format. ”h]”hì)�”}”(hŒuEnumerating formats on the ``OUTPUT`` queue always returns only formats supported for the current ``CAPTURE`` format.”h]”(hŒEnumerating formats on the ”…”�”}”(hj@-h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjH-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj@-ubhŒ= queue always returns only formats supported for the current ”…”�”}”(hj@-h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjZ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj@-ubhŒ format.”…”�”}”(hj@-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÈhj<-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë,h²hh³hÇh´Nubj )�”}”(hX8Setting the format on the ``OUTPUT`` queue does not change the list of formats available on the ``CAPTURE`` queue. An attempt to set the ``OUTPUT`` format that is not supported for the currently selected ``CAPTURE`` format will result in the encoder adjusting the requested ``OUTPUT`` format to a supported one. ”h]”hì)�”}”(hX7Setting the format on the ``OUTPUT`` queue does not change the list of formats available on the ``CAPTURE`` queue. An attempt to set the ``OUTPUT`` format that is not supported for the currently selected ``CAPTURE`` format will result in the encoder adjusting the requested ``OUTPUT`` format to a supported one.”h]”(hŒSetting the format on the ”…”�”}”(hj|-h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj„-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj|-ubhŒ< queue does not change the list of formats available on the ”…”�”}”(hj|-h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj–-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj|-ubhŒ queue. An attempt to set the ”…”�”}”(hj|-h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj¨-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj|-ubhŒ9 format that is not supported for the currently selected ”…”�”}”(hj|-h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjº-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj|-ubhŒ; format will result in the encoder adjusting the requested ”…”�”}”(hj|-h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjÌ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj|-ubhŒ format to a supported one.”…”�”}”(hj|-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MËhjx-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë,h²hh³hÇh´Nubj )�”}”(hŒ”Enumerating formats on the ``CAPTURE`` queue always returns the full set of supported coded formats, irrespective of the current ``OUTPUT`` format. ”h]”hì)�”}”(hŒ“Enumerating formats on the ``CAPTURE`` queue always returns the full set of supported coded formats, irrespective of the current ``OUTPUT`` format.”h]”(hŒEnumerating formats on the ”…”�”}”(hjî-h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjö-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjî-ubhŒ[ queue always returns the full set of supported coded formats, irrespective of the current ”…”�”}”(hjî-h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjî-ubhŒ format.”…”�”}”(hjî-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÑhjê-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë,h²hh³hÇh´Nubj )�”}”(hŒÚWhile buffers are allocated on any of the ``OUTPUT`` or ``CAPTURE`` queues, the client must not change the format on the ``CAPTURE`` queue. Drivers will return the -EBUSY error code for any such format change attempt. ”h]”hì)�”}”(hŒÙWhile buffers are allocated on any of the ``OUTPUT`` or ``CAPTURE`` queues, the client must not change the format on the ``CAPTURE`` queue. Drivers will return the -EBUSY error code for any such format change attempt.”h]”(hŒ*While buffers are allocated on any of the ”…”�”}”(hj*.h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj2.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj*.ubhŒ or ”…”�”}”(hj*.h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjD.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj*.ubhŒ6 queues, the client must not change the format on the ”…”�”}”(hj*.h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjV.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj*.ubhŒU queue. Drivers will return the -EBUSY error code for any such format change attempt.”…”�”}”(hj*.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÔhj&.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë,h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jÜjÝjÞhjßjàuh1jhjÌ,h²hh³hÇh´MÃubhì)�”}”(hŒÅTo summarize, setting formats and allocation must always start with the ``CAPTURE`` queue and the ``CAPTURE`` queue is the master that governs the set of supported formats for the ``OUTPUT`` queue.”h]”(hŒHTo summarize, setting formats and allocation must always start with the ”…”�”}”(hjz.h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj‚.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjz.ubhŒ queue and the ”…”�”}”(hjz.h²hh³Nh´Nubjœ)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj”.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjz.ubhŒG queue is the master that governs the set of supported formats for the ”…”�”}”(hjz.h²hh³Nh´Nubjœ)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj¦.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjz.ubhŒ queue.”…”�”}”(hjz.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MØhjÌ,h²hubeh}”(h]”Œ commit-points”ah ]”h"]”Œ commit points”ah$]”h&]”uh1hÖhhØh²hh³hÇh´M¾ubeh}”(h]”(Œ1memory-to-memory-stateful-video-encoder-interface”hÕeh ]”h"]”(Œ1memory-to-memory stateful video encoder interface”Œencoder”eh$]”h&]”uh1hÖhhh²hh³hÇh´KŒexpect_referenced_by_name”}”jÌ.hÊsŒexpect_referenced_by_id”}”hÕhÊsubeh}”(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”Œentry”Œ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”jö.Œ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”}”hÕ]”hÊasŒnameids”}”(jÌ.hÕjË.jÈ.jæjãjbj_j1j.jˆj…jöjójYjVjˆ"j…"j6#j3#j&+j#+jÉ,jÆ,jÃ.jÀ.uŒ nametypes”}”(jÌ.ˆjË.‰jæ‰jbˆj1‰jˆ‰jö‰jY‰jˆ"‰j6#‰j&+‰jÉ,‰jÃ.‰uh}”(hÕhØjÈ.hØjãj j_jYj.jéj…j4jój‹jVjùj…"j\j3#j‹"j#+j9#jÆ,j)+jÀ.jÌ,j|jGuŒ 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”“”}”j/Ks…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)�”}”(hhh]”hì)�”}”(hhh]”hŒ-Hyperlink target "encoder" is not referenced.”…”�”}”hj`/sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj]/ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1j[/ubaŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.