Commit 9de30f57 authored by Daniel Almeida's avatar Daniel Almeida Committed by Mauro Carvalho Chehab
Browse files

media: Add AV1 uAPI



This patch adds the  AOMedia Video 1 (AV1) kernel uAPI.

This design is based on currently available AV1 API implementations and
aims to support the development of AV1 stateless video codecs
on Linux.

Signed-off-by: default avatarDaniel Almeida <daniel.almeida@collabora.com>
Co-developed-by: default avatarNicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: default avatarNicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 21047932
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -427,3 +427,12 @@ VP9
:title:     VP9 Bitstream & Decoding Process Specification

:author:    Adrian Grange (Google), Peter de Rivaz (Argon Design), Jonathan Hunt (Argon Design)

.. _av1:

AV1
===

:title:     AV1 Bitstream & Decoding Process Specification

:author:    Peter de Rivaz, Argon Design Ltd, Jack Haughton, Argon Design Ltd
+1207 −2

File changed.

Preview size limit exceeded, changes collapsed.

+16 −0
Original line number Diff line number Diff line
@@ -258,6 +258,22 @@ Compressed Formats
        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
+16 −0
Original line number Diff line number Diff line
@@ -279,6 +279,22 @@ still cause this situation.
      - ``p_hevc_decode_params``
      - A pointer to a struct :c:type:`v4l2_ctrl_hevc_decode_params`. Valid if this
        control is of type ``V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS``.
    * - struct :c:type:`v4l2_ctrl_av1_sequence` *
      - ``p_av1_sequence``
      - A pointer to a struct :c:type:`v4l2_ctrl_av1_sequence`. Valid if this control is
        of type ``V4L2_CTRL_TYPE_AV1_SEQUENCE``.
    * - struct :c:type:`v4l2_ctrl_av1_tile_group_entry` *
      - ``p_av1_tile_group_entry``
      - A pointer to a struct :c:type:`v4l2_ctrl_av1_tile_group_entry`. Valid if this control is
        of type ``V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY``.
    * - struct :c:type:`v4l2_ctrl_av1_frame` *
      - ``p_av1_frame``
      - A pointer to a struct :c:type:`v4l2_ctrl_av1_frame`. Valid if this control is
        of type ``V4L2_CTRL_TYPE_AV1_FRAME``.
    * - struct :c:type:`v4l2_ctrl_av1_film_grain` *
      - ``p_av1_film_grain``
      - A pointer to a struct :c:type:`v4l2_ctrl_av1_film_grain`. Valid if this control is
        of type ``V4L2_CTRL_TYPE_AV1_FILM_GRAIN``.
    * - void *
      - ``ptr``
      - A pointer to a compound type which can be an N-dimensional array
+24 −0
Original line number Diff line number Diff line
@@ -525,6 +525,30 @@ See also the examples in :ref:`control`.
      - n/a
      - A struct :c:type:`v4l2_ctrl_vp9_frame`, containing VP9
	frame decode parameters for stateless video decoders.
    * - ``V4L2_CTRL_TYPE_AV1_SEQUENCE``
      - n/a
      - n/a
      - n/a
      - A struct :c:type:`v4l2_ctrl_av1_sequence`, containing AV1 Sequence OBU
	decoding parameters for stateless video decoders.
    * - ``V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY``
      - n/a
      - n/a
      - n/a
      - A struct :c:type:`v4l2_ctrl_av1_tile_group_entry`, containing AV1 Tile Group
	OBU decoding parameters for stateless video decoders.
    * - ``V4L2_CTRL_TYPE_AV1_FRAME``
      - n/a
      - n/a
      - n/a
      - A struct :c:type:`v4l2_ctrl_av1_frame`, containing AV1 Frame/Frame
	Header OBU decoding parameters for stateless video decoders.
    * - ``V4L2_CTRL_TYPE_AV1_FILM_GRAIN``
      - n/a
      - n/a
      - n/a
      - A struct :c:type:`v4l2_ctrl_av1_film_grain`, containing AV1 Film Grain
        parameters for stateless video decoders.

.. raw:: latex

Loading