| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
- .. c:namespace:: V4L
- ******************
- Compressed Formats
- ******************
- .. _compressed-formats:
- .. raw:: latex
- \small
- .. tabularcolumns:: |p{5.8cm}|p{1.2cm}|p{10.3cm}|
- .. cssclass:: longtable
- .. flat-table:: Compressed Image Formats
- :header-rows: 1
- :stub-columns: 0
- :widths: 3 1 4
- * - Identifier
- - Code
- - Details
- * .. _V4L2-PIX-FMT-JPEG:
- - ``V4L2_PIX_FMT_JPEG``
- - 'JPEG'
- - TBD. See also :ref:`VIDIOC_G_JPEGCOMP <VIDIOC_G_JPEGCOMP>`,
- :ref:`VIDIOC_S_JPEGCOMP <VIDIOC_G_JPEGCOMP>`.
- * .. _V4L2-PIX-FMT-MPEG:
- - ``V4L2_PIX_FMT_MPEG``
- - 'MPEG'
- - MPEG multiplexed stream. The actual format is determined by
- extended control ``V4L2_CID_MPEG_STREAM_TYPE``, see
- :ref:`mpeg-control-id`.
- * .. _V4L2-PIX-FMT-H264:
- - ``V4L2_PIX_FMT_H264``
- - 'H264'
- - H264 Access Unit.
- The decoder expects one Access Unit per buffer.
- The encoder generates one Access Unit per buffer.
- If :ref:`VIDIOC_ENUM_FMT` reports ``V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM``
- then the decoder has no requirements since it can parse all the
- information from the raw bytestream.
- * .. _V4L2-PIX-FMT-H264-NO-SC:
- - ``V4L2_PIX_FMT_H264_NO_SC``
- - 'AVC1'
- - H264 video elementary stream without start codes.
- * .. _V4L2-PIX-FMT-H264-MVC:
- - ``V4L2_PIX_FMT_H264_MVC``
- - 'M264'
- - H264 MVC video elementary stream.
- * .. _V4L2-PIX-FMT-H264-SLICE:
- - ``V4L2_PIX_FMT_H264_SLICE``
- - 'S264'
- - H264 parsed slice data, including slice headers, either with or
- without the start code, as extracted from the H264 bitstream.
- This format is adapted for stateless video decoders that implement an
- H264 pipeline with the :ref:`stateless_decoder`.
- This pixelformat has two modifiers that must be set at least once
- through the ``V4L2_CID_STATELESS_H264_DECODE_MODE``
- and ``V4L2_CID_STATELESS_H264_START_CODE`` controls.
- In addition, metadata associated with the frame to decode are
- required to be passed through the ``V4L2_CID_STATELESS_H264_SPS``,
- ``V4L2_CID_STATELESS_H264_PPS``,
- ``V4L2_CID_STATELESS_H264_SCALING_MATRIX``,
- ``V4L2_CID_STATELESS_H264_SLICE_PARAMS`` and
- ``V4L2_CID_STATELESS_H264_DECODE_PARAMS`` controls. See the
- :ref:`associated Codec Control IDs <v4l2-codec-stateless-h264>`.
- Exactly one output and one capture buffer must be provided for use
- with this pixel format. The output buffer must contain the
- appropriate number of macroblocks to decode a full
- corresponding frame to the matching capture buffer.
- The syntax for this format is documented in :ref:`h264`, section
- 7.3.2.8 "Slice layer without partitioning RBSP syntax" and the following
- sections.
- * .. _V4L2-PIX-FMT-H263:
- - ``V4L2_PIX_FMT_H263``
- - 'H263'
- - H263 video elementary stream.
- * .. _V4L2-PIX-FMT-SPK:
- - ``V4L2_PIX_FMT_SPK``
- - 'SPK0'
- - Sorenson Spark is an implementation of H.263 for use in Flash Video and Adobe Flash files
- * .. _V4L2-PIX-FMT-MPEG1:
- - ``V4L2_PIX_FMT_MPEG1``
- - 'MPG1'
- - MPEG1 Picture. Each buffer starts with a Picture header, followed
- by other headers as needed and ending with the Picture data.
- If :ref:`VIDIOC_ENUM_FMT` reports ``V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM``
- then the decoder has no requirements since it can parse all the
- information from the raw bytestream.
- * .. _V4L2-PIX-FMT-MPEG2:
- - ``V4L2_PIX_FMT_MPEG2``
- - 'MPG2'
- - MPEG2 Picture. Each buffer starts with a Picture header, followed
- by other headers as needed and ending with the Picture data.
- If :ref:`VIDIOC_ENUM_FMT` reports ``V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM``
- then the decoder has no requirements since it can parse all the
- information from the raw bytestream.
- * .. _V4L2-PIX-FMT-MPEG2-SLICE:
- - ``V4L2_PIX_FMT_MPEG2_SLICE``
- - 'MG2S'
- - MPEG-2 parsed slice data, as extracted from the MPEG-2 bitstream.
- This format is adapted for stateless video decoders that implement a
- MPEG-2 pipeline with the :ref:`stateless_decoder`.
- Metadata associated with the frame to decode is required to be passed
- through the ``V4L2_CID_STATELESS_MPEG2_SEQUENCE`` and
- ``V4L2_CID_STATELESS_MPEG2_PICTURE`` controls.
- Quantisation matrices can optionally be specified through the
- ``V4L2_CID_STATELESS_MPEG2_QUANTISATION`` control.
- See the :ref:`associated Codec Control IDs <v4l2-codec-stateless-mpeg2>`.
- Exactly one output and one capture buffer must be provided for use with
- this pixel format. The output buffer must contain the appropriate number
- of macroblocks to decode a full corresponding frame to the matching
- capture buffer.
- * .. _V4L2-PIX-FMT-MPEG4:
- - ``V4L2_PIX_FMT_MPEG4``
- - 'MPG4'
- - MPEG4 video elementary stream.
- * .. _V4L2-PIX-FMT-XVID:
- - ``V4L2_PIX_FMT_XVID``
- - 'XVID'
- - Xvid video elementary stream.
- * .. _V4L2-PIX-FMT-VC1-ANNEX-G:
- - ``V4L2_PIX_FMT_VC1_ANNEX_G``
- - 'VC1G'
- - VC1, SMPTE 421M Annex G compliant stream.
- * .. _V4L2-PIX-FMT-VC1-ANNEX-L:
- - ``V4L2_PIX_FMT_VC1_ANNEX_L``
- - 'VC1L'
- - VC1, SMPTE 421M Annex L compliant stream.
- * .. _V4L2-PIX-FMT-VP8:
- - ``V4L2_PIX_FMT_VP8``
- - 'VP80'
- - VP8 compressed video frame. The encoder generates one
- compressed frame per buffer, and the decoder requires one
- compressed frame per buffer.
- * .. _V4L2-PIX-FMT-VP8-FRAME:
- - ``V4L2_PIX_FMT_VP8_FRAME``
- - 'VP8F'
- - VP8 parsed frame, including the frame header, as extracted from the container.
- This format is adapted for stateless video decoders that implement an
- VP8 pipeline with the :ref:`stateless_decoder`.
- Metadata associated with the frame to decode is required to be passed
- through the ``V4L2_CID_STATELESS_VP8_FRAME`` control.
- See the :ref:`associated Codec Control IDs <v4l2-codec-stateless-vp8>`.
- Exactly one output and one capture buffer must be provided for use with
- this pixel format. The output buffer must contain the appropriate number
- of macroblocks to decode a full corresponding frame to the matching
- capture buffer.
- * .. _V4L2-PIX-FMT-VP9:
- - ``V4L2_PIX_FMT_VP9``
- - 'VP90'
- - VP9 compressed video frame. The encoder generates one
- compressed frame per buffer, and the decoder requires one
- compressed frame per buffer.
- * .. _V4L2-PIX-FMT-VP9-FRAME:
- - ``V4L2_PIX_FMT_VP9_FRAME``
- - 'VP9F'
- - VP9 parsed frame, including the frame header, as extracted from the container.
- This format is adapted for stateless video decoders that implement a
- VP9 pipeline with the :ref:`stateless_decoder`.
- Metadata associated with the frame to decode is required to be passed
- through the ``V4L2_CID_STATELESS_VP9_FRAME`` and
- the ``V4L2_CID_STATELESS_VP9_COMPRESSED_HDR`` controls.
- See the :ref:`associated Codec Control IDs <v4l2-codec-stateless-vp9>`.
- Exactly one output and one capture buffer must be provided for use with
- this pixel format. The output buffer must contain the appropriate number
- of macroblocks to decode a full corresponding frame to the matching
- capture buffer.
- * .. _V4L2-PIX-FMT-HEVC:
- - ``V4L2_PIX_FMT_HEVC``
- - 'HEVC'
- - HEVC/H.265 Access Unit.
- The decoder expects one Access Unit per buffer.
- The encoder generates one Access Unit per buffer.
- If :ref:`VIDIOC_ENUM_FMT` reports ``V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM``
- then the decoder has no requirements since it can parse all the
- information from the raw bytestream.
- * .. _V4L2-PIX-FMT-HEVC-SLICE:
- - ``V4L2_PIX_FMT_HEVC_SLICE``
- - 'S265'
- - HEVC parsed slice data, as extracted from the HEVC bitstream.
- This format is adapted for stateless video decoders that implement a
- HEVC pipeline (using the :ref:`mem2mem` and :ref:`media-request-api`).
- This pixelformat has two modifiers that must be set at least once
- through the ``V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE``
- and ``V4L2_CID_MPEG_VIDEO_HEVC_START_CODE`` controls.
- Metadata associated with the frame to decode is required to be passed
- through the following controls:
- ``V4L2_CID_MPEG_VIDEO_HEVC_SPS``,
- ``V4L2_CID_MPEG_VIDEO_HEVC_PPS``, and
- ``V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS``.
- See the :ref:`associated Codec Control IDs <v4l2-codec-stateless-hevc>`.
- Buffers associated with this pixel format must contain the appropriate
- number of macroblocks to decode a full corresponding frame.
- * .. _V4L2-PIX-FMT-FWHT:
- - ``V4L2_PIX_FMT_FWHT``
- - 'FWHT'
- - Video elementary stream using a codec based on the Fast Walsh Hadamard
- Transform. This codec is implemented by the vicodec ('Virtual Codec')
- driver. See the codec-fwht.h header for more details.
- :ref:`VIDIOC_ENUM_FMT` reports ``V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM``
- since the decoder can parse all the information from the raw bytestream.
- * .. _V4L2-PIX-FMT-FWHT-STATELESS:
- - ``V4L2_PIX_FMT_FWHT_STATELESS``
- - 'SFWH'
- - Same format as V4L2_PIX_FMT_FWHT but requires stateless codec implementation.
- Metadata associated with the frame to decode is required to be passed
- through the ``V4L2_CID_STATELESS_FWHT_PARAMS`` control.
- See the :ref:`associated Codec Control ID <codec-stateless-fwht>`.
- * .. _V4L2-PIX-FMT-RV30:
- - ``V4L2_PIX_FMT_RV30``
- - 'RV30'
- - RealVideo, or also spelled as Real Video, is a suite of
- proprietary video compression formats developed by
- RealNetworks - the specific format changes with the version.
- RealVideo codecs are identified by four-character codes.
- RV30 corresponds to RealVideo 8, suspected to be based
- largely on an early draft of H.264
- * .. _V4L2-PIX-FMT-RV40:
- - ``V4L2_PIX_FMT_RV40``
- - 'RV40'
- - RV40 represents RealVideo 9 and RealVideo 10.
- RealVideo 9, suspected to be based on H.264.
- RealVideo 10, aka RV9 EHQ, This refers to an improved encoder
- for the RV9 format that is fully backwards compatible with
- RV9 players - the format and decoder did not change, only
- the encoder did. As a result, it uses the same FourCC.
- * .. _V4L2-PIX-FMT-AV1-FRAME:
- - ``V4L2_PIX_FMT_AV1_FRAME``
- - 'AV1F'
- - AV1 parsed frame, including the frame header, as extracted from the container.
- This format is adapted for stateless video decoders that implement a AV1
- pipeline with the :ref:`stateless_decoder`. Metadata associated with the
- frame to decode is required to be passed through the
- ``V4L2_CID_STATELESS_AV1_SEQUENCE``, ``V4L2_CID_STATELESS_AV1_FRAME``,
- and ``V4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY`` controls.
- See the :ref:`associated Codec Control IDs <v4l2-codec-stateless-av1>`.
- Exactly one output and one capture buffer must be provided for use with
- this pixel format. The output buffer must contain the appropriate number
- of macroblocks to decode a full corresponding frame to the matching
- capture buffer.
- * .. _V4L2-PIX-FMT-AV1:
- - ``V4L2_PIX_FMT_AV1``
- - 'AV01'
- - AV1 compressed video frame. This format is adapted for implementing AV1
- pipeline. The decoder implements stateful video decoder and expects one
- temporal unit per buffer in OBU stream format.
- The encoder generates one Temporal Unit per buffer.
- .. raw:: latex
- \normalsize
|