| .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later |
| |
| ****************** |
| 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. |
| |
| .. raw:: latex |
| |
| \normalsize |