€•Œ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”ŒA/translations/zh_CN/userspace-api/media/v4l/dev-stateless-decoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/zh_TW/userspace-api/media/v4l/dev-stateless-decoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/it_IT/userspace-api/media/v4l/dev-stateless-decoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/ja_JP/userspace-api/media/v4l/dev-stateless-decoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/ko_KR/userspace-api/media/v4l/dev-stateless-decoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/pt_BR/userspace-api/media/v4l/dev-stateless-decoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/sp_SP/userspace-api/media/v4l/dev-stateless-decoder”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/userspace-api/media/v4l/dev-stateless-decoder.rst”h´KubhŒtarget”“”)�”}”(hŒ.. _stateless_decoder:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œstateless-decoder”uh1hÈh´Khhh²hh³hÇubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ2Memory-to-memory Stateless Video Decoder Interface”h]”hŒ2Memory-to-memory Stateless Video Decoder Interface”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hX(A stateless decoder is a decoder that works without retaining any kind of state between processed frames. This means that each frame is decoded independently of any previous and future frames, and that the client is responsible for maintaining the decoding state and providing it to the decoder with each decoding request. This is in contrast to the stateful video decoder interface, where the hardware and driver maintain the decoding state and all the client has to do is to provide the raw encoded stream and dequeue decoded frames in display order.”h]”hX(A stateless decoder is a decoder that works without retaining any kind of state between processed frames. This means that each frame is decoded independently of any previous and future frames, and that the client is responsible for maintaining the decoding state and providing it to the decoder with each decoding request. This is in contrast to the stateful video decoder interface, where the hardware and driver maintain the decoding state and all the client has to do is to provide the raw encoded stream and dequeue decoded frames in display order.”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K hhØh²hubhì)�”}”(hXcThis section describes how user-space ("the client") is expected to communicate with stateless decoders in order to successfully decode an encoded stream. Compared to stateful codecs, the decoder/client sequence is simpler, but the cost of this simplicity is extra complexity in the client which is responsible for maintaining a consistent decoding state.”h]”hXgThis section describes how user-space (“the clientâ€�) is expected to communicate with stateless decoders in order to successfully decode an encoded stream. Compared to stateful codecs, the decoder/client sequence is simpler, but the cost of this simplicity is extra complexity in the client which is responsible for maintaining a consistent decoding state.”…”�”}”(hhûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)�”}”(hŒñStateless decoders make use of the :ref:`media-request-api`. A stateless decoder must expose the ``V4L2_BUF_CAP_SUPPORTS_REQUESTS`` capability on its ``OUTPUT`` queue when :c:func:`VIDIOC_REQBUFS` or :c:func:`VIDIOC_CREATE_BUFS` are invoked.”h]”(hŒ#Stateless decoders make use of the ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:ref:`media-request-api`”h]”hŒinline”“”)�”}”(hjh]”hŒmedia-request-api”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ-userspace-api/media/v4l/dev-stateless-decoder”Œ refdomain”j"Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆŒ reftarget”Œmedia-request-api”uh1hh³hÇh´Khj ubhŒ&. A stateless decoder must expose the ”…”�”}”(hj h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ"``V4L2_BUF_CAP_SUPPORTS_REQUESTS``”h]”hŒV4L2_BUF_CAP_SUPPORTS_REQUESTS”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj ubhŒ capability on its ”…”�”}”(hj h²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj ubhŒ queue when ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_REQBUFS`”h]”j;)�”}”(hjbh]”hŒVIDIOC_REQBUFS()”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”(j!Œc”Œc-func”eh"]”h$]”h&]”uh1j:hj`ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j€Œ ASTIdentifier”“”)�”}”Œ identifier”ŒV4L”sbN†”asbj4ŒVIDIOC_REQBUFS”uh1hh³hÇh´Khj ubhŒ or ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_CREATE_BUFS`”h]”j;)�”}”(hj•h]”hŒVIDIOC_CREATE_BUFS()”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_CREATE_BUFS”uh1hh³hÇh´Khj ubhŒ are invoked.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)�”}”(hXIDepending on the encoded formats supported by the decoder, a single decoded frame may be the result of several decode requests (for instance, H.264 streams with multiple slices per frame). Decoders that support such formats must also expose the ``V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF`` capability on their ``OUTPUT`` queue.”h]”(hŒõDepending on the encoded formats supported by the decoder, a single decoded frame may be the result of several decode requests (for instance, H.264 streams with multiple slices per frame). Decoders that support such formats must also expose the ”…”�”}”(hj¼h²hh³Nh´Nubj;)�”}”(hŒ.``V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF``”h]”hŒ*V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj¼ubhŒ capability on their ”…”�”}”(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´KhhØh²hubh×)�”}”(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´K%ubhŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hXÑTo enumerate the set of coded formats supported by the decoder, the client calls :c:func:`VIDIOC_ENUM_FMT` on the ``OUTPUT`` queue. * The driver must always return the full set of supported ``OUTPUT`` formats, irrespective of the format currently set on the ``CAPTURE`` queue. * Simultaneously, the driver must restrain the set of values returned by codec-specific capability controls (such as H.264 profiles) to the set actually supported by the hardware. ”h]”(hì)�”}”(hŒƒTo enumerate the set of coded formats supported by the decoder, the client calls :c:func:`VIDIOC_ENUM_FMT` on the ``OUTPUT`` queue.”h]”(hŒQTo enumerate the set of coded formats supported by the decoder, the client calls ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_ENUM_FMT`”h]”j;)�”}”(hjh]”hŒVIDIOC_ENUM_FMT()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_ENUM_FMT”uh1hh³hÇh´K'hj ubhŒ on the ”…”�”}”(hj h²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj5h²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´K'hjubhŒ bullet_list”“”)�”}”(hhh]”(j)�”}”(hŒ�The driver must always return the full set of supported ``OUTPUT`` formats, irrespective of the format currently set on the ``CAPTURE`` queue. ”h]”hì)�”}”(hŒŽThe driver must always return the full set of supported ``OUTPUT`` formats, irrespective of the format currently set on the ``CAPTURE`` queue.”h]”(hŒ8The driver must always return the full set of supported ”…”�”}”(hjVh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjVubhŒ: formats, irrespective of the format currently set on the ”…”�”}”(hjVh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjVubhŒ queue.”…”�”}”(hjVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K*hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjOubj)�”}”(hŒ²Simultaneously, the driver must restrain the set of values returned by codec-specific capability controls (such as H.264 profiles) to the set actually supported by the hardware. ”h]”hì)�”}”(hŒ±Simultaneously, the driver must restrain the set of values returned by codec-specific capability controls (such as H.264 profiles) to the set actually supported by the hardware.”h]”hŒ±Simultaneously, the driver must restrain the set of values returned by codec-specific capability controls (such as H.264 profiles) to the set actually supported by the hardware.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K-hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjOubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jMh³hÇh´K*hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³Nh´Nubj)�”}”(hX To enumerate the set of supported raw formats, the client calls :c:func:`VIDIOC_ENUM_FMT` on the ``CAPTURE`` queue. * The driver must return only the formats supported for the format currently active on the ``OUTPUT`` queue. * Depending on the currently set ``OUTPUT`` format, the set of supported raw formats may depend on the value of some codec-dependent controls. The client is responsible for making sure that these controls are set before querying the ``CAPTURE`` queue. Failure to do so will result in the default values for these controls being used, and a returned set of formats that may not be usable for the media the client is trying to decode. ”h]”(hì)�”}”(hŒsTo enumerate the set of supported raw formats, the client calls :c:func:`VIDIOC_ENUM_FMT` on the ``CAPTURE`` queue.”h]”(hŒ@To enumerate the set of supported raw formats, the client calls ”…”�”}”(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!jnŒc-func”eh"]”h$]”h&]”uh1j:hjÀubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_ENUM_FMT”uh1hh³hÇh´K1hj¸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.”…”�”}”(hj¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K1hj´ubjN)�”}”(hhh]”(j)�”}”(hŒkThe driver must return only the formats supported for the format currently active on the ``OUTPUT`` queue. ”h]”hì)�”}”(hŒjThe driver must return only the formats supported for the format currently active on the ``OUTPUT`` queue.”h]”(hŒYThe driver must return only the formats supported for the format currently active on the ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒ queue.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K4hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûubj)�”}”(hX¯Depending on the currently set ``OUTPUT`` format, the set of supported raw formats may depend on the value of some codec-dependent controls. The client is responsible for making sure that these controls are set before querying the ``CAPTURE`` queue. Failure to do so will result in the default values for these controls being used, and a returned set of formats that may not be usable for the media the client is trying to decode. ”h]”hì)�”}”(hX®Depending on the currently set ``OUTPUT`` format, the set of supported raw formats may depend on the value of some codec-dependent controls. The client is responsible for making sure that these controls are set before querying the ``CAPTURE`` queue. Failure to do so will result in the default values for these controls being used, and a returned set of formats that may not be usable for the media the client is trying to decode.”h]”(hŒDepending on the currently set ”…”�”}”(hj,h²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj,ubhŒ¾ format, the set of supported raw formats may depend on the value of some codec-dependent controls. The client is responsible for making sure that these controls are set before querying the ”…”�”}”(hj,h²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj,ubhŒ¼ queue. Failure to do so will result in the default values for these controls being used, and a returned set of formats that may not be usable for the media the client is trying to decode.”…”�”}”(hj,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K7hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûubeh}”(h]”h ]”h"]”h$]”h&]”j¬j­uh1jMh³hÇh´K4hj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³Nh´Nubj)�”}”(hŒ·The client may use :c:func:`VIDIOC_ENUM_FRAMESIZES` to detect supported resolutions for a given format, passing desired pixel format in :c:type:`v4l2_frmsizeenum`'s ``pixel_format``. ”h]”hì)�”}”(hŒ¶The client may use :c:func:`VIDIOC_ENUM_FRAMESIZES` to detect supported resolutions for a given format, passing desired pixel format in :c:type:`v4l2_frmsizeenum`'s ``pixel_format``.”h]”(hŒThe client may use ”…”�”}”(hjth²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!jnŒc-func”eh"]”h$]”h&]”uh1j:hj|ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_ENUM_FRAMESIZES”uh1hh³hÇh´K>hjtubhŒU to detect supported resolutions for a given format, passing desired pixel format in ”…”�”}”(hjth²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_frmsizeenum`”h]”j;)�”}”(hj¡h]”hŒv4l2_frmsizeenum”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-type”eh"]”h$]”h&]”uh1j:hjŸubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jjƒj4Œv4l2_frmsizeenum”uh1hh³hÇh´K>hjtubhŒ’s ”…”�”}”(hjth²hh³Nh´Nubj;)�”}”(hŒ``pixel_format``”h]”hŒ pixel_format”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjtubhŒ.”…”�”}”(hjth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K>hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj)�”}”(hŒŸSupported profiles and levels for the current ``OUTPUT`` format, if applicable, may be queried using their respective controls via :c:func:`VIDIOC_QUERYCTRL`. ”h]”hì)�”}”(hŒžSupported profiles and levels for the current ``OUTPUT`` format, if applicable, may be queried using their respective controls via :c:func:`VIDIOC_QUERYCTRL`.”h]”(hŒ.Supported profiles and levels for 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ŒK format, if applicable, may be queried using their respective controls via ”…”�”}”(hjäh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_QUERYCTRL`”h]”j;)�”}”(hjh]”hŒVIDIOC_QUERYCTRL()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjþubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_QUERYCTRL”uh1hh³hÇh´KBhjäubhŒ.”…”�”}”(hjäh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KBhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jÿhjîh²hh³hÇh´K'ubeh}”(h]”Œquerying-capabilities”ah ]”h"]”Œquerying capabilities”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K%ubh×)�”}”(hhh]”(hÜ)�”}”(hŒInitialization”h]”hŒInitialization”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj@h²hh³hÇh´KGubj)�”}”(hhh]”(j)�”}”(hX�Set the coded format on the ``OUTPUT`` queue via :c:func:`VIDIOC_S_FMT`. * **Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ``pixelformat`` a coded pixel format. ``width``, ``height`` coded width and height parsed from the stream. other fields follow standard semantics. .. note:: Changing the ``OUTPUT`` format may change the currently set ``CAPTURE`` format. The driver will derive a new ``CAPTURE`` format from the ``OUTPUT`` format being set, including resolution, colorimetry parameters, etc. If the client needs a specific ``CAPTURE`` format, it must adjust it afterwards. ”h]”(hì)�”}”(hŒHSet the coded format on the ``OUTPUT`` queue via :c:func:`VIDIOC_S_FMT`.”h]”(hŒSet the coded format on the ”…”�”}”(hjXh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjXubhŒ queue via ”…”�”}”(hjXh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_S_FMT`”h]”j;)�”}”(hjth]”hŒVIDIOC_S_FMT()”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjrubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4Œ VIDIOC_S_FMT”uh1hh³hÇh´KIhjXubhŒ.”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KIhjTubjN)�”}”(hhh]”j)�”}”(hŒü**Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ``pixelformat`` a coded pixel format. ``width``, ``height`` coded width and height parsed from the stream. other fields follow standard semantics. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”hŒstrong”“”)�”}”(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´KKhjžubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ@``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ”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&]”uh1jÆh³hÇh´KNhjÂubhŒ definition”“”)�”}”(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´KNhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´KNhj½ubjÁ)�”}”(hŒ&``pixelformat`` a coded pixel format. ”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&]”uh1jÆh³hÇh´KQhj"ubjà)�”}”(hhh]”hì)�”}”(hŒa coded pixel format.”h]”hŒa coded pixel format.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KQhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´KQhj½ubjÁ)�”}”(hŒE``width``, ``height`` coded width and height parsed from the stream. ”h]”(jÇ)�”}”(hŒ``width``, ``height``”h]”(j;)�”}”(hŒ ``width``”h]”hŒwidth”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj^ubhŒ, ”…”�”}”(hj^h²hh³Nh´Nubj;)�”}”(hŒ ``height``”h]”hŒheight”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´KThjZubjà)�”}”(hhh]”hì)�”}”(hŒ.coded width and height parsed from the stream.”h]”hŒ.coded width and height parsed from the stream.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KThjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´KThj½ubjÁ)�”}”(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&]”uh1jÆh³hÇh´KWhj¥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´KWhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´KWhj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j»hjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj›ubah}”(h]”h ]”h"]”h$]”h&]”j¬j­uh1jMh³hÇh´KKhjTubhŒnote”“”)�”}”(hX)Changing the ``OUTPUT`` format may change the currently set ``CAPTURE`` format. The driver will derive a new ``CAPTURE`` format from the ``OUTPUT`` format being set, including resolution, colorimetry parameters, etc. If the client needs a specific ``CAPTURE`` format, it must adjust it afterwards.”h]”hì)�”}”(hX)Changing the ``OUTPUT`` format may change the currently set ``CAPTURE`` format. The driver will derive a new ``CAPTURE`` format from the ``OUTPUT`` format being set, including resolution, colorimetry parameters, etc. If the client needs a specific ``CAPTURE`` format, it must adjust it afterwards.”h]”(hŒ 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Œ% format may change the currently set ”…”�”}”(hjìh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjìubhŒ& format. The driver will derive a new ”…”�”}”(hjìh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjìubhŒ format from the ”…”�”}”(hjìh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjìubhŒe format being set, including resolution, colorimetry parameters, etc. If the client needs a specific ”…”�”}”(hjìh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjìubhŒ& format, it must adjust it afterwards.”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K[hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jæhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjQh²hh³Nh´Nubj)�”}”(hŒ™Call :c:func:`VIDIOC_S_EXT_CTRLS` to set all the controls (parsed headers, etc.) required by the ``OUTPUT`` format to enumerate the ``CAPTURE`` formats. ”h]”hì)�”}”(hŒ˜Call :c:func:`VIDIOC_S_EXT_CTRLS` to set all the controls (parsed headers, etc.) required by the ``OUTPUT`` format to enumerate the ``CAPTURE`` formats.”h]”(hŒCall ”…”�”}”(hjdh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_S_EXT_CTRLS`”h]”j;)�”}”(hjnh]”hŒVIDIOC_S_EXT_CTRLS()”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjlubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_S_EXT_CTRLS”uh1hh³hÇh´KahjdubhŒ@ to set all the controls (parsed headers, etc.) required by the ”…”�”}”(hjdh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjdubhŒ format to enumerate the ”…”�”}”(hjdh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjdubhŒ formats.”…”�”}”(hjdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kahj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQh²hh³hÇh´Nubj)�”}”(hX·Call :c:func:`VIDIOC_G_FMT` for ``CAPTURE`` queue to get the format for the destination buffers parsed/decoded from the bytestream. * **Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. * **Returned fields:** ``width``, ``height`` frame buffer resolution for the decoded frames. ``pixelformat`` pixel format for decoded frames. ``num_planes`` (for _MPLANE ``type`` only) number of planes for pixelformat. ``sizeimage``, ``bytesperline`` as per standard semantics; matching frame buffer format. .. note:: The value of ``pixelformat`` may be any pixel format supported for the ``OUTPUT`` format, based on the hardware capabilities. It is suggested that the driver chooses the preferred/optimal format for the current configuration. For example, a YUV format may be preferred over an RGB format, if an additional conversion step would be required for RGB. ”h]”(hì)�”}”(hŒƒCall :c:func:`VIDIOC_G_FMT` for ``CAPTURE`` queue to get the format for the destination buffers parsed/decoded from the bytestream.”h]”(hŒCall ”…”�”}”(hjÃh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_G_FMT`”h]”j;)�”}”(hjÍh]”hŒVIDIOC_G_FMT()”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjËubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4Œ VIDIOC_G_FMT”uh1hh³hÇh´KdhjÃubhŒ for ”…”�”}”(hjÃh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjÃubhŒX queue to get the format for the destination buffers parsed/decoded from the bytestream.”…”�”}”(hjÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kdhj¿ubjN)�”}”(hhh]”(j)�”}”(hŒ[**Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”j§)�”}”(hjh]”hŒRequired fields:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kghj ubj¼)�”}”(hhh]”jÁ)�”}”(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&]”uh1jÆh³hÇh´Kjhj'ubjà)�”}”(hhh]”hì)�”}”(hŒ7a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``.”h]”(hŒa ”…”�”}”(hjEh²hh³Nh´Nubj;)�”}”(hŒ``V4L2_BUF_TYPE_*``”h]”hŒV4L2_BUF_TYPE_*”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjEubhŒ enum appropriate for ”…”�”}”(hjEh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjEubhŒ.”…”�”}”(hjEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KjhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´Kjhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hXF**Returned fields:** ``width``, ``height`` frame buffer resolution for the decoded frames. ``pixelformat`` pixel format for decoded frames. ``num_planes`` (for _MPLANE ``type`` only) number of planes for pixelformat. ``sizeimage``, ``bytesperline`` as per standard semantics; matching frame buffer format. ”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´Klhj�ubj¼)�”}”(hhh]”(jÁ)�”}”(hŒF``width``, ``height`` frame buffer resolution for the decoded frames. ”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&]”uh1jÆh³hÇh´Kohj­ubjà)�”}”(hhh]”hì)�”}”(hŒ/frame buffer resolution for the decoded frames.”h]”hŒ/frame buffer resolution for the decoded frames.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KohjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´KohjªubjÁ)�”}”(hŒ1``pixelformat`` pixel format for decoded frames. ”h]”(jÇ)�”}”(hŒ``pixelformat``”h]”j;)�”}”(hjþh]”hŒ pixelformat”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´Krhjøubjà)�”}”(hhh]”hì)�”}”(hŒ pixel format for decoded frames.”h]”hŒ pixel format for decoded frames.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Krhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´KrhjªubjÁ)�”}”(hŒM``num_planes`` (for _MPLANE ``type`` only) number of planes for pixelformat. ”h]”(jÇ)�”}”(hŒ*``num_planes`` (for _MPLANE ``type`` only)”h]”(j;)�”}”(hŒ``num_planes``”h]”hŒ num_planes”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj4ubhŒ (for _MPLANE ”…”�”}”(hj4h²hh³Nh´Nubj;)�”}”(hŒ``type``”h]”hŒtype”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj4ubhŒ only)”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´Kuhj0ubjà)�”}”(hhh]”hì)�”}”(hŒ!number of planes for pixelformat.”h]”hŒ!number of planes for pixelformat.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kuhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´KuhjªubjÁ)�”}”(hŒY``sizeimage``, ``bytesperline`` as per standard semantics; matching frame buffer format. ”h]”(jÇ)�”}”(hŒ``sizeimage``, ``bytesperline``”h]”(j;)�”}”(hŒ ``sizeimage``”h]”hŒ sizeimage”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjƒubhŒ, ”…”�”}”(hjƒh²hh³Nh´Nubj;)�”}”(hŒ``bytesperline``”h]”hŒ bytesperline”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´Kxhjubjà)�”}”(hhh]”hì)�”}”(hŒ8as per standard semantics; matching frame buffer format.”h]”hŒ8as per standard semantics; matching frame buffer format.”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kxhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´Kxhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j»hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”j¬j­uh1jMh³hÇh´Kghj¿ubjç)�”}”(hX\The value of ``pixelformat`` may be any pixel format supported for the ``OUTPUT`` format, based on the hardware capabilities. It is suggested that the driver chooses the preferred/optimal format for the current configuration. For example, a YUV format may be preferred over an RGB format, if an additional conversion step would be required for RGB.”h]”hì)�”}”(hX\The value of ``pixelformat`` may be any pixel format supported for the ``OUTPUT`` format, based on the hardware capabilities. It is suggested that the driver chooses the preferred/optimal format for the current configuration. For example, a YUV format may be preferred over an RGB format, if an additional conversion step would be required for RGB.”h]”(hŒ The value of ”…”�”}”(hjàh²hh³Nh´Nubj;)�”}”(hŒ``pixelformat``”h]”hŒ pixelformat”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjàubhŒ+ may be any pixel format supported for the ”…”�”}”(hjàh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjàubhX  format, based on the hardware capabilities. It is suggested that the driver chooses the preferred/optimal format for the current configuration. For example, a YUV format may be preferred over an RGB format, if an additional conversion step would be required for RGB.”…”�”}”(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&]”uh1jhjQh²hh³Nh´Nubj)�”}”(hX¸*[optional]* Enumerate ``CAPTURE`` formats via :c:func:`VIDIOC_ENUM_FMT` on the ``CAPTURE`` queue. The client may use this ioctl to discover which alternative raw formats are supported for the current ``OUTPUT`` format and select one of them via :c:func:`VIDIOC_S_FMT`. .. note:: The driver will return only formats supported for the currently selected ``OUTPUT`` format and currently set controls, even if more formats may be supported by the decoder in general. For example, a decoder may support YUV and RGB formats for resolutions 1920x1088 and lower, but only YUV for higher resolutions (due to hardware limitations). After setting a resolution of 1920x1088 or lower as the ``OUTPUT`` format, :c:func:`VIDIOC_ENUM_FMT` may return a set of YUV and RGB pixel formats, but after setting a resolution higher than 1920x1088, the driver will not return RGB pixel formats, since they are unsupported for this resolution. ”h]”(hì)�”}”(hX *[optional]* Enumerate ``CAPTURE`` formats via :c:func:`VIDIOC_ENUM_FMT` on the ``CAPTURE`` queue. The client may use this ioctl to discover which alternative raw formats are supported for the current ``OUTPUT`` format and select one of them via :c:func:`VIDIOC_S_FMT`.”h]”(hŒemphasis”“”)�”}”(hŒ *[optional]*”h]”hŒ [optional]”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j& hj" ubhŒ Enumerate ”…”�”}”(hj" h²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj" ubhŒ formats via ”…”�”}”(hj" h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_ENUM_FMT`”h]”j;)�”}”(hjN h]”hŒVIDIOC_ENUM_FMT()”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjL ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_ENUM_FMT”uh1hh³hÇh´K‚hj" ubhŒ on the ”…”�”}”(hj" h²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj" ubhŒn queue. The client may use this ioctl to discover which alternative raw formats are supported for 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 and select one of them 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!jnŒc-func”eh"]”h$]”h&]”uh1j:hj“ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4Œ 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ç)�”}”(hXThe driver will return only formats supported for the currently selected ``OUTPUT`` format and currently set controls, even if more formats may be supported by the decoder in general. For example, a decoder may support YUV and RGB formats for resolutions 1920x1088 and lower, but only YUV for higher resolutions (due to hardware limitations). After setting a resolution of 1920x1088 or lower as the ``OUTPUT`` format, :c:func:`VIDIOC_ENUM_FMT` may return a set of YUV and RGB pixel formats, but after setting a resolution higher than 1920x1088, the driver will not return RGB pixel formats, since they are unsupported for this resolution.”h]”(hì)�”}”(hŒ·The driver will return only formats supported for the currently selected ``OUTPUT`` format and currently set controls, even if more formats may be supported by the decoder in general.”h]”(hŒIThe driver will return only formats supported for the currently selected ”…”�”}”(hjÀ h²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjÀ ubhŒd format and currently set controls, even if more formats may be supported by the decoder in general.”…”�”}”(hjÀ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K‰hj¼ ubhì)�”}”(hXÆFor example, a decoder may support YUV and RGB formats for resolutions 1920x1088 and lower, but only YUV for higher resolutions (due to hardware limitations). After setting a resolution of 1920x1088 or lower as the ``OUTPUT`` format, :c:func:`VIDIOC_ENUM_FMT` may return a set of YUV and RGB pixel formats, but after setting a resolution higher than 1920x1088, the driver will not return RGB pixel formats, since they are unsupported for this resolution.”h]”(hŒ×For example, a decoder may support YUV and RGB formats for resolutions 1920x1088 and lower, but only YUV for higher resolutions (due to hardware limitations). After setting a resolution of 1920x1088 or lower as 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, ”…”�”}”(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!jnŒc-func”eh"]”h$]”h&]”uh1j:hjú ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_ENUM_FMT”uh1hh³hÇh´K�hjà ubhŒÃ may return a set of YUV and RGB pixel formats, but after setting a resolution higher than 1920x1088, the driver will not return RGB pixel formats, since they are unsupported for this resolution.”…”�”}”(hjà h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K�hj¼ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjQh²hh³Nh´Nubj)�”}”(hX*[optional]* Choose a different ``CAPTURE`` format than suggested via :c:func:`VIDIOC_S_FMT` on ``CAPTURE`` queue. It is possible for the client to choose a different format than selected/suggested by the driver in :c:func:`VIDIOC_G_FMT`. * **Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ``pixelformat`` a raw pixel format. ``width``, ``height`` frame buffer resolution of the decoded stream; typically unchanged from what was returned with :c:func:`VIDIOC_G_FMT`, but it may be different if the hardware supports composition and/or scaling. After performing this step, the client must perform step 3 again in order to obtain up-to-date information about the buffers size and layout. ”h]”(hì)�”}”(hŒî*[optional]* Choose a different ``CAPTURE`` format than suggested via :c:func:`VIDIOC_S_FMT` on ``CAPTURE`` queue. It is possible for the client to choose a different format than selected/suggested by the driver in :c:func:`VIDIOC_G_FMT`.”h]”(j' )�”}”(hŒ *[optional]*”h]”hŒ [optional]”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j& hj3 ubhŒ Choose a different ”…”�”}”(hj3 h²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj3 ubhŒ format than suggested via ”…”�”}”(hj3 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!jnŒc-func”eh"]”h$]”h&]”uh1j:hj[ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4Œ VIDIOC_S_FMT”uh1hh³hÇh´K•hj3 ubhŒ on ”…”�”}”(hj3 h²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj3 ubhŒl queue. It is possible for the client to choose a different format than selected/suggested by the driver in ”…”�”}”(hj3 h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_G_FMT`”h]”j;)�”}”(hj’ h]”hŒVIDIOC_G_FMT()”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hj� ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4Œ VIDIOC_G_FMT”uh1hh³hÇh´K•hj3 ubhŒ.”…”�”}”(hj3 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K•hj/ ubhŒ block_quote”“”)�”}”(hXz* **Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ``pixelformat`` a raw pixel format. ``width``, ``height`` frame buffer resolution of the decoded stream; typically unchanged from what was returned with :c:func:`VIDIOC_G_FMT`, but it may be different if the hardware supports composition and/or scaling. ”h]”jN)�”}”(hhh]”j)�”}”(hXh**Required fields:** ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ``pixelformat`` a raw pixel format. ``width``, ``height`` frame buffer resolution of the decoded stream; typically unchanged from what was returned with :c:func:`VIDIOC_G_FMT`, but it may be different if the hardware supports composition and/or scaling. ”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 ubj¼)�”}”(hhh]”(jÁ)�”}”(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&]”uh1jÆh³hÇh´K�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´K�hjû ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjà ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´K�hjÝ ubjÁ)�”}”(hŒ$``pixelformat`` a raw pixel format. ”h]”(jÇ)�”}”(hŒ``pixelformat``”h]”j;)�”}”(hjB h]”hŒ pixelformat”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´K hj< ubjà)�”}”(hhh]”hì)�”}”(hŒa raw pixel format.”h]”hŒa raw pixel format.”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K hjW ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj< ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´K hjÝ ubjÁ)�”}”(hŒÚ``width``, ``height`` frame buffer resolution of the decoded stream; typically unchanged from what was returned with :c:func:`VIDIOC_G_FMT`, but it may be different if the hardware supports composition and/or scaling. ”h]”(jÇ)�”}”(hŒ``width``, ``height``”h]”(j;)�”}”(hŒ ``width``”h]”hŒwidth”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjx ubhŒ, ”…”�”}”(hjx h²hh³Nh´Nubj;)�”}”(hŒ ``height``”h]”hŒheight”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjx ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´K¥hjt ubjà)�”}”(hhh]”hì)�”}”(hŒÃframe buffer resolution of the decoded stream; typically unchanged from what was returned with :c:func:`VIDIOC_G_FMT`, but it may be different if the hardware supports composition and/or scaling.”h]”(hŒ_frame buffer resolution of the decoded stream; typically unchanged from what was returned with ”…”�”}”(hj¥ h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_G_FMT`”h]”j;)�”}”(hj¯ h]”hŒVIDIOC_G_FMT()”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hj­ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4Œ VIDIOC_G_FMT”uh1hh³hÇh´K£hj¥ ubhŒN, but it may be different if the hardware supports composition and/or scaling.”…”�”}”(hj¥ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K£hj¢ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjt ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´K¥hjÝ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j»hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿ ubah}”(h]”h ]”h"]”h$]”h&]”j¬j­uh1jMh³hÇh´Kšhj» ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹ h³hÇh´Kšhj/ ubhì)�”}”(hŒ�After performing this step, the client must perform step 3 again in order to obtain up-to-date information about the buffers size and layout.”h]”hŒ�After performing this step, the client must perform step 3 again in order to obtain up-to-date information about the buffers size and layout.”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K§hj/ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjQh²hh³hÇh´Nubj)�”}”(hX«Allocate source (bytestream) buffers via :c:func:`VIDIOC_REQBUFS` on ``OUTPUT`` queue. * **Required fields:** ``count`` requested number of buffers to allocate; greater than zero. ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ``memory`` follows standard semantics. * **Returned fields:** ``count`` actual number of buffers allocated. * If required, the driver will adjust ``count`` to be equal or bigger to the minimum of required number of ``OUTPUT`` buffers for the given format and requested count. The client must check this value after the ioctl returns to get the actual number of buffers allocated. ”h]”(hì)�”}”(hŒVAllocate source (bytestream) buffers via :c:func:`VIDIOC_REQBUFS` on ``OUTPUT`` queue.”h]”(hŒ)Allocate source (bytestream) buffers via ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_REQBUFS`”h]”j;)�”}”(hj h]”hŒVIDIOC_REQBUFS()”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_REQBUFS”uh1hh³hÇh´Kªhj ubhŒ on ”…”�”}”(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´Kªhj ubjº )�”}”(hXE* **Required fields:** ``count`` requested number of buffers to allocate; greater than zero. ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ``memory`` follows standard semantics. * **Returned fields:** ``count`` actual number of buffers allocated. * If required, the driver will adjust ``count`` to be equal or bigger to the minimum of required number of ``OUTPUT`` buffers for the given format and requested count. The client must check this value after the ioctl returns to get the actual number of buffers allocated. ”h]”jN)�”}”(hhh]”(j)�”}”(hŒÑ**Required fields:** ``count`` requested number of buffers to allocate; greater than zero. ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``OUTPUT``. ``memory`` follows standard semantics. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”j§)�”}”(hjb h]”hŒRequired fields:”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hj` ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K­hj\ ubj¼)�”}”(hhh]”(jÁ)�”}”(hŒF``count`` requested number of buffers to allocate; greater than zero. ”h]”(jÇ)�”}”(hŒ ``count``”h]”j;)�”}”(hj€ h]”hŒcount”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj~ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´K°hjz ubjà)�”}”(hhh]”hì)�”}”(hŒ;requested number of buffers to allocate; greater than zero.”h]”hŒ;requested number of buffers to allocate; greater than zero.”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K°hj• ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjz ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´K°hjw ubjÁ)�”}”(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&]”uh1jÆh³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&]”uh1jÀh³hÇh´K³hjw ubjÁ)�”}”(hŒ'``memory`` follows standard semantics. ”h]”(jÇ)�”}”(hŒ ``memory``”h]”j;)�”}”(hj h]”hŒmemory”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´K¶hj ubjà)�”}”(hhh]”hì)�”}”(hŒfollows standard semantics.”h]”hŒfollows 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&]”uh1jÀh³hÇh´K¶hjw ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j»hj\ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjY ubj)�”}”(hŒH**Returned fields:** ``count`` actual number of buffers allocated. ”h]”(hì)�”}”(hŒ**Returned fields:**”h]”j§)�”}”(hjX h]”hŒReturned fields:”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K¸hjR ubj¼)�”}”(hhh]”jÁ)�”}”(hŒ.``count`` actual number of buffers allocated. ”h]”(jÇ)�”}”(hŒ ``count``”h]”j;)�”}”(hjv h]”hŒcount”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjt ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´K»hjp ubjà)�”}”(hhh]”hì)�”}”(hŒ#actual number of buffers allocated.”h]”hŒ#actual number of buffers allocated.”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K»hj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjp ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´K»hjm ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjR ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjY ubj)�”}”(hXIf required, the driver will adjust ``count`` to be equal or bigger to the minimum of required number of ``OUTPUT`` buffers for the given format and requested count. The client must check this value after the ioctl returns to get the actual number of buffers allocated. ”h]”hì)�”}”(hX If required, the driver will adjust ``count`` to be equal or bigger to the minimum of required number of ``OUTPUT`` buffers for the given format and requested count. The client must check this value after the ioctl returns to get the actual number of buffers allocated.”h]”(hŒ$If required, the driver will adjust ”…”�”}”(hj¸ h²hh³Nh´Nubj;)�”}”(hŒ ``count``”h]”hŒcount”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj¸ ubhŒ< to be equal or bigger to the minimum of required number of ”…”�”}”(hj¸ h²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj¸ ubhŒš buffers for the given format and requested count. The client must check this value after the ioctl returns to get the actual number of buffers allocated.”…”�”}”(hj¸ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K½hj´ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjY ubeh}”(h]”h ]”h"]”h$]”h&]”j¬j­uh1jMh³hÇh´K­hjU ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹ h³hÇh´K­hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjQh²hh³hÇh´Nubj)�”}”(hXAllocate destination (raw format) buffers via :c:func:`VIDIOC_REQBUFS` on the ``CAPTURE`` queue. * **Required fields:** ``count`` requested number of buffers to allocate; greater than zero. The client is responsible for deducing the minimum number of buffers required for the stream to be properly decoded (taking e.g. reference frames into account) and pass an equal or bigger number. ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ``memory`` follows standard semantics. ``V4L2_MEMORY_USERPTR`` is not supported for ``CAPTURE`` buffers. * **Returned fields:** ``count`` adjusted to allocated number of buffers, in case the codec requires more buffers than requested. * The driver must adjust count to the minimum of required number of ``CAPTURE`` buffers for the current format, stream configuration and requested count. The client must check this value after the ioctl returns to get the number of buffers allocated. ”h]”(hì)�”}”(hŒ`Allocate destination (raw format) buffers via :c:func:`VIDIOC_REQBUFS` on the ``CAPTURE`` queue.”h]”(hŒ.Allocate destination (raw format) buffers via ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_REQBUFS`”h]”j;)�”}”(hjh]”hŒVIDIOC_REQBUFS()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_REQBUFS”uh1hh³hÇh´KÂhjubhŒ on the ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒ queue.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÂhjubjº )�”}”(hX’* **Required fields:** ``count`` requested number of buffers to allocate; greater than zero. The client is responsible for deducing the minimum number of buffers required for the stream to be properly decoded (taking e.g. reference frames into account) and pass an equal or bigger number. ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ``memory`` follows standard semantics. ``V4L2_MEMORY_USERPTR`` is not supported for ``CAPTURE`` buffers. * **Returned fields:** ``count`` adjusted to allocated number of buffers, in case the codec requires more buffers than requested. * The driver must adjust count to the minimum of required number of ``CAPTURE`` buffers for the current format, stream configuration and requested count. The client must check this value after the ioctl returns to get the number of buffers allocated. ”h]”jN)�”}”(hhh]”(j)�”}”(hXè**Required fields:** ``count`` requested number of buffers to allocate; greater than zero. The client is responsible for deducing the minimum number of buffers required for the stream to be properly decoded (taking e.g. reference frames into account) and pass an equal or bigger number. ``type`` a ``V4L2_BUF_TYPE_*`` enum appropriate for ``CAPTURE``. ``memory`` follows standard semantics. ``V4L2_MEMORY_USERPTR`` is not supported for ``CAPTURE`` buffers. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”j§)�”}”(hjVh]”hŒRequired fields:”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÅhjPubj¼)�”}”(hhh]”(jÁ)�”}”(hX ``count`` requested number of buffers to allocate; greater than zero. The client is responsible for deducing the minimum number of buffers required for the stream to be properly decoded (taking e.g. reference frames into account) and pass an equal or bigger number. ”h]”(jÇ)�”}”(hŒ ``count``”h]”j;)�”}”(hjth]”hŒcount”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´KËhjnubjà)�”}”(hhh]”hì)�”}”(hŒÿrequested number of buffers to allocate; greater than zero. The client is responsible for deducing the minimum number of buffers required for the stream to be properly decoded (taking e.g. reference frames into account) and pass an equal or bigger number.”h]”hŒÿrequested number of buffers to allocate; greater than zero. The client is responsible for deducing the minimum number of buffers required for the stream to be properly decoded (taking e.g. reference frames into account) and pass an equal or bigger number.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÈhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´KËhjkubjÁ)�”}”(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&]”uh1jÆh³hÇh´KÎ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´KÎhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´KÎhjkubjÁ)�”}”(hŒi``memory`` follows standard semantics. ``V4L2_MEMORY_USERPTR`` is not supported for ``CAPTURE`` buffers. ”h]”(jÇ)�”}”(hŒ ``memory``”h]”j;)�”}”(hjh]”hŒmemory”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´KÒhjubjà)�”}”(hhh]”hì)�”}”(hŒ]follows standard semantics. ``V4L2_MEMORY_USERPTR`` is not supported for ``CAPTURE`` buffers.”h]”(hŒfollows standard semantics. ”…”�”}”(hj h²hh³Nh´Nubj;)�”}”(hŒ``V4L2_MEMORY_USERPTR``”h]”hŒV4L2_MEMORY_USERPTR”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj ubhŒ is not supported for ”…”�”}”(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Ñhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´KÒhjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j»hjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjMubj)�”}”(hŒ‰**Returned fields:** ``count`` adjusted to allocated number of buffers, in case the codec requires more buffers than requested. ”h]”(hì)�”}”(hŒ**Returned fields:**”h]”j§)�”}”(hjph]”hŒReturned fields:”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÔhjjubj¼)�”}”(hhh]”jÁ)�”}”(hŒk``count`` adjusted to allocated number of buffers, in case the codec requires more buffers than requested. ”h]”(jÇ)�”}”(hŒ ``count``”h]”j;)�”}”(hjŽh]”hŒcount”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´KØhjˆubjà)�”}”(hhh]”hì)�”}”(hŒ`adjusted to allocated number of buffers, in case the codec requires more buffers than requested.”h]”hŒ`adjusted to allocated number of buffers, in case the codec requires more buffers than requested.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K×hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´KØhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjMubj)�”}”(hŒùThe driver must adjust count to the minimum of required number of ``CAPTURE`` buffers for the current format, stream configuration and requested count. The client must check this value after the ioctl returns to get the number of buffers allocated. ”h]”hì)�”}”(hŒøThe driver must adjust count to the minimum of required number of ``CAPTURE`` buffers for the current format, stream configuration and requested count. The client must check this value after the ioctl returns to get the number of buffers allocated.”h]”(hŒBThe driver must adjust count to the minimum of required number 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 for the current format, stream configuration and requested count. The client must check this value after the ioctl returns to get the number of buffers allocated.”…”�”}”(hjÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÚhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMubeh}”(h]”h ]”h"]”h$]”h&]”j¬j­uh1jMh³hÇh´KÅhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹ h³hÇh´KÅhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjQh²hh³hÇh´Nubj)�”}”(hŒqAllocate requests (likely one per ``OUTPUT`` buffer) via :c:func:`MEDIA_IOC_REQUEST_ALLOC` on the media device. ”h]”j¼)�”}”(hhh]”jÁ)�”}”(hŒpAllocate requests (likely one per ``OUTPUT`` buffer) via :c:func:`MEDIA_IOC_REQUEST_ALLOC` on the media device. ”h]”(jÇ)�”}”(hŒ8Allocate requests (likely one per ``OUTPUT`` buffer) via”h]”(hŒ"Allocate requests (likely one per ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒ buffer) via”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´Kàhjubjà)�”}”(hhh]”hì)�”}”(hŒ6:c:func:`MEDIA_IOC_REQUEST_ALLOC` on the media device.”h]”(h)�”}”(hŒ!:c:func:`MEDIA_IOC_REQUEST_ALLOC`”h]”j;)�”}”(hj<h]”hŒMEDIA_IOC_REQUEST_ALLOC()”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hj:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒMEDIA_IOC_REQUEST_ALLOC”uh1hh³hÇh´Kàhj6ubhŒ on the media device.”…”�”}”(hj6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kàhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´Kàhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQh²hh³Nh´Nubj)�”}”(hŒZStart streaming on both ``OUTPUT`` and ``CAPTURE`` queues via :c:func:`VIDIOC_STREAMON`. ”h]”j¼)�”}”(hhh]”jÁ)�”}”(hŒYStart streaming on both ``OUTPUT`` and ``CAPTURE`` queues via :c:func:`VIDIOC_STREAMON`. ”h]”(jÇ)�”}”(hŒ=Start streaming on both ``OUTPUT`` and ``CAPTURE`` queues via”h]”(hŒStart streaming on 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 via”…”�”}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´Kãhj‚ubjà)�”}”(hhh]”hì)�”}”(hŒ:c:func:`VIDIOC_STREAMON`.”h]”(h)�”}”(hŒ:c:func:`VIDIOC_STREAMON`”h]”j;)�”}”(hjÁh]”hŒVIDIOC_STREAMON()”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hj¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_STREAMON”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ßhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´Kãhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j»hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j3j4j5hj6j7uh1jÿhj@h²hh³hÇh´KIubeh}”(h]”Œinitialization”ah ]”h"]”Œinitialization”ah$]”h&]”uh1hÖhhØh²hh³hÇh´KGubh×)�”}”(hhh]”(hÜ)�”}”(hŒDecoding”h]”hŒDecoding”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjh²hh³hÇh´Kæubhì)�”}”(hŒqFor each frame, the client is responsible for submitting at least one request to which the following is attached:”h]”hŒqFor each frame, the client is responsible for submitting at least one request to which the following is attached:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´•£¸Kèhjh²hubjN)�”}”(hhh]”(j)�”}”(hXThe amount of encoded data expected by the codec for its current configuration, as a buffer submitted to the ``OUTPUT`` queue. Typically, this corresponds to one frame worth of encoded data, but some formats may allow (or require) different amounts per unit.”h]”hì)�”}”(hXThe amount of encoded data expected by the codec for its current configuration, as a buffer submitted to the ``OUTPUT`` queue. Typically, this corresponds to one frame worth of encoded data, but some formats may allow (or require) different amounts per unit.”h]”(hŒmThe amount of encoded data expected by the codec for its current configuration, as a buffer submitted to the ”…”�”}”(hj4h²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj4ubhŒ‹ queue. Typically, this corresponds to one frame worth of encoded data, but some formats may allow (or require) different amounts per unit.”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Këhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-h²hh³hÇh´Nubj)�”}”(hŒ|All the metadata needed to decode the submitted encoded data, in the form of controls relevant to the format being decoded. ”h]”hì)�”}”(hŒ{All the metadata needed to decode the submitted encoded data, in the form of controls relevant to the format being decoded.”h]”hŒ{All the metadata needed to decode the submitted encoded data, in the form of controls relevant to the format being decoded.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KïhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j¬j­uh1jMh³hÇh´Këhjh²hubhì)�”}”(hXThe amount of data and contents of the source ``OUTPUT`` buffer, as well as the controls that must be set on the request, depend on the active coded pixel format and might be affected by codec-specific extended controls, as stated in documentation of each format.”h]”(hŒ.The amount of data and contents of the source ”…”�”}”(hjxh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjxubhŒÏ buffer, as well as the controls that must be set on the request, depend on the active coded pixel format and might be affected by codec-specific extended controls, as stated in documentation of each format.”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kòhjh²hubhì)�”}”(hXÆIf there is a possibility that the decoded frame will require one or more decode requests after the current one in order to be produced, then the client must set the ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` flag on the ``OUTPUT`` buffer. This will result in the (potentially partially) decoded ``CAPTURE`` buffer not being made available for dequeueing, and reused for the next decode request if the timestamp of the next ``OUTPUT`` buffer has not changed.”h]”(hŒ¦If there is a possibility that the decoded frame will require one or more decode requests after the current one in order to be produced, then the client must set the ”…”�”}”(hj˜h²hh³Nh´Nubj;)�”}”(hŒ&``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF``”h]”hŒ"V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj˜ubhŒ flag 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ŒA buffer. This will result in the (potentially partially) decoded ”…”�”}”(hj˜h²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj˜ubhŒu buffer not being made available for dequeueing, and reused for the next decode request if the timestamp of the next ”…”�”}”(hj˜h²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj˜ubhŒ buffer has not changed.”…”�”}”(hj˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K÷hjh²hubhì)�”}”(hŒCA typical frame would thus be decoded using the following sequence:”h]”hŒCA typical frame would thus be decoded using the following sequence:”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kþhjh²hubj)�”}”(hhh]”(j)�”}”(hX×Queue an ``OUTPUT`` buffer containing one unit of encoded bytestream data for the decoding request, using :c:func:`VIDIOC_QBUF`. * **Required fields:** ``index`` index of the buffer being queued. ``type`` type of the buffer. ``bytesused`` number of bytes taken by the encoded data frame in the buffer. ``flags`` the ``V4L2_BUF_FLAG_REQUEST_FD`` flag must be set. Additionally, if we are not sure that the current decode request is the last one needed to produce a fully decoded frame, then ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` must also be set. ``request_fd`` must be set to the file descriptor of the decoding request. ``timestamp`` must be set to a unique value per frame. This value will be propagated into the decoded frame's buffer and can also be used to use this frame as the reference of another. If using multiple decode requests per frame, then the timestamps of all the ``OUTPUT`` buffers for a given frame must be identical. If the timestamp changes, then the currently held ``CAPTURE`` buffer will be made available for dequeuing and the current request will work on a new ``CAPTURE`` buffer. ”h]”(hì)�”}”(hŒ€Queue an ``OUTPUT`` buffer containing one unit of encoded bytestream data for the decoding request, using :c:func:`VIDIOC_QBUF`.”h]”(hŒ Queue an ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒW buffer containing one unit of encoded bytestream data for the decoding request, using ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_QBUF`”h]”j;)�”}”(hjh]”hŒ VIDIOC_QBUF()”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4Œ VIDIOC_QBUF”uh1hh³hÇh´MhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjÿubjº )�”}”(hX?* **Required fields:** ``index`` index of the buffer being queued. ``type`` type of the buffer. ``bytesused`` number of bytes taken by the encoded data frame in the buffer. ``flags`` the ``V4L2_BUF_FLAG_REQUEST_FD`` flag must be set. Additionally, if we are not sure that the current decode request is the last one needed to produce a fully decoded frame, then ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` must also be set. ``request_fd`` must be set to the file descriptor of the decoding request. ``timestamp`` must be set to a unique value per frame. This value will be propagated into the decoded frame's buffer and can also be used to use this frame as the reference of another. If using multiple decode requests per frame, then the timestamps of all the ``OUTPUT`` buffers for a given frame must be identical. If the timestamp changes, then the currently held ``CAPTURE`` buffer will be made available for dequeuing and the current request will work on a new ``CAPTURE`` buffer. ”h]”jN)�”}”(hhh]”j)�”}”(hX**Required fields:** ``index`` index of the buffer being queued. ``type`` type of the buffer. ``bytesused`` number of bytes taken by the encoded data frame in the buffer. ``flags`` the ``V4L2_BUF_FLAG_REQUEST_FD`` flag must be set. Additionally, if we are not sure that the current decode request is the last one needed to produce a fully decoded frame, then ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` must also be set. ``request_fd`` must be set to the file descriptor of the decoding request. ``timestamp`` must be set to a unique value per frame. This value will be propagated into the decoded frame's buffer and can also be used to use this frame as the reference of another. If using multiple decode requests per frame, then the timestamps of all the ``OUTPUT`` buffers for a given frame must be identical. If the timestamp changes, then the currently held ``CAPTURE`` buffer will be made available for dequeuing and the current request will work on a new ``CAPTURE`` buffer. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”j§)�”}”(hjSh]”hŒRequired fields:”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjMubj¼)�”}”(hhh]”(jÁ)�”}”(hŒ,``index`` index of the buffer being queued. ”h]”(jÇ)�”}”(hŒ ``index``”h]”j;)�”}”(hjqh]”hŒindex”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´Mhjkubjà)�”}”(hhh]”hì)�”}”(hŒ!index of the buffer being queued.”h]”hŒ!index of the buffer being queued.”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´MhjhubjÁ)�”}”(hŒ``type`` type of the buffer. ”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&]”uh1jÆh³hÇh´M hj£ubjà)�”}”(hhh]”hì)�”}”(hŒtype of the buffer.”h]”hŒtype of the buffer.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´M hjhubjÁ)�”}”(hŒM``bytesused`` number of bytes taken by the encoded data frame in the buffer. ”h]”(jÇ)�”}”(hŒ ``bytesused``”h]”j;)�”}”(hjáh]”hŒ bytesused”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´M hjÛubjà)�”}”(hhh]”hì)�”}”(hŒ>number of bytes taken by the encoded data frame in the buffer.”h]”hŒ>number of bytes taken by the encoded data frame in the buffer.”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´M hjhubjÁ)�”}”(hŒõ``flags`` the ``V4L2_BUF_FLAG_REQUEST_FD`` flag must be set. Additionally, if we are not sure that the current decode request is the last one needed to produce a fully decoded frame, then ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` must also be set. ”h]”(jÇ)�”}”(hŒ ``flags``”h]”j;)�”}”(hjh]”hŒflags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´Mhjubjà)�”}”(hhh]”hì)�”}”(hŒêthe ``V4L2_BUF_FLAG_REQUEST_FD`` flag must be set. Additionally, if we are not sure that the current decode request is the last one needed to produce a fully decoded frame, then ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` must also be set.”h]”(hŒthe ”…”�”}”(hj1h²hh³Nh´Nubj;)�”}”(hŒ``V4L2_BUF_FLAG_REQUEST_FD``”h]”hŒV4L2_BUF_FLAG_REQUEST_FD”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj1ubhŒ’ flag must be set. Additionally, if we are not sure that the current decode request is the last one needed to produce a fully decoded frame, then ”…”�”}”(hj1h²hh³Nh´Nubj;)�”}”(hŒ&``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF``”h]”hŒ"V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj1ubhŒ must also be set.”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´MhjhubjÁ)�”}”(hŒK``request_fd`` must be set to the file descriptor of the decoding request. ”h]”(jÇ)�”}”(hŒ``request_fd``”h]”j;)�”}”(hjuh]”hŒ request_fd”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´Mhjoubjà)�”}”(hhh]”hì)�”}”(hŒ;must be set to the file descriptor of the decoding request.”h]”hŒ;must be set to the file descriptor of the decoding request.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´MhjhubjÁ)�”}”(hXæ``timestamp`` must be set to a unique value per frame. This value will be propagated into the decoded frame's buffer and can also be used to use this frame as the reference of another. If using multiple decode requests per frame, then the timestamps of all the ``OUTPUT`` buffers for a given frame must be identical. If the timestamp changes, then the currently held ``CAPTURE`` buffer will be made available for dequeuing and the current request will work on a new ``CAPTURE`` buffer. ”h]”(jÇ)�”}”(hŒ ``timestamp``”h]”j;)�”}”(hj­h]”hŒ timestamp”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´Mhj§ubjà)�”}”(hhh]”hì)�”}”(hX×must be set to a unique value per frame. This value will be propagated into the decoded frame's buffer and can also be used to use this frame as the reference of another. If using multiple decode requests per frame, then the timestamps of all the ``OUTPUT`` buffers for a given frame must be identical. If the timestamp changes, then the currently held ``CAPTURE`` buffer will be made available for dequeuing and the current request will work on a new ``CAPTURE`` buffer.”h]”(hŒùmust be set to a unique value per frame. This value will be propagated into the decoded frame’s buffer and can also be used to use this frame as the reference of another. If using multiple decode requests per frame, then the timestamps of all 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 for a given frame must be identical. If the timestamp changes, then the currently held ”…”�”}”(hjÅh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjÅubhŒX buffer will be made available for dequeuing and the current request will work on a new ”…”�”}”(hjÅh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjÅubhŒ buffer.”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´Mhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j»hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjJubah}”(h]”h ]”h"]”h$]”h&]”j¬j­uh1jMh³hÇh´MhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹ h³hÇh´Mhjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjüh²hh³hÇh´Nubj)�”}”(hXMSet the codec-specific controls for the decoding request, using :c:func:`VIDIOC_S_EXT_CTRLS`. * **Required fields:** ``which`` must be ``V4L2_CTRL_WHICH_REQUEST_VAL``. ``request_fd`` must be set to the file descriptor of the decoding request. other fields other fields are set as usual when setting controls. The ``controls`` array must contain all the codec-specific controls required to decode a frame. .. note:: It is possible to specify the controls in different invocations of :c:func:`VIDIOC_S_EXT_CTRLS`, or to overwrite a previously set control, as long as ``request_fd`` and ``which`` are properly set. The controls state at the moment of request submission is the one that will be considered. .. note:: The order in which steps 1 and 2 take place is interchangeable. ”h]”(hì)�”}”(hŒ]Set the codec-specific controls for the decoding request, using :c:func:`VIDIOC_S_EXT_CTRLS`.”h]”(hŒ@Set the codec-specific controls for the decoding request, using ”…”�”}”(hj7h²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_S_EXT_CTRLS`”h]”j;)�”}”(hjAh]”hŒVIDIOC_S_EXT_CTRLS()”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hj?ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_S_EXT_CTRLS”uh1hh³hÇh´M hj7ubhŒ.”…”�”}”(hj7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hj3ubjº )�”}”(hX^* **Required fields:** ``which`` must be ``V4L2_CTRL_WHICH_REQUEST_VAL``. ``request_fd`` must be set to the file descriptor of the decoding request. other fields other fields are set as usual when setting controls. The ``controls`` array must contain all the codec-specific controls required to decode a frame. ”h]”jN)�”}”(hhh]”j)�”}”(hXL**Required fields:** ``which`` must be ``V4L2_CTRL_WHICH_REQUEST_VAL``. ``request_fd`` must be set to the file descriptor of the decoding request. other fields other fields are set as usual when setting controls. The ``controls`` array must contain all the codec-specific controls required to decode a frame. ”h]”(hì)�”}”(hŒ**Required fields:**”h]”j§)�”}”(hjuh]”hŒRequired fields:”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M#hjoubj¼)�”}”(hhh]”(jÁ)�”}”(hŒ3``which`` must be ``V4L2_CTRL_WHICH_REQUEST_VAL``. ”h]”(jÇ)�”}”(hŒ ``which``”h]”j;)�”}”(hj“h]”hŒwhich”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´M&hj�ubjà)�”}”(hhh]”hì)�”}”(hŒ(must be ``V4L2_CTRL_WHICH_REQUEST_VAL``.”h]”(hŒmust be ”…”�”}”(hj«h²hh³Nh´Nubj;)�”}”(hŒ``V4L2_CTRL_WHICH_REQUEST_VAL``”h]”hŒV4L2_CTRL_WHICH_REQUEST_VAL”…”�”}”(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&]”uh1jÀh³hÇh´M&hjŠubjÁ)�”}”(hŒK``request_fd`` must be set to the file descriptor of the decoding request. ”h]”(jÇ)�”}”(hŒ``request_fd``”h]”j;)�”}”(hjÝh]”hŒ request_fd”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´M)hj×ubjà)�”}”(hhh]”hì)�”}”(hŒ;must be set to the file descriptor of the decoding request.”h]”hŒ;must be set to the file descriptor of the decoding request.”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M)hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´M)hjŠubjÁ)�”}”(hŒ¢other fields other fields are set as usual when setting controls. The ``controls`` array must contain all the codec-specific controls required to decode a frame. ”h]”(jÇ)�”}”(hŒ other fields”h]”hŒ other fields”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÆh³hÇh´M.hjubjà)�”}”(hhh]”hì)�”}”(hŒ”other fields are set as usual when setting controls. The ``controls`` array must contain all the codec-specific controls required to decode a frame.”h]”(hŒ9other fields are set as usual when setting controls. The ”…”�”}”(hj$h²hh³Nh´Nubj;)�”}”(hŒ ``controls``”h]”hŒcontrols”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj$ubhŒO array must contain all the codec-specific controls required to decode a frame.”…”�”}”(hj$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M,hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀh³hÇh´M.hjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j»hjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubah}”(h]”h ]”h"]”h$]”h&]”j¬j­uh1jMh³hÇh´M#hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹ h³hÇh´M#hj3ubjç)�”}”(hXIt is possible to specify the controls in different invocations of :c:func:`VIDIOC_S_EXT_CTRLS`, or to overwrite a previously set control, as long as ``request_fd`` and ``which`` are properly set. The controls state at the moment of request submission is the one that will be considered.”h]”hì)�”}”(hXIt is possible to specify the controls in different invocations of :c:func:`VIDIOC_S_EXT_CTRLS`, or to overwrite a previously set control, as long as ``request_fd`` and ``which`` are properly set. The controls state at the moment of request submission is the one that will be considered.”h]”(hŒCIt is possible to specify the controls in different invocations of ”…”�”}”(hjlh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_S_EXT_CTRLS`”h]”j;)�”}”(hjvh]”hŒVIDIOC_S_EXT_CTRLS()”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjtubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_S_EXT_CTRLS”uh1hh³hÇh´M2hjlubhŒ7, or to overwrite a previously set control, as long as ”…”�”}”(hjlh²hh³Nh´Nubj;)�”}”(hŒ``request_fd``”h]”hŒ request_fd”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjlubhŒ and ”…”�”}”(hjlh²hh³Nh´Nubj;)�”}”(hŒ ``which``”h]”hŒwhich”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjlubhŒm are properly set. The controls state at the moment of request submission is the one that will be considered.”…”�”}”(hjlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M2hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jæhj3ubjç)�”}”(hŒ?The order in which steps 1 and 2 take place is interchangeable.”h]”hì)�”}”(hjÉh]”hŒ?The order in which steps 1 and 2 take place is interchangeable.”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M9hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jæhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjüh²hh³Nh´Nubj)�”}”(hXßSubmit the request by invoking :c:func:`MEDIA_REQUEST_IOC_QUEUE` on the request FD. If the request is submitted without an ``OUTPUT`` buffer, or if some of the required controls are missing from the request, then :c:func:`MEDIA_REQUEST_IOC_QUEUE` will return ``-ENOENT``. If more than one ``OUTPUT`` buffer is queued, then it will return ``-EINVAL``. :c:func:`MEDIA_REQUEST_IOC_QUEUE` returning non-zero means that no ``CAPTURE`` buffer will be produced for this request. ”h]”(hì)�”}”(hŒSSubmit the request by invoking :c:func:`MEDIA_REQUEST_IOC_QUEUE` on the request FD.”h]”(hŒSubmit the request by invoking ”…”�”}”(hjèh²hh³Nh´Nubh)�”}”(hŒ!:c:func:`MEDIA_REQUEST_IOC_QUEUE`”h]”j;)�”}”(hjòh]”hŒMEDIA_REQUEST_IOC_QUEUE()”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjðubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒMEDIA_REQUEST_IOC_QUEUE”uh1hh³hÇh´M;hjèubhŒ on the request FD.”…”�”}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M;hjäubjº )�”}”(hX„If the request is submitted without an ``OUTPUT`` buffer, or if some of the required controls are missing from the request, then :c:func:`MEDIA_REQUEST_IOC_QUEUE` will return ``-ENOENT``. If more than one ``OUTPUT`` buffer is queued, then it will return ``-EINVAL``. :c:func:`MEDIA_REQUEST_IOC_QUEUE` returning non-zero means that no ``CAPTURE`` buffer will be produced for this request. ”h]”hì)�”}”(hXƒIf the request is submitted without an ``OUTPUT`` buffer, or if some of the required controls are missing from the request, then :c:func:`MEDIA_REQUEST_IOC_QUEUE` will return ``-ENOENT``. If more than one ``OUTPUT`` buffer is queued, then it will return ``-EINVAL``. :c:func:`MEDIA_REQUEST_IOC_QUEUE` returning non-zero means that no ``CAPTURE`` buffer will be produced for this request.”h]”(hŒ'If the request is submitted without an ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒP buffer, or if some of the required controls are missing from the request, then ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ!:c:func:`MEDIA_REQUEST_IOC_QUEUE`”h]”j;)�”}”(hj9h]”hŒMEDIA_REQUEST_IOC_QUEUE()”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hj7ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒMEDIA_REQUEST_IOC_QUEUE”uh1hh³hÇh´M>hjubhŒ will return ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``-ENOENT``”h]”hŒ-ENOENT”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒ. If more than one ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒ' buffer is queued, then it will return ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒ. ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ!:c:func:`MEDIA_REQUEST_IOC_QUEUE`”h]”j;)�”}”(hj’h]”hŒMEDIA_REQUEST_IOC_QUEUE()”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒMEDIA_REQUEST_IOC_QUEUE”uh1hh³hÇh´M>hjubhŒ" returning non-zero means that no ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒ* buffer will be produced for this request.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M>hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¹ h³hÇh´M>hjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjüh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j3j4j5hj6j7uh1jÿhjh²hh³hÇh´Mubhì)�”}”(hŒÂ``CAPTURE`` buffers must not be part of the request, and are queued independently. They are returned in decode order (i.e. the same order as coded frames were submitted to the ``OUTPUT`` queue).”h]”(j;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjÝubhŒ¥ buffers must not be part of the request, and are queued independently. They are returned in decode order (i.e. the same order as coded frames were submitted 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Œ queue).”…”�”}”(hjÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MEhjh²hubhì)�”}”(hXKRuntime decoding errors are signaled by the dequeued ``CAPTURE`` buffers carrying the ``V4L2_BUF_FLAG_ERROR`` flag. If a decoded reference frame has an error, then all following decoded frames that refer to it also have the ``V4L2_BUF_FLAG_ERROR`` flag set, although the decoder will still try to produce (likely corrupted) frames.”h]”(hŒ5Runtime decoding errors are signaled by the dequeued ”…”�”}”(hj h²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj ubhŒ buffers carrying 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Œs flag. If a decoded reference frame has an error, then all following decoded frames that refer to it also have the ”…”�”}”(hj h²hh³Nh´Nubj;)�”}”(hŒ``V4L2_BUF_FLAG_ERROR``”h]”hŒV4L2_BUF_FLAG_ERROR”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj ubhŒT flag set, although the decoder will still try to produce (likely corrupted) frames.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MIhjh²hubeh}”(h]”Œdecoding”ah ]”h"]”Œdecoding”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kæubh×)�”}”(hhh]”(hÜ)�”}”(hŒ Buffer management while decoding”h]”hŒ Buffer management while decoding”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjWh²hh³hÇh´MPubhì)�”}”(hX Contrary to stateful decoders, a stateless decoder does not perform any kind of buffer management: it only guarantees that dequeued ``CAPTURE`` buffers can be used by the client for as long as they are not queued again. "Used" here encompasses using the buffer for compositing or display.”h]”(hŒ„Contrary to stateful decoders, a stateless decoder does not perform any kind of buffer management: it only guarantees that dequeued ”…”�”}”(hjhh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjhubhŒ• buffers can be used by the client for as long as they are not queued again. “Usedâ€� here encompasses using the buffer for compositing or display.”…”�”}”(hjhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MQhjWh²hubhì)�”}”(hŒTA dequeued capture buffer can also be used as the reference frame of another buffer.”h]”hŒTA dequeued capture buffer can also be used as the reference frame of another buffer.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MVhjWh²hubhì)�”}”(hX„A frame is specified as reference by converting its timestamp into nanoseconds, and storing it into the relevant member of a codec-dependent control structure. The :c:func:`v4l2_timeval_to_ns` function must be used to perform that conversion. The timestamp of a frame can be used to reference it as soon as all its units of encoded data are successfully submitted to the ``OUTPUT`` queue.”h]”(hŒ¤A frame is specified as reference by converting its timestamp into nanoseconds, and storing it into the relevant member of a codec-dependent control structure. The ”…”�”}”(hj–h²hh³Nh´Nubh)�”}”(hŒ:c:func:`v4l2_timeval_to_ns`”h]”j;)�”}”(hj h]”hŒv4l2_timeval_to_ns()”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjžubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4Œv4l2_timeval_to_ns”uh1hh³hÇh´MYhj–ubhŒ³ function must be used to perform that conversion. The timestamp of a frame can be used to reference it as soon as all its units of encoded data are successfully submitted 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Œ queue.”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MYhjWh²hubhì)�”}”(hXA decoded buffer containing a reference frame must not be reused as a decoding target until all the frames referencing it have been decoded. The safest way to achieve this is to refrain from queueing a reference buffer until all the decoded frames referencing it have been dequeued. However, if the driver can guarantee that buffers queued to the ``CAPTURE`` queue are processed in queued order, then user-space can take advantage of this guarantee and queue a reference buffer when the following conditions are met:”h]”(hX[A decoded buffer containing a reference frame must not be reused as a decoding target until all the frames referencing it have been decoded. The safest way to achieve this is to refrain from queueing a reference buffer until all the decoded frames referencing it have been dequeued. However, if the driver can guarantee that buffers queued to 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 are processed in queued order, then user-space can take advantage of this guarantee and queue a reference buffer when the following conditions are met:”…”�”}”(hjÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M_hjWh²hubj)�”}”(hhh]”(j)�”}”(hŒRAll the requests for frames affected by the reference frame have been queued, and ”h]”hì)�”}”(hŒQAll the requests for frames affected by the reference frame have been queued, and”h]”hŒQAll the requests for frames affected by the reference frame have been queued, and”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mghjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùh²hh³hÇh´Nubj)�”}”(hŒiA sufficient number of ``CAPTURE`` buffers to cover all the decoded referencing frames have been queued. ”h]”hì)�”}”(hŒhA sufficient number of ``CAPTURE`` buffers to cover all the decoded referencing frames have been queued.”h]”(hŒA sufficient number of ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒF buffers to cover all the decoded referencing frames have been queued.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mjhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j3j4j5hj6j7uh1jÿhjWh²hh³hÇh´Mgubhì)�”}”(hXWhen queuing a decoding request, the driver will increase the reference count of all the resources associated with reference frames. This means that the client can e.g. close the DMABUF file descriptors of reference frame buffers if it won't need them afterwards.”h]”hX When queuing a decoding request, the driver will increase the reference count of all the resources associated with reference frames. This means that the client can e.g. close the DMABUF file descriptors of reference frame buffers if it won’t need them afterwards.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MmhjWh²hubeh}”(h]”Œ buffer-management-while-decoding”ah ]”h"]”Œ buffer management while decoding”ah$]”h&]”uh1hÖhhØh²hh³hÇh´MPubh×)�”}”(hhh]”(hÜ)�”}”(hŒSeeking”h]”hŒSeeking”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjZh²hh³hÇh´Msubhì)�”}”(hXªIn order to seek, the client just needs to submit requests using input buffers corresponding to the new stream position. It must however be aware that resolution may have changed and follow the dynamic resolution change sequence in that case. Also depending on the codec used, picture parameters (e.g. SPS/PPS for H.264) may have changed and the client is responsible for making sure that a valid state is sent to the decoder.”h]”hXªIn order to seek, the client just needs to submit requests using input buffers corresponding to the new stream position. It must however be aware that resolution may have changed and follow the dynamic resolution change sequence in that case. Also depending on the codec used, picture parameters (e.g. SPS/PPS for H.264) may have changed and the client is responsible for making sure that a valid state is sent to the decoder.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MthjZh²hubhì)�”}”(hŒhThe client is then free to ignore any returned ``CAPTURE`` buffer that comes from the pre-seek position.”h]”(hŒ/The client is then free to ignore any returned ”…”�”}”(hjyh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjyubhŒ. buffer that comes from the pre-seek position.”…”�”}”(hjyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M{hjZh²hubeh}”(h]”Œseeking”ah ]”h"]”Œseeking”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Msubh×)�”}”(hhh]”(hÜ)�”}”(hŒPausing”h]”hŒPausing”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj¡h²hh³hÇh´Mubhì)�”}”(hŒ³In order to pause, the client can just cease queuing buffers onto the ``OUTPUT`` queue. Without source bytestream data, there is no data to process and the codec will remain idle.”h]”(hŒFIn order to pause, the client can just cease queuing buffers onto the ”…”�”}”(hj²h²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj²ubhŒc queue. Without source bytestream data, there is no data to process and the codec will remain idle.”…”�”}”(hj²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M�hj¡h²hubeh}”(h]”Œpausing”ah ]”h"]”Œpausing”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Mubh×)�”}”(hhh]”(hÜ)�”}”(hŒDynamic resolution change”h]”hŒDynamic resolution change”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjÚh²hh³hÇh´M†ubhì)�”}”(hŒ‹If the client detects a resolution change in the stream, it will need to perform the initialization sequence again with the new resolution:”h]”hŒ‹If the client detects a resolution change in the stream, it will need to perform the initialization sequence again with the new resolution:”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MˆhjÚh²hubj)�”}”(hhh]”(j)�”}”(hXEIf the last submitted request resulted in a ``CAPTURE`` buffer being held by the use of the ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` flag, then the last frame is not available on the ``CAPTURE`` queue. In this case, a ``V4L2_DEC_CMD_FLUSH`` command shall be sent. This will make the driver dequeue the held ``CAPTURE`` buffer. ”h]”hì)�”}”(hXDIf the last submitted request resulted in a ``CAPTURE`` buffer being held by the use of the ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` flag, then the last frame is not available on the ``CAPTURE`` queue. In this case, a ``V4L2_DEC_CMD_FLUSH`` command shall be sent. This will make the driver dequeue the held ``CAPTURE`` buffer.”h]”(hŒ,If the last submitted request resulted in a ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒ% buffer being held by the use of the ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ&``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF``”h]”hŒ"V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒ3 flag, then the last frame is not available on the ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒ queue. In this case, a ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ``V4L2_DEC_CMD_FLUSH``”h]”hŒV4L2_DEC_CMD_FLUSH”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒC command shall be sent. This will make the driver dequeue the held ”…”�”}”(hjh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjubhŒ buffer.”…”�”}”(hjh²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Œ_Wait until all submitted requests have completed and dequeue the corresponding output buffers. ”h]”hì)�”}”(hŒ^Wait until all submitted requests have completed and dequeue the corresponding output buffers.”h]”hŒ^Wait until all submitted requests have completed and dequeue the corresponding output buffers.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M‘hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùh²hh³hÇh´Nubj)�”}”(hŒOCall :c:func:`VIDIOC_STREAMOFF` on both the ``OUTPUT`` and ``CAPTURE`` queues. ”h]”hì)�”}”(hŒNCall :c:func:`VIDIOC_STREAMOFF` on both the ``OUTPUT`` and ``CAPTURE`` queues.”h]”(hŒCall ”…”�”}”(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!jnŒc-func”eh"]”h$]”h&]”uh1j:hj’ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_STREAMOFF”uh1hh³hÇh´M”hjŠubhŒ on both the ”…”�”}”(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.”…”�”}”(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ŒwFree all ``CAPTURE`` buffers by calling :c:func:`VIDIOC_REQBUFS` on the ``CAPTURE`` queue with a buffer count of zero. ”h]”hì)�”}”(hŒvFree all ``CAPTURE`` buffers by calling :c:func:`VIDIOC_REQBUFS` on the ``CAPTURE`` queue with a buffer count of zero.”h]”(hŒ Free all ”…”�”}”(hjéh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjéubhŒ buffers by calling ”…”�”}”(hjéh²hh³Nh´Nubh)�”}”(hŒ:c:func:`VIDIOC_REQBUFS`”h]”j;)�”}”(hjh]”hŒVIDIOC_REQBUFS()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j!jnŒc-func”eh"]”h$]”h&]”uh1j:hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j.Œ refdomain”jnŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jjƒj4ŒVIDIOC_REQBUFS”uh1hh³hÇh´M—hjé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 with a buffer count of zero.”…”�”}”(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ŒùPerform the initialization sequence again (minus the allocation of ``OUTPUT`` buffers), with the new resolution set on the ``OUTPUT`` queue. Note that due to resolution constraints, a different format may need to be picked on the ``CAPTURE`` queue. ”h]”hì)�”}”(hŒøPerform the initialization sequence again (minus the allocation of ``OUTPUT`` buffers), with the new resolution set on the ``OUTPUT`` queue. Note that due to resolution constraints, a different format may need to be picked on the ``CAPTURE`` queue.”h]”(hŒCPerform the initialization sequence again (minus the allocation of ”…”�”}”(hjHh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjHubhŒ. buffers), with the new resolution set on the ”…”�”}”(hjHh²hh³Nh´Nubj;)�”}”(hŒ ``OUTPUT``”h]”hŒOUTPUT”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjHubhŒa queue. Note that due to resolution constraints, a different format may need to be picked on the ”…”�”}”(hjHh²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hjHubhŒ queue.”…”�”}”(hjHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MšhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j3j4j5hj6j7uh1jÿhjÚh²hh³hÇh´M‹ubeh}”(h]”Œdynamic-resolution-change”ah ]”h"]”Œdynamic resolution change”ah$]”h&]”uh1hÖhhØh²hh³hÇh´M†ubh×)�”}”(hhh]”(hÜ)�”}”(hŒDrain”h]”hŒDrain”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj h²hh³hÇh´M ubhì)�”}”(hXDIf the last submitted request resulted in a ``CAPTURE`` buffer being held by the use of the ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` flag, then the last frame is not available on the ``CAPTURE`` queue. In this case, a ``V4L2_DEC_CMD_FLUSH`` command shall be sent. This will make the driver dequeue the held ``CAPTURE`` buffer.”h]”(hŒ,If the last submitted request resulted in 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 being held by the use of the ”…”�”}”(hj±h²hh³Nh´Nubj;)�”}”(hŒ&``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF``”h]”hŒ"V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj±ubhŒ3 flag, then the last frame is not 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. In this case, a ”…”�”}”(hj±h²hh³Nh´Nubj;)�”}”(hŒ``V4L2_DEC_CMD_FLUSH``”h]”hŒV4L2_DEC_CMD_FLUSH”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj±ubhŒC command shall be sent. This will make the driver dequeue the held ”…”�”}”(hj±h²hh³Nh´Nubj;)�”}”(hŒ ``CAPTURE``”h]”hŒCAPTURE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j:hj±ubhŒ buffer.”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¢hj h²hubhì)�”}”(hŒŽAfter that, in order to drain the stream on a stateless decoder, the client just needs to wait until all the submitted requests are completed.”h]”hŒŽAfter that, in order to drain the stream on a stateless decoder, the client just needs to wait until all the submitted requests are completed.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¨hj h²hubeh}”(h]”Œdrain”ah ]”h"]”Œdrain”ah$]”h&]”uh1hÖhhØh²hh³hÇh´M ubeh}”(h]”(Œ2memory-to-memory-stateless-video-decoder-interface”hÕeh ]”h"]”(Œ2memory-to-memory stateless video decoder interface”Œstateless_decoder”eh$]”h&]”uh1hÖhhh²hh³hÇh´KŒexpect_referenced_by_name”}”j5hÊ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”}”(j5hÕj4j1j=j:j jjTjQjWjTjžj›j×jÔj�jšj,j)uŒ nametypes”}”(j5ˆj4‰j=‰j ‰jT‰jW‰jž‰j׉j�‰j,‰uh}”(hÕhØj1hØj:jîjj@jQjjTjWj›jZjÔj¡jšjÚj)j uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)�”}”(hhh]”hì)�”}”(hhh]”hŒ7Hyperlink target "stateless-decoder" 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.