Lines Matching +full:frame +full:- +full:number
1 .. SPDX-License-Identifier: GPL-2.0
6 Memory-to-Memory Stateful Video Decoder Interface
9 A stateful video decoder takes complete chunks of the bytestream (e.g. Annex-B
34 5. Single-planar API (see :ref:`planar-apis`) and applicable structures may be
35 used interchangeably with multi-planar API, unless specified otherwise,
44 .. _decoder-glossary:
79 Good at sub-partitioning the picture into variable sized structures.
83 coded format includes a feature of frame reordering; for decoders,
97 raw frame available for reference in further decoding steps.
103 Instantaneous Decoder Refresh; a type of a keyframe in an H.264/HEVC-encoded
107 an encoded frame that does not reference frames decoded earlier, i.e.
112 block transforms (e.g. H.264, VP8, VP9); codec-specific, but for most of
153 additional (non-visual) information contained inside encoded bytestream;
170 .. kernel-render:: DOT
186 qi -> Initialization [ label = "open()" ];
188 Initialization -> CaptureSetup [ label = "CAPTURE\nformat\nestablished" ];
190 CaptureSetup -> Stopped [ label = "CAPTURE\nbuffers\nready" ];
192 Decoding -> ResChange [ label = "Stream\nresolution\nchange" ];
193 Decoding -> Drain [ label = "V4L2_DEC_CMD_STOP" ];
194 Decoding -> EoS [ label = "EoS mark\nin the stream" ];
195 Decoding -> Seek [ label = "VIDIOC_STREAMOFF(OUTPUT)" ];
196 Decoding -> Stopped [ label = "VIDIOC_STREAMOFF(CAPTURE)" ];
197 Decoding -> Decoding;
199 ResChange -> CaptureSetup [ label = "CAPTURE\nformat\nestablished" ];
200 ResChange -> Seek [ label = "VIDIOC_STREAMOFF(OUTPUT)" ];
202 EoS -> Drain [ label = "Implicit\ndrain" ];
204 Drain -> Stopped [ label = "All CAPTURE\nbuffers dequeued\nor\nVIDIOC_STREAMOFF(CAPTURE)" ];
205 Drain -> Seek [ label = "VIDIOC_STREAMOFF(OUTPUT)" ];
207 Seek -> Decoding [ label = "VIDIOC_STREAMON(OUTPUT)" ];
208 Seek -> Initialization [ label = "VIDIOC_REQBUFS(OUTPUT, 0)" ];
210 Stopped -> Decoding [ label = "V4L2_DEC_CMD_START\nor\nVIDIOC_STREAMON(CAPTURE)" ];
211 Stopped -> Seek [ label = "VIDIOC_STREAMOFF(OUTPUT)" ];
224 In particular whether or not the decoder has a full-fledged bytestream
246 will include all possible frame buffer resolutions supported by the
285 * The ``CAPTURE`` format will be updated with an appropriate frame buffer
306 requested number of buffers to allocate; greater than zero.
317 the actual number of buffers allocated.
321 The actual number of allocated buffers may differ from the ``count``
331 requested number of buffers to allocate; greater than zero.
345 adjusted to the number of allocated buffers.
349 The actual number of allocated buffers may differ from the ``count``
368 first frame, it will not be returned to the client, until the
369 initialization sequence completes and the frame is decoded.
388 to non-zero values matching the coded size of the stream, skip this step
416 frame buffer resolution for the decoded frames.
422 number of planes for pixelformat.
425 as per standard semantics; matching frame buffer format.
449 the visible rectangle; it must fit within the frame buffer resolution
464 ``CAPTURE``; defaults to ``V4L2_SEL_TGT_CROP_DEFAULT``; read-only on
469 frame can be composed into; equal to ``V4L2_SEL_TGT_CROP`` if the
477 frame is written; defaults to ``V4L2_SEL_TGT_COMPOSE_DEFAULT``;
478 read-only on hardware without additional compose/scaling capabilities.
530 frame buffer resolution of the decoded stream; typically unchanged from
552 frame is written; defaults to ``V4L2_SEL_TGT_COMPOSE_DEFAULT``;
553 read-only on hardware without additional compose/scaling capabilities.
558 the visible rectangle; it must fit within the frame buffer resolution
573 * the number of buffers currently allocated is greater than or equal to the
574 minimum number of buffers acquired in previous steps. To fulfill this
624 requested number of buffers to allocate; greater than zero.
635 actual number of buffers allocated.
639 The actual number of allocated buffers may differ from the ``count``
645 To allocate more than the minimum number of buffers (for pipeline
647 control to get the minimum number of buffers required, and pass the
648 obtained value plus the number of additional buffers needed in the
659 requested number of buffers to allocate; greater than zero.
674 adjusted to the number of allocated buffers.
678 The actual number of allocated buffers may differ from the ``count``
709 format and may be affected by codec-specific extended controls, as stated in
713 buffer queues and memory-to-memory devices. In addition, the order of decoded
716 format, e.g. frame reordering.
727 on ``CAPTURE`` (if the encoded data contained more than one frame, or if
728 returning a decoded frame allowed the decoder to return a frame that
759 buffers are out-of-order compared to the ``OUTPUT`` buffers): ``CAPTURE``
774 identify frames. Thus, if the backing memory of a reference frame is
776 decode a new frame into it while it is still in use, resulting in corruption
807 further operations on corresponding decoder file handle will return the -EIO
851 Some hardware is known to mishandle seeks to a non-resume point. Such an
852 operation may result in an unspecified number of corrupted decoded frames
860 over a change of SPS/PPS. Even though the target frame could be a
887 The decoder may return a number of remaining ``CAPTURE`` buffers containing
903 To determine the CAPTURE buffer containing the first decoded frame after the
925 The sequence starts when the decoder detects a coded frame with one or more of
933 * the minimum number of buffers needed for decoding,
935 * bit-depth of the bitstream has been changed.
959 contain a decoded frame.
964 with ``V4L2_BUF_FLAG_LAST`` will result in a -EPIPE error from
1042 as it does not contain a decoded frame.
1047 marked with ``V4L2_BUF_FLAG_LAST`` will result in a -EPIPE error from
1058 event when the last frame has been decoded and all frames are ready to be
1067 * ``V4L2_DEC_CMD_START`` - the decoder will not be reset and will resume
1071 ``CAPTURE`` queue - the decoder will resume the operation normally,
1076 ``OUTPUT`` queue - any pending source buffers will be returned to the
1086 will fail with -EBUSY error code if attempted.
1123 return the -EBUSY error code for any such format change attempt.