162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci.. _codec-stateless-controls:
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci*********************************
662306a36Sopenharmony_ciStateless Codec Control Reference
762306a36Sopenharmony_ci*********************************
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciThe Stateless Codec control class is intended to support
1062306a36Sopenharmony_cistateless decoder and encoders (i.e. hardware accelerators).
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciThese drivers are typically supported by the :ref:`stateless_decoder`,
1362306a36Sopenharmony_ciand deal with parsed pixel formats such as V4L2_PIX_FMT_H264_SLICE.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciStateless Codec Control ID
1662306a36Sopenharmony_ci==========================
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci.. _codec-stateless-control-id:
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci``V4L2_CID_CODEC_STATELESS_CLASS (class)``
2162306a36Sopenharmony_ci    The Stateless Codec class descriptor.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci.. _v4l2-codec-stateless-h264:
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci``V4L2_CID_STATELESS_H264_SPS (struct)``
2662306a36Sopenharmony_ci    Specifies the sequence parameter set (as extracted from the
2762306a36Sopenharmony_ci    bitstream) for the associated H264 slice data. This includes the
2862306a36Sopenharmony_ci    necessary parameters for configuring a stateless hardware decoding
2962306a36Sopenharmony_ci    pipeline for H264. The bitstream parameters are defined according
3062306a36Sopenharmony_ci    to :ref:`h264`, section 7.4.2.1.1 "Sequence Parameter Set Data
3162306a36Sopenharmony_ci    Semantics". For further documentation, refer to the above
3262306a36Sopenharmony_ci    specification, unless there is an explicit comment stating
3362306a36Sopenharmony_ci    otherwise.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_h264_sps
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci.. raw:: latex
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci    \small
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci.. tabularcolumns:: |p{1.2cm}|p{8.6cm}|p{7.5cm}|
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_h264_sps
4462306a36Sopenharmony_ci    :header-rows:  0
4562306a36Sopenharmony_ci    :stub-columns: 0
4662306a36Sopenharmony_ci    :widths:       1 1 2
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci    * - __u8
4962306a36Sopenharmony_ci      - ``profile_idc``
5062306a36Sopenharmony_ci      -
5162306a36Sopenharmony_ci    * - __u8
5262306a36Sopenharmony_ci      - ``constraint_set_flags``
5362306a36Sopenharmony_ci      - See :ref:`Sequence Parameter Set Constraints Set Flags <h264_sps_constraints_set_flags>`
5462306a36Sopenharmony_ci    * - __u8
5562306a36Sopenharmony_ci      - ``level_idc``
5662306a36Sopenharmony_ci      -
5762306a36Sopenharmony_ci    * - __u8
5862306a36Sopenharmony_ci      - ``seq_parameter_set_id``
5962306a36Sopenharmony_ci      -
6062306a36Sopenharmony_ci    * - __u8
6162306a36Sopenharmony_ci      - ``chroma_format_idc``
6262306a36Sopenharmony_ci      -
6362306a36Sopenharmony_ci    * - __u8
6462306a36Sopenharmony_ci      - ``bit_depth_luma_minus8``
6562306a36Sopenharmony_ci      -
6662306a36Sopenharmony_ci    * - __u8
6762306a36Sopenharmony_ci      - ``bit_depth_chroma_minus8``
6862306a36Sopenharmony_ci      -
6962306a36Sopenharmony_ci    * - __u8
7062306a36Sopenharmony_ci      - ``log2_max_frame_num_minus4``
7162306a36Sopenharmony_ci      -
7262306a36Sopenharmony_ci    * - __u8
7362306a36Sopenharmony_ci      - ``pic_order_cnt_type``
7462306a36Sopenharmony_ci      -
7562306a36Sopenharmony_ci    * - __u8
7662306a36Sopenharmony_ci      - ``log2_max_pic_order_cnt_lsb_minus4``
7762306a36Sopenharmony_ci      -
7862306a36Sopenharmony_ci    * - __u8
7962306a36Sopenharmony_ci      - ``max_num_ref_frames``
8062306a36Sopenharmony_ci      -
8162306a36Sopenharmony_ci    * - __u8
8262306a36Sopenharmony_ci      - ``num_ref_frames_in_pic_order_cnt_cycle``
8362306a36Sopenharmony_ci      -
8462306a36Sopenharmony_ci    * - __s32
8562306a36Sopenharmony_ci      - ``offset_for_ref_frame[255]``
8662306a36Sopenharmony_ci      -
8762306a36Sopenharmony_ci    * - __s32
8862306a36Sopenharmony_ci      - ``offset_for_non_ref_pic``
8962306a36Sopenharmony_ci      -
9062306a36Sopenharmony_ci    * - __s32
9162306a36Sopenharmony_ci      - ``offset_for_top_to_bottom_field``
9262306a36Sopenharmony_ci      -
9362306a36Sopenharmony_ci    * - __u16
9462306a36Sopenharmony_ci      - ``pic_width_in_mbs_minus1``
9562306a36Sopenharmony_ci      -
9662306a36Sopenharmony_ci    * - __u16
9762306a36Sopenharmony_ci      - ``pic_height_in_map_units_minus1``
9862306a36Sopenharmony_ci      -
9962306a36Sopenharmony_ci    * - __u32
10062306a36Sopenharmony_ci      - ``flags``
10162306a36Sopenharmony_ci      - See :ref:`Sequence Parameter Set Flags <h264_sps_flags>`
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci.. raw:: latex
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci    \normalsize
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci.. _h264_sps_constraints_set_flags:
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci``Sequence Parameter Set Constraints Set Flags``
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci.. cssclass:: longtable
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci.. flat-table::
11462306a36Sopenharmony_ci    :header-rows:  0
11562306a36Sopenharmony_ci    :stub-columns: 0
11662306a36Sopenharmony_ci    :widths:       1 1 2
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_CONSTRAINT_SET0_FLAG``
11962306a36Sopenharmony_ci      - 0x00000001
12062306a36Sopenharmony_ci      -
12162306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_CONSTRAINT_SET1_FLAG``
12262306a36Sopenharmony_ci      - 0x00000002
12362306a36Sopenharmony_ci      -
12462306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_CONSTRAINT_SET2_FLAG``
12562306a36Sopenharmony_ci      - 0x00000004
12662306a36Sopenharmony_ci      -
12762306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_CONSTRAINT_SET3_FLAG``
12862306a36Sopenharmony_ci      - 0x00000008
12962306a36Sopenharmony_ci      -
13062306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_CONSTRAINT_SET4_FLAG``
13162306a36Sopenharmony_ci      - 0x00000010
13262306a36Sopenharmony_ci      -
13362306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_CONSTRAINT_SET5_FLAG``
13462306a36Sopenharmony_ci      - 0x00000020
13562306a36Sopenharmony_ci      -
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci.. _h264_sps_flags:
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci``Sequence Parameter Set Flags``
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ci.. cssclass:: longtable
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci.. flat-table::
14462306a36Sopenharmony_ci    :header-rows:  0
14562306a36Sopenharmony_ci    :stub-columns: 0
14662306a36Sopenharmony_ci    :widths:       1 1 2
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE``
14962306a36Sopenharmony_ci      - 0x00000001
15062306a36Sopenharmony_ci      -
15162306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS``
15262306a36Sopenharmony_ci      - 0x00000002
15362306a36Sopenharmony_ci      -
15462306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO``
15562306a36Sopenharmony_ci      - 0x00000004
15662306a36Sopenharmony_ci      -
15762306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED``
15862306a36Sopenharmony_ci      - 0x00000008
15962306a36Sopenharmony_ci      -
16062306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY``
16162306a36Sopenharmony_ci      - 0x00000010
16262306a36Sopenharmony_ci      -
16362306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD``
16462306a36Sopenharmony_ci      - 0x00000020
16562306a36Sopenharmony_ci      -
16662306a36Sopenharmony_ci    * - ``V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE``
16762306a36Sopenharmony_ci      - 0x00000040
16862306a36Sopenharmony_ci      -
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci``V4L2_CID_STATELESS_H264_PPS (struct)``
17162306a36Sopenharmony_ci    Specifies the picture parameter set (as extracted from the
17262306a36Sopenharmony_ci    bitstream) for the associated H264 slice data. This includes the
17362306a36Sopenharmony_ci    necessary parameters for configuring a stateless hardware decoding
17462306a36Sopenharmony_ci    pipeline for H264.  The bitstream parameters are defined according
17562306a36Sopenharmony_ci    to :ref:`h264`, section 7.4.2.2 "Picture Parameter Set RBSP
17662306a36Sopenharmony_ci    Semantics". For further documentation, refer to the above
17762306a36Sopenharmony_ci    specification, unless there is an explicit comment stating
17862306a36Sopenharmony_ci    otherwise.
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_h264_pps
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci.. raw:: latex
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci    \small
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_h264_pps
18762306a36Sopenharmony_ci    :header-rows:  0
18862306a36Sopenharmony_ci    :stub-columns: 0
18962306a36Sopenharmony_ci    :widths:       1 1 2
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci    * - __u8
19262306a36Sopenharmony_ci      - ``pic_parameter_set_id``
19362306a36Sopenharmony_ci      -
19462306a36Sopenharmony_ci    * - __u8
19562306a36Sopenharmony_ci      - ``seq_parameter_set_id``
19662306a36Sopenharmony_ci      -
19762306a36Sopenharmony_ci    * - __u8
19862306a36Sopenharmony_ci      - ``num_slice_groups_minus1``
19962306a36Sopenharmony_ci      -
20062306a36Sopenharmony_ci    * - __u8
20162306a36Sopenharmony_ci      - ``num_ref_idx_l0_default_active_minus1``
20262306a36Sopenharmony_ci      -
20362306a36Sopenharmony_ci    * - __u8
20462306a36Sopenharmony_ci      - ``num_ref_idx_l1_default_active_minus1``
20562306a36Sopenharmony_ci      -
20662306a36Sopenharmony_ci    * - __u8
20762306a36Sopenharmony_ci      - ``weighted_bipred_idc``
20862306a36Sopenharmony_ci      -
20962306a36Sopenharmony_ci    * - __s8
21062306a36Sopenharmony_ci      - ``pic_init_qp_minus26``
21162306a36Sopenharmony_ci      -
21262306a36Sopenharmony_ci    * - __s8
21362306a36Sopenharmony_ci      - ``pic_init_qs_minus26``
21462306a36Sopenharmony_ci      -
21562306a36Sopenharmony_ci    * - __s8
21662306a36Sopenharmony_ci      - ``chroma_qp_index_offset``
21762306a36Sopenharmony_ci      -
21862306a36Sopenharmony_ci    * - __s8
21962306a36Sopenharmony_ci      - ``second_chroma_qp_index_offset``
22062306a36Sopenharmony_ci      -
22162306a36Sopenharmony_ci    * - __u16
22262306a36Sopenharmony_ci      - ``flags``
22362306a36Sopenharmony_ci      - See :ref:`Picture Parameter Set Flags <h264_pps_flags>`
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ci.. raw:: latex
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci    \normalsize
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci.. _h264_pps_flags:
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ci``Picture Parameter Set Flags``
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ci.. raw:: latex
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci    \begingroup
23662306a36Sopenharmony_ci    \scriptsize
23762306a36Sopenharmony_ci    \setlength{\tabcolsep}{2pt}
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci.. tabularcolumns:: |p{9.8cm}|p{1.0cm}|p{6.5cm}|
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci.. flat-table::
24262306a36Sopenharmony_ci    :header-rows:  0
24362306a36Sopenharmony_ci    :stub-columns: 0
24462306a36Sopenharmony_ci    :widths:       10 1 4
24562306a36Sopenharmony_ci
24662306a36Sopenharmony_ci    * - ``V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE``
24762306a36Sopenharmony_ci      - 0x0001
24862306a36Sopenharmony_ci      -
24962306a36Sopenharmony_ci    * - ``V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT``
25062306a36Sopenharmony_ci      - 0x0002
25162306a36Sopenharmony_ci      -
25262306a36Sopenharmony_ci    * - ``V4L2_H264_PPS_FLAG_WEIGHTED_PRED``
25362306a36Sopenharmony_ci      - 0x0004
25462306a36Sopenharmony_ci      -
25562306a36Sopenharmony_ci    * - ``V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT``
25662306a36Sopenharmony_ci      - 0x0008
25762306a36Sopenharmony_ci      -
25862306a36Sopenharmony_ci    * - ``V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED``
25962306a36Sopenharmony_ci      - 0x0010
26062306a36Sopenharmony_ci      -
26162306a36Sopenharmony_ci    * - ``V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT``
26262306a36Sopenharmony_ci      - 0x0020
26362306a36Sopenharmony_ci      -
26462306a36Sopenharmony_ci    * - ``V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE``
26562306a36Sopenharmony_ci      - 0x0040
26662306a36Sopenharmony_ci      -
26762306a36Sopenharmony_ci    * - ``V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT``
26862306a36Sopenharmony_ci      - 0x0080
26962306a36Sopenharmony_ci      - ``V4L2_CID_STATELESS_H264_SCALING_MATRIX``
27062306a36Sopenharmony_ci        must be used for this picture.
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci.. raw:: latex
27362306a36Sopenharmony_ci
27462306a36Sopenharmony_ci    \endgroup
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci``V4L2_CID_STATELESS_H264_SCALING_MATRIX (struct)``
27762306a36Sopenharmony_ci    Specifies the scaling matrix (as extracted from the bitstream) for
27862306a36Sopenharmony_ci    the associated H264 slice data. The bitstream parameters are
27962306a36Sopenharmony_ci    defined according to :ref:`h264`, section 7.4.2.1.1.1 "Scaling
28062306a36Sopenharmony_ci    List Semantics". For further documentation, refer to the above
28162306a36Sopenharmony_ci    specification, unless there is an explicit comment stating
28262306a36Sopenharmony_ci    otherwise.
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_h264_scaling_matrix
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_ci.. raw:: latex
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ci    \small
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_ci.. tabularcolumns:: |p{0.6cm}|p{4.8cm}|p{11.9cm}|
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_h264_scaling_matrix
29362306a36Sopenharmony_ci    :header-rows:  0
29462306a36Sopenharmony_ci    :stub-columns: 0
29562306a36Sopenharmony_ci    :widths:       1 1 2
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci    * - __u8
29862306a36Sopenharmony_ci      - ``scaling_list_4x4[6][16]``
29962306a36Sopenharmony_ci      - Scaling matrix after applying the inverse scanning process.
30062306a36Sopenharmony_ci        Expected list order is Intra Y, Intra Cb, Intra Cr, Inter Y,
30162306a36Sopenharmony_ci        Inter Cb, Inter Cr. The values on each scaling list are
30262306a36Sopenharmony_ci        expected in raster scan order.
30362306a36Sopenharmony_ci    * - __u8
30462306a36Sopenharmony_ci      - ``scaling_list_8x8[6][64]``
30562306a36Sopenharmony_ci      - Scaling matrix after applying the inverse scanning process.
30662306a36Sopenharmony_ci        Expected list order is Intra Y, Inter Y, Intra Cb, Inter Cb,
30762306a36Sopenharmony_ci        Intra Cr, Inter Cr. The values on each scaling list are
30862306a36Sopenharmony_ci        expected in raster scan order.
30962306a36Sopenharmony_ci
31062306a36Sopenharmony_ci``V4L2_CID_STATELESS_H264_SLICE_PARAMS (struct)``
31162306a36Sopenharmony_ci    Specifies the slice parameters (as extracted from the bitstream)
31262306a36Sopenharmony_ci    for the associated H264 slice data. This includes the necessary
31362306a36Sopenharmony_ci    parameters for configuring a stateless hardware decoding pipeline
31462306a36Sopenharmony_ci    for H264.  The bitstream parameters are defined according to
31562306a36Sopenharmony_ci    :ref:`h264`, section 7.4.3 "Slice Header Semantics". For further
31662306a36Sopenharmony_ci    documentation, refer to the above specification, unless there is
31762306a36Sopenharmony_ci    an explicit comment stating otherwise.
31862306a36Sopenharmony_ci
31962306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_h264_slice_params
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci.. raw:: latex
32262306a36Sopenharmony_ci
32362306a36Sopenharmony_ci    \small
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_ci.. tabularcolumns:: |p{4.0cm}|p{5.9cm}|p{7.4cm}|
32662306a36Sopenharmony_ci
32762306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_h264_slice_params
32862306a36Sopenharmony_ci    :header-rows:  0
32962306a36Sopenharmony_ci    :stub-columns: 0
33062306a36Sopenharmony_ci    :widths:       1 1 2
33162306a36Sopenharmony_ci
33262306a36Sopenharmony_ci    * - __u32
33362306a36Sopenharmony_ci      - ``header_bit_size``
33462306a36Sopenharmony_ci      - Offset in bits to slice_data() from the beginning of this slice.
33562306a36Sopenharmony_ci    * - __u32
33662306a36Sopenharmony_ci      - ``first_mb_in_slice``
33762306a36Sopenharmony_ci      -
33862306a36Sopenharmony_ci    * - __u8
33962306a36Sopenharmony_ci      - ``slice_type``
34062306a36Sopenharmony_ci      -
34162306a36Sopenharmony_ci    * - __u8
34262306a36Sopenharmony_ci      - ``colour_plane_id``
34362306a36Sopenharmony_ci      -
34462306a36Sopenharmony_ci    * - __u8
34562306a36Sopenharmony_ci      - ``redundant_pic_cnt``
34662306a36Sopenharmony_ci      -
34762306a36Sopenharmony_ci    * - __u8
34862306a36Sopenharmony_ci      - ``cabac_init_idc``
34962306a36Sopenharmony_ci      -
35062306a36Sopenharmony_ci    * - __s8
35162306a36Sopenharmony_ci      - ``slice_qp_delta``
35262306a36Sopenharmony_ci      -
35362306a36Sopenharmony_ci    * - __s8
35462306a36Sopenharmony_ci      - ``slice_qs_delta``
35562306a36Sopenharmony_ci      -
35662306a36Sopenharmony_ci    * - __u8
35762306a36Sopenharmony_ci      - ``disable_deblocking_filter_idc``
35862306a36Sopenharmony_ci      -
35962306a36Sopenharmony_ci    * - __s8
36062306a36Sopenharmony_ci      - ``slice_alpha_c0_offset_div2``
36162306a36Sopenharmony_ci      -
36262306a36Sopenharmony_ci    * - __s8
36362306a36Sopenharmony_ci      - ``slice_beta_offset_div2``
36462306a36Sopenharmony_ci      -
36562306a36Sopenharmony_ci    * - __u8
36662306a36Sopenharmony_ci      - ``num_ref_idx_l0_active_minus1``
36762306a36Sopenharmony_ci      - If num_ref_idx_active_override_flag is not set, this field must be
36862306a36Sopenharmony_ci        set to the value of num_ref_idx_l0_default_active_minus1
36962306a36Sopenharmony_ci    * - __u8
37062306a36Sopenharmony_ci      - ``num_ref_idx_l1_active_minus1``
37162306a36Sopenharmony_ci      - If num_ref_idx_active_override_flag is not set, this field must be
37262306a36Sopenharmony_ci        set to the value of num_ref_idx_l1_default_active_minus1
37362306a36Sopenharmony_ci    * - __u8
37462306a36Sopenharmony_ci      - ``reserved``
37562306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
37662306a36Sopenharmony_ci    * - struct :c:type:`v4l2_h264_reference`
37762306a36Sopenharmony_ci      - ``ref_pic_list0[32]``
37862306a36Sopenharmony_ci      - Reference picture list after applying the per-slice modifications
37962306a36Sopenharmony_ci    * - struct :c:type:`v4l2_h264_reference`
38062306a36Sopenharmony_ci      - ``ref_pic_list1[32]``
38162306a36Sopenharmony_ci      - Reference picture list after applying the per-slice modifications
38262306a36Sopenharmony_ci    * - __u32
38362306a36Sopenharmony_ci      - ``flags``
38462306a36Sopenharmony_ci      - See :ref:`Slice Parameter Flags <h264_slice_flags>`
38562306a36Sopenharmony_ci
38662306a36Sopenharmony_ci.. raw:: latex
38762306a36Sopenharmony_ci
38862306a36Sopenharmony_ci    \normalsize
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ci.. _h264_slice_flags:
39162306a36Sopenharmony_ci
39262306a36Sopenharmony_ci``Slice Parameter Set Flags``
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_ci.. cssclass:: longtable
39562306a36Sopenharmony_ci
39662306a36Sopenharmony_ci.. flat-table::
39762306a36Sopenharmony_ci    :header-rows:  0
39862306a36Sopenharmony_ci    :stub-columns: 0
39962306a36Sopenharmony_ci    :widths:       1 1 2
40062306a36Sopenharmony_ci
40162306a36Sopenharmony_ci    * - ``V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED``
40262306a36Sopenharmony_ci      - 0x00000001
40362306a36Sopenharmony_ci      -
40462306a36Sopenharmony_ci    * - ``V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH``
40562306a36Sopenharmony_ci      - 0x00000002
40662306a36Sopenharmony_ci      -
40762306a36Sopenharmony_ci
40862306a36Sopenharmony_ci``V4L2_CID_STATELESS_H264_PRED_WEIGHTS (struct)``
40962306a36Sopenharmony_ci    Prediction weight table defined according to :ref:`h264`,
41062306a36Sopenharmony_ci    section 7.4.3.2 "Prediction Weight Table Semantics".
41162306a36Sopenharmony_ci    The prediction weight table must be passed by applications
41262306a36Sopenharmony_ci    under the conditions explained in section 7.3.3 "Slice header
41362306a36Sopenharmony_ci    syntax".
41462306a36Sopenharmony_ci
41562306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_h264_pred_weights
41662306a36Sopenharmony_ci
41762306a36Sopenharmony_ci.. raw:: latex
41862306a36Sopenharmony_ci
41962306a36Sopenharmony_ci    \small
42062306a36Sopenharmony_ci
42162306a36Sopenharmony_ci.. tabularcolumns:: |p{4.9cm}|p{4.9cm}|p{7.5cm}|
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_h264_pred_weights
42462306a36Sopenharmony_ci    :header-rows:  0
42562306a36Sopenharmony_ci    :stub-columns: 0
42662306a36Sopenharmony_ci    :widths:       1 1 2
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ci    * - __u16
42962306a36Sopenharmony_ci      - ``luma_log2_weight_denom``
43062306a36Sopenharmony_ci      -
43162306a36Sopenharmony_ci    * - __u16
43262306a36Sopenharmony_ci      - ``chroma_log2_weight_denom``
43362306a36Sopenharmony_ci      -
43462306a36Sopenharmony_ci    * - struct :c:type:`v4l2_h264_weight_factors`
43562306a36Sopenharmony_ci      - ``weight_factors[2]``
43662306a36Sopenharmony_ci      - The weight factors at index 0 are the weight factors for the reference
43762306a36Sopenharmony_ci        list 0, the one at index 1 for the reference list 1.
43862306a36Sopenharmony_ci
43962306a36Sopenharmony_ci.. raw:: latex
44062306a36Sopenharmony_ci
44162306a36Sopenharmony_ci    \normalsize
44262306a36Sopenharmony_ci
44362306a36Sopenharmony_ci.. c:type:: v4l2_h264_weight_factors
44462306a36Sopenharmony_ci
44562306a36Sopenharmony_ci.. raw:: latex
44662306a36Sopenharmony_ci
44762306a36Sopenharmony_ci    \small
44862306a36Sopenharmony_ci
44962306a36Sopenharmony_ci.. tabularcolumns:: |p{1.0cm}|p{4.5cm}|p{11.8cm}|
45062306a36Sopenharmony_ci
45162306a36Sopenharmony_ci.. flat-table:: struct v4l2_h264_weight_factors
45262306a36Sopenharmony_ci    :header-rows:  0
45362306a36Sopenharmony_ci    :stub-columns: 0
45462306a36Sopenharmony_ci    :widths:       1 1 2
45562306a36Sopenharmony_ci
45662306a36Sopenharmony_ci    * - __s16
45762306a36Sopenharmony_ci      - ``luma_weight[32]``
45862306a36Sopenharmony_ci      -
45962306a36Sopenharmony_ci    * - __s16
46062306a36Sopenharmony_ci      - ``luma_offset[32]``
46162306a36Sopenharmony_ci      -
46262306a36Sopenharmony_ci    * - __s16
46362306a36Sopenharmony_ci      - ``chroma_weight[32][2]``
46462306a36Sopenharmony_ci      -
46562306a36Sopenharmony_ci    * - __s16
46662306a36Sopenharmony_ci      - ``chroma_offset[32][2]``
46762306a36Sopenharmony_ci      -
46862306a36Sopenharmony_ci
46962306a36Sopenharmony_ci.. raw:: latex
47062306a36Sopenharmony_ci
47162306a36Sopenharmony_ci    \normalsize
47262306a36Sopenharmony_ci
47362306a36Sopenharmony_ci``Picture Reference``
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_ci.. c:type:: v4l2_h264_reference
47662306a36Sopenharmony_ci
47762306a36Sopenharmony_ci.. cssclass:: longtable
47862306a36Sopenharmony_ci
47962306a36Sopenharmony_ci.. flat-table:: struct v4l2_h264_reference
48062306a36Sopenharmony_ci    :header-rows:  0
48162306a36Sopenharmony_ci    :stub-columns: 0
48262306a36Sopenharmony_ci    :widths:       1 1 2
48362306a36Sopenharmony_ci
48462306a36Sopenharmony_ci    * - __u8
48562306a36Sopenharmony_ci      - ``fields``
48662306a36Sopenharmony_ci      - Specifies how the picture is referenced. See :ref:`Reference Fields <h264_ref_fields>`
48762306a36Sopenharmony_ci    * - __u8
48862306a36Sopenharmony_ci      - ``index``
48962306a36Sopenharmony_ci      - Index into the :c:type:`v4l2_ctrl_h264_decode_params`.dpb array.
49062306a36Sopenharmony_ci
49162306a36Sopenharmony_ci.. _h264_ref_fields:
49262306a36Sopenharmony_ci
49362306a36Sopenharmony_ci``Reference Fields``
49462306a36Sopenharmony_ci
49562306a36Sopenharmony_ci.. raw:: latex
49662306a36Sopenharmony_ci
49762306a36Sopenharmony_ci    \small
49862306a36Sopenharmony_ci
49962306a36Sopenharmony_ci.. tabularcolumns:: |p{5.4cm}|p{0.8cm}|p{11.1cm}|
50062306a36Sopenharmony_ci
50162306a36Sopenharmony_ci.. flat-table::
50262306a36Sopenharmony_ci    :header-rows:  0
50362306a36Sopenharmony_ci    :stub-columns: 0
50462306a36Sopenharmony_ci    :widths:       1 1 2
50562306a36Sopenharmony_ci
50662306a36Sopenharmony_ci    * - ``V4L2_H264_TOP_FIELD_REF``
50762306a36Sopenharmony_ci      - 0x1
50862306a36Sopenharmony_ci      - The top field in field pair is used for short-term reference.
50962306a36Sopenharmony_ci    * - ``V4L2_H264_BOTTOM_FIELD_REF``
51062306a36Sopenharmony_ci      - 0x2
51162306a36Sopenharmony_ci      - The bottom field in field pair is used for short-term reference.
51262306a36Sopenharmony_ci    * - ``V4L2_H264_FRAME_REF``
51362306a36Sopenharmony_ci      - 0x3
51462306a36Sopenharmony_ci      - The frame (or the top/bottom fields, if it's a field pair)
51562306a36Sopenharmony_ci        is used for short-term reference.
51662306a36Sopenharmony_ci
51762306a36Sopenharmony_ci.. raw:: latex
51862306a36Sopenharmony_ci
51962306a36Sopenharmony_ci    \normalsize
52062306a36Sopenharmony_ci
52162306a36Sopenharmony_ci``V4L2_CID_STATELESS_H264_DECODE_PARAMS (struct)``
52262306a36Sopenharmony_ci    Specifies the decode parameters (as extracted from the bitstream)
52362306a36Sopenharmony_ci    for the associated H264 slice data. This includes the necessary
52462306a36Sopenharmony_ci    parameters for configuring a stateless hardware decoding pipeline
52562306a36Sopenharmony_ci    for H264. The bitstream parameters are defined according to
52662306a36Sopenharmony_ci    :ref:`h264`. For further documentation, refer to the above
52762306a36Sopenharmony_ci    specification, unless there is an explicit comment stating
52862306a36Sopenharmony_ci    otherwise.
52962306a36Sopenharmony_ci
53062306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_h264_decode_params
53162306a36Sopenharmony_ci
53262306a36Sopenharmony_ci.. raw:: latex
53362306a36Sopenharmony_ci
53462306a36Sopenharmony_ci    \small
53562306a36Sopenharmony_ci
53662306a36Sopenharmony_ci.. tabularcolumns:: |p{4.0cm}|p{5.9cm}|p{7.4cm}|
53762306a36Sopenharmony_ci
53862306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_h264_decode_params
53962306a36Sopenharmony_ci    :header-rows:  0
54062306a36Sopenharmony_ci    :stub-columns: 0
54162306a36Sopenharmony_ci    :widths:       1 1 2
54262306a36Sopenharmony_ci
54362306a36Sopenharmony_ci    * - struct :c:type:`v4l2_h264_dpb_entry`
54462306a36Sopenharmony_ci      - ``dpb[16]``
54562306a36Sopenharmony_ci      -
54662306a36Sopenharmony_ci    * - __u16
54762306a36Sopenharmony_ci      - ``nal_ref_idc``
54862306a36Sopenharmony_ci      - NAL reference ID value coming from the NAL Unit header
54962306a36Sopenharmony_ci    * - __u16
55062306a36Sopenharmony_ci      - ``frame_num``
55162306a36Sopenharmony_ci      -
55262306a36Sopenharmony_ci    * - __s32
55362306a36Sopenharmony_ci      - ``top_field_order_cnt``
55462306a36Sopenharmony_ci      - Picture Order Count for the coded top field
55562306a36Sopenharmony_ci    * - __s32
55662306a36Sopenharmony_ci      - ``bottom_field_order_cnt``
55762306a36Sopenharmony_ci      - Picture Order Count for the coded bottom field
55862306a36Sopenharmony_ci    * - __u16
55962306a36Sopenharmony_ci      - ``idr_pic_id``
56062306a36Sopenharmony_ci      -
56162306a36Sopenharmony_ci    * - __u16
56262306a36Sopenharmony_ci      - ``pic_order_cnt_lsb``
56362306a36Sopenharmony_ci      -
56462306a36Sopenharmony_ci    * - __s32
56562306a36Sopenharmony_ci      - ``delta_pic_order_cnt_bottom``
56662306a36Sopenharmony_ci      -
56762306a36Sopenharmony_ci    * - __s32
56862306a36Sopenharmony_ci      - ``delta_pic_order_cnt0``
56962306a36Sopenharmony_ci      -
57062306a36Sopenharmony_ci    * - __s32
57162306a36Sopenharmony_ci      - ``delta_pic_order_cnt1``
57262306a36Sopenharmony_ci      -
57362306a36Sopenharmony_ci    * - __u32
57462306a36Sopenharmony_ci      - ``dec_ref_pic_marking_bit_size``
57562306a36Sopenharmony_ci      - Size in bits of the dec_ref_pic_marking() syntax element.
57662306a36Sopenharmony_ci    * - __u32
57762306a36Sopenharmony_ci      - ``pic_order_cnt_bit_size``
57862306a36Sopenharmony_ci      - Combined size in bits of the picture order count related syntax
57962306a36Sopenharmony_ci        elements: pic_order_cnt_lsb, delta_pic_order_cnt_bottom,
58062306a36Sopenharmony_ci        delta_pic_order_cnt0, and delta_pic_order_cnt1.
58162306a36Sopenharmony_ci    * - __u32
58262306a36Sopenharmony_ci      - ``slice_group_change_cycle``
58362306a36Sopenharmony_ci      -
58462306a36Sopenharmony_ci    * - __u32
58562306a36Sopenharmony_ci      - ``reserved``
58662306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
58762306a36Sopenharmony_ci    * - __u32
58862306a36Sopenharmony_ci      - ``flags``
58962306a36Sopenharmony_ci      - See :ref:`Decode Parameters Flags <h264_decode_params_flags>`
59062306a36Sopenharmony_ci
59162306a36Sopenharmony_ci.. raw:: latex
59262306a36Sopenharmony_ci
59362306a36Sopenharmony_ci    \normalsize
59462306a36Sopenharmony_ci
59562306a36Sopenharmony_ci.. _h264_decode_params_flags:
59662306a36Sopenharmony_ci
59762306a36Sopenharmony_ci``Decode Parameters Flags``
59862306a36Sopenharmony_ci
59962306a36Sopenharmony_ci.. raw:: latex
60062306a36Sopenharmony_ci
60162306a36Sopenharmony_ci    \small
60262306a36Sopenharmony_ci
60362306a36Sopenharmony_ci.. tabularcolumns:: |p{8.3cm}|p{2.1cm}|p{6.9cm}|
60462306a36Sopenharmony_ci
60562306a36Sopenharmony_ci.. flat-table::
60662306a36Sopenharmony_ci    :header-rows:  0
60762306a36Sopenharmony_ci    :stub-columns: 0
60862306a36Sopenharmony_ci    :widths:       1 1 2
60962306a36Sopenharmony_ci
61062306a36Sopenharmony_ci    * - ``V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC``
61162306a36Sopenharmony_ci      - 0x00000001
61262306a36Sopenharmony_ci      - That picture is an IDR picture
61362306a36Sopenharmony_ci    * - ``V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC``
61462306a36Sopenharmony_ci      - 0x00000002
61562306a36Sopenharmony_ci      -
61662306a36Sopenharmony_ci    * - ``V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD``
61762306a36Sopenharmony_ci      - 0x00000004
61862306a36Sopenharmony_ci      -
61962306a36Sopenharmony_ci    * - ``V4L2_H264_DECODE_PARAM_FLAG_PFRAME``
62062306a36Sopenharmony_ci      - 0x00000008
62162306a36Sopenharmony_ci      -
62262306a36Sopenharmony_ci    * - ``V4L2_H264_DECODE_PARAM_FLAG_BFRAME``
62362306a36Sopenharmony_ci      - 0x00000010
62462306a36Sopenharmony_ci      -
62562306a36Sopenharmony_ci
62662306a36Sopenharmony_ci.. raw:: latex
62762306a36Sopenharmony_ci
62862306a36Sopenharmony_ci    \normalsize
62962306a36Sopenharmony_ci
63062306a36Sopenharmony_ci.. c:type:: v4l2_h264_dpb_entry
63162306a36Sopenharmony_ci
63262306a36Sopenharmony_ci.. raw:: latex
63362306a36Sopenharmony_ci
63462306a36Sopenharmony_ci    \small
63562306a36Sopenharmony_ci
63662306a36Sopenharmony_ci.. tabularcolumns:: |p{1.0cm}|p{4.9cm}|p{11.4cm}|
63762306a36Sopenharmony_ci
63862306a36Sopenharmony_ci.. flat-table:: struct v4l2_h264_dpb_entry
63962306a36Sopenharmony_ci    :header-rows:  0
64062306a36Sopenharmony_ci    :stub-columns: 0
64162306a36Sopenharmony_ci    :widths:       1 1 2
64262306a36Sopenharmony_ci
64362306a36Sopenharmony_ci    * - __u64
64462306a36Sopenharmony_ci      - ``reference_ts``
64562306a36Sopenharmony_ci      - Timestamp of the V4L2 capture buffer to use as reference, used
64662306a36Sopenharmony_ci        with B-coded and P-coded frames. The timestamp refers to the
64762306a36Sopenharmony_ci        ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
64862306a36Sopenharmony_ci        :c:func:`v4l2_timeval_to_ns()` function to convert the struct
64962306a36Sopenharmony_ci        :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
65062306a36Sopenharmony_ci    * - __u32
65162306a36Sopenharmony_ci      - ``pic_num``
65262306a36Sopenharmony_ci      - For short term references, this must match the derived value PicNum
65362306a36Sopenharmony_ci	(8-28) and for long term references it must match the derived value
65462306a36Sopenharmony_ci	LongTermPicNum (8-29). When decoding frames (as opposed to fields)
65562306a36Sopenharmony_ci	pic_num is the same as FrameNumWrap.
65662306a36Sopenharmony_ci    * - __u16
65762306a36Sopenharmony_ci      - ``frame_num``
65862306a36Sopenharmony_ci      - For short term references, this must match the frame_num value from
65962306a36Sopenharmony_ci	the slice header syntax (the driver will wrap the value if needed). For
66062306a36Sopenharmony_ci	long term references, this must be set to the value of
66162306a36Sopenharmony_ci	long_term_frame_idx described in the dec_ref_pic_marking() syntax.
66262306a36Sopenharmony_ci    * - __u8
66362306a36Sopenharmony_ci      - ``fields``
66462306a36Sopenharmony_ci      - Specifies how the DPB entry is referenced. See :ref:`Reference Fields <h264_ref_fields>`
66562306a36Sopenharmony_ci    * - __u8
66662306a36Sopenharmony_ci      - ``reserved[5]``
66762306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
66862306a36Sopenharmony_ci    * - __s32
66962306a36Sopenharmony_ci      - ``top_field_order_cnt``
67062306a36Sopenharmony_ci      -
67162306a36Sopenharmony_ci    * - __s32
67262306a36Sopenharmony_ci      - ``bottom_field_order_cnt``
67362306a36Sopenharmony_ci      -
67462306a36Sopenharmony_ci    * - __u32
67562306a36Sopenharmony_ci      - ``flags``
67662306a36Sopenharmony_ci      - See :ref:`DPB Entry Flags <h264_dpb_flags>`
67762306a36Sopenharmony_ci
67862306a36Sopenharmony_ci.. raw:: latex
67962306a36Sopenharmony_ci
68062306a36Sopenharmony_ci    \normalsize
68162306a36Sopenharmony_ci
68262306a36Sopenharmony_ci.. _h264_dpb_flags:
68362306a36Sopenharmony_ci
68462306a36Sopenharmony_ci``DPB Entries Flags``
68562306a36Sopenharmony_ci
68662306a36Sopenharmony_ci.. raw:: latex
68762306a36Sopenharmony_ci
68862306a36Sopenharmony_ci    \small
68962306a36Sopenharmony_ci
69062306a36Sopenharmony_ci.. tabularcolumns:: |p{7.7cm}|p{2.1cm}|p{7.5cm}|
69162306a36Sopenharmony_ci
69262306a36Sopenharmony_ci.. flat-table::
69362306a36Sopenharmony_ci    :header-rows:  0
69462306a36Sopenharmony_ci    :stub-columns: 0
69562306a36Sopenharmony_ci    :widths:       1 1 2
69662306a36Sopenharmony_ci
69762306a36Sopenharmony_ci    * - ``V4L2_H264_DPB_ENTRY_FLAG_VALID``
69862306a36Sopenharmony_ci      - 0x00000001
69962306a36Sopenharmony_ci      - The DPB entry is valid (non-empty) and should be considered.
70062306a36Sopenharmony_ci    * - ``V4L2_H264_DPB_ENTRY_FLAG_ACTIVE``
70162306a36Sopenharmony_ci      - 0x00000002
70262306a36Sopenharmony_ci      - The DPB entry is used for reference.
70362306a36Sopenharmony_ci    * - ``V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM``
70462306a36Sopenharmony_ci      - 0x00000004
70562306a36Sopenharmony_ci      - The DPB entry is used for long-term reference.
70662306a36Sopenharmony_ci    * - ``V4L2_H264_DPB_ENTRY_FLAG_FIELD``
70762306a36Sopenharmony_ci      - 0x00000008
70862306a36Sopenharmony_ci      - The DPB entry is a single field or a complementary field pair.
70962306a36Sopenharmony_ci
71062306a36Sopenharmony_ci.. raw:: latex
71162306a36Sopenharmony_ci
71262306a36Sopenharmony_ci    \normalsize
71362306a36Sopenharmony_ci
71462306a36Sopenharmony_ci``V4L2_CID_STATELESS_H264_DECODE_MODE (enum)``
71562306a36Sopenharmony_ci    Specifies the decoding mode to use. Currently exposes slice-based and
71662306a36Sopenharmony_ci    frame-based decoding but new modes might be added later on.
71762306a36Sopenharmony_ci    This control is used as a modifier for V4L2_PIX_FMT_H264_SLICE
71862306a36Sopenharmony_ci    pixel format. Applications that support V4L2_PIX_FMT_H264_SLICE
71962306a36Sopenharmony_ci    are required to set this control in order to specify the decoding mode
72062306a36Sopenharmony_ci    that is expected for the buffer.
72162306a36Sopenharmony_ci    Drivers may expose a single or multiple decoding modes, depending
72262306a36Sopenharmony_ci    on what they can support.
72362306a36Sopenharmony_ci
72462306a36Sopenharmony_ci.. c:type:: v4l2_stateless_h264_decode_mode
72562306a36Sopenharmony_ci
72662306a36Sopenharmony_ci.. raw:: latex
72762306a36Sopenharmony_ci
72862306a36Sopenharmony_ci    \scriptsize
72962306a36Sopenharmony_ci
73062306a36Sopenharmony_ci.. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
73162306a36Sopenharmony_ci
73262306a36Sopenharmony_ci.. flat-table::
73362306a36Sopenharmony_ci    :header-rows:  0
73462306a36Sopenharmony_ci    :stub-columns: 0
73562306a36Sopenharmony_ci    :widths:       1 1 2
73662306a36Sopenharmony_ci
73762306a36Sopenharmony_ci    * - ``V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED``
73862306a36Sopenharmony_ci      - 0
73962306a36Sopenharmony_ci      - Decoding is done at the slice granularity.
74062306a36Sopenharmony_ci        The OUTPUT buffer must contain a single slice.
74162306a36Sopenharmony_ci        When this mode is selected, the ``V4L2_CID_STATELESS_H264_SLICE_PARAMS``
74262306a36Sopenharmony_ci        control shall be set. When multiple slices compose a frame,
74362306a36Sopenharmony_ci        use of ``V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF`` flag
74462306a36Sopenharmony_ci        is required.
74562306a36Sopenharmony_ci    * - ``V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED``
74662306a36Sopenharmony_ci      - 1
74762306a36Sopenharmony_ci      - Decoding is done at the frame granularity,
74862306a36Sopenharmony_ci        The OUTPUT buffer must contain all slices needed to decode the
74962306a36Sopenharmony_ci        frame. The OUTPUT buffer must also contain both fields.
75062306a36Sopenharmony_ci        This mode will be supported by devices that
75162306a36Sopenharmony_ci        parse the slice(s) header(s) in hardware. When this mode is
75262306a36Sopenharmony_ci        selected, the ``V4L2_CID_STATELESS_H264_SLICE_PARAMS``
75362306a36Sopenharmony_ci        control shall not be set.
75462306a36Sopenharmony_ci
75562306a36Sopenharmony_ci.. raw:: latex
75662306a36Sopenharmony_ci
75762306a36Sopenharmony_ci    \normalsize
75862306a36Sopenharmony_ci
75962306a36Sopenharmony_ci``V4L2_CID_STATELESS_H264_START_CODE (enum)``
76062306a36Sopenharmony_ci    Specifies the H264 slice start code expected for each slice.
76162306a36Sopenharmony_ci    This control is used as a modifier for V4L2_PIX_FMT_H264_SLICE
76262306a36Sopenharmony_ci    pixel format. Applications that support V4L2_PIX_FMT_H264_SLICE
76362306a36Sopenharmony_ci    are required to set this control in order to specify the start code
76462306a36Sopenharmony_ci    that is expected for the buffer.
76562306a36Sopenharmony_ci    Drivers may expose a single or multiple start codes, depending
76662306a36Sopenharmony_ci    on what they can support.
76762306a36Sopenharmony_ci
76862306a36Sopenharmony_ci.. c:type:: v4l2_stateless_h264_start_code
76962306a36Sopenharmony_ci
77062306a36Sopenharmony_ci.. raw:: latex
77162306a36Sopenharmony_ci
77262306a36Sopenharmony_ci    \small
77362306a36Sopenharmony_ci
77462306a36Sopenharmony_ci.. tabularcolumns:: |p{7.9cm}|p{0.4cm}|p{9.0cm}|
77562306a36Sopenharmony_ci
77662306a36Sopenharmony_ci.. flat-table::
77762306a36Sopenharmony_ci    :header-rows:  0
77862306a36Sopenharmony_ci    :stub-columns: 0
77962306a36Sopenharmony_ci    :widths:       4 1 4
78062306a36Sopenharmony_ci
78162306a36Sopenharmony_ci    * - ``V4L2_STATELESS_H264_START_CODE_NONE``
78262306a36Sopenharmony_ci      - 0
78362306a36Sopenharmony_ci      - Selecting this value specifies that H264 slices are passed
78462306a36Sopenharmony_ci        to the driver without any start code. The bitstream data should be
78562306a36Sopenharmony_ci        according to :ref:`h264` 7.3.1 NAL unit syntax, hence contains
78662306a36Sopenharmony_ci        emulation prevention bytes when required.
78762306a36Sopenharmony_ci    * - ``V4L2_STATELESS_H264_START_CODE_ANNEX_B``
78862306a36Sopenharmony_ci      - 1
78962306a36Sopenharmony_ci      - Selecting this value specifies that H264 slices are expected
79062306a36Sopenharmony_ci        to be prefixed by Annex B start codes. According to :ref:`h264`
79162306a36Sopenharmony_ci        valid start codes can be 3-bytes 0x000001 or 4-bytes 0x00000001.
79262306a36Sopenharmony_ci
79362306a36Sopenharmony_ci.. raw:: latex
79462306a36Sopenharmony_ci
79562306a36Sopenharmony_ci    \normalsize
79662306a36Sopenharmony_ci
79762306a36Sopenharmony_ci.. _codec-stateless-fwht:
79862306a36Sopenharmony_ci
79962306a36Sopenharmony_ci``V4L2_CID_STATELESS_FWHT_PARAMS (struct)``
80062306a36Sopenharmony_ci    Specifies the FWHT (Fast Walsh Hadamard Transform) parameters (as extracted
80162306a36Sopenharmony_ci    from the bitstream) for the associated FWHT data. This includes the necessary
80262306a36Sopenharmony_ci    parameters for configuring a stateless hardware decoding pipeline for FWHT.
80362306a36Sopenharmony_ci    This codec is specific to the vicodec test driver.
80462306a36Sopenharmony_ci
80562306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_fwht_params
80662306a36Sopenharmony_ci
80762306a36Sopenharmony_ci.. raw:: latex
80862306a36Sopenharmony_ci
80962306a36Sopenharmony_ci    \small
81062306a36Sopenharmony_ci
81162306a36Sopenharmony_ci.. tabularcolumns:: |p{1.4cm}|p{3.9cm}|p{12.0cm}|
81262306a36Sopenharmony_ci
81362306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_fwht_params
81462306a36Sopenharmony_ci    :header-rows:  0
81562306a36Sopenharmony_ci    :stub-columns: 0
81662306a36Sopenharmony_ci    :widths:       1 1 2
81762306a36Sopenharmony_ci
81862306a36Sopenharmony_ci    * - __u64
81962306a36Sopenharmony_ci      - ``backward_ref_ts``
82062306a36Sopenharmony_ci      - Timestamp of the V4L2 capture buffer to use as backward reference, used
82162306a36Sopenharmony_ci        with P-coded frames. The timestamp refers to the
82262306a36Sopenharmony_ci	``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
82362306a36Sopenharmony_ci	:c:func:`v4l2_timeval_to_ns()` function to convert the struct
82462306a36Sopenharmony_ci	:c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
82562306a36Sopenharmony_ci    * - __u32
82662306a36Sopenharmony_ci      - ``version``
82762306a36Sopenharmony_ci      - The version of the codec. Set to ``V4L2_FWHT_VERSION``.
82862306a36Sopenharmony_ci    * - __u32
82962306a36Sopenharmony_ci      - ``width``
83062306a36Sopenharmony_ci      - The width of the frame.
83162306a36Sopenharmony_ci    * - __u32
83262306a36Sopenharmony_ci      - ``height``
83362306a36Sopenharmony_ci      - The height of the frame.
83462306a36Sopenharmony_ci    * - __u32
83562306a36Sopenharmony_ci      - ``flags``
83662306a36Sopenharmony_ci      - The flags of the frame, see :ref:`fwht-flags`.
83762306a36Sopenharmony_ci    * - __u32
83862306a36Sopenharmony_ci      - ``colorspace``
83962306a36Sopenharmony_ci      - The colorspace of the frame, from enum :c:type:`v4l2_colorspace`.
84062306a36Sopenharmony_ci    * - __u32
84162306a36Sopenharmony_ci      - ``xfer_func``
84262306a36Sopenharmony_ci      - The transfer function, from enum :c:type:`v4l2_xfer_func`.
84362306a36Sopenharmony_ci    * - __u32
84462306a36Sopenharmony_ci      - ``ycbcr_enc``
84562306a36Sopenharmony_ci      - The Y'CbCr encoding, from enum :c:type:`v4l2_ycbcr_encoding`.
84662306a36Sopenharmony_ci    * - __u32
84762306a36Sopenharmony_ci      - ``quantization``
84862306a36Sopenharmony_ci      - The quantization range, from enum :c:type:`v4l2_quantization`.
84962306a36Sopenharmony_ci
85062306a36Sopenharmony_ci.. raw:: latex
85162306a36Sopenharmony_ci
85262306a36Sopenharmony_ci    \normalsize
85362306a36Sopenharmony_ci
85462306a36Sopenharmony_ci.. _fwht-flags:
85562306a36Sopenharmony_ci
85662306a36Sopenharmony_ciFWHT Flags
85762306a36Sopenharmony_ci==========
85862306a36Sopenharmony_ci
85962306a36Sopenharmony_ci.. raw:: latex
86062306a36Sopenharmony_ci
86162306a36Sopenharmony_ci    \small
86262306a36Sopenharmony_ci
86362306a36Sopenharmony_ci.. tabularcolumns:: |p{7.0cm}|p{2.3cm}|p{8.0cm}|
86462306a36Sopenharmony_ci
86562306a36Sopenharmony_ci.. flat-table::
86662306a36Sopenharmony_ci    :header-rows:  0
86762306a36Sopenharmony_ci    :stub-columns: 0
86862306a36Sopenharmony_ci    :widths:       3 1 4
86962306a36Sopenharmony_ci
87062306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_IS_INTERLACED``
87162306a36Sopenharmony_ci      - 0x00000001
87262306a36Sopenharmony_ci      - Set if this is an interlaced format.
87362306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_IS_BOTTOM_FIRST``
87462306a36Sopenharmony_ci      - 0x00000002
87562306a36Sopenharmony_ci      - Set if this is a bottom-first (NTSC) interlaced format.
87662306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_IS_ALTERNATE``
87762306a36Sopenharmony_ci      - 0x00000004
87862306a36Sopenharmony_ci      - Set if each 'frame' contains just one field.
87962306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_IS_BOTTOM_FIELD``
88062306a36Sopenharmony_ci      - 0x00000008
88162306a36Sopenharmony_ci      - If V4L2_FWHT_FL_IS_ALTERNATE was set, then this is set if this 'frame' is the
88262306a36Sopenharmony_ci	bottom field, else it is the top field.
88362306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED``
88462306a36Sopenharmony_ci      - 0x00000010
88562306a36Sopenharmony_ci      - Set if the Y' (luma) plane is uncompressed.
88662306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_CB_IS_UNCOMPRESSED``
88762306a36Sopenharmony_ci      - 0x00000020
88862306a36Sopenharmony_ci      - Set if the Cb plane is uncompressed.
88962306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_CR_IS_UNCOMPRESSED``
89062306a36Sopenharmony_ci      - 0x00000040
89162306a36Sopenharmony_ci      - Set if the Cr plane is uncompressed.
89262306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_CHROMA_FULL_HEIGHT``
89362306a36Sopenharmony_ci      - 0x00000080
89462306a36Sopenharmony_ci      - Set if the chroma plane has the same height as the luma plane,
89562306a36Sopenharmony_ci	else the chroma plane is half the height of the luma plane.
89662306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_CHROMA_FULL_WIDTH``
89762306a36Sopenharmony_ci      - 0x00000100
89862306a36Sopenharmony_ci      - Set if the chroma plane has the same width as the luma plane,
89962306a36Sopenharmony_ci	else the chroma plane is half the width of the luma plane.
90062306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED``
90162306a36Sopenharmony_ci      - 0x00000200
90262306a36Sopenharmony_ci      - Set if the alpha plane is uncompressed.
90362306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_I_FRAME``
90462306a36Sopenharmony_ci      - 0x00000400
90562306a36Sopenharmony_ci      - Set if this is an I-frame.
90662306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_COMPONENTS_NUM_MSK``
90762306a36Sopenharmony_ci      - 0x00070000
90862306a36Sopenharmony_ci      - The number of color components minus one.
90962306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_PIXENC_MSK``
91062306a36Sopenharmony_ci      - 0x00180000
91162306a36Sopenharmony_ci      - The mask for the pixel encoding.
91262306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_PIXENC_YUV``
91362306a36Sopenharmony_ci      - 0x00080000
91462306a36Sopenharmony_ci      - Set if the pixel encoding is YUV.
91562306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_PIXENC_RGB``
91662306a36Sopenharmony_ci      - 0x00100000
91762306a36Sopenharmony_ci      - Set if the pixel encoding is RGB.
91862306a36Sopenharmony_ci    * - ``V4L2_FWHT_FL_PIXENC_HSV``
91962306a36Sopenharmony_ci      - 0x00180000
92062306a36Sopenharmony_ci      - Set if the pixel encoding is HSV.
92162306a36Sopenharmony_ci
92262306a36Sopenharmony_ci.. raw:: latex
92362306a36Sopenharmony_ci
92462306a36Sopenharmony_ci    \normalsize
92562306a36Sopenharmony_ci
92662306a36Sopenharmony_ci.. _v4l2-codec-stateless-vp8:
92762306a36Sopenharmony_ci
92862306a36Sopenharmony_ci``V4L2_CID_STATELESS_VP8_FRAME (struct)``
92962306a36Sopenharmony_ci    Specifies the frame parameters for the associated VP8 parsed frame data.
93062306a36Sopenharmony_ci    This includes the necessary parameters for
93162306a36Sopenharmony_ci    configuring a stateless hardware decoding pipeline for VP8.
93262306a36Sopenharmony_ci    The bitstream parameters are defined according to :ref:`vp8`.
93362306a36Sopenharmony_ci
93462306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_vp8_frame
93562306a36Sopenharmony_ci
93662306a36Sopenharmony_ci.. raw:: latex
93762306a36Sopenharmony_ci
93862306a36Sopenharmony_ci    \small
93962306a36Sopenharmony_ci
94062306a36Sopenharmony_ci.. tabularcolumns:: |p{7.0cm}|p{4.6cm}|p{5.7cm}|
94162306a36Sopenharmony_ci
94262306a36Sopenharmony_ci.. cssclass:: longtable
94362306a36Sopenharmony_ci
94462306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_vp8_frame
94562306a36Sopenharmony_ci    :header-rows:  0
94662306a36Sopenharmony_ci    :stub-columns: 0
94762306a36Sopenharmony_ci    :widths:       1 1 2
94862306a36Sopenharmony_ci
94962306a36Sopenharmony_ci    * - struct :c:type:`v4l2_vp8_segment`
95062306a36Sopenharmony_ci      - ``segment``
95162306a36Sopenharmony_ci      - Structure with segment-based adjustments metadata.
95262306a36Sopenharmony_ci    * - struct :c:type:`v4l2_vp8_loop_filter`
95362306a36Sopenharmony_ci      - ``lf``
95462306a36Sopenharmony_ci      - Structure with loop filter level adjustments metadata.
95562306a36Sopenharmony_ci    * - struct :c:type:`v4l2_vp8_quantization`
95662306a36Sopenharmony_ci      - ``quant``
95762306a36Sopenharmony_ci      - Structure with VP8 dequantization indices metadata.
95862306a36Sopenharmony_ci    * - struct :c:type:`v4l2_vp8_entropy`
95962306a36Sopenharmony_ci      - ``entropy``
96062306a36Sopenharmony_ci      - Structure with VP8 entropy coder probabilities metadata.
96162306a36Sopenharmony_ci    * - struct :c:type:`v4l2_vp8_entropy_coder_state`
96262306a36Sopenharmony_ci      - ``coder_state``
96362306a36Sopenharmony_ci      - Structure with VP8 entropy coder state.
96462306a36Sopenharmony_ci    * - __u16
96562306a36Sopenharmony_ci      - ``width``
96662306a36Sopenharmony_ci      - The width of the frame. Must be set for all frames.
96762306a36Sopenharmony_ci    * - __u16
96862306a36Sopenharmony_ci      - ``height``
96962306a36Sopenharmony_ci      - The height of the frame. Must be set for all frames.
97062306a36Sopenharmony_ci    * - __u8
97162306a36Sopenharmony_ci      - ``horizontal_scale``
97262306a36Sopenharmony_ci      - Horizontal scaling factor.
97362306a36Sopenharmony_ci    * - __u8
97462306a36Sopenharmony_ci      - ``vertical_scaling factor``
97562306a36Sopenharmony_ci      - Vertical scale.
97662306a36Sopenharmony_ci    * - __u8
97762306a36Sopenharmony_ci      - ``version``
97862306a36Sopenharmony_ci      - Bitstream version.
97962306a36Sopenharmony_ci    * - __u8
98062306a36Sopenharmony_ci      - ``prob_skip_false``
98162306a36Sopenharmony_ci      - Indicates the probability that the macroblock is not skipped.
98262306a36Sopenharmony_ci    * - __u8
98362306a36Sopenharmony_ci      - ``prob_intra``
98462306a36Sopenharmony_ci      - Indicates the probability that a macroblock is intra-predicted.
98562306a36Sopenharmony_ci    * - __u8
98662306a36Sopenharmony_ci      - ``prob_last``
98762306a36Sopenharmony_ci      - Indicates the probability that the last reference frame is used
98862306a36Sopenharmony_ci        for inter-prediction
98962306a36Sopenharmony_ci    * - __u8
99062306a36Sopenharmony_ci      - ``prob_gf``
99162306a36Sopenharmony_ci      - Indicates the probability that the golden reference frame is used
99262306a36Sopenharmony_ci        for inter-prediction
99362306a36Sopenharmony_ci    * - __u8
99462306a36Sopenharmony_ci      - ``num_dct_parts``
99562306a36Sopenharmony_ci      - Number of DCT coefficients partitions. Must be one of: 1, 2, 4, or 8.
99662306a36Sopenharmony_ci    * - __u32
99762306a36Sopenharmony_ci      - ``first_part_size``
99862306a36Sopenharmony_ci      - Size of the first partition, i.e. the control partition.
99962306a36Sopenharmony_ci    * - __u32
100062306a36Sopenharmony_ci      - ``first_part_header_bits``
100162306a36Sopenharmony_ci      - Size in bits of the first partition header portion.
100262306a36Sopenharmony_ci    * - __u32
100362306a36Sopenharmony_ci      - ``dct_part_sizes[8]``
100462306a36Sopenharmony_ci      - DCT coefficients sizes.
100562306a36Sopenharmony_ci    * - __u64
100662306a36Sopenharmony_ci      - ``last_frame_ts``
100762306a36Sopenharmony_ci      - Timestamp for the V4L2 capture buffer to use as last reference frame, used
100862306a36Sopenharmony_ci        with inter-coded frames. The timestamp refers to the ``timestamp`` field in
100962306a36Sopenharmony_ci	struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
101062306a36Sopenharmony_ci	function to convert the struct :c:type:`timeval` in struct
101162306a36Sopenharmony_ci	:c:type:`v4l2_buffer` to a __u64.
101262306a36Sopenharmony_ci    * - __u64
101362306a36Sopenharmony_ci      - ``golden_frame_ts``
101462306a36Sopenharmony_ci      - Timestamp for the V4L2 capture buffer to use as last reference frame, used
101562306a36Sopenharmony_ci        with inter-coded frames. The timestamp refers to the ``timestamp`` field in
101662306a36Sopenharmony_ci	struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
101762306a36Sopenharmony_ci	function to convert the struct :c:type:`timeval` in struct
101862306a36Sopenharmony_ci	:c:type:`v4l2_buffer` to a __u64.
101962306a36Sopenharmony_ci    * - __u64
102062306a36Sopenharmony_ci      - ``alt_frame_ts``
102162306a36Sopenharmony_ci      - Timestamp for the V4L2 capture buffer to use as alternate reference frame, used
102262306a36Sopenharmony_ci        with inter-coded frames. The timestamp refers to the ``timestamp`` field in
102362306a36Sopenharmony_ci	struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
102462306a36Sopenharmony_ci	function to convert the struct :c:type:`timeval` in struct
102562306a36Sopenharmony_ci	:c:type:`v4l2_buffer` to a __u64.
102662306a36Sopenharmony_ci    * - __u64
102762306a36Sopenharmony_ci      - ``flags``
102862306a36Sopenharmony_ci      - See :ref:`Frame Flags <vp8_frame_flags>`
102962306a36Sopenharmony_ci
103062306a36Sopenharmony_ci.. raw:: latex
103162306a36Sopenharmony_ci
103262306a36Sopenharmony_ci    \normalsize
103362306a36Sopenharmony_ci
103462306a36Sopenharmony_ci.. _vp8_frame_flags:
103562306a36Sopenharmony_ci
103662306a36Sopenharmony_ci``Frame Flags``
103762306a36Sopenharmony_ci
103862306a36Sopenharmony_ci.. tabularcolumns:: |p{9.8cm}|p{0.8cm}|p{6.7cm}|
103962306a36Sopenharmony_ci
104062306a36Sopenharmony_ci.. cssclass:: longtable
104162306a36Sopenharmony_ci
104262306a36Sopenharmony_ci.. flat-table::
104362306a36Sopenharmony_ci    :header-rows:  0
104462306a36Sopenharmony_ci    :stub-columns: 0
104562306a36Sopenharmony_ci    :widths:       1 1 2
104662306a36Sopenharmony_ci
104762306a36Sopenharmony_ci    * - ``V4L2_VP8_FRAME_FLAG_KEY_FRAME``
104862306a36Sopenharmony_ci      - 0x01
104962306a36Sopenharmony_ci      - Indicates if the frame is a key frame.
105062306a36Sopenharmony_ci    * - ``V4L2_VP8_FRAME_FLAG_EXPERIMENTAL``
105162306a36Sopenharmony_ci      - 0x02
105262306a36Sopenharmony_ci      - Experimental bitstream.
105362306a36Sopenharmony_ci    * - ``V4L2_VP8_FRAME_FLAG_SHOW_FRAME``
105462306a36Sopenharmony_ci      - 0x04
105562306a36Sopenharmony_ci      - Show frame flag, indicates if the frame is for display.
105662306a36Sopenharmony_ci    * - ``V4L2_VP8_FRAME_FLAG_MB_NO_SKIP_COEFF``
105762306a36Sopenharmony_ci      - 0x08
105862306a36Sopenharmony_ci      - Enable/disable skipping of macroblocks with no non-zero coefficients.
105962306a36Sopenharmony_ci    * - ``V4L2_VP8_FRAME_FLAG_SIGN_BIAS_GOLDEN``
106062306a36Sopenharmony_ci      - 0x10
106162306a36Sopenharmony_ci      - Sign of motion vectors when the golden frame is referenced.
106262306a36Sopenharmony_ci    * - ``V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT``
106362306a36Sopenharmony_ci      - 0x20
106462306a36Sopenharmony_ci      - Sign of motion vectors when the alt frame is referenced.
106562306a36Sopenharmony_ci
106662306a36Sopenharmony_ci.. c:type:: v4l2_vp8_entropy_coder_state
106762306a36Sopenharmony_ci
106862306a36Sopenharmony_ci.. cssclass:: longtable
106962306a36Sopenharmony_ci
107062306a36Sopenharmony_ci.. tabularcolumns:: |p{1.0cm}|p{2.0cm}|p{14.3cm}|
107162306a36Sopenharmony_ci
107262306a36Sopenharmony_ci.. flat-table:: struct v4l2_vp8_entropy_coder_state
107362306a36Sopenharmony_ci    :header-rows:  0
107462306a36Sopenharmony_ci    :stub-columns: 0
107562306a36Sopenharmony_ci    :widths:       1 1 2
107662306a36Sopenharmony_ci
107762306a36Sopenharmony_ci    * - __u8
107862306a36Sopenharmony_ci      - ``range``
107962306a36Sopenharmony_ci      - coder state value for "Range"
108062306a36Sopenharmony_ci    * - __u8
108162306a36Sopenharmony_ci      - ``value``
108262306a36Sopenharmony_ci      - coder state value for "Value"-
108362306a36Sopenharmony_ci    * - __u8
108462306a36Sopenharmony_ci      - ``bit_count``
108562306a36Sopenharmony_ci      - number of bits left.
108662306a36Sopenharmony_ci    * - __u8
108762306a36Sopenharmony_ci      - ``padding``
108862306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
108962306a36Sopenharmony_ci
109062306a36Sopenharmony_ci.. c:type:: v4l2_vp8_segment
109162306a36Sopenharmony_ci
109262306a36Sopenharmony_ci.. cssclass:: longtable
109362306a36Sopenharmony_ci
109462306a36Sopenharmony_ci.. tabularcolumns:: |p{1.2cm}|p{4.0cm}|p{12.1cm}|
109562306a36Sopenharmony_ci
109662306a36Sopenharmony_ci.. flat-table:: struct v4l2_vp8_segment
109762306a36Sopenharmony_ci    :header-rows:  0
109862306a36Sopenharmony_ci    :stub-columns: 0
109962306a36Sopenharmony_ci    :widths:       1 1 2
110062306a36Sopenharmony_ci
110162306a36Sopenharmony_ci    * - __s8
110262306a36Sopenharmony_ci      - ``quant_update[4]``
110362306a36Sopenharmony_ci      - Signed quantizer value update.
110462306a36Sopenharmony_ci    * - __s8
110562306a36Sopenharmony_ci      - ``lf_update[4]``
110662306a36Sopenharmony_ci      - Signed loop filter level value update.
110762306a36Sopenharmony_ci    * - __u8
110862306a36Sopenharmony_ci      - ``segment_probs[3]``
110962306a36Sopenharmony_ci      - Segment probabilities.
111062306a36Sopenharmony_ci    * - __u8
111162306a36Sopenharmony_ci      - ``padding``
111262306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
111362306a36Sopenharmony_ci    * - __u32
111462306a36Sopenharmony_ci      - ``flags``
111562306a36Sopenharmony_ci      - See :ref:`Segment Flags <vp8_segment_flags>`
111662306a36Sopenharmony_ci
111762306a36Sopenharmony_ci.. _vp8_segment_flags:
111862306a36Sopenharmony_ci
111962306a36Sopenharmony_ci``Segment Flags``
112062306a36Sopenharmony_ci
112162306a36Sopenharmony_ci.. raw:: latex
112262306a36Sopenharmony_ci
112362306a36Sopenharmony_ci    \small
112462306a36Sopenharmony_ci
112562306a36Sopenharmony_ci.. tabularcolumns:: |p{10cm}|p{1.0cm}|p{6.3cm}|
112662306a36Sopenharmony_ci
112762306a36Sopenharmony_ci.. flat-table::
112862306a36Sopenharmony_ci    :header-rows:  0
112962306a36Sopenharmony_ci    :stub-columns: 0
113062306a36Sopenharmony_ci    :widths:       1 1 2
113162306a36Sopenharmony_ci
113262306a36Sopenharmony_ci    * - ``V4L2_VP8_SEGMENT_FLAG_ENABLED``
113362306a36Sopenharmony_ci      - 0x01
113462306a36Sopenharmony_ci      - Enable/disable segment-based adjustments.
113562306a36Sopenharmony_ci    * - ``V4L2_VP8_SEGMENT_FLAG_UPDATE_MAP``
113662306a36Sopenharmony_ci      - 0x02
113762306a36Sopenharmony_ci      - Indicates if the macroblock segmentation map is updated in this frame.
113862306a36Sopenharmony_ci    * - ``V4L2_VP8_SEGMENT_FLAG_UPDATE_FEATURE_DATA``
113962306a36Sopenharmony_ci      - 0x04
114062306a36Sopenharmony_ci      - Indicates if the segment feature data is updated in this frame.
114162306a36Sopenharmony_ci    * - ``V4L2_VP8_SEGMENT_FLAG_DELTA_VALUE_MODE``
114262306a36Sopenharmony_ci      - 0x08
114362306a36Sopenharmony_ci      - If is set, the segment feature data mode is delta-value.
114462306a36Sopenharmony_ci        If cleared, it's absolute-value.
114562306a36Sopenharmony_ci
114662306a36Sopenharmony_ci.. raw:: latex
114762306a36Sopenharmony_ci
114862306a36Sopenharmony_ci    \normalsize
114962306a36Sopenharmony_ci
115062306a36Sopenharmony_ci.. c:type:: v4l2_vp8_loop_filter
115162306a36Sopenharmony_ci
115262306a36Sopenharmony_ci.. cssclass:: longtable
115362306a36Sopenharmony_ci
115462306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{3.9cm}|p{11.9cm}|
115562306a36Sopenharmony_ci
115662306a36Sopenharmony_ci.. flat-table:: struct v4l2_vp8_loop_filter
115762306a36Sopenharmony_ci    :header-rows:  0
115862306a36Sopenharmony_ci    :stub-columns: 0
115962306a36Sopenharmony_ci    :widths:       1 1 2
116062306a36Sopenharmony_ci
116162306a36Sopenharmony_ci    * - __s8
116262306a36Sopenharmony_ci      - ``ref_frm_delta[4]``
116362306a36Sopenharmony_ci      - Reference adjustment (signed) delta value.
116462306a36Sopenharmony_ci    * - __s8
116562306a36Sopenharmony_ci      - ``mb_mode_delta[4]``
116662306a36Sopenharmony_ci      - Macroblock prediction mode adjustment (signed) delta value.
116762306a36Sopenharmony_ci    * - __u8
116862306a36Sopenharmony_ci      - ``sharpness_level``
116962306a36Sopenharmony_ci      - Sharpness level
117062306a36Sopenharmony_ci    * - __u8
117162306a36Sopenharmony_ci      - ``level``
117262306a36Sopenharmony_ci      - Filter level
117362306a36Sopenharmony_ci    * - __u16
117462306a36Sopenharmony_ci      - ``padding``
117562306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
117662306a36Sopenharmony_ci    * - __u32
117762306a36Sopenharmony_ci      - ``flags``
117862306a36Sopenharmony_ci      - See :ref:`Loop Filter Flags <vp8_loop_filter_flags>`
117962306a36Sopenharmony_ci
118062306a36Sopenharmony_ci.. _vp8_loop_filter_flags:
118162306a36Sopenharmony_ci
118262306a36Sopenharmony_ci``Loop Filter Flags``
118362306a36Sopenharmony_ci
118462306a36Sopenharmony_ci.. tabularcolumns:: |p{7.0cm}|p{1.2cm}|p{9.1cm}|
118562306a36Sopenharmony_ci
118662306a36Sopenharmony_ci.. flat-table::
118762306a36Sopenharmony_ci    :header-rows:  0
118862306a36Sopenharmony_ci    :stub-columns: 0
118962306a36Sopenharmony_ci    :widths:       1 1 2
119062306a36Sopenharmony_ci
119162306a36Sopenharmony_ci    * - ``V4L2_VP8_LF_ADJ_ENABLE``
119262306a36Sopenharmony_ci      - 0x01
119362306a36Sopenharmony_ci      - Enable/disable macroblock-level loop filter adjustment.
119462306a36Sopenharmony_ci    * - ``V4L2_VP8_LF_DELTA_UPDATE``
119562306a36Sopenharmony_ci      - 0x02
119662306a36Sopenharmony_ci      - Indicates if the delta values used in an adjustment are updated.
119762306a36Sopenharmony_ci    * - ``V4L2_VP8_LF_FILTER_TYPE_SIMPLE``
119862306a36Sopenharmony_ci      - 0x04
119962306a36Sopenharmony_ci      - If set, indicates the filter type is simple.
120062306a36Sopenharmony_ci        If cleared, the filter type is normal.
120162306a36Sopenharmony_ci
120262306a36Sopenharmony_ci.. c:type:: v4l2_vp8_quantization
120362306a36Sopenharmony_ci
120462306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{3.5cm}|p{12.3cm}|
120562306a36Sopenharmony_ci
120662306a36Sopenharmony_ci.. flat-table:: struct v4l2_vp8_quantization
120762306a36Sopenharmony_ci    :header-rows:  0
120862306a36Sopenharmony_ci    :stub-columns: 0
120962306a36Sopenharmony_ci    :widths:       1 1 2
121062306a36Sopenharmony_ci
121162306a36Sopenharmony_ci    * - __u8
121262306a36Sopenharmony_ci      - ``y_ac_qi``
121362306a36Sopenharmony_ci      - Luma AC coefficient table index.
121462306a36Sopenharmony_ci    * - __s8
121562306a36Sopenharmony_ci      - ``y_dc_delta``
121662306a36Sopenharmony_ci      - Luma DC delta value.
121762306a36Sopenharmony_ci    * - __s8
121862306a36Sopenharmony_ci      - ``y2_dc_delta``
121962306a36Sopenharmony_ci      - Y2 block DC delta value.
122062306a36Sopenharmony_ci    * - __s8
122162306a36Sopenharmony_ci      - ``y2_ac_delta``
122262306a36Sopenharmony_ci      - Y2 block AC delta value.
122362306a36Sopenharmony_ci    * - __s8
122462306a36Sopenharmony_ci      - ``uv_dc_delta``
122562306a36Sopenharmony_ci      - Chroma DC delta value.
122662306a36Sopenharmony_ci    * - __s8
122762306a36Sopenharmony_ci      - ``uv_ac_delta``
122862306a36Sopenharmony_ci      - Chroma AC delta value.
122962306a36Sopenharmony_ci    * - __u16
123062306a36Sopenharmony_ci      - ``padding``
123162306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
123262306a36Sopenharmony_ci
123362306a36Sopenharmony_ci.. c:type:: v4l2_vp8_entropy
123462306a36Sopenharmony_ci
123562306a36Sopenharmony_ci.. cssclass:: longtable
123662306a36Sopenharmony_ci
123762306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
123862306a36Sopenharmony_ci
123962306a36Sopenharmony_ci.. flat-table:: struct v4l2_vp8_entropy
124062306a36Sopenharmony_ci    :header-rows:  0
124162306a36Sopenharmony_ci    :stub-columns: 0
124262306a36Sopenharmony_ci    :widths:       1 1 2
124362306a36Sopenharmony_ci
124462306a36Sopenharmony_ci    * - __u8
124562306a36Sopenharmony_ci      - ``coeff_probs[4][8][3][11]``
124662306a36Sopenharmony_ci      - Coefficient update probabilities.
124762306a36Sopenharmony_ci    * - __u8
124862306a36Sopenharmony_ci      - ``y_mode_probs[4]``
124962306a36Sopenharmony_ci      - Luma mode update probabilities.
125062306a36Sopenharmony_ci    * - __u8
125162306a36Sopenharmony_ci      - ``uv_mode_probs[3]``
125262306a36Sopenharmony_ci      - Chroma mode update probabilities.
125362306a36Sopenharmony_ci    * - __u8
125462306a36Sopenharmony_ci      - ``mv_probs[2][19]``
125562306a36Sopenharmony_ci      - MV decoding update probabilities.
125662306a36Sopenharmony_ci    * - __u8
125762306a36Sopenharmony_ci      - ``padding[3]``
125862306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
125962306a36Sopenharmony_ci
126062306a36Sopenharmony_ci.. _v4l2-codec-stateless-mpeg2:
126162306a36Sopenharmony_ci
126262306a36Sopenharmony_ci``V4L2_CID_STATELESS_MPEG2_SEQUENCE (struct)``
126362306a36Sopenharmony_ci    Specifies the sequence parameters (as extracted from the bitstream) for the
126462306a36Sopenharmony_ci    associated MPEG-2 slice data. This includes fields matching the syntax
126562306a36Sopenharmony_ci    elements from the sequence header and sequence extension parts of the
126662306a36Sopenharmony_ci    bitstream as specified by :ref:`mpeg2part2`.
126762306a36Sopenharmony_ci
126862306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_mpeg2_sequence
126962306a36Sopenharmony_ci
127062306a36Sopenharmony_ci.. raw:: latex
127162306a36Sopenharmony_ci
127262306a36Sopenharmony_ci    \small
127362306a36Sopenharmony_ci
127462306a36Sopenharmony_ci.. cssclass:: longtable
127562306a36Sopenharmony_ci
127662306a36Sopenharmony_ci.. tabularcolumns:: |p{1.4cm}|p{6.5cm}|p{9.4cm}|
127762306a36Sopenharmony_ci
127862306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_mpeg2_sequence
127962306a36Sopenharmony_ci    :header-rows:  0
128062306a36Sopenharmony_ci    :stub-columns: 0
128162306a36Sopenharmony_ci    :widths:       1 1 2
128262306a36Sopenharmony_ci
128362306a36Sopenharmony_ci    * - __u16
128462306a36Sopenharmony_ci      - ``horizontal_size``
128562306a36Sopenharmony_ci      - The width of the displayable part of the frame's luminance component.
128662306a36Sopenharmony_ci    * - __u16
128762306a36Sopenharmony_ci      - ``vertical_size``
128862306a36Sopenharmony_ci      - The height of the displayable part of the frame's luminance component.
128962306a36Sopenharmony_ci    * - __u32
129062306a36Sopenharmony_ci      - ``vbv_buffer_size``
129162306a36Sopenharmony_ci      - Used to calculate the required size of the video buffering verifier,
129262306a36Sopenharmony_ci	defined (in bits) as: 16 * 1024 * vbv_buffer_size.
129362306a36Sopenharmony_ci    * - __u16
129462306a36Sopenharmony_ci      - ``profile_and_level_indication``
129562306a36Sopenharmony_ci      - The current profile and level indication as extracted from the
129662306a36Sopenharmony_ci	bitstream.
129762306a36Sopenharmony_ci    * - __u8
129862306a36Sopenharmony_ci      - ``chroma_format``
129962306a36Sopenharmony_ci      - The chrominance sub-sampling format (1: 4:2:0, 2: 4:2:2, 3: 4:4:4).
130062306a36Sopenharmony_ci    * - __u8
130162306a36Sopenharmony_ci      - ``flags``
130262306a36Sopenharmony_ci      - See :ref:`MPEG-2 Sequence Flags <mpeg2_sequence_flags>`.
130362306a36Sopenharmony_ci
130462306a36Sopenharmony_ci.. _mpeg2_sequence_flags:
130562306a36Sopenharmony_ci
130662306a36Sopenharmony_ci``MPEG-2 Sequence Flags``
130762306a36Sopenharmony_ci
130862306a36Sopenharmony_ci.. cssclass:: longtable
130962306a36Sopenharmony_ci
131062306a36Sopenharmony_ci.. flat-table::
131162306a36Sopenharmony_ci    :header-rows:  0
131262306a36Sopenharmony_ci    :stub-columns: 0
131362306a36Sopenharmony_ci    :widths:       1 1 2
131462306a36Sopenharmony_ci
131562306a36Sopenharmony_ci    * - ``V4L2_MPEG2_SEQ_FLAG_PROGRESSIVE``
131662306a36Sopenharmony_ci      - 0x01
131762306a36Sopenharmony_ci      - Indication that all the frames for the sequence are progressive instead
131862306a36Sopenharmony_ci	of interlaced.
131962306a36Sopenharmony_ci
132062306a36Sopenharmony_ci.. raw:: latex
132162306a36Sopenharmony_ci
132262306a36Sopenharmony_ci    \normalsize
132362306a36Sopenharmony_ci
132462306a36Sopenharmony_ci``V4L2_CID_STATELESS_MPEG2_PICTURE (struct)``
132562306a36Sopenharmony_ci    Specifies the picture parameters (as extracted from the bitstream) for the
132662306a36Sopenharmony_ci    associated MPEG-2 slice data. This includes fields matching the syntax
132762306a36Sopenharmony_ci    elements from the picture header and picture coding extension parts of the
132862306a36Sopenharmony_ci    bitstream as specified by :ref:`mpeg2part2`.
132962306a36Sopenharmony_ci
133062306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_mpeg2_picture
133162306a36Sopenharmony_ci
133262306a36Sopenharmony_ci.. raw:: latex
133362306a36Sopenharmony_ci
133462306a36Sopenharmony_ci    \small
133562306a36Sopenharmony_ci
133662306a36Sopenharmony_ci.. cssclass:: longtable
133762306a36Sopenharmony_ci
133862306a36Sopenharmony_ci.. tabularcolumns:: |p{1.0cm}|p{5.6cm}|p{10.7cm}|
133962306a36Sopenharmony_ci
134062306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_mpeg2_picture
134162306a36Sopenharmony_ci    :header-rows:  0
134262306a36Sopenharmony_ci    :stub-columns: 0
134362306a36Sopenharmony_ci    :widths:       1 1 2
134462306a36Sopenharmony_ci
134562306a36Sopenharmony_ci    * - __u64
134662306a36Sopenharmony_ci      - ``backward_ref_ts``
134762306a36Sopenharmony_ci      - Timestamp of the V4L2 capture buffer to use as backward reference, used
134862306a36Sopenharmony_ci        with B-coded and P-coded frames. The timestamp refers to the
134962306a36Sopenharmony_ci	``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
135062306a36Sopenharmony_ci	:c:func:`v4l2_timeval_to_ns()` function to convert the struct
135162306a36Sopenharmony_ci	:c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
135262306a36Sopenharmony_ci    * - __u64
135362306a36Sopenharmony_ci      - ``forward_ref_ts``
135462306a36Sopenharmony_ci      - Timestamp for the V4L2 capture buffer to use as forward reference, used
135562306a36Sopenharmony_ci        with B-coded frames. The timestamp refers to the ``timestamp`` field in
135662306a36Sopenharmony_ci	struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
135762306a36Sopenharmony_ci	function to convert the struct :c:type:`timeval` in struct
135862306a36Sopenharmony_ci	:c:type:`v4l2_buffer` to a __u64.
135962306a36Sopenharmony_ci    * - __u32
136062306a36Sopenharmony_ci      - ``flags``
136162306a36Sopenharmony_ci      - See :ref:`MPEG-2 Picture Flags <mpeg2_picture_flags>`.
136262306a36Sopenharmony_ci    * - __u8
136362306a36Sopenharmony_ci      - ``f_code[2][2]``
136462306a36Sopenharmony_ci      - Motion vector codes.
136562306a36Sopenharmony_ci    * - __u8
136662306a36Sopenharmony_ci      - ``picture_coding_type``
136762306a36Sopenharmony_ci      - Picture coding type for the frame covered by the current slice
136862306a36Sopenharmony_ci	(V4L2_MPEG2_PIC_CODING_TYPE_I, V4L2_MPEG2_PIC_CODING_TYPE_P or
136962306a36Sopenharmony_ci	V4L2_MPEG2_PIC_CODING_TYPE_B).
137062306a36Sopenharmony_ci    * - __u8
137162306a36Sopenharmony_ci      - ``picture_structure``
137262306a36Sopenharmony_ci      - Picture structure (1: interlaced top field, 2: interlaced bottom field,
137362306a36Sopenharmony_ci	3: progressive frame).
137462306a36Sopenharmony_ci    * - __u8
137562306a36Sopenharmony_ci      - ``intra_dc_precision``
137662306a36Sopenharmony_ci      - Precision of Discrete Cosine transform (0: 8 bits precision,
137762306a36Sopenharmony_ci	1: 9 bits precision, 2: 10 bits precision, 3: 11 bits precision).
137862306a36Sopenharmony_ci    * - __u8
137962306a36Sopenharmony_ci      - ``reserved[5]``
138062306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
138162306a36Sopenharmony_ci
138262306a36Sopenharmony_ci.. _mpeg2_picture_flags:
138362306a36Sopenharmony_ci
138462306a36Sopenharmony_ci``MPEG-2 Picture Flags``
138562306a36Sopenharmony_ci
138662306a36Sopenharmony_ci.. cssclass:: longtable
138762306a36Sopenharmony_ci
138862306a36Sopenharmony_ci.. flat-table::
138962306a36Sopenharmony_ci    :header-rows:  0
139062306a36Sopenharmony_ci    :stub-columns: 0
139162306a36Sopenharmony_ci    :widths:       1 1 2
139262306a36Sopenharmony_ci
139362306a36Sopenharmony_ci    * - ``V4L2_MPEG2_PIC_FLAG_TOP_FIELD_FIRST``
139462306a36Sopenharmony_ci      - 0x00000001
139562306a36Sopenharmony_ci      - If set and it's an interlaced stream, top field is output first.
139662306a36Sopenharmony_ci    * - ``V4L2_MPEG2_PIC_FLAG_FRAME_PRED_DCT``
139762306a36Sopenharmony_ci      - 0x00000002
139862306a36Sopenharmony_ci      - If set only frame-DCT and frame prediction are used.
139962306a36Sopenharmony_ci    * - ``V4L2_MPEG2_PIC_FLAG_CONCEALMENT_MV``
140062306a36Sopenharmony_ci      - 0x00000004
140162306a36Sopenharmony_ci      -  If set motion vectors are coded for intra macroblocks.
140262306a36Sopenharmony_ci    * - ``V4L2_MPEG2_PIC_FLAG_Q_SCALE_TYPE``
140362306a36Sopenharmony_ci      - 0x00000008
140462306a36Sopenharmony_ci      - This flag affects the inverse quantization process.
140562306a36Sopenharmony_ci    * - ``V4L2_MPEG2_PIC_FLAG_INTRA_VLC``
140662306a36Sopenharmony_ci      - 0x00000010
140762306a36Sopenharmony_ci      - This flag affects the decoding of transform coefficient data.
140862306a36Sopenharmony_ci    * - ``V4L2_MPEG2_PIC_FLAG_ALT_SCAN``
140962306a36Sopenharmony_ci      - 0x00000020
141062306a36Sopenharmony_ci      - This flag affects the decoding of transform coefficient data.
141162306a36Sopenharmony_ci    * - ``V4L2_MPEG2_PIC_FLAG_REPEAT_FIRST``
141262306a36Sopenharmony_ci      - 0x00000040
141362306a36Sopenharmony_ci      - This flag affects the decoding process of progressive frames.
141462306a36Sopenharmony_ci    * - ``V4L2_MPEG2_PIC_FLAG_PROGRESSIVE``
141562306a36Sopenharmony_ci      - 0x00000080
141662306a36Sopenharmony_ci      - Indicates whether the current frame is progressive.
141762306a36Sopenharmony_ci
141862306a36Sopenharmony_ci.. raw:: latex
141962306a36Sopenharmony_ci
142062306a36Sopenharmony_ci    \normalsize
142162306a36Sopenharmony_ci
142262306a36Sopenharmony_ci``V4L2_CID_STATELESS_MPEG2_QUANTISATION (struct)``
142362306a36Sopenharmony_ci    Specifies quantisation matrices, in zigzag scanning order, for the
142462306a36Sopenharmony_ci    associated MPEG-2 slice data. This control is initialized by the kernel
142562306a36Sopenharmony_ci    to the matrices default values. If a bitstream transmits a user-defined
142662306a36Sopenharmony_ci    quantisation matrices load, applications are expected to use this control.
142762306a36Sopenharmony_ci    Applications are also expected to set the control loading the default
142862306a36Sopenharmony_ci    values, if the quantisation matrices need to be reset, for instance on a
142962306a36Sopenharmony_ci    sequence header. This process is specified by section 6.3.7.
143062306a36Sopenharmony_ci    "Quant matrix extension" of the specification.
143162306a36Sopenharmony_ci
143262306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_mpeg2_quantisation
143362306a36Sopenharmony_ci
143462306a36Sopenharmony_ci.. tabularcolumns:: |p{0.8cm}|p{8.0cm}|p{8.5cm}|
143562306a36Sopenharmony_ci
143662306a36Sopenharmony_ci.. cssclass:: longtable
143762306a36Sopenharmony_ci
143862306a36Sopenharmony_ci.. raw:: latex
143962306a36Sopenharmony_ci
144062306a36Sopenharmony_ci    \small
144162306a36Sopenharmony_ci
144262306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_mpeg2_quantisation
144362306a36Sopenharmony_ci    :header-rows:  0
144462306a36Sopenharmony_ci    :stub-columns: 0
144562306a36Sopenharmony_ci    :widths:       1 1 2
144662306a36Sopenharmony_ci
144762306a36Sopenharmony_ci    * - __u8
144862306a36Sopenharmony_ci      - ``intra_quantiser_matrix[64]``
144962306a36Sopenharmony_ci      - The quantisation matrix coefficients for intra-coded frames, in zigzag
145062306a36Sopenharmony_ci	scanning order. It is relevant for both luma and chroma components,
145162306a36Sopenharmony_ci	although it can be superseded by the chroma-specific matrix for
145262306a36Sopenharmony_ci	non-4:2:0 YUV formats.
145362306a36Sopenharmony_ci    * - __u8
145462306a36Sopenharmony_ci      - ``non_intra_quantiser_matrix[64]``
145562306a36Sopenharmony_ci      - The quantisation matrix coefficients for non-intra-coded frames, in
145662306a36Sopenharmony_ci	zigzag scanning order. It is relevant for both luma and chroma
145762306a36Sopenharmony_ci	components, although it can be superseded by the chroma-specific matrix
145862306a36Sopenharmony_ci	for non-4:2:0 YUV formats.
145962306a36Sopenharmony_ci    * - __u8
146062306a36Sopenharmony_ci      - ``chroma_intra_quantiser_matrix[64]``
146162306a36Sopenharmony_ci      - The quantisation matrix coefficients for the chominance component of
146262306a36Sopenharmony_ci	intra-coded frames, in zigzag scanning order. Only relevant for
146362306a36Sopenharmony_ci	non-4:2:0 YUV formats.
146462306a36Sopenharmony_ci    * - __u8
146562306a36Sopenharmony_ci      - ``chroma_non_intra_quantiser_matrix[64]``
146662306a36Sopenharmony_ci      - The quantisation matrix coefficients for the chrominance component of
146762306a36Sopenharmony_ci	non-intra-coded frames, in zigzag scanning order. Only relevant for
146862306a36Sopenharmony_ci	non-4:2:0 YUV formats.
146962306a36Sopenharmony_ci
147062306a36Sopenharmony_ci.. raw:: latex
147162306a36Sopenharmony_ci
147262306a36Sopenharmony_ci    \normalsize
147362306a36Sopenharmony_ci
147462306a36Sopenharmony_ci.. _v4l2-codec-stateless-vp9:
147562306a36Sopenharmony_ci
147662306a36Sopenharmony_ci``V4L2_CID_STATELESS_VP9_COMPRESSED_HDR (struct)``
147762306a36Sopenharmony_ci    Stores VP9 probabilities updates as parsed from the current compressed frame
147862306a36Sopenharmony_ci    header. A value of zero in an array element means no update of the relevant
147962306a36Sopenharmony_ci    probability. Motion vector-related updates contain a new value or zero. All
148062306a36Sopenharmony_ci    other updates contain values translated with inv_map_table[] (see 6.3.5 in
148162306a36Sopenharmony_ci    :ref:`vp9`).
148262306a36Sopenharmony_ci
148362306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_vp9_compressed_hdr
148462306a36Sopenharmony_ci
148562306a36Sopenharmony_ci.. tabularcolumns:: |p{1cm}|p{4.8cm}|p{11.4cm}|
148662306a36Sopenharmony_ci
148762306a36Sopenharmony_ci.. cssclass:: longtable
148862306a36Sopenharmony_ci
148962306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_vp9_compressed_hdr
149062306a36Sopenharmony_ci    :header-rows:  0
149162306a36Sopenharmony_ci    :stub-columns: 0
149262306a36Sopenharmony_ci    :widths:       1 1 2
149362306a36Sopenharmony_ci
149462306a36Sopenharmony_ci    * - __u8
149562306a36Sopenharmony_ci      - ``tx_mode``
149662306a36Sopenharmony_ci      - Specifies the TX mode. See :ref:`TX Mode <vp9_tx_mode>` for more details.
149762306a36Sopenharmony_ci    * - __u8
149862306a36Sopenharmony_ci      - ``tx8[2][1]``
149962306a36Sopenharmony_ci      - TX 8x8 probabilities delta.
150062306a36Sopenharmony_ci    * - __u8
150162306a36Sopenharmony_ci      - ``tx16[2][2]``
150262306a36Sopenharmony_ci      - TX 16x16 probabilities delta.
150362306a36Sopenharmony_ci    * - __u8
150462306a36Sopenharmony_ci      - ``tx32[2][3]``
150562306a36Sopenharmony_ci      - TX 32x32 probabilities delta.
150662306a36Sopenharmony_ci    * - __u8
150762306a36Sopenharmony_ci      - ``coef[4][2][2][6][6][3]``
150862306a36Sopenharmony_ci      - Coefficient probabilities delta.
150962306a36Sopenharmony_ci    * - __u8
151062306a36Sopenharmony_ci      - ``skip[3]``
151162306a36Sopenharmony_ci      - Skip probabilities delta.
151262306a36Sopenharmony_ci    * - __u8
151362306a36Sopenharmony_ci      - ``inter_mode[7][3]``
151462306a36Sopenharmony_ci      - Inter prediction mode probabilities delta.
151562306a36Sopenharmony_ci    * - __u8
151662306a36Sopenharmony_ci      - ``interp_filter[4][2]``
151762306a36Sopenharmony_ci      - Interpolation filter probabilities delta.
151862306a36Sopenharmony_ci    * - __u8
151962306a36Sopenharmony_ci      - ``is_inter[4]``
152062306a36Sopenharmony_ci      - Is inter-block probabilities delta.
152162306a36Sopenharmony_ci    * - __u8
152262306a36Sopenharmony_ci      - ``comp_mode[5]``
152362306a36Sopenharmony_ci      - Compound prediction mode probabilities delta.
152462306a36Sopenharmony_ci    * - __u8
152562306a36Sopenharmony_ci      - ``single_ref[5][2]``
152662306a36Sopenharmony_ci      - Single reference probabilities delta.
152762306a36Sopenharmony_ci    * - __u8
152862306a36Sopenharmony_ci      - ``comp_ref[5]``
152962306a36Sopenharmony_ci      - Compound reference probabilities delta.
153062306a36Sopenharmony_ci    * - __u8
153162306a36Sopenharmony_ci      - ``y_mode[4][9]``
153262306a36Sopenharmony_ci      - Y prediction mode probabilities delta.
153362306a36Sopenharmony_ci    * - __u8
153462306a36Sopenharmony_ci      - ``uv_mode[10][9]``
153562306a36Sopenharmony_ci      - UV prediction mode probabilities delta.
153662306a36Sopenharmony_ci    * - __u8
153762306a36Sopenharmony_ci      - ``partition[16][3]``
153862306a36Sopenharmony_ci      - Partition probabilities delta.
153962306a36Sopenharmony_ci    * - __u8
154062306a36Sopenharmony_ci      - ``mv.joint[3]``
154162306a36Sopenharmony_ci      - Motion vector joint probabilities delta.
154262306a36Sopenharmony_ci    * - __u8
154362306a36Sopenharmony_ci      - ``mv.sign[2]``
154462306a36Sopenharmony_ci      - Motion vector sign probabilities delta.
154562306a36Sopenharmony_ci    * - __u8
154662306a36Sopenharmony_ci      - ``mv.classes[2][10]``
154762306a36Sopenharmony_ci      - Motion vector class probabilities delta.
154862306a36Sopenharmony_ci    * - __u8
154962306a36Sopenharmony_ci      - ``mv.class0_bit[2]``
155062306a36Sopenharmony_ci      - Motion vector class0 bit probabilities delta.
155162306a36Sopenharmony_ci    * - __u8
155262306a36Sopenharmony_ci      - ``mv.bits[2][10]``
155362306a36Sopenharmony_ci      - Motion vector bits probabilities delta.
155462306a36Sopenharmony_ci    * - __u8
155562306a36Sopenharmony_ci      - ``mv.class0_fr[2][2][3]``
155662306a36Sopenharmony_ci      - Motion vector class0 fractional bit probabilities delta.
155762306a36Sopenharmony_ci    * - __u8
155862306a36Sopenharmony_ci      - ``mv.fr[2][3]``
155962306a36Sopenharmony_ci      - Motion vector fractional bit probabilities delta.
156062306a36Sopenharmony_ci    * - __u8
156162306a36Sopenharmony_ci      - ``mv.class0_hp[2]``
156262306a36Sopenharmony_ci      - Motion vector class0 high precision fractional bit probabilities delta.
156362306a36Sopenharmony_ci    * - __u8
156462306a36Sopenharmony_ci      - ``mv.hp[2]``
156562306a36Sopenharmony_ci      - Motion vector high precision fractional bit probabilities delta.
156662306a36Sopenharmony_ci
156762306a36Sopenharmony_ci.. _vp9_tx_mode:
156862306a36Sopenharmony_ci
156962306a36Sopenharmony_ci``TX Mode``
157062306a36Sopenharmony_ci
157162306a36Sopenharmony_ci.. tabularcolumns:: |p{6.5cm}|p{0.5cm}|p{10.3cm}|
157262306a36Sopenharmony_ci
157362306a36Sopenharmony_ci.. flat-table::
157462306a36Sopenharmony_ci    :header-rows:  0
157562306a36Sopenharmony_ci    :stub-columns: 0
157662306a36Sopenharmony_ci    :widths:       1 1 2
157762306a36Sopenharmony_ci
157862306a36Sopenharmony_ci    * - ``V4L2_VP9_TX_MODE_ONLY_4X4``
157962306a36Sopenharmony_ci      - 0
158062306a36Sopenharmony_ci      - Transform size is 4x4.
158162306a36Sopenharmony_ci    * - ``V4L2_VP9_TX_MODE_ALLOW_8X8``
158262306a36Sopenharmony_ci      - 1
158362306a36Sopenharmony_ci      - Transform size can be up to 8x8.
158462306a36Sopenharmony_ci    * - ``V4L2_VP9_TX_MODE_ALLOW_16X16``
158562306a36Sopenharmony_ci      - 2
158662306a36Sopenharmony_ci      - Transform size can be up to 16x16.
158762306a36Sopenharmony_ci    * - ``V4L2_VP9_TX_MODE_ALLOW_32X32``
158862306a36Sopenharmony_ci      - 3
158962306a36Sopenharmony_ci      - transform size can be up to 32x32.
159062306a36Sopenharmony_ci    * - ``V4L2_VP9_TX_MODE_SELECT``
159162306a36Sopenharmony_ci      - 4
159262306a36Sopenharmony_ci      - Bitstream contains the transform size for each block.
159362306a36Sopenharmony_ci
159462306a36Sopenharmony_ciSee section '7.3.1 Tx mode semantics' of the :ref:`vp9` specification for more details.
159562306a36Sopenharmony_ci
159662306a36Sopenharmony_ci``V4L2_CID_STATELESS_VP9_FRAME (struct)``
159762306a36Sopenharmony_ci    Specifies the frame parameters for the associated VP9 frame decode request.
159862306a36Sopenharmony_ci    This includes the necessary parameters for configuring a stateless hardware
159962306a36Sopenharmony_ci    decoding pipeline for VP9. The bitstream parameters are defined according
160062306a36Sopenharmony_ci    to :ref:`vp9`.
160162306a36Sopenharmony_ci
160262306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_vp9_frame
160362306a36Sopenharmony_ci
160462306a36Sopenharmony_ci.. raw:: latex
160562306a36Sopenharmony_ci
160662306a36Sopenharmony_ci    \small
160762306a36Sopenharmony_ci
160862306a36Sopenharmony_ci.. tabularcolumns:: |p{4.7cm}|p{5.5cm}|p{7.1cm}|
160962306a36Sopenharmony_ci
161062306a36Sopenharmony_ci.. cssclass:: longtable
161162306a36Sopenharmony_ci
161262306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_vp9_frame
161362306a36Sopenharmony_ci    :header-rows:  0
161462306a36Sopenharmony_ci    :stub-columns: 0
161562306a36Sopenharmony_ci    :widths:       1 1 2
161662306a36Sopenharmony_ci
161762306a36Sopenharmony_ci    * - struct :c:type:`v4l2_vp9_loop_filter`
161862306a36Sopenharmony_ci      - ``lf``
161962306a36Sopenharmony_ci      - Loop filter parameters. See struct :c:type:`v4l2_vp9_loop_filter` for more details.
162062306a36Sopenharmony_ci    * - struct :c:type:`v4l2_vp9_quantization`
162162306a36Sopenharmony_ci      - ``quant``
162262306a36Sopenharmony_ci      - Quantization parameters. See :c:type:`v4l2_vp9_quantization` for more details.
162362306a36Sopenharmony_ci    * - struct :c:type:`v4l2_vp9_segmentation`
162462306a36Sopenharmony_ci      - ``seg``
162562306a36Sopenharmony_ci      - Segmentation parameters. See :c:type:`v4l2_vp9_segmentation` for more details.
162662306a36Sopenharmony_ci    * - __u32
162762306a36Sopenharmony_ci      - ``flags``
162862306a36Sopenharmony_ci      - Combination of V4L2_VP9_FRAME_FLAG_* flags. See :ref:`Frame Flags<vp9_frame_flags>`.
162962306a36Sopenharmony_ci    * - __u16
163062306a36Sopenharmony_ci      - ``compressed_header_size``
163162306a36Sopenharmony_ci      - Compressed header size in bytes.
163262306a36Sopenharmony_ci    * - __u16
163362306a36Sopenharmony_ci      - ``uncompressed_header_size``
163462306a36Sopenharmony_ci      - Uncompressed header size in bytes.
163562306a36Sopenharmony_ci    * - __u16
163662306a36Sopenharmony_ci      - ``frame_width_minus_1``
163762306a36Sopenharmony_ci      - Add 1 to get the frame width expressed in pixels. See section 7.2.3 in :ref:`vp9`.
163862306a36Sopenharmony_ci    * - __u16
163962306a36Sopenharmony_ci      - ``frame_height_minus_1``
164062306a36Sopenharmony_ci      - Add 1 to get the frame height expressed in pixels. See section 7.2.3 in :ref:`vp9`.
164162306a36Sopenharmony_ci    * - __u16
164262306a36Sopenharmony_ci      - ``render_width_minus_1``
164362306a36Sopenharmony_ci      - Add 1 to get the expected render width expressed in pixels. This is
164462306a36Sopenharmony_ci        not used during the decoding process but might be used by HW scalers to
164562306a36Sopenharmony_ci        prepare a frame that's ready for scanout. See section 7.2.4 in :ref:`vp9`.
164662306a36Sopenharmony_ci    * - __u16
164762306a36Sopenharmony_ci      - render_height_minus_1
164862306a36Sopenharmony_ci      - Add 1 to get the expected render height expressed in pixels. This is
164962306a36Sopenharmony_ci        not used during the decoding process but might be used by HW scalers to
165062306a36Sopenharmony_ci        prepare a frame that's ready for scanout. See section 7.2.4 in :ref:`vp9`.
165162306a36Sopenharmony_ci    * - __u64
165262306a36Sopenharmony_ci      - ``last_frame_ts``
165362306a36Sopenharmony_ci      - "last" reference buffer timestamp.
165462306a36Sopenharmony_ci	The timestamp refers to the ``timestamp`` field in
165562306a36Sopenharmony_ci        struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
165662306a36Sopenharmony_ci        function to convert the struct :c:type:`timeval` in struct
165762306a36Sopenharmony_ci        :c:type:`v4l2_buffer` to a __u64.
165862306a36Sopenharmony_ci    * - __u64
165962306a36Sopenharmony_ci      - ``golden_frame_ts``
166062306a36Sopenharmony_ci      - "golden" reference buffer timestamp.
166162306a36Sopenharmony_ci	The timestamp refers to the ``timestamp`` field in
166262306a36Sopenharmony_ci        struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
166362306a36Sopenharmony_ci        function to convert the struct :c:type:`timeval` in struct
166462306a36Sopenharmony_ci        :c:type:`v4l2_buffer` to a __u64.
166562306a36Sopenharmony_ci    * - __u64
166662306a36Sopenharmony_ci      - ``alt_frame_ts``
166762306a36Sopenharmony_ci      - "alt" reference buffer timestamp.
166862306a36Sopenharmony_ci	The timestamp refers to the ``timestamp`` field in
166962306a36Sopenharmony_ci        struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
167062306a36Sopenharmony_ci        function to convert the struct :c:type:`timeval` in struct
167162306a36Sopenharmony_ci        :c:type:`v4l2_buffer` to a __u64.
167262306a36Sopenharmony_ci    * - __u8
167362306a36Sopenharmony_ci      - ``ref_frame_sign_bias``
167462306a36Sopenharmony_ci      - a bitfield specifying whether the sign bias is set for a given
167562306a36Sopenharmony_ci        reference frame. See :ref:`Reference Frame Sign Bias<vp9_ref_frame_sign_bias>`
167662306a36Sopenharmony_ci        for more details.
167762306a36Sopenharmony_ci    * - __u8
167862306a36Sopenharmony_ci      - ``reset_frame_context``
167962306a36Sopenharmony_ci      - specifies whether the frame context should be reset to default values. See
168062306a36Sopenharmony_ci        :ref:`Reset Frame Context<vp9_reset_frame_context>` for more details.
168162306a36Sopenharmony_ci    * - __u8
168262306a36Sopenharmony_ci      - ``frame_context_idx``
168362306a36Sopenharmony_ci      - Frame context that should be used/updated.
168462306a36Sopenharmony_ci    * - __u8
168562306a36Sopenharmony_ci      - ``profile``
168662306a36Sopenharmony_ci      - VP9 profile. Can be 0, 1, 2 or 3.
168762306a36Sopenharmony_ci    * - __u8
168862306a36Sopenharmony_ci      - ``bit_depth``
168962306a36Sopenharmony_ci      - Component depth in bits. Can be 8, 10 or 12. Note that not all profiles
169062306a36Sopenharmony_ci        support 10 and/or 12 bits depths.
169162306a36Sopenharmony_ci    * - __u8
169262306a36Sopenharmony_ci      - ``interpolation_filter``
169362306a36Sopenharmony_ci      - Specifies the filter selection used for performing inter prediction. See
169462306a36Sopenharmony_ci        :ref:`Interpolation Filter<vp9_interpolation_filter>` for more details.
169562306a36Sopenharmony_ci    * - __u8
169662306a36Sopenharmony_ci      - ``tile_cols_log2``
169762306a36Sopenharmony_ci      - Specifies the base 2 logarithm of the width of each tile (where the
169862306a36Sopenharmony_ci        width is measured in units of 8x8 blocks). Shall be less than or equal
169962306a36Sopenharmony_ci        to 6.
170062306a36Sopenharmony_ci    * - __u8
170162306a36Sopenharmony_ci      - ``tile_rows_log2``
170262306a36Sopenharmony_ci      - Specifies the base 2 logarithm of the height of each tile (where the
170362306a36Sopenharmony_ci        height is measured in units of 8x8 blocks).
170462306a36Sopenharmony_ci    * - __u8
170562306a36Sopenharmony_ci      - ``reference_mode``
170662306a36Sopenharmony_ci      - Specifies the type of inter prediction to be used. See
170762306a36Sopenharmony_ci        :ref:`Reference Mode<vp9_reference_mode>` for more details. Note that
170862306a36Sopenharmony_ci	this is derived as part of the compressed header parsing process and
170962306a36Sopenharmony_ci	for this reason should have been part of
171062306a36Sopenharmony_ci	:c:type: `v4l2_ctrl_vp9_compressed_hdr` optional control. It is safe to
171162306a36Sopenharmony_ci	set this value to zero if the driver does not require compressed
171262306a36Sopenharmony_ci	headers.
171362306a36Sopenharmony_ci    * - __u8
171462306a36Sopenharmony_ci      - ``reserved[7]``
171562306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
171662306a36Sopenharmony_ci
171762306a36Sopenharmony_ci.. raw:: latex
171862306a36Sopenharmony_ci
171962306a36Sopenharmony_ci    \normalsize
172062306a36Sopenharmony_ci
172162306a36Sopenharmony_ci.. _vp9_frame_flags:
172262306a36Sopenharmony_ci
172362306a36Sopenharmony_ci``Frame Flags``
172462306a36Sopenharmony_ci
172562306a36Sopenharmony_ci.. tabularcolumns:: |p{10.0cm}|p{1.2cm}|p{6.1cm}|
172662306a36Sopenharmony_ci
172762306a36Sopenharmony_ci.. flat-table::
172862306a36Sopenharmony_ci    :header-rows:  0
172962306a36Sopenharmony_ci    :stub-columns: 0
173062306a36Sopenharmony_ci    :widths:       1 1 2
173162306a36Sopenharmony_ci
173262306a36Sopenharmony_ci    * - ``V4L2_VP9_FRAME_FLAG_KEY_FRAME``
173362306a36Sopenharmony_ci      - 0x001
173462306a36Sopenharmony_ci      - The frame is a key frame.
173562306a36Sopenharmony_ci    * - ``V4L2_VP9_FRAME_FLAG_SHOW_FRAME``
173662306a36Sopenharmony_ci      - 0x002
173762306a36Sopenharmony_ci      - The frame should be displayed.
173862306a36Sopenharmony_ci    * - ``V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT``
173962306a36Sopenharmony_ci      - 0x004
174062306a36Sopenharmony_ci      - The decoding should be error resilient.
174162306a36Sopenharmony_ci    * - ``V4L2_VP9_FRAME_FLAG_INTRA_ONLY``
174262306a36Sopenharmony_ci      - 0x008
174362306a36Sopenharmony_ci      - The frame does not reference other frames.
174462306a36Sopenharmony_ci    * - ``V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV``
174562306a36Sopenharmony_ci      - 0x010
174662306a36Sopenharmony_ci      - The frame can use high precision motion vectors.
174762306a36Sopenharmony_ci    * - ``V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX``
174862306a36Sopenharmony_ci      - 0x020
174962306a36Sopenharmony_ci      - Frame context should be updated after decoding.
175062306a36Sopenharmony_ci    * - ``V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE``
175162306a36Sopenharmony_ci      - 0x040
175262306a36Sopenharmony_ci      - Parallel decoding is used.
175362306a36Sopenharmony_ci    * - ``V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING``
175462306a36Sopenharmony_ci      - 0x080
175562306a36Sopenharmony_ci      - Vertical subsampling is enabled.
175662306a36Sopenharmony_ci    * - ``V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING``
175762306a36Sopenharmony_ci      - 0x100
175862306a36Sopenharmony_ci      - Horizontal subsampling is enabled.
175962306a36Sopenharmony_ci    * - ``V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING``
176062306a36Sopenharmony_ci      - 0x200
176162306a36Sopenharmony_ci      - The full UV range is used.
176262306a36Sopenharmony_ci
176362306a36Sopenharmony_ci.. _vp9_ref_frame_sign_bias:
176462306a36Sopenharmony_ci
176562306a36Sopenharmony_ci``Reference Frame Sign Bias``
176662306a36Sopenharmony_ci
176762306a36Sopenharmony_ci.. tabularcolumns:: |p{7.0cm}|p{1.2cm}|p{9.1cm}|
176862306a36Sopenharmony_ci
176962306a36Sopenharmony_ci.. flat-table::
177062306a36Sopenharmony_ci    :header-rows:  0
177162306a36Sopenharmony_ci    :stub-columns: 0
177262306a36Sopenharmony_ci    :widths:       1 1 2
177362306a36Sopenharmony_ci
177462306a36Sopenharmony_ci    * - ``V4L2_VP9_SIGN_BIAS_LAST``
177562306a36Sopenharmony_ci      - 0x1
177662306a36Sopenharmony_ci      - Sign bias is set for the last reference frame.
177762306a36Sopenharmony_ci    * - ``V4L2_VP9_SIGN_BIAS_GOLDEN``
177862306a36Sopenharmony_ci      - 0x2
177962306a36Sopenharmony_ci      - Sign bias is set for the golden reference frame.
178062306a36Sopenharmony_ci    * - ``V4L2_VP9_SIGN_BIAS_ALT``
178162306a36Sopenharmony_ci      - 0x2
178262306a36Sopenharmony_ci      - Sign bias is set for the alt reference frame.
178362306a36Sopenharmony_ci
178462306a36Sopenharmony_ci.. _vp9_reset_frame_context:
178562306a36Sopenharmony_ci
178662306a36Sopenharmony_ci``Reset Frame Context``
178762306a36Sopenharmony_ci
178862306a36Sopenharmony_ci.. tabularcolumns:: |p{7.0cm}|p{1.2cm}|p{9.1cm}|
178962306a36Sopenharmony_ci
179062306a36Sopenharmony_ci.. flat-table::
179162306a36Sopenharmony_ci    :header-rows:  0
179262306a36Sopenharmony_ci    :stub-columns: 0
179362306a36Sopenharmony_ci    :widths:       1 1 2
179462306a36Sopenharmony_ci
179562306a36Sopenharmony_ci    * - ``V4L2_VP9_RESET_FRAME_CTX_NONE``
179662306a36Sopenharmony_ci      - 0
179762306a36Sopenharmony_ci      - Do not reset any frame context.
179862306a36Sopenharmony_ci    * - ``V4L2_VP9_RESET_FRAME_CTX_SPEC``
179962306a36Sopenharmony_ci      - 1
180062306a36Sopenharmony_ci      - Reset the frame context pointed to by
180162306a36Sopenharmony_ci        :c:type:`v4l2_ctrl_vp9_frame`.frame_context_idx.
180262306a36Sopenharmony_ci    * - ``V4L2_VP9_RESET_FRAME_CTX_ALL``
180362306a36Sopenharmony_ci      - 2
180462306a36Sopenharmony_ci      - Reset all frame contexts.
180562306a36Sopenharmony_ci
180662306a36Sopenharmony_ciSee section '7.2 Uncompressed header semantics' of the :ref:`vp9` specification
180762306a36Sopenharmony_cifor more details.
180862306a36Sopenharmony_ci
180962306a36Sopenharmony_ci.. _vp9_interpolation_filter:
181062306a36Sopenharmony_ci
181162306a36Sopenharmony_ci``Interpolation Filter``
181262306a36Sopenharmony_ci
181362306a36Sopenharmony_ci.. tabularcolumns:: |p{9.0cm}|p{1.2cm}|p{7.1cm}|
181462306a36Sopenharmony_ci
181562306a36Sopenharmony_ci.. flat-table::
181662306a36Sopenharmony_ci    :header-rows:  0
181762306a36Sopenharmony_ci    :stub-columns: 0
181862306a36Sopenharmony_ci    :widths:       1 1 2
181962306a36Sopenharmony_ci
182062306a36Sopenharmony_ci    * - ``V4L2_VP9_INTERP_FILTER_EIGHTTAP``
182162306a36Sopenharmony_ci      - 0
182262306a36Sopenharmony_ci      - Eight tap filter.
182362306a36Sopenharmony_ci    * - ``V4L2_VP9_INTERP_FILTER_EIGHTTAP_SMOOTH``
182462306a36Sopenharmony_ci      - 1
182562306a36Sopenharmony_ci      - Eight tap smooth filter.
182662306a36Sopenharmony_ci    * - ``V4L2_VP9_INTERP_FILTER_EIGHTTAP_SHARP``
182762306a36Sopenharmony_ci      - 2
182862306a36Sopenharmony_ci      - Eeight tap sharp filter.
182962306a36Sopenharmony_ci    * - ``V4L2_VP9_INTERP_FILTER_BILINEAR``
183062306a36Sopenharmony_ci      - 3
183162306a36Sopenharmony_ci      - Bilinear filter.
183262306a36Sopenharmony_ci    * - ``V4L2_VP9_INTERP_FILTER_SWITCHABLE``
183362306a36Sopenharmony_ci      - 4
183462306a36Sopenharmony_ci      - Filter selection is signaled at the block level.
183562306a36Sopenharmony_ci
183662306a36Sopenharmony_ciSee section '7.2.7 Interpolation filter semantics' of the :ref:`vp9` specification
183762306a36Sopenharmony_cifor more details.
183862306a36Sopenharmony_ci
183962306a36Sopenharmony_ci.. _vp9_reference_mode:
184062306a36Sopenharmony_ci
184162306a36Sopenharmony_ci``Reference Mode``
184262306a36Sopenharmony_ci
184362306a36Sopenharmony_ci.. tabularcolumns:: |p{9.6cm}|p{0.5cm}|p{7.2cm}|
184462306a36Sopenharmony_ci
184562306a36Sopenharmony_ci.. flat-table::
184662306a36Sopenharmony_ci    :header-rows:  0
184762306a36Sopenharmony_ci    :stub-columns: 0
184862306a36Sopenharmony_ci    :widths:       1 1 2
184962306a36Sopenharmony_ci
185062306a36Sopenharmony_ci    * - ``V4L2_VP9_REFERENCE_MODE_SINGLE_REFERENCE``
185162306a36Sopenharmony_ci      - 0
185262306a36Sopenharmony_ci      - Indicates that all the inter blocks use only a single reference frame
185362306a36Sopenharmony_ci        to generate motion compensated prediction.
185462306a36Sopenharmony_ci    * - ``V4L2_VP9_REFERENCE_MODE_COMPOUND_REFERENCE``
185562306a36Sopenharmony_ci      - 1
185662306a36Sopenharmony_ci      - Requires all the inter blocks to use compound mode. Single reference
185762306a36Sopenharmony_ci        frame prediction is not allowed.
185862306a36Sopenharmony_ci    * - ``V4L2_VP9_REFERENCE_MODE_SELECT``
185962306a36Sopenharmony_ci      - 2
186062306a36Sopenharmony_ci      - Allows each individual inter block to select between single and
186162306a36Sopenharmony_ci        compound prediction modes.
186262306a36Sopenharmony_ci
186362306a36Sopenharmony_ciSee section '7.3.6 Frame reference mode semantics' of the :ref:`vp9` specification for more details.
186462306a36Sopenharmony_ci
186562306a36Sopenharmony_ci.. c:type:: v4l2_vp9_segmentation
186662306a36Sopenharmony_ci
186762306a36Sopenharmony_ciEncodes the quantization parameters. See section '7.2.10 Segmentation
186862306a36Sopenharmony_ciparams syntax' of the :ref:`vp9` specification for more details.
186962306a36Sopenharmony_ci
187062306a36Sopenharmony_ci.. tabularcolumns:: |p{0.8cm}|p{5cm}|p{11.4cm}|
187162306a36Sopenharmony_ci
187262306a36Sopenharmony_ci.. cssclass:: longtable
187362306a36Sopenharmony_ci
187462306a36Sopenharmony_ci.. flat-table:: struct v4l2_vp9_segmentation
187562306a36Sopenharmony_ci    :header-rows:  0
187662306a36Sopenharmony_ci    :stub-columns: 0
187762306a36Sopenharmony_ci    :widths:       1 1 2
187862306a36Sopenharmony_ci
187962306a36Sopenharmony_ci    * - __u8
188062306a36Sopenharmony_ci      - ``feature_data[8][4]``
188162306a36Sopenharmony_ci      - Data attached to each feature. Data entry is only valid if the feature
188262306a36Sopenharmony_ci        is enabled. The array shall be indexed with segment number as the first dimension
188362306a36Sopenharmony_ci        (0..7) and one of V4L2_VP9_SEG_* as the second dimension.
188462306a36Sopenharmony_ci        See :ref:`Segment Feature IDs<vp9_segment_feature>`.
188562306a36Sopenharmony_ci    * - __u8
188662306a36Sopenharmony_ci      - ``feature_enabled[8]``
188762306a36Sopenharmony_ci      - Bitmask defining which features are enabled in each segment. The value for each
188862306a36Sopenharmony_ci        segment is a combination of V4L2_VP9_SEGMENT_FEATURE_ENABLED(id) values where id is
188962306a36Sopenharmony_ci        one of V4L2_VP9_SEG_*. See :ref:`Segment Feature IDs<vp9_segment_feature>`.
189062306a36Sopenharmony_ci    * - __u8
189162306a36Sopenharmony_ci      - ``tree_probs[7]``
189262306a36Sopenharmony_ci      - Specifies the probability values to be used when decoding a Segment-ID.
189362306a36Sopenharmony_ci        See '5.15 Segmentation map' section of :ref:`vp9` for more details.
189462306a36Sopenharmony_ci    * - __u8
189562306a36Sopenharmony_ci      - ``pred_probs[3]``
189662306a36Sopenharmony_ci      - Specifies the probability values to be used when decoding a
189762306a36Sopenharmony_ci        Predicted-Segment-ID. See '6.4.14 Get segment id syntax'
189862306a36Sopenharmony_ci        section of :ref:`vp9` for more details.
189962306a36Sopenharmony_ci    * - __u8
190062306a36Sopenharmony_ci      - ``flags``
190162306a36Sopenharmony_ci      - Combination of V4L2_VP9_SEGMENTATION_FLAG_* flags. See
190262306a36Sopenharmony_ci        :ref:`Segmentation Flags<vp9_segmentation_flags>`.
190362306a36Sopenharmony_ci    * - __u8
190462306a36Sopenharmony_ci      - ``reserved[5]``
190562306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
190662306a36Sopenharmony_ci
190762306a36Sopenharmony_ci.. _vp9_segment_feature:
190862306a36Sopenharmony_ci
190962306a36Sopenharmony_ci``Segment feature IDs``
191062306a36Sopenharmony_ci
191162306a36Sopenharmony_ci.. tabularcolumns:: |p{6.0cm}|p{1cm}|p{10.3cm}|
191262306a36Sopenharmony_ci
191362306a36Sopenharmony_ci.. flat-table::
191462306a36Sopenharmony_ci    :header-rows:  0
191562306a36Sopenharmony_ci    :stub-columns: 0
191662306a36Sopenharmony_ci    :widths:       1 1 2
191762306a36Sopenharmony_ci
191862306a36Sopenharmony_ci    * - ``V4L2_VP9_SEG_LVL_ALT_Q``
191962306a36Sopenharmony_ci      - 0
192062306a36Sopenharmony_ci      - Quantizer segment feature.
192162306a36Sopenharmony_ci    * - ``V4L2_VP9_SEG_LVL_ALT_L``
192262306a36Sopenharmony_ci      - 1
192362306a36Sopenharmony_ci      - Loop filter segment feature.
192462306a36Sopenharmony_ci    * - ``V4L2_VP9_SEG_LVL_REF_FRAME``
192562306a36Sopenharmony_ci      - 2
192662306a36Sopenharmony_ci      - Reference frame segment feature.
192762306a36Sopenharmony_ci    * - ``V4L2_VP9_SEG_LVL_SKIP``
192862306a36Sopenharmony_ci      - 3
192962306a36Sopenharmony_ci      - Skip segment feature.
193062306a36Sopenharmony_ci    * - ``V4L2_VP9_SEG_LVL_MAX``
193162306a36Sopenharmony_ci      - 4
193262306a36Sopenharmony_ci      - Number of segment features.
193362306a36Sopenharmony_ci
193462306a36Sopenharmony_ci.. _vp9_segmentation_flags:
193562306a36Sopenharmony_ci
193662306a36Sopenharmony_ci``Segmentation Flags``
193762306a36Sopenharmony_ci
193862306a36Sopenharmony_ci.. tabularcolumns:: |p{10.6cm}|p{0.8cm}|p{5.9cm}|
193962306a36Sopenharmony_ci
194062306a36Sopenharmony_ci.. flat-table::
194162306a36Sopenharmony_ci    :header-rows:  0
194262306a36Sopenharmony_ci    :stub-columns: 0
194362306a36Sopenharmony_ci    :widths:       1 1 2
194462306a36Sopenharmony_ci
194562306a36Sopenharmony_ci    * - ``V4L2_VP9_SEGMENTATION_FLAG_ENABLED``
194662306a36Sopenharmony_ci      - 0x01
194762306a36Sopenharmony_ci      - Indicates that this frame makes use of the segmentation tool.
194862306a36Sopenharmony_ci    * - ``V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP``
194962306a36Sopenharmony_ci      - 0x02
195062306a36Sopenharmony_ci      - Indicates that the segmentation map should be updated during the
195162306a36Sopenharmony_ci        decoding of this frame.
195262306a36Sopenharmony_ci    * - ``V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE``
195362306a36Sopenharmony_ci      - 0x04
195462306a36Sopenharmony_ci      - Indicates that the updates to the segmentation map are coded
195562306a36Sopenharmony_ci        relative to the existing segmentation map.
195662306a36Sopenharmony_ci    * - ``V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA``
195762306a36Sopenharmony_ci      - 0x08
195862306a36Sopenharmony_ci      - Indicates that new parameters are about to be specified for each
195962306a36Sopenharmony_ci        segment.
196062306a36Sopenharmony_ci    * - ``V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE``
196162306a36Sopenharmony_ci      - 0x10
196262306a36Sopenharmony_ci      - Indicates that the segmentation parameters represent the actual values
196362306a36Sopenharmony_ci        to be used.
196462306a36Sopenharmony_ci
196562306a36Sopenharmony_ci.. c:type:: v4l2_vp9_quantization
196662306a36Sopenharmony_ci
196762306a36Sopenharmony_ciEncodes the quantization parameters. See section '7.2.9 Quantization params
196862306a36Sopenharmony_cisyntax' of the VP9 specification for more details.
196962306a36Sopenharmony_ci
197062306a36Sopenharmony_ci.. tabularcolumns:: |p{0.8cm}|p{4cm}|p{12.4cm}|
197162306a36Sopenharmony_ci
197262306a36Sopenharmony_ci.. cssclass:: longtable
197362306a36Sopenharmony_ci
197462306a36Sopenharmony_ci.. flat-table:: struct v4l2_vp9_quantization
197562306a36Sopenharmony_ci    :header-rows:  0
197662306a36Sopenharmony_ci    :stub-columns: 0
197762306a36Sopenharmony_ci    :widths:       1 1 2
197862306a36Sopenharmony_ci
197962306a36Sopenharmony_ci    * - __u8
198062306a36Sopenharmony_ci      - ``base_q_idx``
198162306a36Sopenharmony_ci      - Indicates the base frame qindex.
198262306a36Sopenharmony_ci    * - __s8
198362306a36Sopenharmony_ci      - ``delta_q_y_dc``
198462306a36Sopenharmony_ci      - Indicates the Y DC quantizer relative to base_q_idx.
198562306a36Sopenharmony_ci    * - __s8
198662306a36Sopenharmony_ci      - ``delta_q_uv_dc``
198762306a36Sopenharmony_ci      - Indicates the UV DC quantizer relative to base_q_idx.
198862306a36Sopenharmony_ci    * - __s8
198962306a36Sopenharmony_ci      - ``delta_q_uv_ac``
199062306a36Sopenharmony_ci      - Indicates the UV AC quantizer relative to base_q_idx.
199162306a36Sopenharmony_ci    * - __u8
199262306a36Sopenharmony_ci      - ``reserved[4]``
199362306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
199462306a36Sopenharmony_ci
199562306a36Sopenharmony_ci.. c:type:: v4l2_vp9_loop_filter
199662306a36Sopenharmony_ci
199762306a36Sopenharmony_ciThis structure contains all loop filter related parameters. See sections
199862306a36Sopenharmony_ci'7.2.8 Loop filter semantics' of the :ref:`vp9` specification for more details.
199962306a36Sopenharmony_ci
200062306a36Sopenharmony_ci.. tabularcolumns:: |p{0.8cm}|p{4cm}|p{12.4cm}|
200162306a36Sopenharmony_ci
200262306a36Sopenharmony_ci.. cssclass:: longtable
200362306a36Sopenharmony_ci
200462306a36Sopenharmony_ci.. flat-table:: struct v4l2_vp9_loop_filter
200562306a36Sopenharmony_ci    :header-rows:  0
200662306a36Sopenharmony_ci    :stub-columns: 0
200762306a36Sopenharmony_ci    :widths:       1 1 2
200862306a36Sopenharmony_ci
200962306a36Sopenharmony_ci    * - __s8
201062306a36Sopenharmony_ci      - ``ref_deltas[4]``
201162306a36Sopenharmony_ci      - Contains the adjustment needed for the filter level based on the chosen
201262306a36Sopenharmony_ci        reference frame.
201362306a36Sopenharmony_ci    * - __s8
201462306a36Sopenharmony_ci      - ``mode_deltas[2]``
201562306a36Sopenharmony_ci      - Contains the adjustment needed for the filter level based on the chosen
201662306a36Sopenharmony_ci        mode.
201762306a36Sopenharmony_ci    * - __u8
201862306a36Sopenharmony_ci      - ``level``
201962306a36Sopenharmony_ci      - Indicates the loop filter strength.
202062306a36Sopenharmony_ci    * - __u8
202162306a36Sopenharmony_ci      - ``sharpness``
202262306a36Sopenharmony_ci      - Indicates the sharpness level.
202362306a36Sopenharmony_ci    * - __u8
202462306a36Sopenharmony_ci      - ``flags``
202562306a36Sopenharmony_ci      - Combination of V4L2_VP9_LOOP_FILTER_FLAG_* flags.
202662306a36Sopenharmony_ci        See :ref:`Loop Filter Flags <vp9_loop_filter_flags>`.
202762306a36Sopenharmony_ci    * - __u8
202862306a36Sopenharmony_ci      - ``reserved[7]``
202962306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
203062306a36Sopenharmony_ci
203162306a36Sopenharmony_ci
203262306a36Sopenharmony_ci.. _vp9_loop_filter_flags:
203362306a36Sopenharmony_ci
203462306a36Sopenharmony_ci``Loop Filter Flags``
203562306a36Sopenharmony_ci
203662306a36Sopenharmony_ci.. tabularcolumns:: |p{9.6cm}|p{0.5cm}|p{7.2cm}|
203762306a36Sopenharmony_ci
203862306a36Sopenharmony_ci.. flat-table::
203962306a36Sopenharmony_ci    :header-rows:  0
204062306a36Sopenharmony_ci    :stub-columns: 0
204162306a36Sopenharmony_ci    :widths:       1 1 2
204262306a36Sopenharmony_ci
204362306a36Sopenharmony_ci    * - ``V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED``
204462306a36Sopenharmony_ci      - 0x1
204562306a36Sopenharmony_ci      - When set, the filter level depends on the mode and reference frame used
204662306a36Sopenharmony_ci        to predict a block.
204762306a36Sopenharmony_ci    * - ``V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE``
204862306a36Sopenharmony_ci      - 0x2
204962306a36Sopenharmony_ci      - When set, the bitstream contains additional syntax elements that
205062306a36Sopenharmony_ci        specify which mode and reference frame deltas are to be updated.
205162306a36Sopenharmony_ci
205262306a36Sopenharmony_ci.. _v4l2-codec-stateless-hevc:
205362306a36Sopenharmony_ci
205462306a36Sopenharmony_ci``V4L2_CID_STATELESS_HEVC_SPS (struct)``
205562306a36Sopenharmony_ci    Specifies the Sequence Parameter Set fields (as extracted from the
205662306a36Sopenharmony_ci    bitstream) for the associated HEVC slice data.
205762306a36Sopenharmony_ci    These bitstream parameters are defined according to :ref:`hevc`.
205862306a36Sopenharmony_ci    They are described in section 7.4.3.2 "Sequence parameter set RBSP
205962306a36Sopenharmony_ci    semantics" of the specification.
206062306a36Sopenharmony_ci
206162306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_hevc_sps
206262306a36Sopenharmony_ci
206362306a36Sopenharmony_ci.. raw:: latex
206462306a36Sopenharmony_ci
206562306a36Sopenharmony_ci    \small
206662306a36Sopenharmony_ci
206762306a36Sopenharmony_ci.. tabularcolumns:: |p{1.2cm}|p{9.2cm}|p{6.9cm}|
206862306a36Sopenharmony_ci
206962306a36Sopenharmony_ci.. cssclass:: longtable
207062306a36Sopenharmony_ci
207162306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_hevc_sps
207262306a36Sopenharmony_ci    :header-rows:  0
207362306a36Sopenharmony_ci    :stub-columns: 0
207462306a36Sopenharmony_ci    :widths:       1 1 2
207562306a36Sopenharmony_ci
207662306a36Sopenharmony_ci    * - __u8
207762306a36Sopenharmony_ci      - ``video_parameter_set_id``
207862306a36Sopenharmony_ci      - Specifies the value of the vps_video_parameter_set_id of the active VPS
207962306a36Sopenharmony_ci        as described in section "7.4.3.2.1 General sequence parameter set RBSP semantics"
208062306a36Sopenharmony_ci        of H.265 specifications.
208162306a36Sopenharmony_ci    * - __u8
208262306a36Sopenharmony_ci      - ``seq_parameter_set_id``
208362306a36Sopenharmony_ci      - Provides an identifier for the SPS for reference by other syntax elements
208462306a36Sopenharmony_ci        as described in section "7.4.3.2.1 General sequence parameter set RBSP semantics"
208562306a36Sopenharmony_ci        of H.265 specifications.
208662306a36Sopenharmony_ci    * - __u16
208762306a36Sopenharmony_ci      - ``pic_width_in_luma_samples``
208862306a36Sopenharmony_ci      - Specifies the width of each decoded picture in units of luma samples.
208962306a36Sopenharmony_ci    * - __u16
209062306a36Sopenharmony_ci      - ``pic_height_in_luma_samples``
209162306a36Sopenharmony_ci      - Specifies the height of each decoded picture in units of luma samples.
209262306a36Sopenharmony_ci    * - __u8
209362306a36Sopenharmony_ci      - ``bit_depth_luma_minus8``
209462306a36Sopenharmony_ci      - This value plus 8 specifies the bit depth of the samples of the luma array.
209562306a36Sopenharmony_ci    * - __u8
209662306a36Sopenharmony_ci      - ``bit_depth_chroma_minus8``
209762306a36Sopenharmony_ci      - This value plus 8 specifies the bit depth of the samples of the chroma arrays.
209862306a36Sopenharmony_ci    * - __u8
209962306a36Sopenharmony_ci      - ``log2_max_pic_order_cnt_lsb_minus4``
210062306a36Sopenharmony_ci      - Specifies the value of the variable MaxPicOrderCntLsb.
210162306a36Sopenharmony_ci    * - __u8
210262306a36Sopenharmony_ci      - ``sps_max_dec_pic_buffering_minus1``
210362306a36Sopenharmony_ci      - This value plus 1 specifies the maximum required size of the decoded picture buffer for
210462306a36Sopenharmony_ci        the coded video sequence (CVS).
210562306a36Sopenharmony_ci    * - __u8
210662306a36Sopenharmony_ci      - ``sps_max_num_reorder_pics``
210762306a36Sopenharmony_ci      - Indicates the maximum allowed number of pictures.
210862306a36Sopenharmony_ci    * - __u8
210962306a36Sopenharmony_ci      - ``sps_max_latency_increase_plus1``
211062306a36Sopenharmony_ci      - Used to signal MaxLatencyPictures, which indicates the maximum number of
211162306a36Sopenharmony_ci        pictures that can precede any picture in output order and follow that
211262306a36Sopenharmony_ci        picture in decoding order.
211362306a36Sopenharmony_ci    * - __u8
211462306a36Sopenharmony_ci      - ``log2_min_luma_coding_block_size_minus3``
211562306a36Sopenharmony_ci      - This value plus 3 specifies the minimum luma coding block size.
211662306a36Sopenharmony_ci    * - __u8
211762306a36Sopenharmony_ci      - ``log2_diff_max_min_luma_coding_block_size``
211862306a36Sopenharmony_ci      - Specifies the difference between the maximum and minimum luma coding block size.
211962306a36Sopenharmony_ci    * - __u8
212062306a36Sopenharmony_ci      - ``log2_min_luma_transform_block_size_minus2``
212162306a36Sopenharmony_ci      - This value plus 2 specifies the minimum luma transform block size.
212262306a36Sopenharmony_ci    * - __u8
212362306a36Sopenharmony_ci      - ``log2_diff_max_min_luma_transform_block_size``
212462306a36Sopenharmony_ci      - Specifies the difference between the maximum and minimum luma transform block size.
212562306a36Sopenharmony_ci    * - __u8
212662306a36Sopenharmony_ci      - ``max_transform_hierarchy_depth_inter``
212762306a36Sopenharmony_ci      - Specifies the maximum hierarchy depth for transform units of coding units coded
212862306a36Sopenharmony_ci        in inter prediction mode.
212962306a36Sopenharmony_ci    * - __u8
213062306a36Sopenharmony_ci      - ``max_transform_hierarchy_depth_intra``
213162306a36Sopenharmony_ci      - Specifies the maximum hierarchy depth for transform units of coding units coded in
213262306a36Sopenharmony_ci        intra prediction mode.
213362306a36Sopenharmony_ci    * - __u8
213462306a36Sopenharmony_ci      - ``pcm_sample_bit_depth_luma_minus1``
213562306a36Sopenharmony_ci      - This value plus 1 specifies the number of bits used to represent each of PCM sample values of the
213662306a36Sopenharmony_ci        luma component.
213762306a36Sopenharmony_ci    * - __u8
213862306a36Sopenharmony_ci      - ``pcm_sample_bit_depth_chroma_minus1``
213962306a36Sopenharmony_ci      - Specifies the number of bits used to represent each of PCM sample values of
214062306a36Sopenharmony_ci        the chroma components.
214162306a36Sopenharmony_ci    * - __u8
214262306a36Sopenharmony_ci      - ``log2_min_pcm_luma_coding_block_size_minus3``
214362306a36Sopenharmony_ci      - Plus 3 specifies the minimum size of coding blocks.
214462306a36Sopenharmony_ci    * - __u8
214562306a36Sopenharmony_ci      - ``log2_diff_max_min_pcm_luma_coding_block_size``
214662306a36Sopenharmony_ci      - Specifies the difference between the maximum and minimum size of coding blocks.
214762306a36Sopenharmony_ci    * - __u8
214862306a36Sopenharmony_ci      - ``num_short_term_ref_pic_sets``
214962306a36Sopenharmony_ci      - Specifies the number of st_ref_pic_set() syntax structures included in the SPS.
215062306a36Sopenharmony_ci    * - __u8
215162306a36Sopenharmony_ci      - ``num_long_term_ref_pics_sps``
215262306a36Sopenharmony_ci      - Specifies the number of candidate long-term reference pictures that are
215362306a36Sopenharmony_ci        specified in the SPS.
215462306a36Sopenharmony_ci    * - __u8
215562306a36Sopenharmony_ci      - ``chroma_format_idc``
215662306a36Sopenharmony_ci      - Specifies the chroma sampling.
215762306a36Sopenharmony_ci    * - __u8
215862306a36Sopenharmony_ci      - ``sps_max_sub_layers_minus1``
215962306a36Sopenharmony_ci      - This value plus 1 specifies the maximum number of temporal sub-layers.
216062306a36Sopenharmony_ci    * - __u64
216162306a36Sopenharmony_ci      - ``flags``
216262306a36Sopenharmony_ci      - See :ref:`Sequence Parameter Set Flags <hevc_sps_flags>`
216362306a36Sopenharmony_ci
216462306a36Sopenharmony_ci.. raw:: latex
216562306a36Sopenharmony_ci
216662306a36Sopenharmony_ci    \normalsize
216762306a36Sopenharmony_ci
216862306a36Sopenharmony_ci.. _hevc_sps_flags:
216962306a36Sopenharmony_ci
217062306a36Sopenharmony_ci``Sequence Parameter Set Flags``
217162306a36Sopenharmony_ci
217262306a36Sopenharmony_ci.. raw:: latex
217362306a36Sopenharmony_ci
217462306a36Sopenharmony_ci    \small
217562306a36Sopenharmony_ci
217662306a36Sopenharmony_ci.. cssclass:: longtable
217762306a36Sopenharmony_ci
217862306a36Sopenharmony_ci.. flat-table::
217962306a36Sopenharmony_ci    :header-rows:  0
218062306a36Sopenharmony_ci    :stub-columns: 0
218162306a36Sopenharmony_ci    :widths:       1 1 2
218262306a36Sopenharmony_ci
218362306a36Sopenharmony_ci    * - ``V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE``
218462306a36Sopenharmony_ci      - 0x00000001
218562306a36Sopenharmony_ci      -
218662306a36Sopenharmony_ci    * - ``V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED``
218762306a36Sopenharmony_ci      - 0x00000002
218862306a36Sopenharmony_ci      -
218962306a36Sopenharmony_ci    * - ``V4L2_HEVC_SPS_FLAG_AMP_ENABLED``
219062306a36Sopenharmony_ci      - 0x00000004
219162306a36Sopenharmony_ci      -
219262306a36Sopenharmony_ci    * - ``V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET``
219362306a36Sopenharmony_ci      - 0x00000008
219462306a36Sopenharmony_ci      -
219562306a36Sopenharmony_ci    * - ``V4L2_HEVC_SPS_FLAG_PCM_ENABLED``
219662306a36Sopenharmony_ci      - 0x00000010
219762306a36Sopenharmony_ci      -
219862306a36Sopenharmony_ci    * - ``V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED``
219962306a36Sopenharmony_ci      - 0x00000020
220062306a36Sopenharmony_ci      -
220162306a36Sopenharmony_ci    * - ``V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT``
220262306a36Sopenharmony_ci      - 0x00000040
220362306a36Sopenharmony_ci      -
220462306a36Sopenharmony_ci    * - ``V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED``
220562306a36Sopenharmony_ci      - 0x00000080
220662306a36Sopenharmony_ci      -
220762306a36Sopenharmony_ci    * - ``V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED``
220862306a36Sopenharmony_ci      - 0x00000100
220962306a36Sopenharmony_ci      -
221062306a36Sopenharmony_ci
221162306a36Sopenharmony_ci.. raw:: latex
221262306a36Sopenharmony_ci
221362306a36Sopenharmony_ci    \normalsize
221462306a36Sopenharmony_ci
221562306a36Sopenharmony_ci``V4L2_CID_STATELESS_HEVC_PPS (struct)``
221662306a36Sopenharmony_ci    Specifies the Picture Parameter Set fields (as extracted from the
221762306a36Sopenharmony_ci    bitstream) for the associated HEVC slice data.
221862306a36Sopenharmony_ci    These bitstream parameters are defined according to :ref:`hevc`.
221962306a36Sopenharmony_ci    They are described in section 7.4.3.3 "Picture parameter set RBSP
222062306a36Sopenharmony_ci    semantics" of the specification.
222162306a36Sopenharmony_ci
222262306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_hevc_pps
222362306a36Sopenharmony_ci
222462306a36Sopenharmony_ci.. tabularcolumns:: |p{1.2cm}|p{8.6cm}|p{7.5cm}|
222562306a36Sopenharmony_ci
222662306a36Sopenharmony_ci.. cssclass:: longtable
222762306a36Sopenharmony_ci
222862306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_hevc_pps
222962306a36Sopenharmony_ci    :header-rows:  0
223062306a36Sopenharmony_ci    :stub-columns: 0
223162306a36Sopenharmony_ci    :widths:       1 1 2
223262306a36Sopenharmony_ci
223362306a36Sopenharmony_ci    * - __u8
223462306a36Sopenharmony_ci      - ``pic_parameter_set_id``
223562306a36Sopenharmony_ci      - Identifies the PPS for reference by other syntax elements.
223662306a36Sopenharmony_ci    * - __u8
223762306a36Sopenharmony_ci      - ``num_extra_slice_header_bits``
223862306a36Sopenharmony_ci      - Specifies the number of extra slice header bits that are present
223962306a36Sopenharmony_ci        in the slice header RBSP for coded pictures referring to the PPS.
224062306a36Sopenharmony_ci    * - __u8
224162306a36Sopenharmony_ci      - ``num_ref_idx_l0_default_active_minus1``
224262306a36Sopenharmony_ci      - This value plus 1 specifies the inferred value of num_ref_idx_l0_active_minus1.
224362306a36Sopenharmony_ci    * - __u8
224462306a36Sopenharmony_ci      - ``num_ref_idx_l1_default_active_minus1``
224562306a36Sopenharmony_ci      - This value plus 1 specifies the inferred value of num_ref_idx_l1_active_minus1.
224662306a36Sopenharmony_ci    * - __s8
224762306a36Sopenharmony_ci      - ``init_qp_minus26``
224862306a36Sopenharmony_ci      - This value plus 26 specifies the initial value of SliceQp Y for each slice
224962306a36Sopenharmony_ci        referring to the PPS.
225062306a36Sopenharmony_ci    * - __u8
225162306a36Sopenharmony_ci      - ``diff_cu_qp_delta_depth``
225262306a36Sopenharmony_ci      - Specifies the difference between the luma coding tree block size
225362306a36Sopenharmony_ci        and the minimum luma coding block size of coding units that
225462306a36Sopenharmony_ci        convey cu_qp_delta_abs and cu_qp_delta_sign_flag.
225562306a36Sopenharmony_ci    * - __s8
225662306a36Sopenharmony_ci      - ``pps_cb_qp_offset``
225762306a36Sopenharmony_ci      - Specifies the offsets to the luma quantization parameter Cb.
225862306a36Sopenharmony_ci    * - __s8
225962306a36Sopenharmony_ci      - ``pps_cr_qp_offset``
226062306a36Sopenharmony_ci      - Specifies the offsets to the luma quantization parameter Cr.
226162306a36Sopenharmony_ci    * - __u8
226262306a36Sopenharmony_ci      - ``num_tile_columns_minus1``
226362306a36Sopenharmony_ci      - This value plus 1 specifies the number of tile columns partitioning the picture.
226462306a36Sopenharmony_ci    * - __u8
226562306a36Sopenharmony_ci      - ``num_tile_rows_minus1``
226662306a36Sopenharmony_ci      - This value plus 1 specifies the number of tile rows partitioning the picture.
226762306a36Sopenharmony_ci    * - __u8
226862306a36Sopenharmony_ci      - ``column_width_minus1[20]``
226962306a36Sopenharmony_ci      - This value plus 1 specifies the width of the i-th tile column in units of
227062306a36Sopenharmony_ci        coding tree blocks.
227162306a36Sopenharmony_ci    * - __u8
227262306a36Sopenharmony_ci      - ``row_height_minus1[22]``
227362306a36Sopenharmony_ci      - This value plus 1 specifies the height of the i-th tile row in units of coding
227462306a36Sopenharmony_ci        tree blocks.
227562306a36Sopenharmony_ci    * - __s8
227662306a36Sopenharmony_ci      - ``pps_beta_offset_div2``
227762306a36Sopenharmony_ci      - Specifies the default deblocking parameter offsets for beta divided by 2.
227862306a36Sopenharmony_ci    * - __s8
227962306a36Sopenharmony_ci      - ``pps_tc_offset_div2``
228062306a36Sopenharmony_ci      - Specifies the default deblocking parameter offsets for tC divided by 2.
228162306a36Sopenharmony_ci    * - __u8
228262306a36Sopenharmony_ci      - ``log2_parallel_merge_level_minus2``
228362306a36Sopenharmony_ci      - This value plus 2 specifies the value of the variable Log2ParMrgLevel.
228462306a36Sopenharmony_ci    * - __u8
228562306a36Sopenharmony_ci      - ``padding[4]``
228662306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
228762306a36Sopenharmony_ci    * - __u64
228862306a36Sopenharmony_ci      - ``flags``
228962306a36Sopenharmony_ci      - See :ref:`Picture Parameter Set Flags <hevc_pps_flags>`
229062306a36Sopenharmony_ci
229162306a36Sopenharmony_ci.. _hevc_pps_flags:
229262306a36Sopenharmony_ci
229362306a36Sopenharmony_ci``Picture Parameter Set Flags``
229462306a36Sopenharmony_ci
229562306a36Sopenharmony_ci.. raw:: latex
229662306a36Sopenharmony_ci
229762306a36Sopenharmony_ci    \small
229862306a36Sopenharmony_ci
229962306a36Sopenharmony_ci.. flat-table::
230062306a36Sopenharmony_ci    :header-rows:  0
230162306a36Sopenharmony_ci    :stub-columns: 0
230262306a36Sopenharmony_ci    :widths:       1 1 2
230362306a36Sopenharmony_ci
230462306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED``
230562306a36Sopenharmony_ci      - 0x00000001
230662306a36Sopenharmony_ci      -
230762306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT``
230862306a36Sopenharmony_ci      - 0x00000002
230962306a36Sopenharmony_ci      -
231062306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED``
231162306a36Sopenharmony_ci      - 0x00000004
231262306a36Sopenharmony_ci      -
231362306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT``
231462306a36Sopenharmony_ci      - 0x00000008
231562306a36Sopenharmony_ci      -
231662306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED``
231762306a36Sopenharmony_ci      - 0x00000010
231862306a36Sopenharmony_ci      -
231962306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED``
232062306a36Sopenharmony_ci      - 0x00000020
232162306a36Sopenharmony_ci      -
232262306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED``
232362306a36Sopenharmony_ci      - 0x00000040
232462306a36Sopenharmony_ci      -
232562306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT``
232662306a36Sopenharmony_ci      - 0x00000080
232762306a36Sopenharmony_ci      -
232862306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED``
232962306a36Sopenharmony_ci      - 0x00000100
233062306a36Sopenharmony_ci      -
233162306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED``
233262306a36Sopenharmony_ci      - 0x00000200
233362306a36Sopenharmony_ci      -
233462306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED``
233562306a36Sopenharmony_ci      - 0x00000400
233662306a36Sopenharmony_ci      -
233762306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_TILES_ENABLED``
233862306a36Sopenharmony_ci      - 0x00000800
233962306a36Sopenharmony_ci      -
234062306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED``
234162306a36Sopenharmony_ci      - 0x00001000
234262306a36Sopenharmony_ci      -
234362306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED``
234462306a36Sopenharmony_ci      - 0x00002000
234562306a36Sopenharmony_ci      -
234662306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED``
234762306a36Sopenharmony_ci      - 0x00004000
234862306a36Sopenharmony_ci      -
234962306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED``
235062306a36Sopenharmony_ci      - 0x00008000
235162306a36Sopenharmony_ci      -
235262306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER``
235362306a36Sopenharmony_ci      - 0x00010000
235462306a36Sopenharmony_ci      -
235562306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT``
235662306a36Sopenharmony_ci      - 0x00020000
235762306a36Sopenharmony_ci      -
235862306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT``
235962306a36Sopenharmony_ci      - 0x00040000
236062306a36Sopenharmony_ci      -
236162306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT``
236262306a36Sopenharmony_ci      - 0x00080000
236362306a36Sopenharmony_ci      - Specifies the presence of deblocking filter control syntax elements in
236462306a36Sopenharmony_ci        the PPS
236562306a36Sopenharmony_ci    * - ``V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING``
236662306a36Sopenharmony_ci      - 0x00100000
236762306a36Sopenharmony_ci      - Specifies that tile column boundaries and likewise tile row boundaries
236862306a36Sopenharmony_ci        are distributed uniformly across the picture
236962306a36Sopenharmony_ci
237062306a36Sopenharmony_ci.. raw:: latex
237162306a36Sopenharmony_ci
237262306a36Sopenharmony_ci    \normalsize
237362306a36Sopenharmony_ci
237462306a36Sopenharmony_ci``V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (struct)``
237562306a36Sopenharmony_ci    Specifies various slice-specific parameters, especially from the NAL unit
237662306a36Sopenharmony_ci    header, general slice segment header and weighted prediction parameter
237762306a36Sopenharmony_ci    parts of the bitstream.
237862306a36Sopenharmony_ci    These bitstream parameters are defined according to :ref:`hevc`.
237962306a36Sopenharmony_ci    They are described in section 7.4.7 "General slice segment header
238062306a36Sopenharmony_ci    semantics" of the specification.
238162306a36Sopenharmony_ci    This control is a dynamically sized 1-dimensional array,
238262306a36Sopenharmony_ci    V4L2_CTRL_FLAG_DYNAMIC_ARRAY flag must be set when using it.
238362306a36Sopenharmony_ci
238462306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_hevc_slice_params
238562306a36Sopenharmony_ci
238662306a36Sopenharmony_ci.. raw:: latex
238762306a36Sopenharmony_ci
238862306a36Sopenharmony_ci    \scriptsize
238962306a36Sopenharmony_ci
239062306a36Sopenharmony_ci.. tabularcolumns:: |p{5.4cm}|p{6.8cm}|p{5.1cm}|
239162306a36Sopenharmony_ci
239262306a36Sopenharmony_ci.. cssclass:: longtable
239362306a36Sopenharmony_ci
239462306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_hevc_slice_params
239562306a36Sopenharmony_ci    :header-rows:  0
239662306a36Sopenharmony_ci    :stub-columns: 0
239762306a36Sopenharmony_ci    :widths:       1 1 2
239862306a36Sopenharmony_ci
239962306a36Sopenharmony_ci    * - __u32
240062306a36Sopenharmony_ci      - ``bit_size``
240162306a36Sopenharmony_ci      - Size (in bits) of the current slice data.
240262306a36Sopenharmony_ci    * - __u32
240362306a36Sopenharmony_ci      - ``data_byte_offset``
240462306a36Sopenharmony_ci      - Offset (in byte) to the video data in the current slice data.
240562306a36Sopenharmony_ci    * - __u32
240662306a36Sopenharmony_ci      - ``num_entry_point_offsets``
240762306a36Sopenharmony_ci      - Specifies the number of entry point offset syntax elements in the slice header.
240862306a36Sopenharmony_ci        When the driver supports it, the ``V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS``
240962306a36Sopenharmony_ci        must be set.
241062306a36Sopenharmony_ci    * - __u8
241162306a36Sopenharmony_ci      - ``nal_unit_type``
241262306a36Sopenharmony_ci      - Specifies the coding type of the slice (B, P or I).
241362306a36Sopenharmony_ci    * - __u8
241462306a36Sopenharmony_ci      - ``nuh_temporal_id_plus1``
241562306a36Sopenharmony_ci      - Minus 1 specifies a temporal identifier for the NAL unit.
241662306a36Sopenharmony_ci    * - __u8
241762306a36Sopenharmony_ci      - ``slice_type``
241862306a36Sopenharmony_ci      -
241962306a36Sopenharmony_ci	(V4L2_HEVC_SLICE_TYPE_I, V4L2_HEVC_SLICE_TYPE_P or
242062306a36Sopenharmony_ci	V4L2_HEVC_SLICE_TYPE_B).
242162306a36Sopenharmony_ci    * - __u8
242262306a36Sopenharmony_ci      - ``colour_plane_id``
242362306a36Sopenharmony_ci      - Specifies the colour plane associated with the current slice.
242462306a36Sopenharmony_ci    * - __s32
242562306a36Sopenharmony_ci      - ``slice_pic_order_cnt``
242662306a36Sopenharmony_ci      - Specifies the picture order count.
242762306a36Sopenharmony_ci    * - __u8
242862306a36Sopenharmony_ci      - ``num_ref_idx_l0_active_minus1``
242962306a36Sopenharmony_ci      - This value plus 1 specifies the maximum reference index for reference picture list 0
243062306a36Sopenharmony_ci        that may be used to decode the slice.
243162306a36Sopenharmony_ci    * - __u8
243262306a36Sopenharmony_ci      - ``num_ref_idx_l1_active_minus1``
243362306a36Sopenharmony_ci      - This value plus 1 specifies the maximum reference index for reference picture list 1
243462306a36Sopenharmony_ci        that may be used to decode the slice.
243562306a36Sopenharmony_ci    * - __u8
243662306a36Sopenharmony_ci      - ``collocated_ref_idx``
243762306a36Sopenharmony_ci      - Specifies the reference index of the collocated picture used for
243862306a36Sopenharmony_ci        temporal motion vector prediction.
243962306a36Sopenharmony_ci    * - __u8
244062306a36Sopenharmony_ci      - ``five_minus_max_num_merge_cand``
244162306a36Sopenharmony_ci      - Specifies the maximum number of merging motion vector prediction
244262306a36Sopenharmony_ci        candidates supported in the slice subtracted from 5.
244362306a36Sopenharmony_ci    * - __s8
244462306a36Sopenharmony_ci      - ``slice_qp_delta``
244562306a36Sopenharmony_ci      - Specifies the initial value of QpY to be used for the coding blocks in the slice.
244662306a36Sopenharmony_ci    * - __s8
244762306a36Sopenharmony_ci      - ``slice_cb_qp_offset``
244862306a36Sopenharmony_ci      - Specifies a difference to be added to the value of pps_cb_qp_offset.
244962306a36Sopenharmony_ci    * - __s8
245062306a36Sopenharmony_ci      - ``slice_cr_qp_offset``
245162306a36Sopenharmony_ci      - Specifies a difference to be added to the value of pps_cr_qp_offset.
245262306a36Sopenharmony_ci    * - __s8
245362306a36Sopenharmony_ci      - ``slice_act_y_qp_offset``
245462306a36Sopenharmony_ci      - Specifies the offset to the luma of quantization parameter qP derived in section 8.6.2
245562306a36Sopenharmony_ci    * - __s8
245662306a36Sopenharmony_ci      - ``slice_act_cb_qp_offset``
245762306a36Sopenharmony_ci      - Specifies the offset to the cb of quantization parameter qP derived in section 8.6.2
245862306a36Sopenharmony_ci    * - __s8
245962306a36Sopenharmony_ci      - ``slice_act_cr_qp_offset``
246062306a36Sopenharmony_ci      - Specifies the offset to the cr of quantization parameter qP derived in section 8.6.2
246162306a36Sopenharmony_ci    * - __s8
246262306a36Sopenharmony_ci      - ``slice_beta_offset_div2``
246362306a36Sopenharmony_ci      - Specifies the deblocking parameter offsets for beta divided by 2.
246462306a36Sopenharmony_ci    * - __s8
246562306a36Sopenharmony_ci      - ``slice_tc_offset_div2``
246662306a36Sopenharmony_ci      - Specifies the deblocking parameter offsets for tC divided by 2.
246762306a36Sopenharmony_ci    * - __u8
246862306a36Sopenharmony_ci      - ``pic_struct``
246962306a36Sopenharmony_ci      - Indicates whether a picture should be displayed as a frame or as one or more fields.
247062306a36Sopenharmony_ci    * - __u32
247162306a36Sopenharmony_ci      - ``slice_segment_addr``
247262306a36Sopenharmony_ci      - Specifies the address of the first coding tree block in the slice segment.
247362306a36Sopenharmony_ci    * - __u8
247462306a36Sopenharmony_ci      - ``ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
247562306a36Sopenharmony_ci      - The list of L0 reference elements as indices in the DPB.
247662306a36Sopenharmony_ci    * - __u8
247762306a36Sopenharmony_ci      - ``ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
247862306a36Sopenharmony_ci      - The list of L1 reference elements as indices in the DPB.
247962306a36Sopenharmony_ci    * - __u16
248062306a36Sopenharmony_ci      - ``short_term_ref_pic_set_size``
248162306a36Sopenharmony_ci      - Specifies the size, in bits, of the short-term reference picture set, described as st_ref_pic_set()
248262306a36Sopenharmony_ci        in the specification, included in the slice header or SPS (section 7.3.6.1).
248362306a36Sopenharmony_ci    * - __u16
248462306a36Sopenharmony_ci      - ``long_term_ref_pic_set_size``
248562306a36Sopenharmony_ci      - Specifies the size, in bits, of the long-term reference picture set include in the slice header
248662306a36Sopenharmony_ci        or SPS. It is the number of bits in the conditional block if(long_term_ref_pics_present_flag)
248762306a36Sopenharmony_ci        in section 7.3.6.1 of the specification.
248862306a36Sopenharmony_ci    * - __u8
248962306a36Sopenharmony_ci      - ``padding``
249062306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
249162306a36Sopenharmony_ci    * - struct :c:type:`v4l2_hevc_pred_weight_table`
249262306a36Sopenharmony_ci      - ``pred_weight_table``
249362306a36Sopenharmony_ci      - The prediction weight coefficients for inter-picture prediction.
249462306a36Sopenharmony_ci    * - __u64
249562306a36Sopenharmony_ci      - ``flags``
249662306a36Sopenharmony_ci      - See :ref:`Slice Parameters Flags <hevc_slice_params_flags>`
249762306a36Sopenharmony_ci
249862306a36Sopenharmony_ci.. raw:: latex
249962306a36Sopenharmony_ci
250062306a36Sopenharmony_ci    \normalsize
250162306a36Sopenharmony_ci
250262306a36Sopenharmony_ci.. _hevc_slice_params_flags:
250362306a36Sopenharmony_ci
250462306a36Sopenharmony_ci``Slice Parameters Flags``
250562306a36Sopenharmony_ci
250662306a36Sopenharmony_ci.. raw:: latex
250762306a36Sopenharmony_ci
250862306a36Sopenharmony_ci    \scriptsize
250962306a36Sopenharmony_ci
251062306a36Sopenharmony_ci.. flat-table::
251162306a36Sopenharmony_ci    :header-rows:  0
251262306a36Sopenharmony_ci    :stub-columns: 0
251362306a36Sopenharmony_ci    :widths:       1 1 2
251462306a36Sopenharmony_ci
251562306a36Sopenharmony_ci    * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA``
251662306a36Sopenharmony_ci      - 0x00000001
251762306a36Sopenharmony_ci      -
251862306a36Sopenharmony_ci    * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA``
251962306a36Sopenharmony_ci      - 0x00000002
252062306a36Sopenharmony_ci      -
252162306a36Sopenharmony_ci    * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED``
252262306a36Sopenharmony_ci      - 0x00000004
252362306a36Sopenharmony_ci      -
252462306a36Sopenharmony_ci    * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO``
252562306a36Sopenharmony_ci      - 0x00000008
252662306a36Sopenharmony_ci      -
252762306a36Sopenharmony_ci    * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT``
252862306a36Sopenharmony_ci      - 0x00000010
252962306a36Sopenharmony_ci      -
253062306a36Sopenharmony_ci    * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0``
253162306a36Sopenharmony_ci      - 0x00000020
253262306a36Sopenharmony_ci      -
253362306a36Sopenharmony_ci    * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV``
253462306a36Sopenharmony_ci      - 0x00000040
253562306a36Sopenharmony_ci      -
253662306a36Sopenharmony_ci    * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED``
253762306a36Sopenharmony_ci      - 0x00000080
253862306a36Sopenharmony_ci      -
253962306a36Sopenharmony_ci    * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED``
254062306a36Sopenharmony_ci      - 0x00000100
254162306a36Sopenharmony_ci      -
254262306a36Sopenharmony_ci    * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT``
254362306a36Sopenharmony_ci      - 0x00000200
254462306a36Sopenharmony_ci      -
254562306a36Sopenharmony_ci
254662306a36Sopenharmony_ci.. raw:: latex
254762306a36Sopenharmony_ci
254862306a36Sopenharmony_ci    \normalsize
254962306a36Sopenharmony_ci
255062306a36Sopenharmony_ci``V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (integer)``
255162306a36Sopenharmony_ci    Specifies entry point offsets in bytes.
255262306a36Sopenharmony_ci    This control is a dynamically sized array. The number of entry point
255362306a36Sopenharmony_ci    offsets is reported by the ``elems`` field.
255462306a36Sopenharmony_ci    This bitstream parameter is defined according to :ref:`hevc`.
255562306a36Sopenharmony_ci    They are described in section 7.4.7.1 "General slice segment header
255662306a36Sopenharmony_ci    semantics" of the specification.
255762306a36Sopenharmony_ci    When multiple slices are submitted in a request, the length of
255862306a36Sopenharmony_ci    this array must be the sum of num_entry_point_offsets of all the
255962306a36Sopenharmony_ci    slices in the request.
256062306a36Sopenharmony_ci
256162306a36Sopenharmony_ci``V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (struct)``
256262306a36Sopenharmony_ci    Specifies the HEVC scaling matrix parameters used for the scaling process
256362306a36Sopenharmony_ci    for transform coefficients.
256462306a36Sopenharmony_ci    These matrix and parameters are defined according to :ref:`hevc`.
256562306a36Sopenharmony_ci    They are described in section 7.4.5 "Scaling list data semantics" of
256662306a36Sopenharmony_ci    the specification.
256762306a36Sopenharmony_ci
256862306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_hevc_scaling_matrix
256962306a36Sopenharmony_ci
257062306a36Sopenharmony_ci.. raw:: latex
257162306a36Sopenharmony_ci
257262306a36Sopenharmony_ci    \scriptsize
257362306a36Sopenharmony_ci
257462306a36Sopenharmony_ci.. tabularcolumns:: |p{5.4cm}|p{6.8cm}|p{5.1cm}|
257562306a36Sopenharmony_ci
257662306a36Sopenharmony_ci.. cssclass:: longtable
257762306a36Sopenharmony_ci
257862306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_hevc_scaling_matrix
257962306a36Sopenharmony_ci    :header-rows:  0
258062306a36Sopenharmony_ci    :stub-columns: 0
258162306a36Sopenharmony_ci    :widths:       1 1 2
258262306a36Sopenharmony_ci
258362306a36Sopenharmony_ci    * - __u8
258462306a36Sopenharmony_ci      - ``scaling_list_4x4[6][16]``
258562306a36Sopenharmony_ci      - Scaling list is used for the scaling process for transform
258662306a36Sopenharmony_ci        coefficients. The values on each scaling list are expected
258762306a36Sopenharmony_ci        in raster scan order.
258862306a36Sopenharmony_ci    * - __u8
258962306a36Sopenharmony_ci      - ``scaling_list_8x8[6][64]``
259062306a36Sopenharmony_ci      - Scaling list is used for the scaling process for transform
259162306a36Sopenharmony_ci        coefficients. The values on each scaling list are expected
259262306a36Sopenharmony_ci        in raster scan order.
259362306a36Sopenharmony_ci    * - __u8
259462306a36Sopenharmony_ci      - ``scaling_list_16x16[6][64]``
259562306a36Sopenharmony_ci      - Scaling list is used for the scaling process for transform
259662306a36Sopenharmony_ci        coefficients. The values on each scaling list are expected
259762306a36Sopenharmony_ci        in raster scan order.
259862306a36Sopenharmony_ci    * - __u8
259962306a36Sopenharmony_ci      - ``scaling_list_32x32[2][64]``
260062306a36Sopenharmony_ci      - Scaling list is used for the scaling process for transform
260162306a36Sopenharmony_ci        coefficients. The values on each scaling list are expected
260262306a36Sopenharmony_ci        in raster scan order.
260362306a36Sopenharmony_ci    * - __u8
260462306a36Sopenharmony_ci      - ``scaling_list_dc_coef_16x16[6]``
260562306a36Sopenharmony_ci      - Scaling list is used for the scaling process for transform
260662306a36Sopenharmony_ci        coefficients. The values on each scaling list are expected
260762306a36Sopenharmony_ci        in raster scan order.
260862306a36Sopenharmony_ci    * - __u8
260962306a36Sopenharmony_ci      - ``scaling_list_dc_coef_32x32[2]``
261062306a36Sopenharmony_ci      - Scaling list is used for the scaling process for transform
261162306a36Sopenharmony_ci        coefficients. The values on each scaling list are expected
261262306a36Sopenharmony_ci        in raster scan order.
261362306a36Sopenharmony_ci
261462306a36Sopenharmony_ci.. raw:: latex
261562306a36Sopenharmony_ci
261662306a36Sopenharmony_ci    \normalsize
261762306a36Sopenharmony_ci
261862306a36Sopenharmony_ci.. c:type:: v4l2_hevc_dpb_entry
261962306a36Sopenharmony_ci
262062306a36Sopenharmony_ci.. raw:: latex
262162306a36Sopenharmony_ci
262262306a36Sopenharmony_ci    \small
262362306a36Sopenharmony_ci
262462306a36Sopenharmony_ci.. tabularcolumns:: |p{1.0cm}|p{4.2cm}|p{12.1cm}|
262562306a36Sopenharmony_ci
262662306a36Sopenharmony_ci.. flat-table:: struct v4l2_hevc_dpb_entry
262762306a36Sopenharmony_ci    :header-rows:  0
262862306a36Sopenharmony_ci    :stub-columns: 0
262962306a36Sopenharmony_ci    :widths:       1 1 2
263062306a36Sopenharmony_ci
263162306a36Sopenharmony_ci    * - __u64
263262306a36Sopenharmony_ci      - ``timestamp``
263362306a36Sopenharmony_ci      - Timestamp of the V4L2 capture buffer to use as reference, used
263462306a36Sopenharmony_ci        with B-coded and P-coded frames. The timestamp refers to the
263562306a36Sopenharmony_ci	``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
263662306a36Sopenharmony_ci	:c:func:`v4l2_timeval_to_ns()` function to convert the struct
263762306a36Sopenharmony_ci	:c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
263862306a36Sopenharmony_ci    * - __u8
263962306a36Sopenharmony_ci      - ``flags``
264062306a36Sopenharmony_ci      - Long term flag for the reference frame
264162306a36Sopenharmony_ci        (V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE). The flag is set as
264262306a36Sopenharmony_ci        described in the ITU HEVC specification chapter "8.3.2 Decoding
264362306a36Sopenharmony_ci        process for reference picture set".
264462306a36Sopenharmony_ci    * - __u8
264562306a36Sopenharmony_ci      - ``field_pic``
264662306a36Sopenharmony_ci      - Whether the reference is a field picture or a frame.
264762306a36Sopenharmony_ci        See :ref:`HEVC dpb field pic Flags <hevc_dpb_field_pic_flags>`
264862306a36Sopenharmony_ci    * - __s32
264962306a36Sopenharmony_ci      - ``pic_order_cnt_val``
265062306a36Sopenharmony_ci      - The picture order count of the current picture.
265162306a36Sopenharmony_ci    * - __u8
265262306a36Sopenharmony_ci      - ``padding[2]``
265362306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
265462306a36Sopenharmony_ci
265562306a36Sopenharmony_ci.. raw:: latex
265662306a36Sopenharmony_ci
265762306a36Sopenharmony_ci    \normalsize
265862306a36Sopenharmony_ci
265962306a36Sopenharmony_ci.. _hevc_dpb_field_pic_flags:
266062306a36Sopenharmony_ci
266162306a36Sopenharmony_ci``HEVC dpb field pic Flags``
266262306a36Sopenharmony_ci
266362306a36Sopenharmony_ci.. raw:: latex
266462306a36Sopenharmony_ci
266562306a36Sopenharmony_ci    \scriptsize
266662306a36Sopenharmony_ci
266762306a36Sopenharmony_ci.. flat-table::
266862306a36Sopenharmony_ci    :header-rows:  0
266962306a36Sopenharmony_ci    :stub-columns: 0
267062306a36Sopenharmony_ci    :widths:       1 1 2
267162306a36Sopenharmony_ci
267262306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_FRAME``
267362306a36Sopenharmony_ci      - 0
267462306a36Sopenharmony_ci      - (progressive) Frame
267562306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD``
267662306a36Sopenharmony_ci      - 1
267762306a36Sopenharmony_ci      - Top field
267862306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD``
267962306a36Sopenharmony_ci      - 2
268062306a36Sopenharmony_ci      - Bottom field
268162306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM``
268262306a36Sopenharmony_ci      - 3
268362306a36Sopenharmony_ci      - Top field, bottom field, in that order
268462306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP``
268562306a36Sopenharmony_ci      - 4
268662306a36Sopenharmony_ci      - Bottom field, top field, in that order
268762306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP``
268862306a36Sopenharmony_ci      - 5
268962306a36Sopenharmony_ci      - Top field, bottom field, top field repeated, in that order
269062306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM``
269162306a36Sopenharmony_ci      - 6
269262306a36Sopenharmony_ci      - Bottom field, top field, bottom field repeated, in that order
269362306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING``
269462306a36Sopenharmony_ci      - 7
269562306a36Sopenharmony_ci      - Frame doubling
269662306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING``
269762306a36Sopenharmony_ci      - 8
269862306a36Sopenharmony_ci      - Frame tripling
269962306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM``
270062306a36Sopenharmony_ci      - 9
270162306a36Sopenharmony_ci      - Top field paired with previous bottom field in output order
270262306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP``
270362306a36Sopenharmony_ci      - 10
270462306a36Sopenharmony_ci      - Bottom field paired with previous top field in output order
270562306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM``
270662306a36Sopenharmony_ci      - 11
270762306a36Sopenharmony_ci      - Top field paired with next bottom field in output order
270862306a36Sopenharmony_ci    * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP``
270962306a36Sopenharmony_ci      - 12
271062306a36Sopenharmony_ci      - Bottom field paired with next top field in output order
271162306a36Sopenharmony_ci
271262306a36Sopenharmony_ci.. c:type:: v4l2_hevc_pred_weight_table
271362306a36Sopenharmony_ci
271462306a36Sopenharmony_ci.. raw:: latex
271562306a36Sopenharmony_ci
271662306a36Sopenharmony_ci    \footnotesize
271762306a36Sopenharmony_ci
271862306a36Sopenharmony_ci.. tabularcolumns:: |p{0.8cm}|p{10.6cm}|p{5.9cm}|
271962306a36Sopenharmony_ci
272062306a36Sopenharmony_ci.. flat-table:: struct v4l2_hevc_pred_weight_table
272162306a36Sopenharmony_ci    :header-rows:  0
272262306a36Sopenharmony_ci    :stub-columns: 0
272362306a36Sopenharmony_ci    :widths:       1 1 2
272462306a36Sopenharmony_ci
272562306a36Sopenharmony_ci    * - __s8
272662306a36Sopenharmony_ci      - ``delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
272762306a36Sopenharmony_ci      - The difference of the weighting factor applied to the luma
272862306a36Sopenharmony_ci        prediction value for list 0.
272962306a36Sopenharmony_ci    * - __s8
273062306a36Sopenharmony_ci      - ``luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
273162306a36Sopenharmony_ci      - The additive offset applied to the luma prediction value for list 0.
273262306a36Sopenharmony_ci    * - __s8
273362306a36Sopenharmony_ci      - ``delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]``
273462306a36Sopenharmony_ci      - The difference of the weighting factor applied to the chroma
273562306a36Sopenharmony_ci        prediction value for list 0.
273662306a36Sopenharmony_ci    * - __s8
273762306a36Sopenharmony_ci      - ``chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]``
273862306a36Sopenharmony_ci      - The difference of the additive offset applied to the chroma
273962306a36Sopenharmony_ci        prediction values for list 0.
274062306a36Sopenharmony_ci    * - __s8
274162306a36Sopenharmony_ci      - ``delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
274262306a36Sopenharmony_ci      - The difference of the weighting factor applied to the luma
274362306a36Sopenharmony_ci        prediction value for list 1.
274462306a36Sopenharmony_ci    * - __s8
274562306a36Sopenharmony_ci      - ``luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
274662306a36Sopenharmony_ci      - The additive offset applied to the luma prediction value for list 1.
274762306a36Sopenharmony_ci    * - __s8
274862306a36Sopenharmony_ci      - ``delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]``
274962306a36Sopenharmony_ci      - The difference of the weighting factor applied to the chroma
275062306a36Sopenharmony_ci        prediction value for list 1.
275162306a36Sopenharmony_ci    * - __s8
275262306a36Sopenharmony_ci      - ``chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]``
275362306a36Sopenharmony_ci      - The difference of the additive offset applied to the chroma
275462306a36Sopenharmony_ci        prediction values for list 1.
275562306a36Sopenharmony_ci    * - __u8
275662306a36Sopenharmony_ci      - ``luma_log2_weight_denom``
275762306a36Sopenharmony_ci      - The base 2 logarithm of the denominator for all luma weighting
275862306a36Sopenharmony_ci        factors.
275962306a36Sopenharmony_ci    * - __s8
276062306a36Sopenharmony_ci      - ``delta_chroma_log2_weight_denom``
276162306a36Sopenharmony_ci      - The difference of the base 2 logarithm of the denominator for
276262306a36Sopenharmony_ci        all chroma weighting factors.
276362306a36Sopenharmony_ci    * - __u8
276462306a36Sopenharmony_ci      - ``padding[6]``
276562306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
276662306a36Sopenharmony_ci
276762306a36Sopenharmony_ci.. raw:: latex
276862306a36Sopenharmony_ci
276962306a36Sopenharmony_ci    \normalsize
277062306a36Sopenharmony_ci
277162306a36Sopenharmony_ci``V4L2_CID_STATELESS_HEVC_DECODE_MODE (enum)``
277262306a36Sopenharmony_ci    Specifies the decoding mode to use. Currently exposes slice-based and
277362306a36Sopenharmony_ci    frame-based decoding but new modes might be added later on.
277462306a36Sopenharmony_ci    This control is used as a modifier for V4L2_PIX_FMT_HEVC_SLICE
277562306a36Sopenharmony_ci    pixel format. Applications that support V4L2_PIX_FMT_HEVC_SLICE
277662306a36Sopenharmony_ci    are required to set this control in order to specify the decoding mode
277762306a36Sopenharmony_ci    that is expected for the buffer.
277862306a36Sopenharmony_ci    Drivers may expose a single or multiple decoding modes, depending
277962306a36Sopenharmony_ci    on what they can support.
278062306a36Sopenharmony_ci
278162306a36Sopenharmony_ci.. c:type:: v4l2_stateless_hevc_decode_mode
278262306a36Sopenharmony_ci
278362306a36Sopenharmony_ci.. raw:: latex
278462306a36Sopenharmony_ci
278562306a36Sopenharmony_ci    \small
278662306a36Sopenharmony_ci
278762306a36Sopenharmony_ci.. tabularcolumns:: |p{9.4cm}|p{0.6cm}|p{7.3cm}|
278862306a36Sopenharmony_ci
278962306a36Sopenharmony_ci.. flat-table::
279062306a36Sopenharmony_ci    :header-rows:  0
279162306a36Sopenharmony_ci    :stub-columns: 0
279262306a36Sopenharmony_ci    :widths:       1 1 2
279362306a36Sopenharmony_ci
279462306a36Sopenharmony_ci    * - ``V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED``
279562306a36Sopenharmony_ci      - 0
279662306a36Sopenharmony_ci      - Decoding is done at the slice granularity.
279762306a36Sopenharmony_ci        The OUTPUT buffer must contain a single slice.
279862306a36Sopenharmony_ci    * - ``V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED``
279962306a36Sopenharmony_ci      - 1
280062306a36Sopenharmony_ci      - Decoding is done at the frame granularity.
280162306a36Sopenharmony_ci        The OUTPUT buffer must contain all slices needed to decode the
280262306a36Sopenharmony_ci        frame.
280362306a36Sopenharmony_ci
280462306a36Sopenharmony_ci.. raw:: latex
280562306a36Sopenharmony_ci
280662306a36Sopenharmony_ci    \normalsize
280762306a36Sopenharmony_ci
280862306a36Sopenharmony_ci``V4L2_CID_STATELESS_HEVC_START_CODE (enum)``
280962306a36Sopenharmony_ci    Specifies the HEVC slice start code expected for each slice.
281062306a36Sopenharmony_ci    This control is used as a modifier for V4L2_PIX_FMT_HEVC_SLICE
281162306a36Sopenharmony_ci    pixel format. Applications that support V4L2_PIX_FMT_HEVC_SLICE
281262306a36Sopenharmony_ci    are required to set this control in order to specify the start code
281362306a36Sopenharmony_ci    that is expected for the buffer.
281462306a36Sopenharmony_ci    Drivers may expose a single or multiple start codes, depending
281562306a36Sopenharmony_ci    on what they can support.
281662306a36Sopenharmony_ci
281762306a36Sopenharmony_ci.. c:type:: v4l2_stateless_hevc_start_code
281862306a36Sopenharmony_ci
281962306a36Sopenharmony_ci.. tabularcolumns:: |p{9.2cm}|p{0.6cm}|p{7.5cm}|
282062306a36Sopenharmony_ci
282162306a36Sopenharmony_ci.. flat-table::
282262306a36Sopenharmony_ci    :header-rows:  0
282362306a36Sopenharmony_ci    :stub-columns: 0
282462306a36Sopenharmony_ci    :widths:       1 1 2
282562306a36Sopenharmony_ci
282662306a36Sopenharmony_ci    * - ``V4L2_STATELESS_HEVC_START_CODE_NONE``
282762306a36Sopenharmony_ci      - 0
282862306a36Sopenharmony_ci      - Selecting this value specifies that HEVC slices are passed
282962306a36Sopenharmony_ci        to the driver without any start code. The bitstream data should be
283062306a36Sopenharmony_ci        according to :ref:`hevc` 7.3.1.1 General NAL unit syntax, hence
283162306a36Sopenharmony_ci        contains emulation prevention bytes when required.
283262306a36Sopenharmony_ci    * - ``V4L2_STATELESS_HEVC_START_CODE_ANNEX_B``
283362306a36Sopenharmony_ci      - 1
283462306a36Sopenharmony_ci      - Selecting this value specifies that HEVC slices are expected
283562306a36Sopenharmony_ci        to be prefixed by Annex B start codes. According to :ref:`hevc`
283662306a36Sopenharmony_ci        valid start codes can be 3-bytes 0x000001 or 4-bytes 0x00000001.
283762306a36Sopenharmony_ci
283862306a36Sopenharmony_ci.. raw:: latex
283962306a36Sopenharmony_ci
284062306a36Sopenharmony_ci    \normalsize
284162306a36Sopenharmony_ci
284262306a36Sopenharmony_ci``V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID (integer)``
284362306a36Sopenharmony_ci    Specifies a priority identifier for the NAL unit, which will be applied to
284462306a36Sopenharmony_ci    the base layer. By default this value is set to 0 for the base layer,
284562306a36Sopenharmony_ci    and the next layer will have the priority ID assigned as 1, 2, 3 and so on.
284662306a36Sopenharmony_ci    The video encoder can't decide the priority id to be applied to a layer,
284762306a36Sopenharmony_ci    so this has to come from client.
284862306a36Sopenharmony_ci    This is applicable to H264 and valid Range is from 0 to 63.
284962306a36Sopenharmony_ci    Source Rec. ITU-T H.264 (06/2019); G.7.4.1.1, G.8.8.1.
285062306a36Sopenharmony_ci
285162306a36Sopenharmony_ci``V4L2_CID_MPEG_VIDEO_LTR_COUNT (integer)``
285262306a36Sopenharmony_ci    Specifies the maximum number of Long Term Reference (LTR) frames at any
285362306a36Sopenharmony_ci    given time that the encoder can keep.
285462306a36Sopenharmony_ci    This is applicable to the H264 and HEVC encoders.
285562306a36Sopenharmony_ci
285662306a36Sopenharmony_ci``V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX (integer)``
285762306a36Sopenharmony_ci    After setting this control the frame that will be queued next
285862306a36Sopenharmony_ci    will be marked as a Long Term Reference (LTR) frame
285962306a36Sopenharmony_ci    and given this LTR index which ranges from 0 to LTR_COUNT-1.
286062306a36Sopenharmony_ci    This is applicable to the H264 and HEVC encoders.
286162306a36Sopenharmony_ci    Source Rec. ITU-T H.264 (06/2019); Table 7.9
286262306a36Sopenharmony_ci
286362306a36Sopenharmony_ci``V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (bitmask)``
286462306a36Sopenharmony_ci    Specifies the Long Term Reference (LTR) frame(s) to be used for
286562306a36Sopenharmony_ci    encoding the next frame queued after setting this control.
286662306a36Sopenharmony_ci    This provides a bitmask which consists of bits [0, LTR_COUNT-1].
286762306a36Sopenharmony_ci    This is applicable to the H264 and HEVC encoders.
286862306a36Sopenharmony_ci
286962306a36Sopenharmony_ci``V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (struct)``
287062306a36Sopenharmony_ci    Specifies various decode parameters, especially the references picture order
287162306a36Sopenharmony_ci    count (POC) for all the lists (short, long, before, current, after) and the
287262306a36Sopenharmony_ci    number of entries for each of them.
287362306a36Sopenharmony_ci    These parameters are defined according to :ref:`hevc`.
287462306a36Sopenharmony_ci    They are described in section 8.3 "Slice decoding process" of the
287562306a36Sopenharmony_ci    specification.
287662306a36Sopenharmony_ci
287762306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_hevc_decode_params
287862306a36Sopenharmony_ci
287962306a36Sopenharmony_ci.. cssclass:: longtable
288062306a36Sopenharmony_ci
288162306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_hevc_decode_params
288262306a36Sopenharmony_ci    :header-rows:  0
288362306a36Sopenharmony_ci    :stub-columns: 0
288462306a36Sopenharmony_ci    :widths:       1 1 2
288562306a36Sopenharmony_ci
288662306a36Sopenharmony_ci    * - __s32
288762306a36Sopenharmony_ci      - ``pic_order_cnt_val``
288862306a36Sopenharmony_ci      - PicOrderCntVal as described in section 8.3.1 "Decoding process
288962306a36Sopenharmony_ci        for picture order count" of the specification.
289062306a36Sopenharmony_ci    * - __u16
289162306a36Sopenharmony_ci      - ``short_term_ref_pic_set_size``
289262306a36Sopenharmony_ci      - Specifies the size, in bits, of the short-term reference picture set, of the first slice
289362306a36Sopenharmony_ci        described as st_ref_pic_set() in the specification, included in the slice header
289462306a36Sopenharmony_ci        or SPS (section 7.3.6.1).
289562306a36Sopenharmony_ci    * - __u16
289662306a36Sopenharmony_ci      - ``long_term_ref_pic_set_size``
289762306a36Sopenharmony_ci      - Specifies the size, in bits, of the long-term reference picture set, of the first slice
289862306a36Sopenharmony_ci        included in the slice header or SPS. It is the number of bits in the conditional block
289962306a36Sopenharmony_ci        if(long_term_ref_pics_present_flag) in section 7.3.6.1 of the specification.
290062306a36Sopenharmony_ci    * - __u8
290162306a36Sopenharmony_ci      - ``num_active_dpb_entries``
290262306a36Sopenharmony_ci      - The number of entries in ``dpb``.
290362306a36Sopenharmony_ci    * - __u8
290462306a36Sopenharmony_ci      - ``num_poc_st_curr_before``
290562306a36Sopenharmony_ci      - The number of reference pictures in the short-term set that come before
290662306a36Sopenharmony_ci        the current frame.
290762306a36Sopenharmony_ci    * - __u8
290862306a36Sopenharmony_ci      - ``num_poc_st_curr_after``
290962306a36Sopenharmony_ci      - The number of reference pictures in the short-term set that come after
291062306a36Sopenharmony_ci        the current frame.
291162306a36Sopenharmony_ci    * - __u8
291262306a36Sopenharmony_ci      - ``num_poc_lt_curr``
291362306a36Sopenharmony_ci      - The number of reference pictures in the long-term set.
291462306a36Sopenharmony_ci    * - __u8
291562306a36Sopenharmony_ci      - ``poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
291662306a36Sopenharmony_ci      - PocStCurrBefore as described in section 8.3.2 "Decoding process for reference
291762306a36Sopenharmony_ci        picture set": provides the index of the short term before references in DPB array.
291862306a36Sopenharmony_ci    * - __u8
291962306a36Sopenharmony_ci      - ``poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
292062306a36Sopenharmony_ci      - PocStCurrAfter as described in section 8.3.2 "Decoding process for reference
292162306a36Sopenharmony_ci        picture set": provides the index of the short term after references in DPB array.
292262306a36Sopenharmony_ci    * - __u8
292362306a36Sopenharmony_ci      - ``poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
292462306a36Sopenharmony_ci      - PocLtCurr as described in section 8.3.2 "Decoding process for reference
292562306a36Sopenharmony_ci        picture set": provides the index of the long term references in DPB array.
292662306a36Sopenharmony_ci    * - __u8
292762306a36Sopenharmony_ci      - ``num_delta_pocs_of_ref_rps_idx``
292862306a36Sopenharmony_ci      - When the short_term_ref_pic_set_sps_flag in the slice header is equal to 0,
292962306a36Sopenharmony_ci        it is the same as the derived value NumDeltaPocs[RefRpsIdx]. It can be used to parse
293062306a36Sopenharmony_ci        the RPS data in slice headers instead of skipping it with @short_term_ref_pic_set_size.
293162306a36Sopenharmony_ci        When the value of short_term_ref_pic_set_sps_flag in the slice header is
293262306a36Sopenharmony_ci        equal to 1, num_delta_pocs_of_ref_rps_idx shall be set to 0.
293362306a36Sopenharmony_ci    * - struct :c:type:`v4l2_hevc_dpb_entry`
293462306a36Sopenharmony_ci      - ``dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
293562306a36Sopenharmony_ci      - The decoded picture buffer, for meta-data about reference frames.
293662306a36Sopenharmony_ci    * - __u64
293762306a36Sopenharmony_ci      - ``flags``
293862306a36Sopenharmony_ci      - See :ref:`Decode Parameters Flags <hevc_decode_params_flags>`
293962306a36Sopenharmony_ci
294062306a36Sopenharmony_ci.. _hevc_decode_params_flags:
294162306a36Sopenharmony_ci
294262306a36Sopenharmony_ci``Decode Parameters Flags``
294362306a36Sopenharmony_ci
294462306a36Sopenharmony_ci.. cssclass:: longtable
294562306a36Sopenharmony_ci
294662306a36Sopenharmony_ci.. flat-table::
294762306a36Sopenharmony_ci    :header-rows:  0
294862306a36Sopenharmony_ci    :stub-columns: 0
294962306a36Sopenharmony_ci    :widths:       1 1 2
295062306a36Sopenharmony_ci
295162306a36Sopenharmony_ci    * - ``V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC``
295262306a36Sopenharmony_ci      - 0x00000001
295362306a36Sopenharmony_ci      -
295462306a36Sopenharmony_ci    * - ``V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC``
295562306a36Sopenharmony_ci      - 0x00000002
295662306a36Sopenharmony_ci      -
295762306a36Sopenharmony_ci    * - ``V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR``
295862306a36Sopenharmony_ci      - 0x00000004
295962306a36Sopenharmony_ci      -
296062306a36Sopenharmony_ci
296162306a36Sopenharmony_ci.. _v4l2-codec-stateless-av1:
296262306a36Sopenharmony_ci
296362306a36Sopenharmony_ci``V4L2_CID_STATELESS_AV1_SEQUENCE (struct)``
296462306a36Sopenharmony_ci    Represents an AV1 Sequence OBU (Open Bitstream Unit). See section 5.5
296562306a36Sopenharmony_ci    "Sequence header OBU syntax" in :ref:`av1` for more details.
296662306a36Sopenharmony_ci
296762306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_av1_sequence
296862306a36Sopenharmony_ci
296962306a36Sopenharmony_ci.. cssclass:: longtable
297062306a36Sopenharmony_ci
297162306a36Sopenharmony_ci.. tabularcolumns:: |p{5.8cm}|p{4.8cm}|p{6.6cm}|
297262306a36Sopenharmony_ci
297362306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_av1_sequence
297462306a36Sopenharmony_ci    :header-rows:  0
297562306a36Sopenharmony_ci    :stub-columns: 0
297662306a36Sopenharmony_ci    :widths:       1 1 2
297762306a36Sopenharmony_ci
297862306a36Sopenharmony_ci    * - __u32
297962306a36Sopenharmony_ci      - ``flags``
298062306a36Sopenharmony_ci      - See :ref:`AV1 Sequence Flags <av1_sequence_flags>`.
298162306a36Sopenharmony_ci    * - __u8
298262306a36Sopenharmony_ci      - ``seq_profile``
298362306a36Sopenharmony_ci      - Specifies the features that can be used in the coded video sequence.
298462306a36Sopenharmony_ci    * - __u8
298562306a36Sopenharmony_ci      - ``order_hint_bits``
298662306a36Sopenharmony_ci      - Specifies the number of bits used for the order_hint field at each frame.
298762306a36Sopenharmony_ci    * - __u8
298862306a36Sopenharmony_ci      - ``bit_depth``
298962306a36Sopenharmony_ci      - the bit depth to use for the sequence as described in section 5.5.2
299062306a36Sopenharmony_ci        "Color config syntax" in :ref:`av1` for more details.
299162306a36Sopenharmony_ci    * - __u8
299262306a36Sopenharmony_ci      - ``reserved``
299362306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
299462306a36Sopenharmony_ci    * - __u16
299562306a36Sopenharmony_ci      - ``max_frame_width_minus_1``
299662306a36Sopenharmony_ci      - specifies the maximum frame width minus 1 for the frames represented by
299762306a36Sopenharmony_ci        this sequence header.
299862306a36Sopenharmony_ci
299962306a36Sopenharmony_ci.. _av1_sequence_flags:
300062306a36Sopenharmony_ci
300162306a36Sopenharmony_ci``AV1 Sequence Flags``
300262306a36Sopenharmony_ci
300362306a36Sopenharmony_ci.. cssclass:: longtable
300462306a36Sopenharmony_ci
300562306a36Sopenharmony_ci.. flat-table::
300662306a36Sopenharmony_ci    :header-rows:  0
300762306a36Sopenharmony_ci    :stub-columns: 0
300862306a36Sopenharmony_ci    :widths:       1 1 2
300962306a36Sopenharmony_ci
301062306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_STILL_PICTURE``
301162306a36Sopenharmony_ci      - 0x00000001
301262306a36Sopenharmony_ci      - If set, specifies that the coded video sequence contains only one coded
301362306a36Sopenharmony_ci        frame. If not set, specifies that the coded video sequence contains one
301462306a36Sopenharmony_ci        or more coded frames.
301562306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_USE_128X128_SUPERBLOCK``
301662306a36Sopenharmony_ci      - 0x00000002
301762306a36Sopenharmony_ci      - If set, indicates that superblocks contain 128x128 luma samples.
301862306a36Sopenharmony_ci        When equal to 0, it indicates that superblocks contain 64x64 luma
301962306a36Sopenharmony_ci        samples. The number of contained chroma samples depends on
302062306a36Sopenharmony_ci        subsampling_x and subsampling_y.
302162306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_FILTER_INTRA``
302262306a36Sopenharmony_ci      - 0x00000004
302362306a36Sopenharmony_ci      - If set, specifies that the use_filter_intra syntax element may be
302462306a36Sopenharmony_ci        present. If not set, specifies that the use_filter_intra syntax element
302562306a36Sopenharmony_ci        will not be present.
302662306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTRA_EDGE_FILTER``
302762306a36Sopenharmony_ci      - 0x00000008
302862306a36Sopenharmony_ci      - Specifies whether the intra edge filtering process should be enabled.
302962306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTERINTRA_COMPOUND``
303062306a36Sopenharmony_ci      - 0x00000010
303162306a36Sopenharmony_ci      - If set, specifies that the mode info for inter blocks may contain the
303262306a36Sopenharmony_ci        syntax element interintra. If not set, specifies that the syntax element
303362306a36Sopenharmony_ci        interintra will not be present.
303462306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_MASKED_COMPOUND``
303562306a36Sopenharmony_ci      - 0x00000020
303662306a36Sopenharmony_ci      - If set, specifies that the mode info for inter blocks may contain the
303762306a36Sopenharmony_ci        syntax element compound_type. If not set, specifies that the syntax
303862306a36Sopenharmony_ci        element compound_type will not be present.
303962306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_WARPED_MOTION``
304062306a36Sopenharmony_ci      - 0x00000040
304162306a36Sopenharmony_ci      - If set, indicates that the allow_warped_motion syntax element may be
304262306a36Sopenharmony_ci        present. If not set, indicates that the allow_warped_motion syntax
304362306a36Sopenharmony_ci        element will not be present.
304462306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_DUAL_FILTER``
304562306a36Sopenharmony_ci      - 0x00000080
304662306a36Sopenharmony_ci      - If set, indicates that the inter prediction filter type may be specified
304762306a36Sopenharmony_ci        independently in the horizontal and vertical directions. If the flag is
304862306a36Sopenharmony_ci        equal to 0, only one filter type may be specified, which is then used in
304962306a36Sopenharmony_ci        both directions.
305062306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_ORDER_HINT``
305162306a36Sopenharmony_ci      - 0x00000100
305262306a36Sopenharmony_ci      - If set, indicates that tools based on the values of order hints may be
305362306a36Sopenharmony_ci        used. If not set, indicates that tools based on order hints are
305462306a36Sopenharmony_ci        disabled.
305562306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_JNT_COMP``
305662306a36Sopenharmony_ci      - 0x00000200
305762306a36Sopenharmony_ci      - If set, indicates that the distance weights process may be used for
305862306a36Sopenharmony_ci        inter prediction.
305962306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_REF_FRAME_MVS``
306062306a36Sopenharmony_ci      - 0x00000400
306162306a36Sopenharmony_ci      - If set, indicates that the use_ref_frame_mvs syntax element may be
306262306a36Sopenharmony_ci        present. If not set, indicates that the use_ref_frame_mvs syntax element
306362306a36Sopenharmony_ci        will not be present.
306462306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_SUPERRES``
306562306a36Sopenharmony_ci      - 0x00000800
306662306a36Sopenharmony_ci      - If set, specifies that the use_superres syntax element will be present
306762306a36Sopenharmony_ci        in the uncompressed header. If not set, specifies that the use_superres
306862306a36Sopenharmony_ci        syntax element will not be present (instead use_superres will be set to
306962306a36Sopenharmony_ci        0 in the uncompressed header without being read).
307062306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_CDEF``
307162306a36Sopenharmony_ci      - 0x00001000
307262306a36Sopenharmony_ci      - If set, specifies that cdef filtering may be enabled. If not set,
307362306a36Sopenharmony_ci        specifies that cdef filtering is disabled.
307462306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_RESTORATION``
307562306a36Sopenharmony_ci      - 0x00002000
307662306a36Sopenharmony_ci      - If set, specifies that loop restoration filtering may be enabled. If not
307762306a36Sopenharmony_ci        set, specifies that loop restoration filtering is disabled.
307862306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_MONO_CHROME``
307962306a36Sopenharmony_ci      - 0x00004000
308062306a36Sopenharmony_ci      - If set, indicates that the video does not contain U and V color planes.
308162306a36Sopenharmony_ci        If not set, indicates that the video contains Y, U, and V color planes.
308262306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_COLOR_RANGE``
308362306a36Sopenharmony_ci      - 0x00008000
308462306a36Sopenharmony_ci      - If set, signals full swing representation, i.e. "Full Range
308562306a36Sopenharmony_ci        Quantization". If not set, signals studio swing representation, i.e.
308662306a36Sopenharmony_ci        "Limited Range Quantization".
308762306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_X``
308862306a36Sopenharmony_ci      - 0x00010000
308962306a36Sopenharmony_ci      - Specify the chroma subsampling format.
309062306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_Y``
309162306a36Sopenharmony_ci      - 0x00020000
309262306a36Sopenharmony_ci      - Specify the chroma subsampling format.
309362306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_FILM_GRAIN_PARAMS_PRESENT``
309462306a36Sopenharmony_ci      - 0x00040000
309562306a36Sopenharmony_ci      - Specifies whether film grain parameters are present in the coded video
309662306a36Sopenharmony_ci        sequence.
309762306a36Sopenharmony_ci    * - ``V4L2_AV1_SEQUENCE_FLAG_SEPARATE_UV_DELTA_Q``
309862306a36Sopenharmony_ci      - 0x00080000
309962306a36Sopenharmony_ci      - If set, indicates that the U and V planes may have separate delta
310062306a36Sopenharmony_ci        quantizer values. If not set, indicates that the U and V planes will share
310162306a36Sopenharmony_ci        the same delta quantizer value.
310262306a36Sopenharmony_ci
310362306a36Sopenharmony_ci``V4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY (struct)``
310462306a36Sopenharmony_ci    Represents a single AV1 tile inside an AV1 Tile Group. Note that MiRowStart,
310562306a36Sopenharmony_ci    MiRowEnd, MiColStart and MiColEnd can be retrieved from struct
310662306a36Sopenharmony_ci    v4l2_av1_tile_info in struct v4l2_ctrl_av1_frame using tile_row and
310762306a36Sopenharmony_ci    tile_col. See section 6.10.1 "General tile group OBU semantics" in
310862306a36Sopenharmony_ci    :ref:`av1` for more details.
310962306a36Sopenharmony_ci
311062306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_av1_tile_group_entry
311162306a36Sopenharmony_ci
311262306a36Sopenharmony_ci.. cssclass:: longtable
311362306a36Sopenharmony_ci
311462306a36Sopenharmony_ci.. tabularcolumns:: |p{5.8cm}|p{4.8cm}|p{6.6cm}|
311562306a36Sopenharmony_ci
311662306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_av1_tile_group_entry
311762306a36Sopenharmony_ci    :header-rows:  0
311862306a36Sopenharmony_ci    :stub-columns: 0
311962306a36Sopenharmony_ci    :widths:       1 1 2
312062306a36Sopenharmony_ci
312162306a36Sopenharmony_ci    * - __u32
312262306a36Sopenharmony_ci      - ``tile_offset``
312362306a36Sopenharmony_ci      - Offset from the OBU data, i.e. where the coded tile data actually starts.
312462306a36Sopenharmony_ci    * - __u32
312562306a36Sopenharmony_ci      - ``tile_size``
312662306a36Sopenharmony_ci      - Specifies the size in bytes of the coded tile. Equivalent to "TileSize"
312762306a36Sopenharmony_ci        in :ref:`av1`.
312862306a36Sopenharmony_ci    * - __u32
312962306a36Sopenharmony_ci      - ``tile_row``
313062306a36Sopenharmony_ci      - Specifies the row of the current tile. Equivalent to "TileRow" in
313162306a36Sopenharmony_ci        :ref:`av1`.
313262306a36Sopenharmony_ci    * - __u32
313362306a36Sopenharmony_ci      - ``tile_col``
313462306a36Sopenharmony_ci      - Specifies the column of the current tile. Equivalent to "TileColumn" in
313562306a36Sopenharmony_ci        :ref:`av1`.
313662306a36Sopenharmony_ci
313762306a36Sopenharmony_ci.. c:type:: v4l2_av1_warp_model
313862306a36Sopenharmony_ci
313962306a36Sopenharmony_ci	AV1 Warp Model as described in section 3 "Symbols and abbreviated terms" of
314062306a36Sopenharmony_ci	:ref:`av1`.
314162306a36Sopenharmony_ci
314262306a36Sopenharmony_ci.. raw:: latex
314362306a36Sopenharmony_ci
314462306a36Sopenharmony_ci    \scriptsize
314562306a36Sopenharmony_ci
314662306a36Sopenharmony_ci.. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
314762306a36Sopenharmony_ci
314862306a36Sopenharmony_ci.. flat-table::
314962306a36Sopenharmony_ci    :header-rows:  0
315062306a36Sopenharmony_ci    :stub-columns: 0
315162306a36Sopenharmony_ci    :widths:       1 1 2
315262306a36Sopenharmony_ci
315362306a36Sopenharmony_ci    * - ``V4L2_AV1_WARP_MODEL_IDENTITY``
315462306a36Sopenharmony_ci      - 0
315562306a36Sopenharmony_ci      - Warp model is just an identity transform.
315662306a36Sopenharmony_ci    * - ``V4L2_AV1_WARP_MODEL_TRANSLATION``
315762306a36Sopenharmony_ci      - 1
315862306a36Sopenharmony_ci      - Warp model is a pure translation.
315962306a36Sopenharmony_ci    * - ``V4L2_AV1_WARP_MODEL_ROTZOOM``
316062306a36Sopenharmony_ci      - 2
316162306a36Sopenharmony_ci      - Warp model is a rotation + symmetric zoom + translation.
316262306a36Sopenharmony_ci    * - ``V4L2_AV1_WARP_MODEL_AFFINE``
316362306a36Sopenharmony_ci      - 3
316462306a36Sopenharmony_ci      - Warp model is a general affine transform.
316562306a36Sopenharmony_ci
316662306a36Sopenharmony_ci.. c:type:: v4l2_av1_reference_frame
316762306a36Sopenharmony_ci
316862306a36Sopenharmony_ciAV1 Reference Frames as described in section 6.10.24 "Ref frames semantics"
316962306a36Sopenharmony_ciof :ref:`av1`.
317062306a36Sopenharmony_ci
317162306a36Sopenharmony_ci.. raw:: latex
317262306a36Sopenharmony_ci
317362306a36Sopenharmony_ci    \scriptsize
317462306a36Sopenharmony_ci
317562306a36Sopenharmony_ci.. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
317662306a36Sopenharmony_ci
317762306a36Sopenharmony_ci.. flat-table::
317862306a36Sopenharmony_ci    :header-rows:  0
317962306a36Sopenharmony_ci    :stub-columns: 0
318062306a36Sopenharmony_ci    :widths:       1 1 2
318162306a36Sopenharmony_ci
318262306a36Sopenharmony_ci    * - ``V4L2_AV1_REF_INTRA_FRAME``
318362306a36Sopenharmony_ci      - 0
318462306a36Sopenharmony_ci      - Intra Frame Reference.
318562306a36Sopenharmony_ci    * - ``V4L2_AV1_REF_LAST_FRAME``
318662306a36Sopenharmony_ci      - 1
318762306a36Sopenharmony_ci      - Last Frame Reference.
318862306a36Sopenharmony_ci    * - ``V4L2_AV1_REF_LAST2_FRAME``
318962306a36Sopenharmony_ci      - 2
319062306a36Sopenharmony_ci      - Last2 Frame Reference.
319162306a36Sopenharmony_ci    * - ``V4L2_AV1_REF_LAST3_FRAME``
319262306a36Sopenharmony_ci      - 3
319362306a36Sopenharmony_ci      - Last3 Frame Reference.
319462306a36Sopenharmony_ci    * - ``V4L2_AV1_REF_GOLDEN_FRAME``
319562306a36Sopenharmony_ci      - 4
319662306a36Sopenharmony_ci      - Golden Frame Reference.
319762306a36Sopenharmony_ci    * - ``V4L2_AV1_REF_BWDREF_FRAME``
319862306a36Sopenharmony_ci      - 5
319962306a36Sopenharmony_ci      - BWD Frame Reference.
320062306a36Sopenharmony_ci    * - ``V4L2_AV1_REF_ALTREF2_FRAME``
320162306a36Sopenharmony_ci      - 6
320262306a36Sopenharmony_ci      - ALTREF2 Frame Reference.
320362306a36Sopenharmony_ci    * - ``V4L2_AV1_REF_ALTREF_FRAME``
320462306a36Sopenharmony_ci      - 7
320562306a36Sopenharmony_ci      - ALTREF Frame Reference.
320662306a36Sopenharmony_ci
320762306a36Sopenharmony_ci.. c:type:: v4l2_av1_global_motion
320862306a36Sopenharmony_ci
320962306a36Sopenharmony_ciAV1 Global Motion parameters as described in section 6.8.17
321062306a36Sopenharmony_ci"Global motion params semantics" of :ref:`av1`.
321162306a36Sopenharmony_ci
321262306a36Sopenharmony_ci.. cssclass:: longtable
321362306a36Sopenharmony_ci
321462306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
321562306a36Sopenharmony_ci
321662306a36Sopenharmony_ci.. flat-table:: struct v4l2_av1_global_motion
321762306a36Sopenharmony_ci    :header-rows:  0
321862306a36Sopenharmony_ci    :stub-columns: 0
321962306a36Sopenharmony_ci    :widths:       1 1 2
322062306a36Sopenharmony_ci
322162306a36Sopenharmony_ci    * - __u8
322262306a36Sopenharmony_ci      - ``flags[V4L2_AV1_TOTAL_REFS_PER_FRAME]``
322362306a36Sopenharmony_ci      - A bitfield containing the flags per reference frame. See
322462306a36Sopenharmony_ci        :ref:`AV1 Global Motion Flags <av1_global_motion_flags>` for more
322562306a36Sopenharmony_ci        details.
322662306a36Sopenharmony_ci    * - enum :c:type:`v4l2_av1_warp_model`
322762306a36Sopenharmony_ci      - ``type[V4L2_AV1_TOTAL_REFS_PER_FRAME]``
322862306a36Sopenharmony_ci      - The type of global motion transform used.
322962306a36Sopenharmony_ci    * - __s32
323062306a36Sopenharmony_ci      - ``params[V4L2_AV1_TOTAL_REFS_PER_FRAME][6]``
323162306a36Sopenharmony_ci      - This field has the same meaning as "gm_params" in :ref:`av1`.
323262306a36Sopenharmony_ci    * - __u8
323362306a36Sopenharmony_ci      - ``invalid``
323462306a36Sopenharmony_ci      - Bitfield indicating whether the global motion params are invalid for a
323562306a36Sopenharmony_ci        given reference frame. See section 7.11.3.6 Setup shear process and the
323662306a36Sopenharmony_ci        variable "warpValid". Use V4L2_AV1_GLOBAL_MOTION_IS_INVALID(ref) to
323762306a36Sopenharmony_ci        create a suitable mask.
323862306a36Sopenharmony_ci    * - __u8
323962306a36Sopenharmony_ci      - ``reserved[3]``
324062306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
324162306a36Sopenharmony_ci
324262306a36Sopenharmony_ci.. _av1_global_motion_flags:
324362306a36Sopenharmony_ci
324462306a36Sopenharmony_ci``AV1 Global Motion Flags``
324562306a36Sopenharmony_ci
324662306a36Sopenharmony_ci.. cssclass:: longtable
324762306a36Sopenharmony_ci
324862306a36Sopenharmony_ci.. flat-table::
324962306a36Sopenharmony_ci    :header-rows:  0
325062306a36Sopenharmony_ci    :stub-columns: 0
325162306a36Sopenharmony_ci    :widths:       1 1 2
325262306a36Sopenharmony_ci
325362306a36Sopenharmony_ci    * - ``V4L2_AV1_GLOBAL_MOTION_FLAG_IS_GLOBAL``
325462306a36Sopenharmony_ci      - 0x00000001
325562306a36Sopenharmony_ci      - Specifies whether global motion parameters are present for a particular
325662306a36Sopenharmony_ci        reference frame.
325762306a36Sopenharmony_ci    * - ``V4L2_AV1_GLOBAL_MOTION_FLAG_IS_ROT_ZOOM``
325862306a36Sopenharmony_ci      - 0x00000002
325962306a36Sopenharmony_ci      - Specifies whether a particular reference frame uses rotation and zoom
326062306a36Sopenharmony_ci        global motion.
326162306a36Sopenharmony_ci    * - ``V4L2_AV1_GLOBAL_MOTION_FLAG_IS_TRANSLATION``
326262306a36Sopenharmony_ci      - 0x00000004
326362306a36Sopenharmony_ci      - Specifies whether a particular reference frame uses translation global
326462306a36Sopenharmony_ci        motion
326562306a36Sopenharmony_ci
326662306a36Sopenharmony_ci.. c:type:: v4l2_av1_frame_restoration_type
326762306a36Sopenharmony_ci
326862306a36Sopenharmony_ciAV1 Frame Restoration Type.
326962306a36Sopenharmony_ci
327062306a36Sopenharmony_ci.. raw:: latex
327162306a36Sopenharmony_ci
327262306a36Sopenharmony_ci    \scriptsize
327362306a36Sopenharmony_ci
327462306a36Sopenharmony_ci.. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
327562306a36Sopenharmony_ci
327662306a36Sopenharmony_ci.. flat-table::
327762306a36Sopenharmony_ci    :header-rows:  0
327862306a36Sopenharmony_ci    :stub-columns: 0
327962306a36Sopenharmony_ci    :widths:       1 1 2
328062306a36Sopenharmony_ci
328162306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_RESTORE_NONE``
328262306a36Sopenharmony_ci      - 0
328362306a36Sopenharmony_ci      - No filtering is applied.
328462306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_RESTORE_WIENER``
328562306a36Sopenharmony_ci      - 1
328662306a36Sopenharmony_ci      - Wiener filter process is invoked.
328762306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_RESTORE_SGRPROJ``
328862306a36Sopenharmony_ci      - 2
328962306a36Sopenharmony_ci      - Self guided filter process is invoked.
329062306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_RESTORE_SWITCHABLE``
329162306a36Sopenharmony_ci      - 3
329262306a36Sopenharmony_ci      - Restoration filter is swichtable.
329362306a36Sopenharmony_ci
329462306a36Sopenharmony_ci.. c:type:: v4l2_av1_loop_restoration
329562306a36Sopenharmony_ci
329662306a36Sopenharmony_ciAV1 Loop Restoration as described in section 6.10.15 "Loop restoration params
329762306a36Sopenharmony_cisemantics" of :ref:`av1`.
329862306a36Sopenharmony_ci
329962306a36Sopenharmony_ci.. cssclass:: longtable
330062306a36Sopenharmony_ci
330162306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
330262306a36Sopenharmony_ci
330362306a36Sopenharmony_ci.. flat-table:: struct v4l2_av1_loop_restoration
330462306a36Sopenharmony_ci    :header-rows:  0
330562306a36Sopenharmony_ci    :stub-columns: 0
330662306a36Sopenharmony_ci    :widths:       1 1 2
330762306a36Sopenharmony_ci
330862306a36Sopenharmony_ci    * - __u8
330962306a36Sopenharmony_ci      - ``flags``
331062306a36Sopenharmony_ci      - See :ref:`AV1 Loop Restoration Flags <av1_loop_restoration_flags>`.
331162306a36Sopenharmony_ci    * - __u8
331262306a36Sopenharmony_ci      - ``lr_unit_shift``
331362306a36Sopenharmony_ci      - Specifies if the luma restoration size should be halved.
331462306a36Sopenharmony_ci    * - __u8
331562306a36Sopenharmony_ci      - ``lr_uv_shift``
331662306a36Sopenharmony_ci      - Specifies if the chroma size should be half the luma size.
331762306a36Sopenharmony_ci    * - __u8
331862306a36Sopenharmony_ci      - ``reserved``
331962306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
332062306a36Sopenharmony_ci    * - :c:type:`v4l2_av1_frame_restoration_type`
332162306a36Sopenharmony_ci      - ``frame_restoration_type[V4L2_AV1_NUM_PLANES_MAX]``
332262306a36Sopenharmony_ci      - Specifies the type of restoration used for each plane.
332362306a36Sopenharmony_ci    * - __u8
332462306a36Sopenharmony_ci      - ``loop_restoration_size[V4L2_AV1_MAX_NUM_PLANES]``
332562306a36Sopenharmony_ci      - Specifies the size of loop restoration units in units of samples in the
332662306a36Sopenharmony_ci        current plane.
332762306a36Sopenharmony_ci
332862306a36Sopenharmony_ci.. _av1_loop_restoration_flags:
332962306a36Sopenharmony_ci
333062306a36Sopenharmony_ci``AV1 Loop Restoration Flags``
333162306a36Sopenharmony_ci
333262306a36Sopenharmony_ci.. cssclass:: longtable
333362306a36Sopenharmony_ci
333462306a36Sopenharmony_ci.. flat-table::
333562306a36Sopenharmony_ci    :header-rows:  0
333662306a36Sopenharmony_ci    :stub-columns: 0
333762306a36Sopenharmony_ci    :widths:       1 1 2
333862306a36Sopenharmony_ci
333962306a36Sopenharmony_ci    * - ``V4L2_AV1_LOOP_RESTORATION_FLAG_USES_LR``
334062306a36Sopenharmony_ci      - 0x00000001
334162306a36Sopenharmony_ci      - Retains the same meaning as UsesLr in :ref:`av1`.
334262306a36Sopenharmony_ci    * - ``V4L2_AV1_LOOP_RESTORATION_FLAG_USES_CHROMA_LR``
334362306a36Sopenharmony_ci      - 0x00000002
334462306a36Sopenharmony_ci      - Retains the same meaning as UsesChromaLr in :ref:`av1`.
334562306a36Sopenharmony_ci
334662306a36Sopenharmony_ci.. c:type:: v4l2_av1_cdef
334762306a36Sopenharmony_ci
334862306a36Sopenharmony_ciAV1 CDEF params semantics as described in section 6.10.14 "CDEF params
334962306a36Sopenharmony_cisemantics" of :ref:`av1`.
335062306a36Sopenharmony_ci
335162306a36Sopenharmony_ci.. cssclass:: longtable
335262306a36Sopenharmony_ci
335362306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
335462306a36Sopenharmony_ci
335562306a36Sopenharmony_ci.. flat-table:: struct v4l2_av1_cdef
335662306a36Sopenharmony_ci    :header-rows:  0
335762306a36Sopenharmony_ci    :stub-columns: 0
335862306a36Sopenharmony_ci    :widths:       1 1 2
335962306a36Sopenharmony_ci
336062306a36Sopenharmony_ci    * - __u8
336162306a36Sopenharmony_ci      - ``damping_minus_3``
336262306a36Sopenharmony_ci      - Controls the amount of damping in the deringing filter.
336362306a36Sopenharmony_ci    * - __u8
336462306a36Sopenharmony_ci      - ``bits``
336562306a36Sopenharmony_ci      - Specifies the number of bits needed to specify which CDEF filter to
336662306a36Sopenharmony_ci        apply.
336762306a36Sopenharmony_ci    * - __u8
336862306a36Sopenharmony_ci      - ``y_pri_strength[V4L2_AV1_CDEF_MAX]``
336962306a36Sopenharmony_ci      -  Specifies the strength of the primary filter.
337062306a36Sopenharmony_ci    * - __u8
337162306a36Sopenharmony_ci      - ``y_sec_strength[V4L2_AV1_CDEF_MAX]``
337262306a36Sopenharmony_ci      -  Specifies the strength of the secondary filter.
337362306a36Sopenharmony_ci    * - __u8
337462306a36Sopenharmony_ci      - ``uv_pri_strength[V4L2_AV1_CDEF_MAX]``
337562306a36Sopenharmony_ci      -  Specifies the strength of the primary filter.
337662306a36Sopenharmony_ci    * - __u8
337762306a36Sopenharmony_ci      - ``uv_secondary_strength[V4L2_AV1_CDEF_MAX]``
337862306a36Sopenharmony_ci      -  Specifies the strength of the secondary filter.
337962306a36Sopenharmony_ci
338062306a36Sopenharmony_ci.. c:type:: v4l2_av1_segment_feature
338162306a36Sopenharmony_ci
338262306a36Sopenharmony_ciAV1 segment features as described in section 3 "Symbols and abbreviated terms"
338362306a36Sopenharmony_ciof :ref:`av1`.
338462306a36Sopenharmony_ci
338562306a36Sopenharmony_ci.. raw:: latex
338662306a36Sopenharmony_ci
338762306a36Sopenharmony_ci    \scriptsize
338862306a36Sopenharmony_ci
338962306a36Sopenharmony_ci.. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
339062306a36Sopenharmony_ci
339162306a36Sopenharmony_ci.. flat-table::
339262306a36Sopenharmony_ci    :header-rows:  0
339362306a36Sopenharmony_ci    :stub-columns: 0
339462306a36Sopenharmony_ci    :widths:       1 1 2
339562306a36Sopenharmony_ci
339662306a36Sopenharmony_ci    * - ``V4L2_AV1_SEG_LVL_ALT_Q``
339762306a36Sopenharmony_ci      - 0
339862306a36Sopenharmony_ci      - Index for quantizer segment feature.
339962306a36Sopenharmony_ci    * - ``V4L2_AV1_SEG_LVL_ALT_LF_Y_V``
340062306a36Sopenharmony_ci      - 1
340162306a36Sopenharmony_ci      - Index for vertical luma loop filter segment feature.
340262306a36Sopenharmony_ci    * - ``V4L2_AV1_SEG_LVL_REF_FRAME``
340362306a36Sopenharmony_ci      - 5
340462306a36Sopenharmony_ci      - Index for reference frame segment feature.
340562306a36Sopenharmony_ci    * - ``V4L2_AV1_SEG_LVL_REF_SKIP``
340662306a36Sopenharmony_ci      - 6
340762306a36Sopenharmony_ci      - Index for skip segment feature.
340862306a36Sopenharmony_ci    * - ``V4L2_AV1_SEG_LVL_REF_GLOBALMV``
340962306a36Sopenharmony_ci      - 7
341062306a36Sopenharmony_ci      - Index for global mv feature.
341162306a36Sopenharmony_ci    * - ``V4L2_AV1_SEG_LVL_MAX``
341262306a36Sopenharmony_ci      - 8
341362306a36Sopenharmony_ci      - Number of segment features.
341462306a36Sopenharmony_ci
341562306a36Sopenharmony_ci.. c:type:: v4l2_av1_segmentation
341662306a36Sopenharmony_ci
341762306a36Sopenharmony_ciAV1 Segmentation params as defined in section 6.8.13 "Segmentation params
341862306a36Sopenharmony_cisemantics" of :ref:`av1`.
341962306a36Sopenharmony_ci
342062306a36Sopenharmony_ci.. cssclass:: longtable
342162306a36Sopenharmony_ci
342262306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
342362306a36Sopenharmony_ci
342462306a36Sopenharmony_ci.. flat-table:: struct v4l2_av1_segmentation
342562306a36Sopenharmony_ci    :header-rows:  0
342662306a36Sopenharmony_ci    :stub-columns: 0
342762306a36Sopenharmony_ci    :widths:       1 1 2
342862306a36Sopenharmony_ci
342962306a36Sopenharmony_ci    * - __u8
343062306a36Sopenharmony_ci      - ``flags``
343162306a36Sopenharmony_ci      - See :ref:`AV1 Segmentation Flags <av1_segmentation_flags>`
343262306a36Sopenharmony_ci    * - __u8
343362306a36Sopenharmony_ci      - ``last_active_seg_id``
343462306a36Sopenharmony_ci      -  Indicates the highest numbered segment id that has some
343562306a36Sopenharmony_ci         enabled feature. This is used when decoding the segment id to only decode
343662306a36Sopenharmony_ci         choices corresponding to used segments.
343762306a36Sopenharmony_ci    * - __u8
343862306a36Sopenharmony_ci      - ``feature_enabled[V4L2_AV1_MAX_SEGMENTS]``
343962306a36Sopenharmony_ci      - Bitmask defining which features are enabled in each segment. Use
344062306a36Sopenharmony_ci        V4L2_AV1_SEGMENT_FEATURE_ENABLED to build a suitable mask.
344162306a36Sopenharmony_ci    * - __u16
344262306a36Sopenharmony_ci      - `feature_data[V4L2_AV1_MAX_SEGMENTS][V4L2_AV1_SEG_LVL_MAX]``
344362306a36Sopenharmony_ci      -  Data attached to each feature. Data entry is only valid if the feature
344462306a36Sopenharmony_ci         is enabled.
344562306a36Sopenharmony_ci
344662306a36Sopenharmony_ci.. _av1_segmentation_flags:
344762306a36Sopenharmony_ci
344862306a36Sopenharmony_ci``AV1 Segmentation Flags``
344962306a36Sopenharmony_ci
345062306a36Sopenharmony_ci.. cssclass:: longtable
345162306a36Sopenharmony_ci
345262306a36Sopenharmony_ci.. flat-table::
345362306a36Sopenharmony_ci    :header-rows:  0
345462306a36Sopenharmony_ci    :stub-columns: 0
345562306a36Sopenharmony_ci    :widths:       1 1 2
345662306a36Sopenharmony_ci
345762306a36Sopenharmony_ci    * - ``V4L2_AV1_SEGMENTATION_FLAG_ENABLED``
345862306a36Sopenharmony_ci      - 0x00000001
345962306a36Sopenharmony_ci      - If set, indicates that this frame makes use of the segmentation tool. If
346062306a36Sopenharmony_ci        not set, indicates that the frame does not use segmentation.
346162306a36Sopenharmony_ci    * - ``V4L2_AV1_SEGMENTATION_FLAG_UPDATE_MAP``
346262306a36Sopenharmony_ci      - 0x00000002
346362306a36Sopenharmony_ci      - If set, indicates that the segmentation map are updated during the
346462306a36Sopenharmony_ci        decoding of this frame. If not set, indicates that the segmentation map
346562306a36Sopenharmony_ci        from the previous frame is used.
346662306a36Sopenharmony_ci    * - ``V4L2_AV1_SEGMENTATION_FLAG_TEMPORAL_UPDATE``
346762306a36Sopenharmony_ci      - 0x00000004
346862306a36Sopenharmony_ci      - If set, indicates that the updates to the segmentation map are coded
346962306a36Sopenharmony_ci        relative to the existing segmentation map. If not set, indicates that
347062306a36Sopenharmony_ci        the new segmentation map is coded without reference to the existing
347162306a36Sopenharmony_ci        segmentation map.
347262306a36Sopenharmony_ci    * - ``V4L2_AV1_SEGMENTATION_FLAG_UPDATE_DATA``
347362306a36Sopenharmony_ci      - 0x00000008
347462306a36Sopenharmony_ci      - If set, indicates that the updates to the segmentation map are coded
347562306a36Sopenharmony_ci        relative to the existing segmentation map. If not set, indicates that
347662306a36Sopenharmony_ci        the new segmentation map is coded without reference to the existing
347762306a36Sopenharmony_ci        segmentation map.
347862306a36Sopenharmony_ci    * - ``V4L2_AV1_SEGMENTATION_FLAG_SEG_ID_PRE_SKIP``
347962306a36Sopenharmony_ci      - 0x00000010
348062306a36Sopenharmony_ci      - If set, indicates that the segment id will be read before the skip
348162306a36Sopenharmony_ci        syntax element. If not set, indicates that the skip syntax element will
348262306a36Sopenharmony_ci        be read first.
348362306a36Sopenharmony_ci
348462306a36Sopenharmony_ci.. c:type:: v4l2_av1_loop_filter
348562306a36Sopenharmony_ci
348662306a36Sopenharmony_ciAV1 Loop filter params as defined in section 6.8.10 "Loop filter semantics" of
348762306a36Sopenharmony_ci:ref:`av1`.
348862306a36Sopenharmony_ci
348962306a36Sopenharmony_ci.. cssclass:: longtable
349062306a36Sopenharmony_ci
349162306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
349262306a36Sopenharmony_ci
349362306a36Sopenharmony_ci.. flat-table:: struct v4l2_av1_global_motion
349462306a36Sopenharmony_ci    :header-rows:  0
349562306a36Sopenharmony_ci    :stub-columns: 0
349662306a36Sopenharmony_ci    :widths:       1 1 2
349762306a36Sopenharmony_ci
349862306a36Sopenharmony_ci    * - __u8
349962306a36Sopenharmony_ci      - ``flags``
350062306a36Sopenharmony_ci      - See
350162306a36Sopenharmony_ci        :ref:`AV1 Loop Filter flags <av1_loop_filter_flags>` for more details.
350262306a36Sopenharmony_ci    * - __u8
350362306a36Sopenharmony_ci      - ``level[4]``
350462306a36Sopenharmony_ci      - An array containing loop filter strength values. Different loop
350562306a36Sopenharmony_ci        filter strength values from the array are used depending on the image
350662306a36Sopenharmony_ci        plane being filtered, and the edge direction (vertical or horizontal)
350762306a36Sopenharmony_ci        being filtered.
350862306a36Sopenharmony_ci    * - __u8
350962306a36Sopenharmony_ci      - ``sharpness``
351062306a36Sopenharmony_ci      - indicates the sharpness level. The loop_filter_level and
351162306a36Sopenharmony_ci        loop_filter_sharpness together determine when a block edge is filtered,
351262306a36Sopenharmony_ci        and by how much the filtering can change the sample values. The loop
351362306a36Sopenharmony_ci        filter process is described in section 7.14 of :ref:`av1`.
351462306a36Sopenharmony_ci    * - __u8
351562306a36Sopenharmony_ci      - ``ref_deltas[V4L2_AV1_TOTAL_REFS_PER_FRAME]``
351662306a36Sopenharmony_ci      - contains the adjustment needed for the filter level based on the
351762306a36Sopenharmony_ci        chosen reference frame. If this syntax element is not present, it
351862306a36Sopenharmony_ci        maintains its previous value.
351962306a36Sopenharmony_ci    * - __u8
352062306a36Sopenharmony_ci      - ``mode_deltas[2]``
352162306a36Sopenharmony_ci      - contains the adjustment needed for the filter level based on
352262306a36Sopenharmony_ci        the chosen mode. If this syntax element is not present, it maintains its
352362306a36Sopenharmony_ci        previous value.
352462306a36Sopenharmony_ci    * - __u8
352562306a36Sopenharmony_ci      - ``delta_lf_res``
352662306a36Sopenharmony_ci      - specifies the left shift which should be applied to decoded loop filter
352762306a36Sopenharmony_ci        delta values.
352862306a36Sopenharmony_ci
352962306a36Sopenharmony_ci.. _av1_loop_filter_flags:
353062306a36Sopenharmony_ci
353162306a36Sopenharmony_ci``AV1 Loop Filter Flags``
353262306a36Sopenharmony_ci
353362306a36Sopenharmony_ci.. cssclass:: longtable
353462306a36Sopenharmony_ci
353562306a36Sopenharmony_ci.. flat-table::
353662306a36Sopenharmony_ci    :header-rows:  0
353762306a36Sopenharmony_ci    :stub-columns: 0
353862306a36Sopenharmony_ci    :widths:       1 1 2
353962306a36Sopenharmony_ci
354062306a36Sopenharmony_ci    * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_ENABLED``
354162306a36Sopenharmony_ci      - 0x00000001
354262306a36Sopenharmony_ci      - If set, means that the filter level depends on the mode and reference
354362306a36Sopenharmony_ci        frame used to predict a block. If not set, means that the filter level
354462306a36Sopenharmony_ci        does not depend on the mode and reference frame.
354562306a36Sopenharmony_ci    * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_UPDATE``
354662306a36Sopenharmony_ci      - 0x00000002
354762306a36Sopenharmony_ci      - If set, means that additional syntax elements are present that specify
354862306a36Sopenharmony_ci        which mode and reference frame deltas are to be updated. If not set,
354962306a36Sopenharmony_ci        means that these syntax elements are not present.
355062306a36Sopenharmony_ci    * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_PRESENT``
355162306a36Sopenharmony_ci      - 0x00000004
355262306a36Sopenharmony_ci      - Specifies whether loop filter delta values are present
355362306a36Sopenharmony_ci    * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_MULTI``
355462306a36Sopenharmony_ci      - 0x00000008
355562306a36Sopenharmony_ci      - A value equal to 1 specifies that separate loop filter
355662306a36Sopenharmony_ci        deltas are sent for horizontal luma edges, vertical luma edges,
355762306a36Sopenharmony_ci        the U edges, and the V edges. A value of delta_lf_multi equal to 0
355862306a36Sopenharmony_ci        specifies that the same loop filter delta is used for all edges.
355962306a36Sopenharmony_ci
356062306a36Sopenharmony_ci.. c:type:: v4l2_av1_quantization
356162306a36Sopenharmony_ci
356262306a36Sopenharmony_ciAV1 Quantization params as defined in section 6.8.11 "Quantization params
356362306a36Sopenharmony_cisemantics" of :ref:`av1`.
356462306a36Sopenharmony_ci
356562306a36Sopenharmony_ci.. cssclass:: longtable
356662306a36Sopenharmony_ci
356762306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
356862306a36Sopenharmony_ci
356962306a36Sopenharmony_ci.. flat-table:: struct v4l2_av1_quantization
357062306a36Sopenharmony_ci    :header-rows:  0
357162306a36Sopenharmony_ci    :stub-columns: 0
357262306a36Sopenharmony_ci    :widths:       1 1 2
357362306a36Sopenharmony_ci
357462306a36Sopenharmony_ci    * - __u8
357562306a36Sopenharmony_ci      - ``flags``
357662306a36Sopenharmony_ci      - See
357762306a36Sopenharmony_ci        :ref:`AV1 Loop Filter flags <av1_quantization_flags>` for more details.
357862306a36Sopenharmony_ci    * - __u8
357962306a36Sopenharmony_ci      - ``base_q_idx``
358062306a36Sopenharmony_ci      - Indicates the base frame qindex. This is used for Y AC coefficients and
358162306a36Sopenharmony_ci        as the base value for the other quantizers.
358262306a36Sopenharmony_ci    * - __u8
358362306a36Sopenharmony_ci      - ``delta_q_y_dc``
358462306a36Sopenharmony_ci      - Indicates the Y DC quantizer relative to base_q_idx.
358562306a36Sopenharmony_ci    * - __u8
358662306a36Sopenharmony_ci      - ``delta_q_u_dc``
358762306a36Sopenharmony_ci      - Indicates the U DC quantizer relative to base_q_idx.
358862306a36Sopenharmony_ci    * - __u8
358962306a36Sopenharmony_ci      - ``delta_q_u_ac``
359062306a36Sopenharmony_ci      - Indicates the U AC quantizer relative to base_q_idx.
359162306a36Sopenharmony_ci    * - __u8
359262306a36Sopenharmony_ci      - ``delta_q_v_dc``
359362306a36Sopenharmony_ci      - Indicates the V DC quantizer relative to base_q_idx.
359462306a36Sopenharmony_ci    * - __u8
359562306a36Sopenharmony_ci      - ``delta_q_v_ac``
359662306a36Sopenharmony_ci      - Indicates the V AC quantizer relative to base_q_idx.
359762306a36Sopenharmony_ci    * - __u8
359862306a36Sopenharmony_ci      - ``qm_y``
359962306a36Sopenharmony_ci      - Specifies the level in the quantizer matrix that should be used for
360062306a36Sopenharmony_ci        luma plane decoding.
360162306a36Sopenharmony_ci    * - __u8
360262306a36Sopenharmony_ci      - ``qm_u``
360362306a36Sopenharmony_ci      - Specifies the level in the quantizer matrix that should be used for
360462306a36Sopenharmony_ci        chroma U plane decoding.
360562306a36Sopenharmony_ci    * - __u8
360662306a36Sopenharmony_ci      - ``qm_v``
360762306a36Sopenharmony_ci      - Specifies the level in the quantizer matrix that should be used for
360862306a36Sopenharmony_ci        chroma V plane decoding.
360962306a36Sopenharmony_ci    * - __u8
361062306a36Sopenharmony_ci      - ``delta_q_res``
361162306a36Sopenharmony_ci      - Specifies the left shift which should be applied to decoded quantizer
361262306a36Sopenharmony_ci        index delta values.
361362306a36Sopenharmony_ci
361462306a36Sopenharmony_ci.. _av1_quantization_flags:
361562306a36Sopenharmony_ci
361662306a36Sopenharmony_ci``AV1 Quantization Flags``
361762306a36Sopenharmony_ci
361862306a36Sopenharmony_ci.. cssclass:: longtable
361962306a36Sopenharmony_ci
362062306a36Sopenharmony_ci.. flat-table::
362162306a36Sopenharmony_ci    :header-rows:  0
362262306a36Sopenharmony_ci    :stub-columns: 0
362362306a36Sopenharmony_ci    :widths:       1 1 2
362462306a36Sopenharmony_ci
362562306a36Sopenharmony_ci    * - ``V4L2_AV1_QUANTIZATION_FLAG_DIFF_UV_DELTA``
362662306a36Sopenharmony_ci      - 0x00000001
362762306a36Sopenharmony_ci      - If set, indicates that the U and V delta quantizer values are coded
362862306a36Sopenharmony_ci        separately. If not set, indicates that the U and V delta quantizer
362962306a36Sopenharmony_ci        values share a common value.
363062306a36Sopenharmony_ci    * - ``V4L2_AV1_QUANTIZATION_FLAG_USING_QMATRIX``
363162306a36Sopenharmony_ci      - 0x00000002
363262306a36Sopenharmony_ci      - If set, specifies that the quantizer matrix will be used to compute
363362306a36Sopenharmony_ci        quantizers.
363462306a36Sopenharmony_ci    * - ``V4L2_AV1_QUANTIZATION_FLAG_DELTA_Q_PRESENT``
363562306a36Sopenharmony_ci      - 0x00000004
363662306a36Sopenharmony_ci      - Specifies whether quantizer index delta values are present.
363762306a36Sopenharmony_ci
363862306a36Sopenharmony_ci.. c:type:: v4l2_av1_tile_info
363962306a36Sopenharmony_ci
364062306a36Sopenharmony_ciAV1 Tile info as defined in section 6.8.14 "Tile info semantics" of ref:`av1`.
364162306a36Sopenharmony_ci
364262306a36Sopenharmony_ci.. cssclass:: longtable
364362306a36Sopenharmony_ci
364462306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
364562306a36Sopenharmony_ci
364662306a36Sopenharmony_ci.. flat-table:: struct v4l2_av1_tile_info
364762306a36Sopenharmony_ci    :header-rows:  0
364862306a36Sopenharmony_ci    :stub-columns: 0
364962306a36Sopenharmony_ci    :widths:       1 1 2
365062306a36Sopenharmony_ci
365162306a36Sopenharmony_ci    * - __u8
365262306a36Sopenharmony_ci      - ``flags``
365362306a36Sopenharmony_ci      - See
365462306a36Sopenharmony_ci        :ref:`AV1 Tile Info flags <av1_tile_info_flags>` for more details.
365562306a36Sopenharmony_ci    * - __u8
365662306a36Sopenharmony_ci      - ``context_update_tile_id``
365762306a36Sopenharmony_ci      - Specifies which tile to use for the CDF update.
365862306a36Sopenharmony_ci    * - __u8
365962306a36Sopenharmony_ci      - ``tile_cols``
366062306a36Sopenharmony_ci      - Specifies the number of tiles across the frame.
366162306a36Sopenharmony_ci    * - __u8
366262306a36Sopenharmony_ci      - ``tile_rows``
366362306a36Sopenharmony_ci      - Specifies the number of tiles down the frame.
366462306a36Sopenharmony_ci    * - __u32
366562306a36Sopenharmony_ci      - ``mi_col_starts[V4L2_AV1_MAX_TILE_COLS + 1]``
366662306a36Sopenharmony_ci      - An array specifying the start column (in units of 4x4 luma
366762306a36Sopenharmony_ci        samples) for each tile across the image.
366862306a36Sopenharmony_ci    * - __u32
366962306a36Sopenharmony_ci      - ``mi_row_starts[V4L2_AV1_MAX_TILE_ROWS + 1]``
367062306a36Sopenharmony_ci      - An array specifying the start row (in units of 4x4 luma
367162306a36Sopenharmony_ci        samples) for each tile across the image.
367262306a36Sopenharmony_ci    * - __u32
367362306a36Sopenharmony_ci      - ``width_in_sbs_minus_1[V4L2_AV1_MAX_TILE_COLS]``
367462306a36Sopenharmony_ci      - Specifies the width of a tile minus 1 in units of superblocks.
367562306a36Sopenharmony_ci    * - __u32
367662306a36Sopenharmony_ci      - ``height_in_sbs_minus_1[V4L2_AV1_MAX_TILE_ROWS]``
367762306a36Sopenharmony_ci      - Specifies the height of a tile minus 1 in units of superblocks.
367862306a36Sopenharmony_ci    * - __u8
367962306a36Sopenharmony_ci      - ``tile_size_bytes``
368062306a36Sopenharmony_ci      - Specifies the number of bytes needed to code each tile size.
368162306a36Sopenharmony_ci    * - __u8
368262306a36Sopenharmony_ci      - ``reserved[3]``
368362306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
368462306a36Sopenharmony_ci
368562306a36Sopenharmony_ci.. _av1_tile_info_flags:
368662306a36Sopenharmony_ci
368762306a36Sopenharmony_ci``AV1 Tile Info Flags``
368862306a36Sopenharmony_ci
368962306a36Sopenharmony_ci.. cssclass:: longtable
369062306a36Sopenharmony_ci
369162306a36Sopenharmony_ci.. flat-table::
369262306a36Sopenharmony_ci    :header-rows:  0
369362306a36Sopenharmony_ci    :stub-columns: 0
369462306a36Sopenharmony_ci    :widths:       1 1 2
369562306a36Sopenharmony_ci
369662306a36Sopenharmony_ci    * - ``V4L2_AV1_TILE_INFO_FLAG_UNIFORM_TILE_SPACING``
369762306a36Sopenharmony_ci      - 0x00000001
369862306a36Sopenharmony_ci      - If set, means that the tiles are uniformly spaced across the frame. (In
369962306a36Sopenharmony_ci        other words, all tiles are the same size except for the ones at the
370062306a36Sopenharmony_ci        right and bottom edge which can be smaller). If not set means that the
370162306a36Sopenharmony_ci        tile sizes are coded.
370262306a36Sopenharmony_ci
370362306a36Sopenharmony_ci.. c:type:: v4l2_av1_frame_type
370462306a36Sopenharmony_ci
370562306a36Sopenharmony_ciAV1 Frame Type
370662306a36Sopenharmony_ci
370762306a36Sopenharmony_ci.. raw:: latex
370862306a36Sopenharmony_ci
370962306a36Sopenharmony_ci    \scriptsize
371062306a36Sopenharmony_ci
371162306a36Sopenharmony_ci.. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
371262306a36Sopenharmony_ci
371362306a36Sopenharmony_ci.. flat-table::
371462306a36Sopenharmony_ci    :header-rows:  0
371562306a36Sopenharmony_ci    :stub-columns: 0
371662306a36Sopenharmony_ci    :widths:       1 1 2
371762306a36Sopenharmony_ci
371862306a36Sopenharmony_ci    * - ``V4L2_AV1_KEY_FRAME``
371962306a36Sopenharmony_ci      - 0
372062306a36Sopenharmony_ci      - Key frame.
372162306a36Sopenharmony_ci    * - ``V4L2_AV1_INTER_FRAME``
372262306a36Sopenharmony_ci      - 1
372362306a36Sopenharmony_ci      - Inter frame.
372462306a36Sopenharmony_ci    * - ``V4L2_AV1_INTRA_ONLY_FRAME``
372562306a36Sopenharmony_ci      - 2
372662306a36Sopenharmony_ci      - Intra-only frame.
372762306a36Sopenharmony_ci    * - ``V4L2_AV1_SWITCH_FRAME``
372862306a36Sopenharmony_ci      - 3
372962306a36Sopenharmony_ci      - Switch frame.
373062306a36Sopenharmony_ci
373162306a36Sopenharmony_ci.. c:type:: v4l2_av1_interpolation_filter
373262306a36Sopenharmony_ci
373362306a36Sopenharmony_ciAV1 Interpolation Filter
373462306a36Sopenharmony_ci
373562306a36Sopenharmony_ci.. raw:: latex
373662306a36Sopenharmony_ci
373762306a36Sopenharmony_ci    \scriptsize
373862306a36Sopenharmony_ci
373962306a36Sopenharmony_ci.. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
374062306a36Sopenharmony_ci
374162306a36Sopenharmony_ci.. flat-table::
374262306a36Sopenharmony_ci    :header-rows:  0
374362306a36Sopenharmony_ci    :stub-columns: 0
374462306a36Sopenharmony_ci    :widths:       1 1 2
374562306a36Sopenharmony_ci
374662306a36Sopenharmony_ci    * - ``V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP``
374762306a36Sopenharmony_ci      - 0
374862306a36Sopenharmony_ci      - Eight tap filter.
374962306a36Sopenharmony_ci    * - ``V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH``
375062306a36Sopenharmony_ci      - 1
375162306a36Sopenharmony_ci      - Eight tap smooth filter.
375262306a36Sopenharmony_ci    * - ``V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP``
375362306a36Sopenharmony_ci      - 2
375462306a36Sopenharmony_ci      - Eight tap sharp filter.
375562306a36Sopenharmony_ci    * - ``V4L2_AV1_INTERPOLATION_FILTER_BILINEAR``
375662306a36Sopenharmony_ci      - 3
375762306a36Sopenharmony_ci      - Bilinear filter.
375862306a36Sopenharmony_ci    * - ``V4L2_AV1_INTERPOLATION_FILTER_SWITCHABLE``
375962306a36Sopenharmony_ci      - 4
376062306a36Sopenharmony_ci      - Filter selection is signaled at the block level.
376162306a36Sopenharmony_ci
376262306a36Sopenharmony_ci.. c:type:: v4l2_av1_tx_mode
376362306a36Sopenharmony_ci
376462306a36Sopenharmony_ciAV1 Tx mode as described in section 6.8.21 "TX mode semantics" of :ref:`av1`.
376562306a36Sopenharmony_ci
376662306a36Sopenharmony_ci.. raw:: latex
376762306a36Sopenharmony_ci
376862306a36Sopenharmony_ci    \scriptsize
376962306a36Sopenharmony_ci
377062306a36Sopenharmony_ci.. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}|
377162306a36Sopenharmony_ci
377262306a36Sopenharmony_ci.. flat-table::
377362306a36Sopenharmony_ci    :header-rows:  0
377462306a36Sopenharmony_ci    :stub-columns: 0
377562306a36Sopenharmony_ci    :widths:       1 1 2
377662306a36Sopenharmony_ci
377762306a36Sopenharmony_ci    * - ``V4L2_AV1_TX_MODE_ONLY_4X4``
377862306a36Sopenharmony_ci      - 0
377962306a36Sopenharmony_ci      -  The inverse transform will use only 4x4 transforms.
378062306a36Sopenharmony_ci    * - ``V4L2_AV1_TX_MODE_LARGEST``
378162306a36Sopenharmony_ci      - 1
378262306a36Sopenharmony_ci      - The inverse transform will use the largest transform size that fits
378362306a36Sopenharmony_ci        inside the block.
378462306a36Sopenharmony_ci    * - ``V4L2_AV1_TX_MODE_SELECT``
378562306a36Sopenharmony_ci      - 2
378662306a36Sopenharmony_ci      - The choice of transform size is specified explicitly for each block.
378762306a36Sopenharmony_ci
378862306a36Sopenharmony_ci``V4L2_CID_STATELESS_AV1_FRAME (struct)``
378962306a36Sopenharmony_ci    Represents a Frame Header OBU. See 6.8 "Frame Header OBU semantics" of
379062306a36Sopenharmony_ci    :ref:`av1` for more details.
379162306a36Sopenharmony_ci
379262306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_av1_frame
379362306a36Sopenharmony_ci
379462306a36Sopenharmony_ci.. cssclass:: longtable
379562306a36Sopenharmony_ci
379662306a36Sopenharmony_ci.. tabularcolumns:: |p{5.8cm}|p{4.8cm}|p{6.6cm}|
379762306a36Sopenharmony_ci
379862306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_av1_frame
379962306a36Sopenharmony_ci    :header-rows:  0
380062306a36Sopenharmony_ci    :stub-columns: 0
380162306a36Sopenharmony_ci    :widths:       1 1 2
380262306a36Sopenharmony_ci
380362306a36Sopenharmony_ci    * - struct :c:type:`v4l2_av1_tile_info`
380462306a36Sopenharmony_ci      - ``tile_info``
380562306a36Sopenharmony_ci      - Tile info
380662306a36Sopenharmony_ci    * - struct :c:type:`v4l2_av1_quantization`
380762306a36Sopenharmony_ci      - ``quantization``
380862306a36Sopenharmony_ci      - Quantization parameters.
380962306a36Sopenharmony_ci    * - struct :c:type:`v4l2_av1_segmentation`
381062306a36Sopenharmony_ci      - ``segmentation``
381162306a36Sopenharmony_ci      - Segmentation parameters.
381262306a36Sopenharmony_ci    * - __u8
381362306a36Sopenharmony_ci      - ``superres_denom``
381462306a36Sopenharmony_ci      - The denominator for the upscaling ratio.
381562306a36Sopenharmony_ci    * - struct :c:type:`v4l2_av1_loop_filter`
381662306a36Sopenharmony_ci      - ``loop_filter``
381762306a36Sopenharmony_ci      - Loop filter params
381862306a36Sopenharmony_ci    * - struct :c:type:`v4l2_av1_cdef`
381962306a36Sopenharmony_ci      - ``cdef``
382062306a36Sopenharmony_ci      - CDEF params
382162306a36Sopenharmony_ci    * - __u8
382262306a36Sopenharmony_ci      - ``skip_mode_frame[2]``
382362306a36Sopenharmony_ci      - Specifies the frames to use for compound prediction when skip_mode is
382462306a36Sopenharmony_ci        equal to 1.
382562306a36Sopenharmony_ci    * - __u8
382662306a36Sopenharmony_ci      - ``primary_ref_frame``
382762306a36Sopenharmony_ci      - Specifies which reference frame contains the CDF values and other state
382862306a36Sopenharmony_ci        that should be loaded at the start of the frame.
382962306a36Sopenharmony_ci    * - struct :c:type:`v4l2_av1_loop_restoration`
383062306a36Sopenharmony_ci      - ``loop_restoration``
383162306a36Sopenharmony_ci      - Loop restoration parameters.
383262306a36Sopenharmony_ci    * - struct :c:type:`v4l2_av1_loop_global_motion`
383362306a36Sopenharmony_ci      - ``global_motion``
383462306a36Sopenharmony_ci      - Global motion parameters.
383562306a36Sopenharmony_ci    * - __u32
383662306a36Sopenharmony_ci      - ``flags``
383762306a36Sopenharmony_ci      - See
383862306a36Sopenharmony_ci        :ref:`AV1 Frame flags <av1_frame_flags>` for more details.
383962306a36Sopenharmony_ci    * - enum :c:type:`v4l2_av1_frame_type`
384062306a36Sopenharmony_ci      - ``frame_type``
384162306a36Sopenharmony_ci      - Specifies the AV1 frame type
384262306a36Sopenharmony_ci    * - __u32
384362306a36Sopenharmony_ci      - ``order_hint``
384462306a36Sopenharmony_ci      - Specifies OrderHintBits least significant bits of the expected output
384562306a36Sopenharmony_ci        order for this frame.
384662306a36Sopenharmony_ci    * - __u32
384762306a36Sopenharmony_ci      - ``upscaled_width``
384862306a36Sopenharmony_ci      - The upscaled width.
384962306a36Sopenharmony_ci    * - enum :c:type:`v4l2_av1_interpolation_filter`
385062306a36Sopenharmony_ci      - ``interpolation_filter``
385162306a36Sopenharmony_ci      - Specifies the filter selection used for performing inter prediction.
385262306a36Sopenharmony_ci    * - enum :c:type:`v4l2_av1_tx_mode`
385362306a36Sopenharmony_ci      - ``tx_mode``
385462306a36Sopenharmony_ci      - Specifies how the transform size is determined.
385562306a36Sopenharmony_ci    * - __u32
385662306a36Sopenharmony_ci      - ``frame_width_minus_1``
385762306a36Sopenharmony_ci      - Add 1 to get the frame's width.
385862306a36Sopenharmony_ci    * - __u32
385962306a36Sopenharmony_ci      - ``frame_height_minus_1``
386062306a36Sopenharmony_ci      - Add 1 to get the frame's height.
386162306a36Sopenharmony_ci    * - __u16
386262306a36Sopenharmony_ci      - ``render_width_minus_1``
386362306a36Sopenharmony_ci      - Add 1 to get the render width of the frame in luma samples.
386462306a36Sopenharmony_ci    * - __u16
386562306a36Sopenharmony_ci      - ``render_height_minus_1``
386662306a36Sopenharmony_ci      - Add 1 to get the render height of the frame in luma samples.
386762306a36Sopenharmony_ci    * - __u32
386862306a36Sopenharmony_ci      - ``current_frame_id``
386962306a36Sopenharmony_ci      - Specifies the frame id number for the current frame. Frame
387062306a36Sopenharmony_ci        id numbers are additional information that do not affect the decoding
387162306a36Sopenharmony_ci        process, but provide decoders with a way of detecting missing reference
387262306a36Sopenharmony_ci        frames so that appropriate action can be taken.
387362306a36Sopenharmony_ci    * - __u8
387462306a36Sopenharmony_ci      - ``buffer_removal_time[V4L2_AV1_MAX_OPERATING_POINTS]``
387562306a36Sopenharmony_ci      - Specifies the frame removal time in units of DecCT clock ticks counted
387662306a36Sopenharmony_ci        from the removal time of the last random access point for operating point
387762306a36Sopenharmony_ci        opNum.
387862306a36Sopenharmony_ci    * - __u8
387962306a36Sopenharmony_ci      - ``reserved[4]``
388062306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
388162306a36Sopenharmony_ci    * - __u32
388262306a36Sopenharmony_ci      - ``order_hints[V4L2_AV1_TOTAL_REFS_PER_FRAME]``
388362306a36Sopenharmony_ci      - Specifies the expected output order hint for each reference frame.
388462306a36Sopenharmony_ci        This field corresponds to the OrderHints variable from the specification
388562306a36Sopenharmony_ci        (section 5.9.2  "Uncompressed header syntax"). As such, this is only
388662306a36Sopenharmony_ci        used for non-intra frames and ignored otherwise. order_hints[0] is
388762306a36Sopenharmony_ci        always ignored.
388862306a36Sopenharmony_ci    * - __u64
388962306a36Sopenharmony_ci      - ``reference_frame_ts[V4L2_AV1_TOTAL_REFS_PER_FRAME]``
389062306a36Sopenharmony_ci      - The V4L2 timestamp for each of the reference frames enumerated in
389162306a36Sopenharmony_ci        enum :c:type:`v4l2_av1_reference_frame` starting at
389262306a36Sopenharmony_ci        ``V4L2_AV1_REF_LAST_FRAME``. This represents the state of reference
389362306a36Sopenharmony_ci        slot as described in the spec and updated by userland through the
389462306a36Sopenharmony_ci        "Reference frame update process" in section 7.20 The timestamp refers
389562306a36Sopenharmony_ci        to the ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
389662306a36Sopenharmony_ci        :c:func:`v4l2_timeval_to_ns()` function to convert the struct
389762306a36Sopenharmony_ci        :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
389862306a36Sopenharmony_ci    * - __s8
389962306a36Sopenharmony_ci      - ``ref_frame_idx[V4L2_AV1_REFS_PER_FRAME]``
390062306a36Sopenharmony_ci      - An index into ``reference_frame_ts`` representing the ordered list of
390162306a36Sopenharmony_ci        references used by inter-frame. Matches the bitstream syntax
390262306a36Sopenharmony_ci        element of the same name.
390362306a36Sopenharmony_ci    * - __u8
390462306a36Sopenharmony_ci      - ``refresh_frame_flags``
390562306a36Sopenharmony_ci      - Contains a bitmask that specifies which reference frame slots will be
390662306a36Sopenharmony_ci        updated with the current frame after it is decoded.
390762306a36Sopenharmony_ci
390862306a36Sopenharmony_ci.. _av1_frame_flags:
390962306a36Sopenharmony_ci
391062306a36Sopenharmony_ci``AV1 Frame Flags``
391162306a36Sopenharmony_ci
391262306a36Sopenharmony_ci.. cssclass:: longtable
391362306a36Sopenharmony_ci
391462306a36Sopenharmony_ci.. flat-table::
391562306a36Sopenharmony_ci    :header-rows:  0
391662306a36Sopenharmony_ci    :stub-columns: 0
391762306a36Sopenharmony_ci    :widths:       1 1 2
391862306a36Sopenharmony_ci
391962306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_SHOW_FRAME``
392062306a36Sopenharmony_ci      - 0x00000001
392162306a36Sopenharmony_ci      - If set, specifies that this frame should be immediately output once
392262306a36Sopenharmony_ci        decoded. If not set, specifies that this frame should not be immediately
392362306a36Sopenharmony_ci        output; it may be output later if a later uncompressed header uses
392462306a36Sopenharmony_ci        show_existing_frame equal to 1.
392562306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_SHOWABLE_FRAME``
392662306a36Sopenharmony_ci      - 0x00000002
392762306a36Sopenharmony_ci      - If set, specifies that the frame may be output using the
392862306a36Sopenharmony_ci        show_existing_frame mechanism. If not set, specifies that this frame
392962306a36Sopenharmony_ci        will not be output using the show_existing_frame mechanism.
393062306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_ERROR_RESILIENT_MODE``
393162306a36Sopenharmony_ci      - 0x00000004
393262306a36Sopenharmony_ci      - Specifies whether error resilient mode is enabled.
393362306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_DISABLE_CDF_UPDATE``
393462306a36Sopenharmony_ci      - 0x00000008
393562306a36Sopenharmony_ci      - Specifies whether the CDF update in the symbol decoding process should
393662306a36Sopenharmony_ci        be disabled.
393762306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_ALLOW_SCREEN_CONTENT_TOOLS``
393862306a36Sopenharmony_ci      - 0x00000010
393962306a36Sopenharmony_ci      - If set, indicates that intra blocks may use palette encoding. If not
394062306a36Sopenharmony_ci        set, indicates that palette encoding is never used.
394162306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_FORCE_INTEGER_MV``
394262306a36Sopenharmony_ci      - 0x00000020
394362306a36Sopenharmony_ci      - If set, specifies that motion vectors will always be integers. If not
394462306a36Sopenharmony_ci        set, specifies that motion vectors can contain fractional bits.
394562306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_ALLOW_INTRABC``
394662306a36Sopenharmony_ci      - 0x00000040
394762306a36Sopenharmony_ci      - If set, indicates that intra block copy may be used in this frame. If
394862306a36Sopenharmony_ci        not set, indicates that intra block copy is not allowed in this frame.
394962306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_USE_SUPERRES``
395062306a36Sopenharmony_ci      - 0x00000080
395162306a36Sopenharmony_ci      - If set, indicates that upscaling is needed.
395262306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_ALLOW_HIGH_PRECISION_MV``
395362306a36Sopenharmony_ci      - 0x00000100
395462306a36Sopenharmony_ci      - If set, specifies that motion vectors are specified to eighth pel
395562306a36Sopenharmony_ci        precision. If not set, specifies that motion vectors are specified to
395662306a36Sopenharmony_ci        quarter pel precision;
395762306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_IS_MOTION_MODE_SWITCHABLE``
395862306a36Sopenharmony_ci      - 0x00000200
395962306a36Sopenharmony_ci      - If not set, specifies that only the SIMPLE motion mode will be used.
396062306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_USE_REF_FRAME_MVS``
396162306a36Sopenharmony_ci      - 0x00000400
396262306a36Sopenharmony_ci      - If set specifies that motion vector information from a previous frame
396362306a36Sopenharmony_ci        can be used when decoding the current frame. If not set, specifies that
396462306a36Sopenharmony_ci        this information will not be used.
396562306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_DISABLE_FRAME_END_UPDATE_CDF``
396662306a36Sopenharmony_ci      - 0x00000800
396762306a36Sopenharmony_ci      - If set indicates that the end of frame CDF update is disabled. If not
396862306a36Sopenharmony_ci        set, indicates that the end of frame CDF update is enabled
396962306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_ALLOW_WARPED_MOTION``
397062306a36Sopenharmony_ci      - 0x00001000
397162306a36Sopenharmony_ci      - If set, indicates that the syntax element motion_mode may be present, if
397262306a36Sopenharmony_ci        not set, indicates that the syntax element motion_mode will not be
397362306a36Sopenharmony_ci        present.
397462306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_REFERENCE_SELECT``
397562306a36Sopenharmony_ci      - 0x00002000
397662306a36Sopenharmony_ci      - If set, specifies that the mode info for inter blocks contains the
397762306a36Sopenharmony_ci        syntax element comp_mode that indicates whether to use single or
397862306a36Sopenharmony_ci        compound reference prediction. If not set, specifies that all inter
397962306a36Sopenharmony_ci        blocks will use single prediction.
398062306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_REDUCED_TX_SET``
398162306a36Sopenharmony_ci      - 0x00004000
398262306a36Sopenharmony_ci      - If set, specifies that the frame is restricted to a reduced subset of
398362306a36Sopenharmony_ci        the full set of transform types.
398462306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_SKIP_MODE_ALLOWED``
398562306a36Sopenharmony_ci      - 0x00008000
398662306a36Sopenharmony_ci      - This flag retains the same meaning as SkipModeAllowed in :ref:`av1`.
398762306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_SKIP_MODE_PRESENT``
398862306a36Sopenharmony_ci      - 0x00010000
398962306a36Sopenharmony_ci      - If set, specifies that the syntax element skip_mode will be present, if
399062306a36Sopenharmony_ci        not set, specifies that skip_mode will not be used for this frame.
399162306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_FRAME_SIZE_OVERRIDE``
399262306a36Sopenharmony_ci      - 0x00020000
399362306a36Sopenharmony_ci      - If set, specifies that the frame size will either be specified as the
399462306a36Sopenharmony_ci        size of one of the reference frames, or computed from the
399562306a36Sopenharmony_ci        frame_width_minus_1 and frame_height_minus_1 syntax elements. If not
399662306a36Sopenharmony_ci        set, specifies that the frame size is equal to the size in the sequence
399762306a36Sopenharmony_ci        header.
399862306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_BUFFER_REMOVAL_TIME_PRESENT``
399962306a36Sopenharmony_ci      - 0x00040000
400062306a36Sopenharmony_ci      - If set, specifies that buffer_removal_time is present. If not set,
400162306a36Sopenharmony_ci        specifies that buffer_removal_time is not present.
400262306a36Sopenharmony_ci    * - ``V4L2_AV1_FRAME_FLAG_FRAME_REFS_SHORT_SIGNALING``
400362306a36Sopenharmony_ci      - 0x00080000
400462306a36Sopenharmony_ci      - If set, indicates that only two reference frames are explicitly
400562306a36Sopenharmony_ci        signaled. If not set, indicates that all reference frames are explicitly
400662306a36Sopenharmony_ci        signaled.
400762306a36Sopenharmony_ci
400862306a36Sopenharmony_ci``V4L2_CID_STATELESS_AV1_FILM_GRAIN (struct)``
400962306a36Sopenharmony_ci    Represents the optional film grain parameters. See section
401062306a36Sopenharmony_ci    6.8.20 "Film grain params semantics" of :ref:`av1` for more details.
401162306a36Sopenharmony_ci
401262306a36Sopenharmony_ci.. c:type:: v4l2_ctrl_av1_film_grain
401362306a36Sopenharmony_ci
401462306a36Sopenharmony_ci.. cssclass:: longtable
401562306a36Sopenharmony_ci
401662306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}|
401762306a36Sopenharmony_ci
401862306a36Sopenharmony_ci.. flat-table:: struct v4l2_ctrl_av1_film_grain
401962306a36Sopenharmony_ci    :header-rows:  0
402062306a36Sopenharmony_ci    :stub-columns: 0
402162306a36Sopenharmony_ci    :widths:       1 1 2
402262306a36Sopenharmony_ci
402362306a36Sopenharmony_ci    * - __u8
402462306a36Sopenharmony_ci      - ``flags``
402562306a36Sopenharmony_ci      - See :ref:`AV1 Film Grain Flags <av1_film_grain_flags>`.
402662306a36Sopenharmony_ci    * - __u8
402762306a36Sopenharmony_ci      - ``cr_mult``
402862306a36Sopenharmony_ci      - Represents a multiplier for the cr component used in derivation of the
402962306a36Sopenharmony_ci        input index to the cr component scaling function.
403062306a36Sopenharmony_ci    * - __u16
403162306a36Sopenharmony_ci      - ``grain_seed``
403262306a36Sopenharmony_ci      - Specifies the starting value for the pseudo-random numbers used during
403362306a36Sopenharmony_ci        film grain synthesis.
403462306a36Sopenharmony_ci    * - __u8
403562306a36Sopenharmony_ci      - ``film_grain_params_ref_idx``
403662306a36Sopenharmony_ci      - Indicates which reference frame contains the film grain parameters to be
403762306a36Sopenharmony_ci	used for this frame.
403862306a36Sopenharmony_ci    * - __u8
403962306a36Sopenharmony_ci      - ``num_y_points``
404062306a36Sopenharmony_ci      - Specifies the number of points for the piece-wise linear scaling
404162306a36Sopenharmony_ci        function of the luma component.
404262306a36Sopenharmony_ci    * - __u8
404362306a36Sopenharmony_ci      - ``point_y_value[V4L2_AV1_MAX_NUM_Y_POINTS]``
404462306a36Sopenharmony_ci      - Represents the x (luma value) coordinate for the i-th point
404562306a36Sopenharmony_ci        of the piecewise linear scaling function for luma component. The values
404662306a36Sopenharmony_ci        are signaled on the scale of 0..255. In case of 10 bit video, these
404762306a36Sopenharmony_ci        values correspond to luma values divided by 4. In case of 12 bit video,
404862306a36Sopenharmony_ci        these values correspond to luma values divided by 16.
404962306a36Sopenharmony_ci    * - __u8
405062306a36Sopenharmony_ci      - ``point_y_scaling[V4L2_AV1_MAX_NUM_Y_POINTS]``
405162306a36Sopenharmony_ci      - Represents the scaling (output) value for the i-th point
405262306a36Sopenharmony_ci        of the piecewise linear scaling function for luma component.
405362306a36Sopenharmony_ci    * - __u8
405462306a36Sopenharmony_ci      - ``num_cb_points``
405562306a36Sopenharmony_ci      -  Specifies the number of points for the piece-wise linear scaling
405662306a36Sopenharmony_ci         function of the cb component.
405762306a36Sopenharmony_ci    * - __u8
405862306a36Sopenharmony_ci      - ``point_cb_value[V4L2_AV1_MAX_NUM_CB_POINTS]``
405962306a36Sopenharmony_ci      - Represents the x coordinate for the i-th point of the
406062306a36Sopenharmony_ci        piece-wise linear scaling function for cb component. The values are
406162306a36Sopenharmony_ci        signaled on the scale of 0..255.
406262306a36Sopenharmony_ci    * - __u8
406362306a36Sopenharmony_ci      - ``point_cb_scaling[V4L2_AV1_MAX_NUM_CB_POINTS]``
406462306a36Sopenharmony_ci      - Represents the scaling (output) value for the i-th point of the
406562306a36Sopenharmony_ci        piecewise linear scaling function for cb component.
406662306a36Sopenharmony_ci    * - __u8
406762306a36Sopenharmony_ci      - ``num_cr_points``
406862306a36Sopenharmony_ci      - Represents the number of points for the piece-wise
406962306a36Sopenharmony_ci        linear scaling function of the cr component.
407062306a36Sopenharmony_ci    * - __u8
407162306a36Sopenharmony_ci      - ``point_cr_value[V4L2_AV1_MAX_NUM_CR_POINTS]``
407262306a36Sopenharmony_ci      - Represents the x coordinate for the i-th point of the
407362306a36Sopenharmony_ci        piece-wise linear scaling function for cr component. The values are
407462306a36Sopenharmony_ci        signaled on the scale of 0..255.
407562306a36Sopenharmony_ci    * - __u8
407662306a36Sopenharmony_ci      - ``point_cr_scaling[V4L2_AV1_MAX_NUM_CR_POINTS]``
407762306a36Sopenharmony_ci      - Represents the scaling (output) value for the i-th point of the
407862306a36Sopenharmony_ci        piecewise linear scaling function for cr component.
407962306a36Sopenharmony_ci    * - __u8
408062306a36Sopenharmony_ci      - ``grain_scaling_minus_8``
408162306a36Sopenharmony_ci      - Represents the shift - 8 applied to the values of the chroma component.
408262306a36Sopenharmony_ci        The grain_scaling_minus_8 can take values of 0..3 and determines the
408362306a36Sopenharmony_ci        range and quantization step of the standard deviation of film grain.
408462306a36Sopenharmony_ci    * - __u8
408562306a36Sopenharmony_ci      - ``ar_coeff_lag``
408662306a36Sopenharmony_ci      - Specifies the number of auto-regressive coefficients for luma and
408762306a36Sopenharmony_ci        chroma.
408862306a36Sopenharmony_ci    * - __u8
408962306a36Sopenharmony_ci      - ``ar_coeffs_y_plus_128[V4L2_AV1_AR_COEFFS_SIZE]``
409062306a36Sopenharmony_ci      - Specifies auto-regressive coefficients used for the Y plane.
409162306a36Sopenharmony_ci    * - __u8
409262306a36Sopenharmony_ci      - ``ar_coeffs_cb_plus_128[V4L2_AV1_AR_COEFFS_SIZE]``
409362306a36Sopenharmony_ci      - Specifies auto-regressive coefficients used for the U plane.
409462306a36Sopenharmony_ci    * - __u8
409562306a36Sopenharmony_ci      - ``ar_coeffs_cr_plus_128[V4L2_AV1_AR_COEFFS_SIZE]``
409662306a36Sopenharmony_ci      - Specifies auto-regressive coefficients used for the V plane.
409762306a36Sopenharmony_ci    * - __u8
409862306a36Sopenharmony_ci      - ``ar_coeff_shift_minus_6``
409962306a36Sopenharmony_ci      - Specifies the range of the auto-regressive coefficients. Values of 0,
410062306a36Sopenharmony_ci        1, 2, and 3 correspond to the ranges for auto-regressive coefficients of
410162306a36Sopenharmony_ci        [-2, 2), [-1, 1), [-0.5, 0.5) and [-0.25, 0.25) respectively.
410262306a36Sopenharmony_ci    * - __u8
410362306a36Sopenharmony_ci      - ``grain_scale_shift``
410462306a36Sopenharmony_ci      - Specifies how much the Gaussian random numbers should be scaled down
410562306a36Sopenharmony_ci        during the grain synthesis process.
410662306a36Sopenharmony_ci    * - __u8
410762306a36Sopenharmony_ci      - ``cb_mult``
410862306a36Sopenharmony_ci      - Represents a multiplier for the cb component used in derivation of the
410962306a36Sopenharmony_ci        input index to the cb component scaling function.
411062306a36Sopenharmony_ci    * - __u8
411162306a36Sopenharmony_ci      - ``cb_luma_mult``
411262306a36Sopenharmony_ci      - Represents a multiplier for the average luma component used in
411362306a36Sopenharmony_ci        derivation of the input index to the cb component scaling function..
411462306a36Sopenharmony_ci    * - __u8
411562306a36Sopenharmony_ci      - ``cr_luma_mult``
411662306a36Sopenharmony_ci      - Represents a multiplier for the average luma component used in
411762306a36Sopenharmony_ci        derivation of the input index to the cr component scaling function.
411862306a36Sopenharmony_ci    * - __u16
411962306a36Sopenharmony_ci      - ``cb_offset``
412062306a36Sopenharmony_ci      - Represents an offset used in derivation of the input index to the
412162306a36Sopenharmony_ci        cb component scaling function.
412262306a36Sopenharmony_ci    * - __u16
412362306a36Sopenharmony_ci      - ``cr_offset``
412462306a36Sopenharmony_ci      - Represents an offset used in derivation of the input index to the
412562306a36Sopenharmony_ci        cr component scaling function.
412662306a36Sopenharmony_ci    * - __u8
412762306a36Sopenharmony_ci      - ``reserved[4]``
412862306a36Sopenharmony_ci      - Applications and drivers must set this to zero.
412962306a36Sopenharmony_ci
413062306a36Sopenharmony_ci.. _av1_film_grain_flags:
413162306a36Sopenharmony_ci
413262306a36Sopenharmony_ci``AV1 Film Grain Flags``
413362306a36Sopenharmony_ci
413462306a36Sopenharmony_ci.. cssclass:: longtable
413562306a36Sopenharmony_ci
413662306a36Sopenharmony_ci.. flat-table::
413762306a36Sopenharmony_ci    :header-rows:  0
413862306a36Sopenharmony_ci    :stub-columns: 0
413962306a36Sopenharmony_ci    :widths:       1 1 2
414062306a36Sopenharmony_ci
414162306a36Sopenharmony_ci    * - ``V4L2_AV1_FILM_GRAIN_FLAG_APPLY_GRAIN``
414262306a36Sopenharmony_ci      - 0x00000001
414362306a36Sopenharmony_ci      - If set, specifies that film grain should be added to this frame. If not
414462306a36Sopenharmony_ci        set, specifies that film grain should not be added.
414562306a36Sopenharmony_ci    * - ``V4L2_AV1_FILM_GRAIN_FLAG_UPDATE_GRAIN``
414662306a36Sopenharmony_ci      - 0x00000002
414762306a36Sopenharmony_ci      - If set, means that a new set of parameters should be sent. If not set,
414862306a36Sopenharmony_ci        specifies that the previous set of parameters should be used.
414962306a36Sopenharmony_ci    * - ``V4L2_AV1_FILM_GRAIN_FLAG_CHROMA_SCALING_FROM_LUMA``
415062306a36Sopenharmony_ci      - 0x00000004
415162306a36Sopenharmony_ci      - If set, specifies that the chroma scaling is inferred from the luma
415262306a36Sopenharmony_ci        scaling.
415362306a36Sopenharmony_ci    * - ``V4L2_AV1_FILM_GRAIN_FLAG_OVERLAP``
415462306a36Sopenharmony_ci      - 0x00000008
415562306a36Sopenharmony_ci      - If set, indicates that the overlap between film grain blocks shall be
415662306a36Sopenharmony_ci        applied. If not set, indicates that the overlap between film grain blocks
415762306a36Sopenharmony_ci        shall not be applied.
415862306a36Sopenharmony_ci    * - ``V4L2_AV1_FILM_GRAIN_FLAG_CLIP_TO_RESTRICTED_RANGE``
415962306a36Sopenharmony_ci      - 0x00000010
416062306a36Sopenharmony_ci      - If set, indicates that clipping to the restricted (studio, i.e. limited)
416162306a36Sopenharmony_ci        range shall be applied to the sample values after adding the film grain
416262306a36Sopenharmony_ci        (see the semantics for color_range for an explanation of studio swing).
416362306a36Sopenharmony_ci        If not set, indicates that clipping to the full range shall be applied
416462306a36Sopenharmony_ci        to the sample values after adding the film grain.
4165