1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 2 3 .. _codec-stateless-controls: 4 5 ********************************* 6 Stateless Codec Control Reference 7 ********************************* 8 9 The Stateless Codec control class is intended to support 10 stateless decoder and encoders (i.e. hardware accelerators). 11 12 These drivers are typically supported by the :ref:`stateless_decoder`, 13 and deal with parsed pixel formats such as V4L2_PIX_FMT_H264_SLICE. 14 15 Stateless Codec Control ID 16 ========================== 17 18 .. _codec-stateless-control-id: 19 20 ``V4L2_CID_CODEC_STATELESS_CLASS (class)`` 21 The Stateless Codec class descriptor. 22 23 .. _v4l2-codec-stateless-h264: 24 25 ``V4L2_CID_STATELESS_H264_SPS (struct)`` 26 Specifies the sequence parameter set (as extracted from the 27 bitstream) for the associated H264 slice data. This includes the 28 necessary parameters for configuring a stateless hardware decoding 29 pipeline for H264. The bitstream parameters are defined according 30 to :ref:`h264`, section 7.4.2.1.1 "Sequence Parameter Set Data 31 Semantics". For further documentation, refer to the above 32 specification, unless there is an explicit comment stating 33 otherwise. 34 35 .. c:type:: v4l2_ctrl_h264_sps 36 37 .. raw:: latex 38 39 \small 40 41 .. tabularcolumns:: |p{1.2cm}|p{8.6cm}|p{7.5cm}| 42 43 .. flat-table:: struct v4l2_ctrl_h264_sps 44 :header-rows: 0 45 :stub-columns: 0 46 :widths: 1 1 2 47 48 * - __u8 49 - ``profile_idc`` 50 - 51 * - __u8 52 - ``constraint_set_flags`` 53 - See :ref:`Sequence Parameter Set Constraints Set Flags <h264_sps_constraints_set_flags>` 54 * - __u8 55 - ``level_idc`` 56 - 57 * - __u8 58 - ``seq_parameter_set_id`` 59 - 60 * - __u8 61 - ``chroma_format_idc`` 62 - 63 * - __u8 64 - ``bit_depth_luma_minus8`` 65 - 66 * - __u8 67 - ``bit_depth_chroma_minus8`` 68 - 69 * - __u8 70 - ``log2_max_frame_num_minus4`` 71 - 72 * - __u8 73 - ``pic_order_cnt_type`` 74 - 75 * - __u8 76 - ``log2_max_pic_order_cnt_lsb_minus4`` 77 - 78 * - __u8 79 - ``max_num_ref_frames`` 80 - 81 * - __u8 82 - ``num_ref_frames_in_pic_order_cnt_cycle`` 83 - 84 * - __s32 85 - ``offset_for_ref_frame[255]`` 86 - 87 * - __s32 88 - ``offset_for_non_ref_pic`` 89 - 90 * - __s32 91 - ``offset_for_top_to_bottom_field`` 92 - 93 * - __u16 94 - ``pic_width_in_mbs_minus1`` 95 - 96 * - __u16 97 - ``pic_height_in_map_units_minus1`` 98 - 99 * - __u32 100 - ``flags`` 101 - See :ref:`Sequence Parameter Set Flags <h264_sps_flags>` 102 103 .. raw:: latex 104 105 \normalsize 106 107 .. _h264_sps_constraints_set_flags: 108 109 ``Sequence Parameter Set Constraints Set Flags`` 110 111 .. cssclass:: longtable 112 113 .. flat-table:: 114 :header-rows: 0 115 :stub-columns: 0 116 :widths: 1 1 2 117 118 * - ``V4L2_H264_SPS_CONSTRAINT_SET0_FLAG`` 119 - 0x00000001 120 - 121 * - ``V4L2_H264_SPS_CONSTRAINT_SET1_FLAG`` 122 - 0x00000002 123 - 124 * - ``V4L2_H264_SPS_CONSTRAINT_SET2_FLAG`` 125 - 0x00000004 126 - 127 * - ``V4L2_H264_SPS_CONSTRAINT_SET3_FLAG`` 128 - 0x00000008 129 - 130 * - ``V4L2_H264_SPS_CONSTRAINT_SET4_FLAG`` 131 - 0x00000010 132 - 133 * - ``V4L2_H264_SPS_CONSTRAINT_SET5_FLAG`` 134 - 0x00000020 135 - 136 137 .. _h264_sps_flags: 138 139 ``Sequence Parameter Set Flags`` 140 141 .. cssclass:: longtable 142 143 .. flat-table:: 144 :header-rows: 0 145 :stub-columns: 0 146 :widths: 1 1 2 147 148 * - ``V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE`` 149 - 0x00000001 150 - 151 * - ``V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS`` 152 - 0x00000002 153 - 154 * - ``V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO`` 155 - 0x00000004 156 - 157 * - ``V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED`` 158 - 0x00000008 159 - 160 * - ``V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY`` 161 - 0x00000010 162 - 163 * - ``V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD`` 164 - 0x00000020 165 - 166 * - ``V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE`` 167 - 0x00000040 168 - 169 170 ``V4L2_CID_STATELESS_H264_PPS (struct)`` 171 Specifies the picture parameter set (as extracted from the 172 bitstream) for the associated H264 slice data. This includes the 173 necessary parameters for configuring a stateless hardware decoding 174 pipeline for H264. The bitstream parameters are defined according 175 to :ref:`h264`, section 7.4.2.2 "Picture Parameter Set RBSP 176 Semantics". For further documentation, refer to the above 177 specification, unless there is an explicit comment stating 178 otherwise. 179 180 .. c:type:: v4l2_ctrl_h264_pps 181 182 .. raw:: latex 183 184 \small 185 186 .. flat-table:: struct v4l2_ctrl_h264_pps 187 :header-rows: 0 188 :stub-columns: 0 189 :widths: 1 1 2 190 191 * - __u8 192 - ``pic_parameter_set_id`` 193 - 194 * - __u8 195 - ``seq_parameter_set_id`` 196 - 197 * - __u8 198 - ``num_slice_groups_minus1`` 199 - 200 * - __u8 201 - ``num_ref_idx_l0_default_active_minus1`` 202 - 203 * - __u8 204 - ``num_ref_idx_l1_default_active_minus1`` 205 - 206 * - __u8 207 - ``weighted_bipred_idc`` 208 - 209 * - __s8 210 - ``pic_init_qp_minus26`` 211 - 212 * - __s8 213 - ``pic_init_qs_minus26`` 214 - 215 * - __s8 216 - ``chroma_qp_index_offset`` 217 - 218 * - __s8 219 - ``second_chroma_qp_index_offset`` 220 - 221 * - __u16 222 - ``flags`` 223 - See :ref:`Picture Parameter Set Flags <h264_pps_flags>` 224 225 .. raw:: latex 226 227 \normalsize 228 229 .. _h264_pps_flags: 230 231 ``Picture Parameter Set Flags`` 232 233 .. raw:: latex 234 235 \begingroup 236 \scriptsize 237 \setlength{\tabcolsep}{2pt} 238 239 .. tabularcolumns:: |p{9.8cm}|p{1.0cm}|p{6.5cm}| 240 241 .. flat-table:: 242 :header-rows: 0 243 :stub-columns: 0 244 :widths: 10 1 4 245 246 * - ``V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE`` 247 - 0x0001 248 - 249 * - ``V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT`` 250 - 0x0002 251 - 252 * - ``V4L2_H264_PPS_FLAG_WEIGHTED_PRED`` 253 - 0x0004 254 - 255 * - ``V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT`` 256 - 0x0008 257 - 258 * - ``V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED`` 259 - 0x0010 260 - 261 * - ``V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT`` 262 - 0x0020 263 - 264 * - ``V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE`` 265 - 0x0040 266 - 267 * - ``V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT`` 268 - 0x0080 269 - ``V4L2_CID_STATELESS_H264_SCALING_MATRIX`` 270 must be used for this picture. 271 272 .. raw:: latex 273 274 \endgroup 275 276 ``V4L2_CID_STATELESS_H264_SCALING_MATRIX (struct)`` 277 Specifies the scaling matrix (as extracted from the bitstream) for 278 the associated H264 slice data. The bitstream parameters are 279 defined according to :ref:`h264`, section 7.4.2.1.1.1 "Scaling 280 List Semantics". For further documentation, refer to the above 281 specification, unless there is an explicit comment stating 282 otherwise. 283 284 .. c:type:: v4l2_ctrl_h264_scaling_matrix 285 286 .. raw:: latex 287 288 \small 289 290 .. tabularcolumns:: |p{0.6cm}|p{4.8cm}|p{11.9cm}| 291 292 .. flat-table:: struct v4l2_ctrl_h264_scaling_matrix 293 :header-rows: 0 294 :stub-columns: 0 295 :widths: 1 1 2 296 297 * - __u8 298 - ``scaling_list_4x4[6][16]`` 299 - Scaling matrix after applying the inverse scanning process. 300 Expected list order is Intra Y, Intra Cb, Intra Cr, Inter Y, 301 Inter Cb, Inter Cr. The values on each scaling list are 302 expected in raster scan order. 303 * - __u8 304 - ``scaling_list_8x8[6][64]`` 305 - Scaling matrix after applying the inverse scanning process. 306 Expected list order is Intra Y, Inter Y, Intra Cb, Inter Cb, 307 Intra Cr, Inter Cr. The values on each scaling list are 308 expected in raster scan order. 309 310 ``V4L2_CID_STATELESS_H264_SLICE_PARAMS (struct)`` 311 Specifies the slice parameters (as extracted from the bitstream) 312 for the associated H264 slice data. This includes the necessary 313 parameters for configuring a stateless hardware decoding pipeline 314 for H264. The bitstream parameters are defined according to 315 :ref:`h264`, section 7.4.3 "Slice Header Semantics". For further 316 documentation, refer to the above specification, unless there is 317 an explicit comment stating otherwise. 318 319 .. c:type:: v4l2_ctrl_h264_slice_params 320 321 .. raw:: latex 322 323 \small 324 325 .. tabularcolumns:: |p{4.0cm}|p{5.9cm}|p{7.4cm}| 326 327 .. flat-table:: struct v4l2_ctrl_h264_slice_params 328 :header-rows: 0 329 :stub-columns: 0 330 :widths: 1 1 2 331 332 * - __u32 333 - ``header_bit_size`` 334 - Offset in bits to slice_data() from the beginning of this slice. 335 * - __u32 336 - ``first_mb_in_slice`` 337 - 338 * - __u8 339 - ``slice_type`` 340 - 341 * - __u8 342 - ``colour_plane_id`` 343 - 344 * - __u8 345 - ``redundant_pic_cnt`` 346 - 347 * - __u8 348 - ``cabac_init_idc`` 349 - 350 * - __s8 351 - ``slice_qp_delta`` 352 - 353 * - __s8 354 - ``slice_qs_delta`` 355 - 356 * - __u8 357 - ``disable_deblocking_filter_idc`` 358 - 359 * - __s8 360 - ``slice_alpha_c0_offset_div2`` 361 - 362 * - __s8 363 - ``slice_beta_offset_div2`` 364 - 365 * - __u8 366 - ``num_ref_idx_l0_active_minus1`` 367 - If num_ref_idx_active_override_flag is not set, this field must be 368 set to the value of num_ref_idx_l0_default_active_minus1 369 * - __u8 370 - ``num_ref_idx_l1_active_minus1`` 371 - If num_ref_idx_active_override_flag is not set, this field must be 372 set to the value of num_ref_idx_l1_default_active_minus1 373 * - __u8 374 - ``reserved`` 375 - Applications and drivers must set this to zero. 376 * - struct :c:type:`v4l2_h264_reference` 377 - ``ref_pic_list0[32]`` 378 - Reference picture list after applying the per-slice modifications 379 * - struct :c:type:`v4l2_h264_reference` 380 - ``ref_pic_list1[32]`` 381 - Reference picture list after applying the per-slice modifications 382 * - __u32 383 - ``flags`` 384 - See :ref:`Slice Parameter Flags <h264_slice_flags>` 385 386 .. raw:: latex 387 388 \normalsize 389 390 .. _h264_slice_flags: 391 392 ``Slice Parameter Set Flags`` 393 394 .. cssclass:: longtable 395 396 .. flat-table:: 397 :header-rows: 0 398 :stub-columns: 0 399 :widths: 1 1 2 400 401 * - ``V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED`` 402 - 0x00000001 403 - 404 * - ``V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH`` 405 - 0x00000002 406 - 407 408 ``V4L2_CID_STATELESS_H264_PRED_WEIGHTS (struct)`` 409 Prediction weight table defined according to :ref:`h264`, 410 section 7.4.3.2 "Prediction Weight Table Semantics". 411 The prediction weight table must be passed by applications 412 under the conditions explained in section 7.3.3 "Slice header 413 syntax". 414 415 .. c:type:: v4l2_ctrl_h264_pred_weights 416 417 .. raw:: latex 418 419 \small 420 421 .. tabularcolumns:: |p{4.9cm}|p{4.9cm}|p{7.5cm}| 422 423 .. flat-table:: struct v4l2_ctrl_h264_pred_weights 424 :header-rows: 0 425 :stub-columns: 0 426 :widths: 1 1 2 427 428 * - __u16 429 - ``luma_log2_weight_denom`` 430 - 431 * - __u16 432 - ``chroma_log2_weight_denom`` 433 - 434 * - struct :c:type:`v4l2_h264_weight_factors` 435 - ``weight_factors[2]`` 436 - The weight factors at index 0 are the weight factors for the reference 437 list 0, the one at index 1 for the reference list 1. 438 439 .. raw:: latex 440 441 \normalsize 442 443 .. c:type:: v4l2_h264_weight_factors 444 445 .. raw:: latex 446 447 \small 448 449 .. tabularcolumns:: |p{1.0cm}|p{4.5cm}|p{11.8cm}| 450 451 .. flat-table:: struct v4l2_h264_weight_factors 452 :header-rows: 0 453 :stub-columns: 0 454 :widths: 1 1 2 455 456 * - __s16 457 - ``luma_weight[32]`` 458 - 459 * - __s16 460 - ``luma_offset[32]`` 461 - 462 * - __s16 463 - ``chroma_weight[32][2]`` 464 - 465 * - __s16 466 - ``chroma_offset[32][2]`` 467 - 468 469 .. raw:: latex 470 471 \normalsize 472 473 ``Picture Reference`` 474 475 .. c:type:: v4l2_h264_reference 476 477 .. cssclass:: longtable 478 479 .. flat-table:: struct v4l2_h264_reference 480 :header-rows: 0 481 :stub-columns: 0 482 :widths: 1 1 2 483 484 * - __u8 485 - ``fields`` 486 - Specifies how the picture is referenced. See :ref:`Reference Fields <h264_ref_fields>` 487 * - __u8 488 - ``index`` 489 - Index into the :c:type:`v4l2_ctrl_h264_decode_params`.dpb array. 490 491 .. _h264_ref_fields: 492 493 ``Reference Fields`` 494 495 .. raw:: latex 496 497 \small 498 499 .. tabularcolumns:: |p{5.4cm}|p{0.8cm}|p{11.1cm}| 500 501 .. flat-table:: 502 :header-rows: 0 503 :stub-columns: 0 504 :widths: 1 1 2 505 506 * - ``V4L2_H264_TOP_FIELD_REF`` 507 - 0x1 508 - The top field in field pair is used for short-term reference. 509 * - ``V4L2_H264_BOTTOM_FIELD_REF`` 510 - 0x2 511 - The bottom field in field pair is used for short-term reference. 512 * - ``V4L2_H264_FRAME_REF`` 513 - 0x3 514 - The frame (or the top/bottom fields, if it's a field pair) 515 is used for short-term reference. 516 517 .. raw:: latex 518 519 \normalsize 520 521 ``V4L2_CID_STATELESS_H264_DECODE_PARAMS (struct)`` 522 Specifies the decode parameters (as extracted from the bitstream) 523 for the associated H264 slice data. This includes the necessary 524 parameters for configuring a stateless hardware decoding pipeline 525 for H264. The bitstream parameters are defined according to 526 :ref:`h264`. For further documentation, refer to the above 527 specification, unless there is an explicit comment stating 528 otherwise. 529 530 .. c:type:: v4l2_ctrl_h264_decode_params 531 532 .. raw:: latex 533 534 \small 535 536 .. tabularcolumns:: |p{4.0cm}|p{5.9cm}|p{7.4cm}| 537 538 .. flat-table:: struct v4l2_ctrl_h264_decode_params 539 :header-rows: 0 540 :stub-columns: 0 541 :widths: 1 1 2 542 543 * - struct :c:type:`v4l2_h264_dpb_entry` 544 - ``dpb[16]`` 545 - 546 * - __u16 547 - ``nal_ref_idc`` 548 - NAL reference ID value coming from the NAL Unit header 549 * - __u16 550 - ``frame_num`` 551 - 552 * - __s32 553 - ``top_field_order_cnt`` 554 - Picture Order Count for the coded top field 555 * - __s32 556 - ``bottom_field_order_cnt`` 557 - Picture Order Count for the coded bottom field 558 * - __u16 559 - ``idr_pic_id`` 560 - 561 * - __u16 562 - ``pic_order_cnt_lsb`` 563 - 564 * - __s32 565 - ``delta_pic_order_cnt_bottom`` 566 - 567 * - __s32 568 - ``delta_pic_order_cnt0`` 569 - 570 * - __s32 571 - ``delta_pic_order_cnt1`` 572 - 573 * - __u32 574 - ``dec_ref_pic_marking_bit_size`` 575 - Size in bits of the dec_ref_pic_marking() syntax element. 576 * - __u32 577 - ``pic_order_cnt_bit_size`` 578 - Combined size in bits of the picture order count related syntax 579 elements: pic_order_cnt_lsb, delta_pic_order_cnt_bottom, 580 delta_pic_order_cnt0, and delta_pic_order_cnt1. 581 * - __u32 582 - ``slice_group_change_cycle`` 583 - 584 * - __u32 585 - ``reserved`` 586 - Applications and drivers must set this to zero. 587 * - __u32 588 - ``flags`` 589 - See :ref:`Decode Parameters Flags <h264_decode_params_flags>` 590 591 .. raw:: latex 592 593 \normalsize 594 595 .. _h264_decode_params_flags: 596 597 ``Decode Parameters Flags`` 598 599 .. raw:: latex 600 601 \small 602 603 .. tabularcolumns:: |p{8.3cm}|p{2.1cm}|p{6.9cm}| 604 605 .. flat-table:: 606 :header-rows: 0 607 :stub-columns: 0 608 :widths: 1 1 2 609 610 * - ``V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC`` 611 - 0x00000001 612 - That picture is an IDR picture 613 * - ``V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC`` 614 - 0x00000002 615 - 616 * - ``V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD`` 617 - 0x00000004 618 - 619 * - ``V4L2_H264_DECODE_PARAM_FLAG_PFRAME`` 620 - 0x00000008 621 - 622 * - ``V4L2_H264_DECODE_PARAM_FLAG_BFRAME`` 623 - 0x00000010 624 - 625 626 .. raw:: latex 627 628 \normalsize 629 630 .. c:type:: v4l2_h264_dpb_entry 631 632 .. raw:: latex 633 634 \small 635 636 .. tabularcolumns:: |p{1.0cm}|p{4.9cm}|p{11.4cm}| 637 638 .. flat-table:: struct v4l2_h264_dpb_entry 639 :header-rows: 0 640 :stub-columns: 0 641 :widths: 1 1 2 642 643 * - __u64 644 - ``reference_ts`` 645 - Timestamp of the V4L2 capture buffer to use as reference, used 646 with B-coded and P-coded frames. The timestamp refers to the 647 ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the 648 :c:func:`v4l2_timeval_to_ns()` function to convert the struct 649 :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64. 650 * - __u32 651 - ``pic_num`` 652 - For short term references, this must match the derived value PicNum 653 (8-28) and for long term references it must match the derived value 654 LongTermPicNum (8-29). When decoding frames (as opposed to fields) 655 pic_num is the same as FrameNumWrap. 656 * - __u16 657 - ``frame_num`` 658 - For short term references, this must match the frame_num value from 659 the slice header syntax (the driver will wrap the value if needed). For 660 long term references, this must be set to the value of 661 long_term_frame_idx described in the dec_ref_pic_marking() syntax. 662 * - __u8 663 - ``fields`` 664 - Specifies how the DPB entry is referenced. See :ref:`Reference Fields <h264_ref_fields>` 665 * - __u8 666 - ``reserved[5]`` 667 - Applications and drivers must set this to zero. 668 * - __s32 669 - ``top_field_order_cnt`` 670 - 671 * - __s32 672 - ``bottom_field_order_cnt`` 673 - 674 * - __u32 675 - ``flags`` 676 - See :ref:`DPB Entry Flags <h264_dpb_flags>` 677 678 .. raw:: latex 679 680 \normalsize 681 682 .. _h264_dpb_flags: 683 684 ``DPB Entries Flags`` 685 686 .. raw:: latex 687 688 \small 689 690 .. tabularcolumns:: |p{7.7cm}|p{2.1cm}|p{7.5cm}| 691 692 .. flat-table:: 693 :header-rows: 0 694 :stub-columns: 0 695 :widths: 1 1 2 696 697 * - ``V4L2_H264_DPB_ENTRY_FLAG_VALID`` 698 - 0x00000001 699 - The DPB entry is valid (non-empty) and should be considered. 700 * - ``V4L2_H264_DPB_ENTRY_FLAG_ACTIVE`` 701 - 0x00000002 702 - The DPB entry is used for reference. 703 * - ``V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM`` 704 - 0x00000004 705 - The DPB entry is used for long-term reference. 706 * - ``V4L2_H264_DPB_ENTRY_FLAG_FIELD`` 707 - 0x00000008 708 - The DPB entry is a single field or a complementary field pair. 709 710 .. raw:: latex 711 712 \normalsize 713 714 ``V4L2_CID_STATELESS_H264_DECODE_MODE (enum)`` 715 Specifies the decoding mode to use. Currently exposes slice-based and 716 frame-based decoding but new modes might be added later on. 717 This control is used as a modifier for V4L2_PIX_FMT_H264_SLICE 718 pixel format. Applications that support V4L2_PIX_FMT_H264_SLICE 719 are required to set this control in order to specify the decoding mode 720 that is expected for the buffer. 721 Drivers may expose a single or multiple decoding modes, depending 722 on what they can support. 723 724 .. c:type:: v4l2_stateless_h264_decode_mode 725 726 .. raw:: latex 727 728 \scriptsize 729 730 .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}| 731 732 .. flat-table:: 733 :header-rows: 0 734 :stub-columns: 0 735 :widths: 1 1 2 736 737 * - ``V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED`` 738 - 0 739 - Decoding is done at the slice granularity. 740 The OUTPUT buffer must contain a single slice. 741 When this mode is selected, the ``V4L2_CID_STATELESS_H264_SLICE_PARAMS`` 742 control shall be set. When multiple slices compose a frame, 743 use of ``V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF`` flag 744 is required. 745 * - ``V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED`` 746 - 1 747 - Decoding is done at the frame granularity, 748 The OUTPUT buffer must contain all slices needed to decode the 749 frame. The OUTPUT buffer must also contain both fields. 750 This mode will be supported by devices that 751 parse the slice(s) header(s) in hardware. When this mode is 752 selected, the ``V4L2_CID_STATELESS_H264_SLICE_PARAMS`` 753 control shall not be set. 754 755 .. raw:: latex 756 757 \normalsize 758 759 ``V4L2_CID_STATELESS_H264_START_CODE (enum)`` 760 Specifies the H264 slice start code expected for each slice. 761 This control is used as a modifier for V4L2_PIX_FMT_H264_SLICE 762 pixel format. Applications that support V4L2_PIX_FMT_H264_SLICE 763 are required to set this control in order to specify the start code 764 that is expected for the buffer. 765 Drivers may expose a single or multiple start codes, depending 766 on what they can support. 767 768 .. c:type:: v4l2_stateless_h264_start_code 769 770 .. raw:: latex 771 772 \small 773 774 .. tabularcolumns:: |p{7.9cm}|p{0.4cm}|p{9.0cm}| 775 776 .. flat-table:: 777 :header-rows: 0 778 :stub-columns: 0 779 :widths: 4 1 4 780 781 * - ``V4L2_STATELESS_H264_START_CODE_NONE`` 782 - 0 783 - Selecting this value specifies that H264 slices are passed 784 to the driver without any start code. The bitstream data should be 785 according to :ref:`h264` 7.3.1 NAL unit syntax, hence contains 786 emulation prevention bytes when required. 787 * - ``V4L2_STATELESS_H264_START_CODE_ANNEX_B`` 788 - 1 789 - Selecting this value specifies that H264 slices are expected 790 to be prefixed by Annex B start codes. According to :ref:`h264` 791 valid start codes can be 3-bytes 0x000001 or 4-bytes 0x00000001. 792 793 .. raw:: latex 794 795 \normalsize 796 797 .. _codec-stateless-fwht: 798 799 ``V4L2_CID_STATELESS_FWHT_PARAMS (struct)`` 800 Specifies the FWHT (Fast Walsh Hadamard Transform) parameters (as extracted 801 from the bitstream) for the associated FWHT data. This includes the necessary 802 parameters for configuring a stateless hardware decoding pipeline for FWHT. 803 This codec is specific to the vicodec test driver. 804 805 .. c:type:: v4l2_ctrl_fwht_params 806 807 .. raw:: latex 808 809 \small 810 811 .. tabularcolumns:: |p{1.4cm}|p{3.9cm}|p{12.0cm}| 812 813 .. flat-table:: struct v4l2_ctrl_fwht_params 814 :header-rows: 0 815 :stub-columns: 0 816 :widths: 1 1 2 817 818 * - __u64 819 - ``backward_ref_ts`` 820 - Timestamp of the V4L2 capture buffer to use as backward reference, used 821 with P-coded frames. The timestamp refers to the 822 ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the 823 :c:func:`v4l2_timeval_to_ns()` function to convert the struct 824 :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64. 825 * - __u32 826 - ``version`` 827 - The version of the codec. Set to ``V4L2_FWHT_VERSION``. 828 * - __u32 829 - ``width`` 830 - The width of the frame. 831 * - __u32 832 - ``height`` 833 - The height of the frame. 834 * - __u32 835 - ``flags`` 836 - The flags of the frame, see :ref:`fwht-flags`. 837 * - __u32 838 - ``colorspace`` 839 - The colorspace of the frame, from enum :c:type:`v4l2_colorspace`. 840 * - __u32 841 - ``xfer_func`` 842 - The transfer function, from enum :c:type:`v4l2_xfer_func`. 843 * - __u32 844 - ``ycbcr_enc`` 845 - The Y'CbCr encoding, from enum :c:type:`v4l2_ycbcr_encoding`. 846 * - __u32 847 - ``quantization`` 848 - The quantization range, from enum :c:type:`v4l2_quantization`. 849 850 .. raw:: latex 851 852 \normalsize 853 854 .. _fwht-flags: 855 856 FWHT Flags 857 ========== 858 859 .. raw:: latex 860 861 \small 862 863 .. tabularcolumns:: |p{7.0cm}|p{2.3cm}|p{8.0cm}| 864 865 .. flat-table:: 866 :header-rows: 0 867 :stub-columns: 0 868 :widths: 3 1 4 869 870 * - ``V4L2_FWHT_FL_IS_INTERLACED`` 871 - 0x00000001 872 - Set if this is an interlaced format. 873 * - ``V4L2_FWHT_FL_IS_BOTTOM_FIRST`` 874 - 0x00000002 875 - Set if this is a bottom-first (NTSC) interlaced format. 876 * - ``V4L2_FWHT_FL_IS_ALTERNATE`` 877 - 0x00000004 878 - Set if each 'frame' contains just one field. 879 * - ``V4L2_FWHT_FL_IS_BOTTOM_FIELD`` 880 - 0x00000008 881 - If V4L2_FWHT_FL_IS_ALTERNATE was set, then this is set if this 'frame' is the 882 bottom field, else it is the top field. 883 * - ``V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED`` 884 - 0x00000010 885 - Set if the Y' (luma) plane is uncompressed. 886 * - ``V4L2_FWHT_FL_CB_IS_UNCOMPRESSED`` 887 - 0x00000020 888 - Set if the Cb plane is uncompressed. 889 * - ``V4L2_FWHT_FL_CR_IS_UNCOMPRESSED`` 890 - 0x00000040 891 - Set if the Cr plane is uncompressed. 892 * - ``V4L2_FWHT_FL_CHROMA_FULL_HEIGHT`` 893 - 0x00000080 894 - Set if the chroma plane has the same height as the luma plane, 895 else the chroma plane is half the height of the luma plane. 896 * - ``V4L2_FWHT_FL_CHROMA_FULL_WIDTH`` 897 - 0x00000100 898 - Set if the chroma plane has the same width as the luma plane, 899 else the chroma plane is half the width of the luma plane. 900 * - ``V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED`` 901 - 0x00000200 902 - Set if the alpha plane is uncompressed. 903 * - ``V4L2_FWHT_FL_I_FRAME`` 904 - 0x00000400 905 - Set if this is an I-frame. 906 * - ``V4L2_FWHT_FL_COMPONENTS_NUM_MSK`` 907 - 0x00070000 908 - The number of color components minus one. 909 * - ``V4L2_FWHT_FL_PIXENC_MSK`` 910 - 0x00180000 911 - The mask for the pixel encoding. 912 * - ``V4L2_FWHT_FL_PIXENC_YUV`` 913 - 0x00080000 914 - Set if the pixel encoding is YUV. 915 * - ``V4L2_FWHT_FL_PIXENC_RGB`` 916 - 0x00100000 917 - Set if the pixel encoding is RGB. 918 * - ``V4L2_FWHT_FL_PIXENC_HSV`` 919 - 0x00180000 920 - Set if the pixel encoding is HSV. 921 922 .. raw:: latex 923 924 \normalsize 925 926 .. _v4l2-codec-stateless-vp8: 927 928 ``V4L2_CID_STATELESS_VP8_FRAME (struct)`` 929 Specifies the frame parameters for the associated VP8 parsed frame data. 930 This includes the necessary parameters for 931 configuring a stateless hardware decoding pipeline for VP8. 932 The bitstream parameters are defined according to :ref:`vp8`. 933 934 .. c:type:: v4l2_ctrl_vp8_frame 935 936 .. raw:: latex 937 938 \small 939 940 .. tabularcolumns:: |p{7.0cm}|p{4.6cm}|p{5.7cm}| 941 942 .. cssclass:: longtable 943 944 .. flat-table:: struct v4l2_ctrl_vp8_frame 945 :header-rows: 0 946 :stub-columns: 0 947 :widths: 1 1 2 948 949 * - struct :c:type:`v4l2_vp8_segment` 950 - ``segment`` 951 - Structure with segment-based adjustments metadata. 952 * - struct :c:type:`v4l2_vp8_loop_filter` 953 - ``lf`` 954 - Structure with loop filter level adjustments metadata. 955 * - struct :c:type:`v4l2_vp8_quantization` 956 - ``quant`` 957 - Structure with VP8 dequantization indices metadata. 958 * - struct :c:type:`v4l2_vp8_entropy` 959 - ``entropy`` 960 - Structure with VP8 entropy coder probabilities metadata. 961 * - struct :c:type:`v4l2_vp8_entropy_coder_state` 962 - ``coder_state`` 963 - Structure with VP8 entropy coder state. 964 * - __u16 965 - ``width`` 966 - The width of the frame. Must be set for all frames. 967 * - __u16 968 - ``height`` 969 - The height of the frame. Must be set for all frames. 970 * - __u8 971 - ``horizontal_scale`` 972 - Horizontal scaling factor. 973 * - __u8 974 - ``vertical_scale`` 975 - Vertical scaling factor. 976 * - __u8 977 - ``version`` 978 - Bitstream version. 979 * - __u8 980 - ``prob_skip_false`` 981 - Indicates the probability that the macroblock is not skipped. 982 * - __u8 983 - ``prob_intra`` 984 - Indicates the probability that a macroblock is intra-predicted. 985 * - __u8 986 - ``prob_last`` 987 - Indicates the probability that the last reference frame is used 988 for inter-prediction 989 * - __u8 990 - ``prob_gf`` 991 - Indicates the probability that the golden reference frame is used 992 for inter-prediction 993 * - __u8 994 - ``num_dct_parts`` 995 - Number of DCT coefficients partitions. Must be one of: 1, 2, 4, or 8. 996 * - __u32 997 - ``first_part_size`` 998 - Size of the first partition, i.e. the control partition. 999 * - __u32 1000 - ``first_part_header_bits`` 1001 - Size in bits of the first partition header portion. 1002 * - __u32 1003 - ``dct_part_sizes[8]`` 1004 - DCT coefficients sizes. 1005 * - __u64 1006 - ``last_frame_ts`` 1007 - Timestamp for the V4L2 capture buffer to use as last reference frame, used 1008 with inter-coded frames. The timestamp refers to the ``timestamp`` field in 1009 struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()` 1010 function to convert the struct :c:type:`timeval` in struct 1011 :c:type:`v4l2_buffer` to a __u64. 1012 * - __u64 1013 - ``golden_frame_ts`` 1014 - Timestamp for the V4L2 capture buffer to use as last reference frame, used 1015 with inter-coded frames. The timestamp refers to the ``timestamp`` field in 1016 struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()` 1017 function to convert the struct :c:type:`timeval` in struct 1018 :c:type:`v4l2_buffer` to a __u64. 1019 * - __u64 1020 - ``alt_frame_ts`` 1021 - Timestamp for the V4L2 capture buffer to use as alternate reference frame, used 1022 with inter-coded frames. The timestamp refers to the ``timestamp`` field in 1023 struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()` 1024 function to convert the struct :c:type:`timeval` in struct 1025 :c:type:`v4l2_buffer` to a __u64. 1026 * - __u64 1027 - ``flags`` 1028 - See :ref:`Frame Flags <vp8_frame_flags>` 1029 1030 .. raw:: latex 1031 1032 \normalsize 1033 1034 .. _vp8_frame_flags: 1035 1036 ``Frame Flags`` 1037 1038 .. tabularcolumns:: |p{9.8cm}|p{0.8cm}|p{6.7cm}| 1039 1040 .. cssclass:: longtable 1041 1042 .. flat-table:: 1043 :header-rows: 0 1044 :stub-columns: 0 1045 :widths: 1 1 2 1046 1047 * - ``V4L2_VP8_FRAME_FLAG_KEY_FRAME`` 1048 - 0x01 1049 - Indicates if the frame is a key frame. 1050 * - ``V4L2_VP8_FRAME_FLAG_EXPERIMENTAL`` 1051 - 0x02 1052 - Experimental bitstream. 1053 * - ``V4L2_VP8_FRAME_FLAG_SHOW_FRAME`` 1054 - 0x04 1055 - Show frame flag, indicates if the frame is for display. 1056 * - ``V4L2_VP8_FRAME_FLAG_MB_NO_SKIP_COEFF`` 1057 - 0x08 1058 - Enable/disable skipping of macroblocks with no non-zero coefficients. 1059 * - ``V4L2_VP8_FRAME_FLAG_SIGN_BIAS_GOLDEN`` 1060 - 0x10 1061 - Sign of motion vectors when the golden frame is referenced. 1062 * - ``V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT`` 1063 - 0x20 1064 - Sign of motion vectors when the alt frame is referenced. 1065 1066 .. c:type:: v4l2_vp8_entropy_coder_state 1067 1068 .. cssclass:: longtable 1069 1070 .. tabularcolumns:: |p{1.0cm}|p{2.0cm}|p{14.3cm}| 1071 1072 .. flat-table:: struct v4l2_vp8_entropy_coder_state 1073 :header-rows: 0 1074 :stub-columns: 0 1075 :widths: 1 1 2 1076 1077 * - __u8 1078 - ``range`` 1079 - coder state value for "Range" 1080 * - __u8 1081 - ``value`` 1082 - coder state value for "Value"- 1083 * - __u8 1084 - ``bit_count`` 1085 - number of bits left. 1086 * - __u8 1087 - ``padding`` 1088 - Applications and drivers must set this to zero. 1089 1090 .. c:type:: v4l2_vp8_segment 1091 1092 .. cssclass:: longtable 1093 1094 .. tabularcolumns:: |p{1.2cm}|p{4.0cm}|p{12.1cm}| 1095 1096 .. flat-table:: struct v4l2_vp8_segment 1097 :header-rows: 0 1098 :stub-columns: 0 1099 :widths: 1 1 2 1100 1101 * - __s8 1102 - ``quant_update[4]`` 1103 - Signed quantizer value update. 1104 * - __s8 1105 - ``lf_update[4]`` 1106 - Signed loop filter level value update. 1107 * - __u8 1108 - ``segment_probs[3]`` 1109 - Segment probabilities. 1110 * - __u8 1111 - ``padding`` 1112 - Applications and drivers must set this to zero. 1113 * - __u32 1114 - ``flags`` 1115 - See :ref:`Segment Flags <vp8_segment_flags>` 1116 1117 .. _vp8_segment_flags: 1118 1119 ``Segment Flags`` 1120 1121 .. raw:: latex 1122 1123 \small 1124 1125 .. tabularcolumns:: |p{10cm}|p{1.0cm}|p{6.3cm}| 1126 1127 .. flat-table:: 1128 :header-rows: 0 1129 :stub-columns: 0 1130 :widths: 1 1 2 1131 1132 * - ``V4L2_VP8_SEGMENT_FLAG_ENABLED`` 1133 - 0x01 1134 - Enable/disable segment-based adjustments. 1135 * - ``V4L2_VP8_SEGMENT_FLAG_UPDATE_MAP`` 1136 - 0x02 1137 - Indicates if the macroblock segmentation map is updated in this frame. 1138 * - ``V4L2_VP8_SEGMENT_FLAG_UPDATE_FEATURE_DATA`` 1139 - 0x04 1140 - Indicates if the segment feature data is updated in this frame. 1141 * - ``V4L2_VP8_SEGMENT_FLAG_DELTA_VALUE_MODE`` 1142 - 0x08 1143 - If is set, the segment feature data mode is delta-value. 1144 If cleared, it's absolute-value. 1145 1146 .. raw:: latex 1147 1148 \normalsize 1149 1150 .. c:type:: v4l2_vp8_loop_filter 1151 1152 .. cssclass:: longtable 1153 1154 .. tabularcolumns:: |p{1.5cm}|p{3.9cm}|p{11.9cm}| 1155 1156 .. flat-table:: struct v4l2_vp8_loop_filter 1157 :header-rows: 0 1158 :stub-columns: 0 1159 :widths: 1 1 2 1160 1161 * - __s8 1162 - ``ref_frm_delta[4]`` 1163 - Reference adjustment (signed) delta value. 1164 * - __s8 1165 - ``mb_mode_delta[4]`` 1166 - Macroblock prediction mode adjustment (signed) delta value. 1167 * - __u8 1168 - ``sharpness_level`` 1169 - Sharpness level 1170 * - __u8 1171 - ``level`` 1172 - Filter level 1173 * - __u16 1174 - ``padding`` 1175 - Applications and drivers must set this to zero. 1176 * - __u32 1177 - ``flags`` 1178 - See :ref:`Loop Filter Flags <vp8_loop_filter_flags>` 1179 1180 .. _vp8_loop_filter_flags: 1181 1182 ``Loop Filter Flags`` 1183 1184 .. tabularcolumns:: |p{7.0cm}|p{1.2cm}|p{9.1cm}| 1185 1186 .. flat-table:: 1187 :header-rows: 0 1188 :stub-columns: 0 1189 :widths: 1 1 2 1190 1191 * - ``V4L2_VP8_LF_ADJ_ENABLE`` 1192 - 0x01 1193 - Enable/disable macroblock-level loop filter adjustment. 1194 * - ``V4L2_VP8_LF_DELTA_UPDATE`` 1195 - 0x02 1196 - Indicates if the delta values used in an adjustment are updated. 1197 * - ``V4L2_VP8_LF_FILTER_TYPE_SIMPLE`` 1198 - 0x04 1199 - If set, indicates the filter type is simple. 1200 If cleared, the filter type is normal. 1201 1202 .. c:type:: v4l2_vp8_quantization 1203 1204 .. tabularcolumns:: |p{1.5cm}|p{3.5cm}|p{12.3cm}| 1205 1206 .. flat-table:: struct v4l2_vp8_quantization 1207 :header-rows: 0 1208 :stub-columns: 0 1209 :widths: 1 1 2 1210 1211 * - __u8 1212 - ``y_ac_qi`` 1213 - Luma AC coefficient table index. 1214 * - __s8 1215 - ``y_dc_delta`` 1216 - Luma DC delta value. 1217 * - __s8 1218 - ``y2_dc_delta`` 1219 - Y2 block DC delta value. 1220 * - __s8 1221 - ``y2_ac_delta`` 1222 - Y2 block AC delta value. 1223 * - __s8 1224 - ``uv_dc_delta`` 1225 - Chroma DC delta value. 1226 * - __s8 1227 - ``uv_ac_delta`` 1228 - Chroma AC delta value. 1229 * - __u16 1230 - ``padding`` 1231 - Applications and drivers must set this to zero. 1232 1233 .. c:type:: v4l2_vp8_entropy 1234 1235 .. cssclass:: longtable 1236 1237 .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}| 1238 1239 .. flat-table:: struct v4l2_vp8_entropy 1240 :header-rows: 0 1241 :stub-columns: 0 1242 :widths: 1 1 2 1243 1244 * - __u8 1245 - ``coeff_probs[4][8][3][11]`` 1246 - Coefficient update probabilities. 1247 * - __u8 1248 - ``y_mode_probs[4]`` 1249 - Luma mode update probabilities. 1250 * - __u8 1251 - ``uv_mode_probs[3]`` 1252 - Chroma mode update probabilities. 1253 * - __u8 1254 - ``mv_probs[2][19]`` 1255 - MV decoding update probabilities. 1256 * - __u8 1257 - ``padding[3]`` 1258 - Applications and drivers must set this to zero. 1259 1260 .. _v4l2-codec-stateless-mpeg2: 1261 1262 ``V4L2_CID_STATELESS_MPEG2_SEQUENCE (struct)`` 1263 Specifies the sequence parameters (as extracted from the bitstream) for the 1264 associated MPEG-2 slice data. This includes fields matching the syntax 1265 elements from the sequence header and sequence extension parts of the 1266 bitstream as specified by :ref:`mpeg2part2`. 1267 1268 .. c:type:: v4l2_ctrl_mpeg2_sequence 1269 1270 .. raw:: latex 1271 1272 \small 1273 1274 .. cssclass:: longtable 1275 1276 .. tabularcolumns:: |p{1.4cm}|p{6.5cm}|p{9.4cm}| 1277 1278 .. flat-table:: struct v4l2_ctrl_mpeg2_sequence 1279 :header-rows: 0 1280 :stub-columns: 0 1281 :widths: 1 1 2 1282 1283 * - __u16 1284 - ``horizontal_size`` 1285 - The width of the displayable part of the frame's luminance component. 1286 * - __u16 1287 - ``vertical_size`` 1288 - The height of the displayable part of the frame's luminance component. 1289 * - __u32 1290 - ``vbv_buffer_size`` 1291 - Used to calculate the required size of the video buffering verifier, 1292 defined (in bits) as: 16 * 1024 * vbv_buffer_size. 1293 * - __u16 1294 - ``profile_and_level_indication`` 1295 - The current profile and level indication as extracted from the 1296 bitstream. 1297 * - __u8 1298 - ``chroma_format`` 1299 - The chrominance sub-sampling format (1: 4:2:0, 2: 4:2:2, 3: 4:4:4). 1300 * - __u8 1301 - ``flags`` 1302 - See :ref:`MPEG-2 Sequence Flags <mpeg2_sequence_flags>`. 1303 1304 .. _mpeg2_sequence_flags: 1305 1306 ``MPEG-2 Sequence Flags`` 1307 1308 .. cssclass:: longtable 1309 1310 .. flat-table:: 1311 :header-rows: 0 1312 :stub-columns: 0 1313 :widths: 1 1 2 1314 1315 * - ``V4L2_MPEG2_SEQ_FLAG_PROGRESSIVE`` 1316 - 0x01 1317 - Indication that all the frames for the sequence are progressive instead 1318 of interlaced. 1319 1320 .. raw:: latex 1321 1322 \normalsize 1323 1324 ``V4L2_CID_STATELESS_MPEG2_PICTURE (struct)`` 1325 Specifies the picture parameters (as extracted from the bitstream) for the 1326 associated MPEG-2 slice data. This includes fields matching the syntax 1327 elements from the picture header and picture coding extension parts of the 1328 bitstream as specified by :ref:`mpeg2part2`. 1329 1330 .. c:type:: v4l2_ctrl_mpeg2_picture 1331 1332 .. raw:: latex 1333 1334 \small 1335 1336 .. cssclass:: longtable 1337 1338 .. tabularcolumns:: |p{1.0cm}|p{5.6cm}|p{10.7cm}| 1339 1340 .. flat-table:: struct v4l2_ctrl_mpeg2_picture 1341 :header-rows: 0 1342 :stub-columns: 0 1343 :widths: 1 1 2 1344 1345 * - __u64 1346 - ``backward_ref_ts`` 1347 - Timestamp of the V4L2 capture buffer to use as backward reference, used 1348 with B-coded and P-coded frames. The timestamp refers to the 1349 ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the 1350 :c:func:`v4l2_timeval_to_ns()` function to convert the struct 1351 :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64. 1352 * - __u64 1353 - ``forward_ref_ts`` 1354 - Timestamp for the V4L2 capture buffer to use as forward reference, used 1355 with B-coded frames. The timestamp refers to the ``timestamp`` field in 1356 struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()` 1357 function to convert the struct :c:type:`timeval` in struct 1358 :c:type:`v4l2_buffer` to a __u64. 1359 * - __u32 1360 - ``flags`` 1361 - See :ref:`MPEG-2 Picture Flags <mpeg2_picture_flags>`. 1362 * - __u8 1363 - ``f_code[2][2]`` 1364 - Motion vector codes. 1365 * - __u8 1366 - ``picture_coding_type`` 1367 - Picture coding type for the frame covered by the current slice 1368 (V4L2_MPEG2_PIC_CODING_TYPE_I, V4L2_MPEG2_PIC_CODING_TYPE_P or 1369 V4L2_MPEG2_PIC_CODING_TYPE_B). 1370 * - __u8 1371 - ``picture_structure`` 1372 - Picture structure (1: interlaced top field, 2: interlaced bottom field, 1373 3: progressive frame). 1374 * - __u8 1375 - ``intra_dc_precision`` 1376 - Precision of Discrete Cosine transform (0: 8 bits precision, 1377 1: 9 bits precision, 2: 10 bits precision, 3: 11 bits precision). 1378 * - __u8 1379 - ``reserved[5]`` 1380 - Applications and drivers must set this to zero. 1381 1382 .. _mpeg2_picture_flags: 1383 1384 ``MPEG-2 Picture Flags`` 1385 1386 .. cssclass:: longtable 1387 1388 .. flat-table:: 1389 :header-rows: 0 1390 :stub-columns: 0 1391 :widths: 1 1 2 1392 1393 * - ``V4L2_MPEG2_PIC_FLAG_TOP_FIELD_FIRST`` 1394 - 0x00000001 1395 - If set and it's an interlaced stream, top field is output first. 1396 * - ``V4L2_MPEG2_PIC_FLAG_FRAME_PRED_DCT`` 1397 - 0x00000002 1398 - If set only frame-DCT and frame prediction are used. 1399 * - ``V4L2_MPEG2_PIC_FLAG_CONCEALMENT_MV`` 1400 - 0x00000004 1401 - If set motion vectors are coded for intra macroblocks. 1402 * - ``V4L2_MPEG2_PIC_FLAG_Q_SCALE_TYPE`` 1403 - 0x00000008 1404 - This flag affects the inverse quantization process. 1405 * - ``V4L2_MPEG2_PIC_FLAG_INTRA_VLC`` 1406 - 0x00000010 1407 - This flag affects the decoding of transform coefficient data. 1408 * - ``V4L2_MPEG2_PIC_FLAG_ALT_SCAN`` 1409 - 0x00000020 1410 - This flag affects the decoding of transform coefficient data. 1411 * - ``V4L2_MPEG2_PIC_FLAG_REPEAT_FIRST`` 1412 - 0x00000040 1413 - This flag affects the decoding process of progressive frames. 1414 * - ``V4L2_MPEG2_PIC_FLAG_PROGRESSIVE`` 1415 - 0x00000080 1416 - Indicates whether the current frame is progressive. 1417 1418 .. raw:: latex 1419 1420 \normalsize 1421 1422 ``V4L2_CID_STATELESS_MPEG2_QUANTISATION (struct)`` 1423 Specifies quantisation matrices, in zigzag scanning order, for the 1424 associated MPEG-2 slice data. This control is initialized by the kernel 1425 to the matrices default values. If a bitstream transmits a user-defined 1426 quantisation matrices load, applications are expected to use this control. 1427 Applications are also expected to set the control loading the default 1428 values, if the quantisation matrices need to be reset, for instance on a 1429 sequence header. This process is specified by section 6.3.7. 1430 "Quant matrix extension" of the specification. 1431 1432 .. c:type:: v4l2_ctrl_mpeg2_quantisation 1433 1434 .. tabularcolumns:: |p{0.8cm}|p{8.0cm}|p{8.5cm}| 1435 1436 .. cssclass:: longtable 1437 1438 .. raw:: latex 1439 1440 \small 1441 1442 .. flat-table:: struct v4l2_ctrl_mpeg2_quantisation 1443 :header-rows: 0 1444 :stub-columns: 0 1445 :widths: 1 1 2 1446 1447 * - __u8 1448 - ``intra_quantiser_matrix[64]`` 1449 - The quantisation matrix coefficients for intra-coded frames, in zigzag 1450 scanning order. It is relevant for both luma and chroma components, 1451 although it can be superseded by the chroma-specific matrix for 1452 non-4:2:0 YUV formats. 1453 * - __u8 1454 - ``non_intra_quantiser_matrix[64]`` 1455 - The quantisation matrix coefficients for non-intra-coded frames, in 1456 zigzag scanning order. It is relevant for both luma and chroma 1457 components, although it can be superseded by the chroma-specific matrix 1458 for non-4:2:0 YUV formats. 1459 * - __u8 1460 - ``chroma_intra_quantiser_matrix[64]`` 1461 - The quantisation matrix coefficients for the chominance component of 1462 intra-coded frames, in zigzag scanning order. Only relevant for 1463 non-4:2:0 YUV formats. 1464 * - __u8 1465 - ``chroma_non_intra_quantiser_matrix[64]`` 1466 - The quantisation matrix coefficients for the chrominance component of 1467 non-intra-coded frames, in zigzag scanning order. Only relevant for 1468 non-4:2:0 YUV formats. 1469 1470 .. raw:: latex 1471 1472 \normalsize 1473 1474 .. _v4l2-codec-stateless-vp9: 1475 1476 ``V4L2_CID_STATELESS_VP9_COMPRESSED_HDR (struct)`` 1477 Stores VP9 probabilities updates as parsed from the current compressed frame 1478 header. A value of zero in an array element means no update of the relevant 1479 probability. Motion vector-related updates contain a new value or zero. All 1480 other updates contain values translated with inv_map_table[] (see 6.3.5 in 1481 :ref:`vp9`). 1482 1483 .. c:type:: v4l2_ctrl_vp9_compressed_hdr 1484 1485 .. tabularcolumns:: |p{1cm}|p{4.8cm}|p{11.4cm}| 1486 1487 .. cssclass:: longtable 1488 1489 .. flat-table:: struct v4l2_ctrl_vp9_compressed_hdr 1490 :header-rows: 0 1491 :stub-columns: 0 1492 :widths: 1 1 2 1493 1494 * - __u8 1495 - ``tx_mode`` 1496 - Specifies the TX mode. See :ref:`TX Mode <vp9_tx_mode>` for more details. 1497 * - __u8 1498 - ``tx8[2][1]`` 1499 - TX 8x8 probabilities delta. 1500 * - __u8 1501 - ``tx16[2][2]`` 1502 - TX 16x16 probabilities delta. 1503 * - __u8 1504 - ``tx32[2][3]`` 1505 - TX 32x32 probabilities delta. 1506 * - __u8 1507 - ``coef[4][2][2][6][6][3]`` 1508 - Coefficient probabilities delta. 1509 * - __u8 1510 - ``skip[3]`` 1511 - Skip probabilities delta. 1512 * - __u8 1513 - ``inter_mode[7][3]`` 1514 - Inter prediction mode probabilities delta. 1515 * - __u8 1516 - ``interp_filter[4][2]`` 1517 - Interpolation filter probabilities delta. 1518 * - __u8 1519 - ``is_inter[4]`` 1520 - Is inter-block probabilities delta. 1521 * - __u8 1522 - ``comp_mode[5]`` 1523 - Compound prediction mode probabilities delta. 1524 * - __u8 1525 - ``single_ref[5][2]`` 1526 - Single reference probabilities delta. 1527 * - __u8 1528 - ``comp_ref[5]`` 1529 - Compound reference probabilities delta. 1530 * - __u8 1531 - ``y_mode[4][9]`` 1532 - Y prediction mode probabilities delta. 1533 * - __u8 1534 - ``uv_mode[10][9]`` 1535 - UV prediction mode probabilities delta. 1536 * - __u8 1537 - ``partition[16][3]`` 1538 - Partition probabilities delta. 1539 * - __u8 1540 - ``mv.joint[3]`` 1541 - Motion vector joint probabilities delta. 1542 * - __u8 1543 - ``mv.sign[2]`` 1544 - Motion vector sign probabilities delta. 1545 * - __u8 1546 - ``mv.classes[2][10]`` 1547 - Motion vector class probabilities delta. 1548 * - __u8 1549 - ``mv.class0_bit[2]`` 1550 - Motion vector class0 bit probabilities delta. 1551 * - __u8 1552 - ``mv.bits[2][10]`` 1553 - Motion vector bits probabilities delta. 1554 * - __u8 1555 - ``mv.class0_fr[2][2][3]`` 1556 - Motion vector class0 fractional bit probabilities delta. 1557 * - __u8 1558 - ``mv.fr[2][3]`` 1559 - Motion vector fractional bit probabilities delta. 1560 * - __u8 1561 - ``mv.class0_hp[2]`` 1562 - Motion vector class0 high precision fractional bit probabilities delta. 1563 * - __u8 1564 - ``mv.hp[2]`` 1565 - Motion vector high precision fractional bit probabilities delta. 1566 1567 .. _vp9_tx_mode: 1568 1569 ``TX Mode`` 1570 1571 .. tabularcolumns:: |p{6.5cm}|p{0.5cm}|p{10.3cm}| 1572 1573 .. flat-table:: 1574 :header-rows: 0 1575 :stub-columns: 0 1576 :widths: 1 1 2 1577 1578 * - ``V4L2_VP9_TX_MODE_ONLY_4X4`` 1579 - 0 1580 - Transform size is 4x4. 1581 * - ``V4L2_VP9_TX_MODE_ALLOW_8X8`` 1582 - 1 1583 - Transform size can be up to 8x8. 1584 * - ``V4L2_VP9_TX_MODE_ALLOW_16X16`` 1585 - 2 1586 - Transform size can be up to 16x16. 1587 * - ``V4L2_VP9_TX_MODE_ALLOW_32X32`` 1588 - 3 1589 - transform size can be up to 32x32. 1590 * - ``V4L2_VP9_TX_MODE_SELECT`` 1591 - 4 1592 - Bitstream contains the transform size for each block. 1593 1594 See section '7.3.1 Tx mode semantics' of the :ref:`vp9` specification for more details. 1595 1596 ``V4L2_CID_STATELESS_VP9_FRAME (struct)`` 1597 Specifies the frame parameters for the associated VP9 frame decode request. 1598 This includes the necessary parameters for configuring a stateless hardware 1599 decoding pipeline for VP9. The bitstream parameters are defined according 1600 to :ref:`vp9`. 1601 1602 .. c:type:: v4l2_ctrl_vp9_frame 1603 1604 .. raw:: latex 1605 1606 \small 1607 1608 .. tabularcolumns:: |p{4.7cm}|p{5.5cm}|p{7.1cm}| 1609 1610 .. cssclass:: longtable 1611 1612 .. flat-table:: struct v4l2_ctrl_vp9_frame 1613 :header-rows: 0 1614 :stub-columns: 0 1615 :widths: 1 1 2 1616 1617 * - struct :c:type:`v4l2_vp9_loop_filter` 1618 - ``lf`` 1619 - Loop filter parameters. See struct :c:type:`v4l2_vp9_loop_filter` for more details. 1620 * - struct :c:type:`v4l2_vp9_quantization` 1621 - ``quant`` 1622 - Quantization parameters. See :c:type:`v4l2_vp9_quantization` for more details. 1623 * - struct :c:type:`v4l2_vp9_segmentation` 1624 - ``seg`` 1625 - Segmentation parameters. See :c:type:`v4l2_vp9_segmentation` for more details. 1626 * - __u32 1627 - ``flags`` 1628 - Combination of V4L2_VP9_FRAME_FLAG_* flags. See :ref:`Frame Flags<vp9_frame_flags>`. 1629 * - __u16 1630 - ``compressed_header_size`` 1631 - Compressed header size in bytes. 1632 * - __u16 1633 - ``uncompressed_header_size`` 1634 - Uncompressed header size in bytes. 1635 * - __u16 1636 - ``frame_width_minus_1`` 1637 - Add 1 to get the frame width expressed in pixels. See section 7.2.3 in :ref:`vp9`. 1638 * - __u16 1639 - ``frame_height_minus_1`` 1640 - Add 1 to get the frame height expressed in pixels. See section 7.2.3 in :ref:`vp9`. 1641 * - __u16 1642 - ``render_width_minus_1`` 1643 - Add 1 to get the expected render width expressed in pixels. This is 1644 not used during the decoding process but might be used by HW scalers to 1645 prepare a frame that's ready for scanout. See section 7.2.4 in :ref:`vp9`. 1646 * - __u16 1647 - render_height_minus_1 1648 - Add 1 to get the expected render height expressed in pixels. This is 1649 not used during the decoding process but might be used by HW scalers to 1650 prepare a frame that's ready for scanout. See section 7.2.4 in :ref:`vp9`. 1651 * - __u64 1652 - ``last_frame_ts`` 1653 - "last" reference buffer timestamp. 1654 The timestamp refers to the ``timestamp`` field in 1655 struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()` 1656 function to convert the struct :c:type:`timeval` in struct 1657 :c:type:`v4l2_buffer` to a __u64. 1658 * - __u64 1659 - ``golden_frame_ts`` 1660 - "golden" reference buffer timestamp. 1661 The timestamp refers to the ``timestamp`` field in 1662 struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()` 1663 function to convert the struct :c:type:`timeval` in struct 1664 :c:type:`v4l2_buffer` to a __u64. 1665 * - __u64 1666 - ``alt_frame_ts`` 1667 - "alt" reference buffer timestamp. 1668 The timestamp refers to the ``timestamp`` field in 1669 struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()` 1670 function to convert the struct :c:type:`timeval` in struct 1671 :c:type:`v4l2_buffer` to a __u64. 1672 * - __u8 1673 - ``ref_frame_sign_bias`` 1674 - a bitfield specifying whether the sign bias is set for a given 1675 reference frame. See :ref:`Reference Frame Sign Bias<vp9_ref_frame_sign_bias>` 1676 for more details. 1677 * - __u8 1678 - ``reset_frame_context`` 1679 - specifies whether the frame context should be reset to default values. See 1680 :ref:`Reset Frame Context<vp9_reset_frame_context>` for more details. 1681 * - __u8 1682 - ``frame_context_idx`` 1683 - Frame context that should be used/updated. 1684 * - __u8 1685 - ``profile`` 1686 - VP9 profile. Can be 0, 1, 2 or 3. 1687 * - __u8 1688 - ``bit_depth`` 1689 - Component depth in bits. Can be 8, 10 or 12. Note that not all profiles 1690 support 10 and/or 12 bits depths. 1691 * - __u8 1692 - ``interpolation_filter`` 1693 - Specifies the filter selection used for performing inter prediction. See 1694 :ref:`Interpolation Filter<vp9_interpolation_filter>` for more details. 1695 * - __u8 1696 - ``tile_cols_log2`` 1697 - Specifies the base 2 logarithm of the width of each tile (where the 1698 width is measured in units of 8x8 blocks). Shall be less than or equal 1699 to 6. 1700 * - __u8 1701 - ``tile_rows_log2`` 1702 - Specifies the base 2 logarithm of the height of each tile (where the 1703 height is measured in units of 8x8 blocks). 1704 * - __u8 1705 - ``reference_mode`` 1706 - Specifies the type of inter prediction to be used. See 1707 :ref:`Reference Mode<vp9_reference_mode>` for more details. Note that 1708 this is derived as part of the compressed header parsing process and 1709 for this reason should have been part of 1710 :c:type: `v4l2_ctrl_vp9_compressed_hdr` optional control. It is safe to 1711 set this value to zero if the driver does not require compressed 1712 headers. 1713 * - __u8 1714 - ``reserved[7]`` 1715 - Applications and drivers must set this to zero. 1716 1717 .. raw:: latex 1718 1719 \normalsize 1720 1721 .. _vp9_frame_flags: 1722 1723 ``Frame Flags`` 1724 1725 .. tabularcolumns:: |p{10.0cm}|p{1.2cm}|p{6.1cm}| 1726 1727 .. flat-table:: 1728 :header-rows: 0 1729 :stub-columns: 0 1730 :widths: 1 1 2 1731 1732 * - ``V4L2_VP9_FRAME_FLAG_KEY_FRAME`` 1733 - 0x001 1734 - The frame is a key frame. 1735 * - ``V4L2_VP9_FRAME_FLAG_SHOW_FRAME`` 1736 - 0x002 1737 - The frame should be displayed. 1738 * - ``V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT`` 1739 - 0x004 1740 - The decoding should be error resilient. 1741 * - ``V4L2_VP9_FRAME_FLAG_INTRA_ONLY`` 1742 - 0x008 1743 - The frame does not reference other frames. 1744 * - ``V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV`` 1745 - 0x010 1746 - The frame can use high precision motion vectors. 1747 * - ``V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX`` 1748 - 0x020 1749 - Frame context should be updated after decoding. 1750 * - ``V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE`` 1751 - 0x040 1752 - Parallel decoding is used. 1753 * - ``V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING`` 1754 - 0x080 1755 - Vertical subsampling is enabled. 1756 * - ``V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING`` 1757 - 0x100 1758 - Horizontal subsampling is enabled. 1759 * - ``V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING`` 1760 - 0x200 1761 - The full UV range is used. 1762 1763 .. _vp9_ref_frame_sign_bias: 1764 1765 ``Reference Frame Sign Bias`` 1766 1767 .. tabularcolumns:: |p{7.0cm}|p{1.2cm}|p{9.1cm}| 1768 1769 .. flat-table:: 1770 :header-rows: 0 1771 :stub-columns: 0 1772 :widths: 1 1 2 1773 1774 * - ``V4L2_VP9_SIGN_BIAS_LAST`` 1775 - 0x1 1776 - Sign bias is set for the last reference frame. 1777 * - ``V4L2_VP9_SIGN_BIAS_GOLDEN`` 1778 - 0x2 1779 - Sign bias is set for the golden reference frame. 1780 * - ``V4L2_VP9_SIGN_BIAS_ALT`` 1781 - 0x2 1782 - Sign bias is set for the alt reference frame. 1783 1784 .. _vp9_reset_frame_context: 1785 1786 ``Reset Frame Context`` 1787 1788 .. tabularcolumns:: |p{7.0cm}|p{1.2cm}|p{9.1cm}| 1789 1790 .. flat-table:: 1791 :header-rows: 0 1792 :stub-columns: 0 1793 :widths: 1 1 2 1794 1795 * - ``V4L2_VP9_RESET_FRAME_CTX_NONE`` 1796 - 0 1797 - Do not reset any frame context. 1798 * - ``V4L2_VP9_RESET_FRAME_CTX_SPEC`` 1799 - 1 1800 - Reset the frame context pointed to by 1801 :c:type:`v4l2_ctrl_vp9_frame`.frame_context_idx. 1802 * - ``V4L2_VP9_RESET_FRAME_CTX_ALL`` 1803 - 2 1804 - Reset all frame contexts. 1805 1806 See section '7.2 Uncompressed header semantics' of the :ref:`vp9` specification 1807 for more details. 1808 1809 .. _vp9_interpolation_filter: 1810 1811 ``Interpolation Filter`` 1812 1813 .. tabularcolumns:: |p{9.0cm}|p{1.2cm}|p{7.1cm}| 1814 1815 .. flat-table:: 1816 :header-rows: 0 1817 :stub-columns: 0 1818 :widths: 1 1 2 1819 1820 * - ``V4L2_VP9_INTERP_FILTER_EIGHTTAP`` 1821 - 0 1822 - Eight tap filter. 1823 * - ``V4L2_VP9_INTERP_FILTER_EIGHTTAP_SMOOTH`` 1824 - 1 1825 - Eight tap smooth filter. 1826 * - ``V4L2_VP9_INTERP_FILTER_EIGHTTAP_SHARP`` 1827 - 2 1828 - Eeight tap sharp filter. 1829 * - ``V4L2_VP9_INTERP_FILTER_BILINEAR`` 1830 - 3 1831 - Bilinear filter. 1832 * - ``V4L2_VP9_INTERP_FILTER_SWITCHABLE`` 1833 - 4 1834 - Filter selection is signaled at the block level. 1835 1836 See section '7.2.7 Interpolation filter semantics' of the :ref:`vp9` specification 1837 for more details. 1838 1839 .. _vp9_reference_mode: 1840 1841 ``Reference Mode`` 1842 1843 .. tabularcolumns:: |p{9.6cm}|p{0.5cm}|p{7.2cm}| 1844 1845 .. flat-table:: 1846 :header-rows: 0 1847 :stub-columns: 0 1848 :widths: 1 1 2 1849 1850 * - ``V4L2_VP9_REFERENCE_MODE_SINGLE_REFERENCE`` 1851 - 0 1852 - Indicates that all the inter blocks use only a single reference frame 1853 to generate motion compensated prediction. 1854 * - ``V4L2_VP9_REFERENCE_MODE_COMPOUND_REFERENCE`` 1855 - 1 1856 - Requires all the inter blocks to use compound mode. Single reference 1857 frame prediction is not allowed. 1858 * - ``V4L2_VP9_REFERENCE_MODE_SELECT`` 1859 - 2 1860 - Allows each individual inter block to select between single and 1861 compound prediction modes. 1862 1863 See section '7.3.6 Frame reference mode semantics' of the :ref:`vp9` specification for more details. 1864 1865 .. c:type:: v4l2_vp9_segmentation 1866 1867 Encodes the quantization parameters. See section '7.2.10 Segmentation 1868 params syntax' of the :ref:`vp9` specification for more details. 1869 1870 .. tabularcolumns:: |p{0.8cm}|p{5cm}|p{11.4cm}| 1871 1872 .. cssclass:: longtable 1873 1874 .. flat-table:: struct v4l2_vp9_segmentation 1875 :header-rows: 0 1876 :stub-columns: 0 1877 :widths: 1 1 2 1878 1879 * - __u8 1880 - ``feature_data[8][4]`` 1881 - Data attached to each feature. Data entry is only valid if the feature 1882 is enabled. The array shall be indexed with segment number as the first dimension 1883 (0..7) and one of V4L2_VP9_SEG_* as the second dimension. 1884 See :ref:`Segment Feature IDs<vp9_segment_feature>`. 1885 * - __u8 1886 - ``feature_enabled[8]`` 1887 - Bitmask defining which features are enabled in each segment. The value for each 1888 segment is a combination of V4L2_VP9_SEGMENT_FEATURE_ENABLED(id) values where id is 1889 one of V4L2_VP9_SEG_*. See :ref:`Segment Feature IDs<vp9_segment_feature>`. 1890 * - __u8 1891 - ``tree_probs[7]`` 1892 - Specifies the probability values to be used when decoding a Segment-ID. 1893 See '5.15 Segmentation map' section of :ref:`vp9` for more details. 1894 * - __u8 1895 - ``pred_probs[3]`` 1896 - Specifies the probability values to be used when decoding a 1897 Predicted-Segment-ID. See '6.4.14 Get segment id syntax' 1898 section of :ref:`vp9` for more details. 1899 * - __u8 1900 - ``flags`` 1901 - Combination of V4L2_VP9_SEGMENTATION_FLAG_* flags. See 1902 :ref:`Segmentation Flags<vp9_segmentation_flags>`. 1903 * - __u8 1904 - ``reserved[5]`` 1905 - Applications and drivers must set this to zero. 1906 1907 .. _vp9_segment_feature: 1908 1909 ``Segment feature IDs`` 1910 1911 .. tabularcolumns:: |p{6.0cm}|p{1cm}|p{10.3cm}| 1912 1913 .. flat-table:: 1914 :header-rows: 0 1915 :stub-columns: 0 1916 :widths: 1 1 2 1917 1918 * - ``V4L2_VP9_SEG_LVL_ALT_Q`` 1919 - 0 1920 - Quantizer segment feature. 1921 * - ``V4L2_VP9_SEG_LVL_ALT_L`` 1922 - 1 1923 - Loop filter segment feature. 1924 * - ``V4L2_VP9_SEG_LVL_REF_FRAME`` 1925 - 2 1926 - Reference frame segment feature. 1927 * - ``V4L2_VP9_SEG_LVL_SKIP`` 1928 - 3 1929 - Skip segment feature. 1930 * - ``V4L2_VP9_SEG_LVL_MAX`` 1931 - 4 1932 - Number of segment features. 1933 1934 .. _vp9_segmentation_flags: 1935 1936 ``Segmentation Flags`` 1937 1938 .. tabularcolumns:: |p{10.6cm}|p{0.8cm}|p{5.9cm}| 1939 1940 .. flat-table:: 1941 :header-rows: 0 1942 :stub-columns: 0 1943 :widths: 1 1 2 1944 1945 * - ``V4L2_VP9_SEGMENTATION_FLAG_ENABLED`` 1946 - 0x01 1947 - Indicates that this frame makes use of the segmentation tool. 1948 * - ``V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP`` 1949 - 0x02 1950 - Indicates that the segmentation map should be updated during the 1951 decoding of this frame. 1952 * - ``V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE`` 1953 - 0x04 1954 - Indicates that the updates to the segmentation map are coded 1955 relative to the existing segmentation map. 1956 * - ``V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA`` 1957 - 0x08 1958 - Indicates that new parameters are about to be specified for each 1959 segment. 1960 * - ``V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE`` 1961 - 0x10 1962 - Indicates that the segmentation parameters represent the actual values 1963 to be used. 1964 1965 .. c:type:: v4l2_vp9_quantization 1966 1967 Encodes the quantization parameters. See section '7.2.9 Quantization params 1968 syntax' of the VP9 specification for more details. 1969 1970 .. tabularcolumns:: |p{0.8cm}|p{4cm}|p{12.4cm}| 1971 1972 .. cssclass:: longtable 1973 1974 .. flat-table:: struct v4l2_vp9_quantization 1975 :header-rows: 0 1976 :stub-columns: 0 1977 :widths: 1 1 2 1978 1979 * - __u8 1980 - ``base_q_idx`` 1981 - Indicates the base frame qindex. 1982 * - __s8 1983 - ``delta_q_y_dc`` 1984 - Indicates the Y DC quantizer relative to base_q_idx. 1985 * - __s8 1986 - ``delta_q_uv_dc`` 1987 - Indicates the UV DC quantizer relative to base_q_idx. 1988 * - __s8 1989 - ``delta_q_uv_ac`` 1990 - Indicates the UV AC quantizer relative to base_q_idx. 1991 * - __u8 1992 - ``reserved[4]`` 1993 - Applications and drivers must set this to zero. 1994 1995 .. c:type:: v4l2_vp9_loop_filter 1996 1997 This structure contains all loop filter related parameters. See sections 1998 '7.2.8 Loop filter semantics' of the :ref:`vp9` specification for more details. 1999 2000 .. tabularcolumns:: |p{0.8cm}|p{4cm}|p{12.4cm}| 2001 2002 .. cssclass:: longtable 2003 2004 .. flat-table:: struct v4l2_vp9_loop_filter 2005 :header-rows: 0 2006 :stub-columns: 0 2007 :widths: 1 1 2 2008 2009 * - __s8 2010 - ``ref_deltas[4]`` 2011 - Contains the adjustment needed for the filter level based on the chosen 2012 reference frame. 2013 * - __s8 2014 - ``mode_deltas[2]`` 2015 - Contains the adjustment needed for the filter level based on the chosen 2016 mode. 2017 * - __u8 2018 - ``level`` 2019 - Indicates the loop filter strength. 2020 * - __u8 2021 - ``sharpness`` 2022 - Indicates the sharpness level. 2023 * - __u8 2024 - ``flags`` 2025 - Combination of V4L2_VP9_LOOP_FILTER_FLAG_* flags. 2026 See :ref:`Loop Filter Flags <vp9_loop_filter_flags>`. 2027 * - __u8 2028 - ``reserved[7]`` 2029 - Applications and drivers must set this to zero. 2030 2031 2032 .. _vp9_loop_filter_flags: 2033 2034 ``Loop Filter Flags`` 2035 2036 .. tabularcolumns:: |p{9.6cm}|p{0.5cm}|p{7.2cm}| 2037 2038 .. flat-table:: 2039 :header-rows: 0 2040 :stub-columns: 0 2041 :widths: 1 1 2 2042 2043 * - ``V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED`` 2044 - 0x1 2045 - When set, the filter level depends on the mode and reference frame used 2046 to predict a block. 2047 * - ``V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE`` 2048 - 0x2 2049 - When set, the bitstream contains additional syntax elements that 2050 specify which mode and reference frame deltas are to be updated. 2051 2052 .. _v4l2-codec-stateless-hevc: 2053 2054 ``V4L2_CID_STATELESS_HEVC_SPS (struct)`` 2055 Specifies the Sequence Parameter Set fields (as extracted from the 2056 bitstream) for the associated HEVC slice data. 2057 These bitstream parameters are defined according to :ref:`hevc`. 2058 They are described in section 7.4.3.2 "Sequence parameter set RBSP 2059 semantics" of the specification. 2060 2061 .. c:type:: v4l2_ctrl_hevc_sps 2062 2063 .. raw:: latex 2064 2065 \small 2066 2067 .. tabularcolumns:: |p{1.2cm}|p{9.2cm}|p{6.9cm}| 2068 2069 .. cssclass:: longtable 2070 2071 .. flat-table:: struct v4l2_ctrl_hevc_sps 2072 :header-rows: 0 2073 :stub-columns: 0 2074 :widths: 1 1 2 2075 2076 * - __u8 2077 - ``video_parameter_set_id`` 2078 - Specifies the value of the vps_video_parameter_set_id of the active VPS 2079 as described in section "7.4.3.2.1 General sequence parameter set RBSP semantics" 2080 of H.265 specifications. 2081 * - __u8 2082 - ``seq_parameter_set_id`` 2083 - Provides an identifier for the SPS for reference by other syntax elements 2084 as described in section "7.4.3.2.1 General sequence parameter set RBSP semantics" 2085 of H.265 specifications. 2086 * - __u16 2087 - ``pic_width_in_luma_samples`` 2088 - Specifies the width of each decoded picture in units of luma samples. 2089 * - __u16 2090 - ``pic_height_in_luma_samples`` 2091 - Specifies the height of each decoded picture in units of luma samples. 2092 * - __u8 2093 - ``bit_depth_luma_minus8`` 2094 - This value plus 8 specifies the bit depth of the samples of the luma array. 2095 * - __u8 2096 - ``bit_depth_chroma_minus8`` 2097 - This value plus 8 specifies the bit depth of the samples of the chroma arrays. 2098 * - __u8 2099 - ``log2_max_pic_order_cnt_lsb_minus4`` 2100 - Specifies the value of the variable MaxPicOrderCntLsb. 2101 * - __u8 2102 - ``sps_max_dec_pic_buffering_minus1`` 2103 - This value plus 1 specifies the maximum required size of the decoded picture buffer for 2104 the coded video sequence (CVS). 2105 * - __u8 2106 - ``sps_max_num_reorder_pics`` 2107 - Indicates the maximum allowed number of pictures. 2108 * - __u8 2109 - ``sps_max_latency_increase_plus1`` 2110 - Used to signal MaxLatencyPictures, which indicates the maximum number of 2111 pictures that can precede any picture in output order and follow that 2112 picture in decoding order. 2113 * - __u8 2114 - ``log2_min_luma_coding_block_size_minus3`` 2115 - This value plus 3 specifies the minimum luma coding block size. 2116 * - __u8 2117 - ``log2_diff_max_min_luma_coding_block_size`` 2118 - Specifies the difference between the maximum and minimum luma coding block size. 2119 * - __u8 2120 - ``log2_min_luma_transform_block_size_minus2`` 2121 - This value plus 2 specifies the minimum luma transform block size. 2122 * - __u8 2123 - ``log2_diff_max_min_luma_transform_block_size`` 2124 - Specifies the difference between the maximum and minimum luma transform block size. 2125 * - __u8 2126 - ``max_transform_hierarchy_depth_inter`` 2127 - Specifies the maximum hierarchy depth for transform units of coding units coded 2128 in inter prediction mode. 2129 * - __u8 2130 - ``max_transform_hierarchy_depth_intra`` 2131 - Specifies the maximum hierarchy depth for transform units of coding units coded in 2132 intra prediction mode. 2133 * - __u8 2134 - ``pcm_sample_bit_depth_luma_minus1`` 2135 - This value plus 1 specifies the number of bits used to represent each of PCM sample values of the 2136 luma component. 2137 * - __u8 2138 - ``pcm_sample_bit_depth_chroma_minus1`` 2139 - Specifies the number of bits used to represent each of PCM sample values of 2140 the chroma components. 2141 * - __u8 2142 - ``log2_min_pcm_luma_coding_block_size_minus3`` 2143 - Plus 3 specifies the minimum size of coding blocks. 2144 * - __u8 2145 - ``log2_diff_max_min_pcm_luma_coding_block_size`` 2146 - Specifies the difference between the maximum and minimum size of coding blocks. 2147 * - __u8 2148 - ``num_short_term_ref_pic_sets`` 2149 - Specifies the number of st_ref_pic_set() syntax structures included in the SPS. 2150 * - __u8 2151 - ``num_long_term_ref_pics_sps`` 2152 - Specifies the number of candidate long-term reference pictures that are 2153 specified in the SPS. 2154 * - __u8 2155 - ``chroma_format_idc`` 2156 - Specifies the chroma sampling. 2157 * - __u8 2158 - ``sps_max_sub_layers_minus1`` 2159 - This value plus 1 specifies the maximum number of temporal sub-layers. 2160 * - __u64 2161 - ``flags`` 2162 - See :ref:`Sequence Parameter Set Flags <hevc_sps_flags>` 2163 2164 .. raw:: latex 2165 2166 \normalsize 2167 2168 .. _hevc_sps_flags: 2169 2170 ``Sequence Parameter Set Flags`` 2171 2172 .. raw:: latex 2173 2174 \small 2175 2176 .. cssclass:: longtable 2177 2178 .. flat-table:: 2179 :header-rows: 0 2180 :stub-columns: 0 2181 :widths: 1 1 2 2182 2183 * - ``V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE`` 2184 - 0x00000001 2185 - 2186 * - ``V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED`` 2187 - 0x00000002 2188 - 2189 * - ``V4L2_HEVC_SPS_FLAG_AMP_ENABLED`` 2190 - 0x00000004 2191 - 2192 * - ``V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET`` 2193 - 0x00000008 2194 - 2195 * - ``V4L2_HEVC_SPS_FLAG_PCM_ENABLED`` 2196 - 0x00000010 2197 - 2198 * - ``V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED`` 2199 - 0x00000020 2200 - 2201 * - ``V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT`` 2202 - 0x00000040 2203 - 2204 * - ``V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED`` 2205 - 0x00000080 2206 - 2207 * - ``V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED`` 2208 - 0x00000100 2209 - 2210 2211 .. raw:: latex 2212 2213 \normalsize 2214 2215 ``V4L2_CID_STATELESS_HEVC_PPS (struct)`` 2216 Specifies the Picture Parameter Set fields (as extracted from the 2217 bitstream) for the associated HEVC slice data. 2218 These bitstream parameters are defined according to :ref:`hevc`. 2219 They are described in section 7.4.3.3 "Picture parameter set RBSP 2220 semantics" of the specification. 2221 2222 .. c:type:: v4l2_ctrl_hevc_pps 2223 2224 .. tabularcolumns:: |p{1.2cm}|p{8.6cm}|p{7.5cm}| 2225 2226 .. cssclass:: longtable 2227 2228 .. flat-table:: struct v4l2_ctrl_hevc_pps 2229 :header-rows: 0 2230 :stub-columns: 0 2231 :widths: 1 1 2 2232 2233 * - __u8 2234 - ``pic_parameter_set_id`` 2235 - Identifies the PPS for reference by other syntax elements. 2236 * - __u8 2237 - ``num_extra_slice_header_bits`` 2238 - Specifies the number of extra slice header bits that are present 2239 in the slice header RBSP for coded pictures referring to the PPS. 2240 * - __u8 2241 - ``num_ref_idx_l0_default_active_minus1`` 2242 - This value plus 1 specifies the inferred value of num_ref_idx_l0_active_minus1. 2243 * - __u8 2244 - ``num_ref_idx_l1_default_active_minus1`` 2245 - This value plus 1 specifies the inferred value of num_ref_idx_l1_active_minus1. 2246 * - __s8 2247 - ``init_qp_minus26`` 2248 - This value plus 26 specifies the initial value of SliceQp Y for each slice 2249 referring to the PPS. 2250 * - __u8 2251 - ``diff_cu_qp_delta_depth`` 2252 - Specifies the difference between the luma coding tree block size 2253 and the minimum luma coding block size of coding units that 2254 convey cu_qp_delta_abs and cu_qp_delta_sign_flag. 2255 * - __s8 2256 - ``pps_cb_qp_offset`` 2257 - Specifies the offsets to the luma quantization parameter Cb. 2258 * - __s8 2259 - ``pps_cr_qp_offset`` 2260 - Specifies the offsets to the luma quantization parameter Cr. 2261 * - __u8 2262 - ``num_tile_columns_minus1`` 2263 - This value plus 1 specifies the number of tile columns partitioning the picture. 2264 * - __u8 2265 - ``num_tile_rows_minus1`` 2266 - This value plus 1 specifies the number of tile rows partitioning the picture. 2267 * - __u8 2268 - ``column_width_minus1[20]`` 2269 - This value plus 1 specifies the width of the i-th tile column in units of 2270 coding tree blocks. 2271 * - __u8 2272 - ``row_height_minus1[22]`` 2273 - This value plus 1 specifies the height of the i-th tile row in units of coding 2274 tree blocks. 2275 * - __s8 2276 - ``pps_beta_offset_div2`` 2277 - Specifies the default deblocking parameter offsets for beta divided by 2. 2278 * - __s8 2279 - ``pps_tc_offset_div2`` 2280 - Specifies the default deblocking parameter offsets for tC divided by 2. 2281 * - __u8 2282 - ``log2_parallel_merge_level_minus2`` 2283 - This value plus 2 specifies the value of the variable Log2ParMrgLevel. 2284 * - __u8 2285 - ``padding[4]`` 2286 - Applications and drivers must set this to zero. 2287 * - __u64 2288 - ``flags`` 2289 - See :ref:`Picture Parameter Set Flags <hevc_pps_flags>` 2290 2291 .. _hevc_pps_flags: 2292 2293 ``Picture Parameter Set Flags`` 2294 2295 .. raw:: latex 2296 2297 \small 2298 2299 .. flat-table:: 2300 :header-rows: 0 2301 :stub-columns: 0 2302 :widths: 1 1 2 2303 2304 * - ``V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED`` 2305 - 0x00000001 2306 - 2307 * - ``V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT`` 2308 - 0x00000002 2309 - 2310 * - ``V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED`` 2311 - 0x00000004 2312 - 2313 * - ``V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT`` 2314 - 0x00000008 2315 - 2316 * - ``V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED`` 2317 - 0x00000010 2318 - 2319 * - ``V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED`` 2320 - 0x00000020 2321 - 2322 * - ``V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED`` 2323 - 0x00000040 2324 - 2325 * - ``V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT`` 2326 - 0x00000080 2327 - 2328 * - ``V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED`` 2329 - 0x00000100 2330 - 2331 * - ``V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED`` 2332 - 0x00000200 2333 - 2334 * - ``V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED`` 2335 - 0x00000400 2336 - 2337 * - ``V4L2_HEVC_PPS_FLAG_TILES_ENABLED`` 2338 - 0x00000800 2339 - 2340 * - ``V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED`` 2341 - 0x00001000 2342 - 2343 * - ``V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED`` 2344 - 0x00002000 2345 - 2346 * - ``V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED`` 2347 - 0x00004000 2348 - 2349 * - ``V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED`` 2350 - 0x00008000 2351 - 2352 * - ``V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER`` 2353 - 0x00010000 2354 - 2355 * - ``V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT`` 2356 - 0x00020000 2357 - 2358 * - ``V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT`` 2359 - 0x00040000 2360 - 2361 * - ``V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT`` 2362 - 0x00080000 2363 - Specifies the presence of deblocking filter control syntax elements in 2364 the PPS 2365 * - ``V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING`` 2366 - 0x00100000 2367 - Specifies that tile column boundaries and likewise tile row boundaries 2368 are distributed uniformly across the picture 2369 2370 .. raw:: latex 2371 2372 \normalsize 2373 2374 ``V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (struct)`` 2375 Specifies various slice-specific parameters, especially from the NAL unit 2376 header, general slice segment header and weighted prediction parameter 2377 parts of the bitstream. 2378 These bitstream parameters are defined according to :ref:`hevc`. 2379 They are described in section 7.4.7 "General slice segment header 2380 semantics" of the specification. 2381 This control is a dynamically sized 1-dimensional array, 2382 V4L2_CTRL_FLAG_DYNAMIC_ARRAY flag must be set when using it. 2383 2384 .. c:type:: v4l2_ctrl_hevc_slice_params 2385 2386 .. raw:: latex 2387 2388 \scriptsize 2389 2390 .. tabularcolumns:: |p{5.4cm}|p{6.8cm}|p{5.1cm}| 2391 2392 .. cssclass:: longtable 2393 2394 .. flat-table:: struct v4l2_ctrl_hevc_slice_params 2395 :header-rows: 0 2396 :stub-columns: 0 2397 :widths: 1 1 2 2398 2399 * - __u32 2400 - ``bit_size`` 2401 - Size (in bits) of the current slice data. 2402 * - __u32 2403 - ``data_byte_offset`` 2404 - Offset (in byte) to the video data in the current slice data. 2405 * - __u32 2406 - ``num_entry_point_offsets`` 2407 - Specifies the number of entry point offset syntax elements in the slice header. 2408 When the driver supports it, the ``V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS`` 2409 must be set. 2410 * - __u8 2411 - ``nal_unit_type`` 2412 - Specifies the coding type of the slice (B, P or I). 2413 * - __u8 2414 - ``nuh_temporal_id_plus1`` 2415 - Minus 1 specifies a temporal identifier for the NAL unit. 2416 * - __u8 2417 - ``slice_type`` 2418 - 2419 (V4L2_HEVC_SLICE_TYPE_I, V4L2_HEVC_SLICE_TYPE_P or 2420 V4L2_HEVC_SLICE_TYPE_B). 2421 * - __u8 2422 - ``colour_plane_id`` 2423 - Specifies the colour plane associated with the current slice. 2424 * - __s32 2425 - ``slice_pic_order_cnt`` 2426 - Specifies the picture order count. 2427 * - __u8 2428 - ``num_ref_idx_l0_active_minus1`` 2429 - This value plus 1 specifies the maximum reference index for reference picture list 0 2430 that may be used to decode the slice. 2431 * - __u8 2432 - ``num_ref_idx_l1_active_minus1`` 2433 - This value plus 1 specifies the maximum reference index for reference picture list 1 2434 that may be used to decode the slice. 2435 * - __u8 2436 - ``collocated_ref_idx`` 2437 - Specifies the reference index of the collocated picture used for 2438 temporal motion vector prediction. 2439 * - __u8 2440 - ``five_minus_max_num_merge_cand`` 2441 - Specifies the maximum number of merging motion vector prediction 2442 candidates supported in the slice subtracted from 5. 2443 * - __s8 2444 - ``slice_qp_delta`` 2445 - Specifies the initial value of QpY to be used for the coding blocks in the slice. 2446 * - __s8 2447 - ``slice_cb_qp_offset`` 2448 - Specifies a difference to be added to the value of pps_cb_qp_offset. 2449 * - __s8 2450 - ``slice_cr_qp_offset`` 2451 - Specifies a difference to be added to the value of pps_cr_qp_offset. 2452 * - __s8 2453 - ``slice_act_y_qp_offset`` 2454 - Specifies the offset to the luma of quantization parameter qP derived in section 8.6.2 2455 * - __s8 2456 - ``slice_act_cb_qp_offset`` 2457 - Specifies the offset to the cb of quantization parameter qP derived in section 8.6.2 2458 * - __s8 2459 - ``slice_act_cr_qp_offset`` 2460 - Specifies the offset to the cr of quantization parameter qP derived in section 8.6.2 2461 * - __s8 2462 - ``slice_beta_offset_div2`` 2463 - Specifies the deblocking parameter offsets for beta divided by 2. 2464 * - __s8 2465 - ``slice_tc_offset_div2`` 2466 - Specifies the deblocking parameter offsets for tC divided by 2. 2467 * - __u8 2468 - ``pic_struct`` 2469 - Indicates whether a picture should be displayed as a frame or as one or more fields. 2470 * - __u32 2471 - ``slice_segment_addr`` 2472 - Specifies the address of the first coding tree block in the slice segment. 2473 * - __u8 2474 - ``ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]`` 2475 - The list of L0 reference elements as indices in the DPB. 2476 * - __u8 2477 - ``ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]`` 2478 - The list of L1 reference elements as indices in the DPB. 2479 * - __u16 2480 - ``short_term_ref_pic_set_size`` 2481 - Specifies the size, in bits, of the short-term reference picture set, described as st_ref_pic_set() 2482 in the specification, included in the slice header or SPS (section 7.3.6.1). 2483 * - __u16 2484 - ``long_term_ref_pic_set_size`` 2485 - Specifies the size, in bits, of the long-term reference picture set include in the slice header 2486 or SPS. It is the number of bits in the conditional block if(long_term_ref_pics_present_flag) 2487 in section 7.3.6.1 of the specification. 2488 * - __u8 2489 - ``padding`` 2490 - Applications and drivers must set this to zero. 2491 * - struct :c:type:`v4l2_hevc_pred_weight_table` 2492 - ``pred_weight_table`` 2493 - The prediction weight coefficients for inter-picture prediction. 2494 * - __u64 2495 - ``flags`` 2496 - See :ref:`Slice Parameters Flags <hevc_slice_params_flags>` 2497 2498 .. raw:: latex 2499 2500 \normalsize 2501 2502 .. _hevc_slice_params_flags: 2503 2504 ``Slice Parameters Flags`` 2505 2506 .. raw:: latex 2507 2508 \scriptsize 2509 2510 .. flat-table:: 2511 :header-rows: 0 2512 :stub-columns: 0 2513 :widths: 1 1 2 2514 2515 * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA`` 2516 - 0x00000001 2517 - 2518 * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA`` 2519 - 0x00000002 2520 - 2521 * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED`` 2522 - 0x00000004 2523 - 2524 * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO`` 2525 - 0x00000008 2526 - 2527 * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT`` 2528 - 0x00000010 2529 - 2530 * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0`` 2531 - 0x00000020 2532 - 2533 * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV`` 2534 - 0x00000040 2535 - 2536 * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED`` 2537 - 0x00000080 2538 - 2539 * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED`` 2540 - 0x00000100 2541 - 2542 * - ``V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT`` 2543 - 0x00000200 2544 - 2545 2546 .. raw:: latex 2547 2548 \normalsize 2549 2550 ``V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (integer)`` 2551 Specifies entry point offsets in bytes. 2552 This control is a dynamically sized array. The number of entry point 2553 offsets is reported by the ``elems`` field. 2554 This bitstream parameter is defined according to :ref:`hevc`. 2555 They are described in section 7.4.7.1 "General slice segment header 2556 semantics" of the specification. 2557 When multiple slices are submitted in a request, the length of 2558 this array must be the sum of num_entry_point_offsets of all the 2559 slices in the request. 2560 2561 ``V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (struct)`` 2562 Specifies the HEVC scaling matrix parameters used for the scaling process 2563 for transform coefficients. 2564 These matrix and parameters are defined according to :ref:`hevc`. 2565 They are described in section 7.4.5 "Scaling list data semantics" of 2566 the specification. 2567 2568 .. c:type:: v4l2_ctrl_hevc_scaling_matrix 2569 2570 .. raw:: latex 2571 2572 \scriptsize 2573 2574 .. tabularcolumns:: |p{5.4cm}|p{6.8cm}|p{5.1cm}| 2575 2576 .. cssclass:: longtable 2577 2578 .. flat-table:: struct v4l2_ctrl_hevc_scaling_matrix 2579 :header-rows: 0 2580 :stub-columns: 0 2581 :widths: 1 1 2 2582 2583 * - __u8 2584 - ``scaling_list_4x4[6][16]`` 2585 - Scaling list is used for the scaling process for transform 2586 coefficients. The values on each scaling list are expected 2587 in raster scan order. 2588 * - __u8 2589 - ``scaling_list_8x8[6][64]`` 2590 - Scaling list is used for the scaling process for transform 2591 coefficients. The values on each scaling list are expected 2592 in raster scan order. 2593 * - __u8 2594 - ``scaling_list_16x16[6][64]`` 2595 - Scaling list is used for the scaling process for transform 2596 coefficients. The values on each scaling list are expected 2597 in raster scan order. 2598 * - __u8 2599 - ``scaling_list_32x32[2][64]`` 2600 - Scaling list is used for the scaling process for transform 2601 coefficients. The values on each scaling list are expected 2602 in raster scan order. 2603 * - __u8 2604 - ``scaling_list_dc_coef_16x16[6]`` 2605 - Scaling list is used for the scaling process for transform 2606 coefficients. The values on each scaling list are expected 2607 in raster scan order. 2608 * - __u8 2609 - ``scaling_list_dc_coef_32x32[2]`` 2610 - Scaling list is used for the scaling process for transform 2611 coefficients. The values on each scaling list are expected 2612 in raster scan order. 2613 2614 .. raw:: latex 2615 2616 \normalsize 2617 2618 .. c:type:: v4l2_hevc_dpb_entry 2619 2620 .. raw:: latex 2621 2622 \small 2623 2624 .. tabularcolumns:: |p{1.0cm}|p{4.2cm}|p{12.1cm}| 2625 2626 .. flat-table:: struct v4l2_hevc_dpb_entry 2627 :header-rows: 0 2628 :stub-columns: 0 2629 :widths: 1 1 2 2630 2631 * - __u64 2632 - ``timestamp`` 2633 - Timestamp of the V4L2 capture buffer to use as reference, used 2634 with B-coded and P-coded frames. The timestamp refers to the 2635 ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the 2636 :c:func:`v4l2_timeval_to_ns()` function to convert the struct 2637 :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64. 2638 * - __u8 2639 - ``flags`` 2640 - Long term flag for the reference frame 2641 (V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE). The flag is set as 2642 described in the ITU HEVC specification chapter "8.3.2 Decoding 2643 process for reference picture set". 2644 * - __u8 2645 - ``field_pic`` 2646 - Whether the reference is a field picture or a frame. 2647 See :ref:`HEVC dpb field pic Flags <hevc_dpb_field_pic_flags>` 2648 * - __s32 2649 - ``pic_order_cnt_val`` 2650 - The picture order count of the current picture. 2651 * - __u8 2652 - ``padding[2]`` 2653 - Applications and drivers must set this to zero. 2654 2655 .. raw:: latex 2656 2657 \normalsize 2658 2659 .. _hevc_dpb_field_pic_flags: 2660 2661 ``HEVC dpb field pic Flags`` 2662 2663 .. raw:: latex 2664 2665 \scriptsize 2666 2667 .. flat-table:: 2668 :header-rows: 0 2669 :stub-columns: 0 2670 :widths: 1 1 2 2671 2672 * - ``V4L2_HEVC_SEI_PIC_STRUCT_FRAME`` 2673 - 0 2674 - (progressive) Frame 2675 * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD`` 2676 - 1 2677 - Top field 2678 * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD`` 2679 - 2 2680 - Bottom field 2681 * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM`` 2682 - 3 2683 - Top field, bottom field, in that order 2684 * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP`` 2685 - 4 2686 - Bottom field, top field, in that order 2687 * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP`` 2688 - 5 2689 - Top field, bottom field, top field repeated, in that order 2690 * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM`` 2691 - 6 2692 - Bottom field, top field, bottom field repeated, in that order 2693 * - ``V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING`` 2694 - 7 2695 - Frame doubling 2696 * - ``V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING`` 2697 - 8 2698 - Frame tripling 2699 * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM`` 2700 - 9 2701 - Top field paired with previous bottom field in output order 2702 * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP`` 2703 - 10 2704 - Bottom field paired with previous top field in output order 2705 * - ``V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM`` 2706 - 11 2707 - Top field paired with next bottom field in output order 2708 * - ``V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP`` 2709 - 12 2710 - Bottom field paired with next top field in output order 2711 2712 .. c:type:: v4l2_hevc_pred_weight_table 2713 2714 .. raw:: latex 2715 2716 \footnotesize 2717 2718 .. tabularcolumns:: |p{0.8cm}|p{10.6cm}|p{5.9cm}| 2719 2720 .. flat-table:: struct v4l2_hevc_pred_weight_table 2721 :header-rows: 0 2722 :stub-columns: 0 2723 :widths: 1 1 2 2724 2725 * - __s8 2726 - ``delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]`` 2727 - The difference of the weighting factor applied to the luma 2728 prediction value for list 0. 2729 * - __s8 2730 - ``luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]`` 2731 - The additive offset applied to the luma prediction value for list 0. 2732 * - __s8 2733 - ``delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]`` 2734 - The difference of the weighting factor applied to the chroma 2735 prediction value for list 0. 2736 * - __s8 2737 - ``chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]`` 2738 - The difference of the additive offset applied to the chroma 2739 prediction values for list 0. 2740 * - __s8 2741 - ``delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]`` 2742 - The difference of the weighting factor applied to the luma 2743 prediction value for list 1. 2744 * - __s8 2745 - ``luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]`` 2746 - The additive offset applied to the luma prediction value for list 1. 2747 * - __s8 2748 - ``delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]`` 2749 - The difference of the weighting factor applied to the chroma 2750 prediction value for list 1. 2751 * - __s8 2752 - ``chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2]`` 2753 - The difference of the additive offset applied to the chroma 2754 prediction values for list 1. 2755 * - __u8 2756 - ``luma_log2_weight_denom`` 2757 - The base 2 logarithm of the denominator for all luma weighting 2758 factors. 2759 * - __s8 2760 - ``delta_chroma_log2_weight_denom`` 2761 - The difference of the base 2 logarithm of the denominator for 2762 all chroma weighting factors. 2763 * - __u8 2764 - ``padding[6]`` 2765 - Applications and drivers must set this to zero. 2766 2767 .. raw:: latex 2768 2769 \normalsize 2770 2771 ``V4L2_CID_STATELESS_HEVC_DECODE_MODE (enum)`` 2772 Specifies the decoding mode to use. Currently exposes slice-based and 2773 frame-based decoding but new modes might be added later on. 2774 This control is used as a modifier for V4L2_PIX_FMT_HEVC_SLICE 2775 pixel format. Applications that support V4L2_PIX_FMT_HEVC_SLICE 2776 are required to set this control in order to specify the decoding mode 2777 that is expected for the buffer. 2778 Drivers may expose a single or multiple decoding modes, depending 2779 on what they can support. 2780 2781 .. c:type:: v4l2_stateless_hevc_decode_mode 2782 2783 .. raw:: latex 2784 2785 \small 2786 2787 .. tabularcolumns:: |p{9.4cm}|p{0.6cm}|p{7.3cm}| 2788 2789 .. flat-table:: 2790 :header-rows: 0 2791 :stub-columns: 0 2792 :widths: 1 1 2 2793 2794 * - ``V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED`` 2795 - 0 2796 - Decoding is done at the slice granularity. 2797 The OUTPUT buffer must contain a single slice. 2798 * - ``V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED`` 2799 - 1 2800 - Decoding is done at the frame granularity. 2801 The OUTPUT buffer must contain all slices needed to decode the 2802 frame. 2803 2804 .. raw:: latex 2805 2806 \normalsize 2807 2808 ``V4L2_CID_STATELESS_HEVC_START_CODE (enum)`` 2809 Specifies the HEVC slice start code expected for each slice. 2810 This control is used as a modifier for V4L2_PIX_FMT_HEVC_SLICE 2811 pixel format. Applications that support V4L2_PIX_FMT_HEVC_SLICE 2812 are required to set this control in order to specify the start code 2813 that is expected for the buffer. 2814 Drivers may expose a single or multiple start codes, depending 2815 on what they can support. 2816 2817 .. c:type:: v4l2_stateless_hevc_start_code 2818 2819 .. tabularcolumns:: |p{9.2cm}|p{0.6cm}|p{7.5cm}| 2820 2821 .. flat-table:: 2822 :header-rows: 0 2823 :stub-columns: 0 2824 :widths: 1 1 2 2825 2826 * - ``V4L2_STATELESS_HEVC_START_CODE_NONE`` 2827 - 0 2828 - Selecting this value specifies that HEVC slices are passed 2829 to the driver without any start code. The bitstream data should be 2830 according to :ref:`hevc` 7.3.1.1 General NAL unit syntax, hence 2831 contains emulation prevention bytes when required. 2832 * - ``V4L2_STATELESS_HEVC_START_CODE_ANNEX_B`` 2833 - 1 2834 - Selecting this value specifies that HEVC slices are expected 2835 to be prefixed by Annex B start codes. According to :ref:`hevc` 2836 valid start codes can be 3-bytes 0x000001 or 4-bytes 0x00000001. 2837 2838 .. raw:: latex 2839 2840 \normalsize 2841 2842 ``V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID (integer)`` 2843 Specifies a priority identifier for the NAL unit, which will be applied to 2844 the base layer. By default this value is set to 0 for the base layer, 2845 and the next layer will have the priority ID assigned as 1, 2, 3 and so on. 2846 The video encoder can't decide the priority id to be applied to a layer, 2847 so this has to come from client. 2848 This is applicable to H264 and valid Range is from 0 to 63. 2849 Source Rec. ITU-T H.264 (06/2019); G.7.4.1.1, G.8.8.1. 2850 2851 ``V4L2_CID_MPEG_VIDEO_LTR_COUNT (integer)`` 2852 Specifies the maximum number of Long Term Reference (LTR) frames at any 2853 given time that the encoder can keep. 2854 This is applicable to the H264 and HEVC encoders. 2855 2856 ``V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX (integer)`` 2857 After setting this control the frame that will be queued next 2858 will be marked as a Long Term Reference (LTR) frame 2859 and given this LTR index which ranges from 0 to LTR_COUNT-1. 2860 This is applicable to the H264 and HEVC encoders. 2861 Source Rec. ITU-T H.264 (06/2019); Table 7.9 2862 2863 ``V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (bitmask)`` 2864 Specifies the Long Term Reference (LTR) frame(s) to be used for 2865 encoding the next frame queued after setting this control. 2866 This provides a bitmask which consists of bits [0, LTR_COUNT-1]. 2867 This is applicable to the H264 and HEVC encoders. 2868 2869 ``V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (struct)`` 2870 Specifies various decode parameters, especially the references picture order 2871 count (POC) for all the lists (short, long, before, current, after) and the 2872 number of entries for each of them. 2873 These parameters are defined according to :ref:`hevc`. 2874 They are described in section 8.3 "Slice decoding process" of the 2875 specification. 2876 2877 .. c:type:: v4l2_ctrl_hevc_decode_params 2878 2879 .. cssclass:: longtable 2880 2881 .. flat-table:: struct v4l2_ctrl_hevc_decode_params 2882 :header-rows: 0 2883 :stub-columns: 0 2884 :widths: 1 1 2 2885 2886 * - __s32 2887 - ``pic_order_cnt_val`` 2888 - PicOrderCntVal as described in section 8.3.1 "Decoding process 2889 for picture order count" of the specification. 2890 * - __u16 2891 - ``short_term_ref_pic_set_size`` 2892 - Specifies the size, in bits, of the short-term reference picture set, of the first slice 2893 described as st_ref_pic_set() in the specification, included in the slice header 2894 or SPS (section 7.3.6.1). 2895 * - __u16 2896 - ``long_term_ref_pic_set_size`` 2897 - Specifies the size, in bits, of the long-term reference picture set, of the first slice 2898 included in the slice header or SPS. It is the number of bits in the conditional block 2899 if(long_term_ref_pics_present_flag) in section 7.3.6.1 of the specification. 2900 * - __u8 2901 - ``num_active_dpb_entries`` 2902 - The number of entries in ``dpb``. 2903 * - __u8 2904 - ``num_poc_st_curr_before`` 2905 - The number of reference pictures in the short-term set that come before 2906 the current frame. 2907 * - __u8 2908 - ``num_poc_st_curr_after`` 2909 - The number of reference pictures in the short-term set that come after 2910 the current frame. 2911 * - __u8 2912 - ``num_poc_lt_curr`` 2913 - The number of reference pictures in the long-term set. 2914 * - __u8 2915 - ``poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]`` 2916 - PocStCurrBefore as described in section 8.3.2 "Decoding process for reference 2917 picture set": provides the index of the short term before references in DPB array. 2918 * - __u8 2919 - ``poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]`` 2920 - PocStCurrAfter as described in section 8.3.2 "Decoding process for reference 2921 picture set": provides the index of the short term after references in DPB array. 2922 * - __u8 2923 - ``poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]`` 2924 - PocLtCurr as described in section 8.3.2 "Decoding process for reference 2925 picture set": provides the index of the long term references in DPB array. 2926 * - __u8 2927 - ``num_delta_pocs_of_ref_rps_idx`` 2928 - When the short_term_ref_pic_set_sps_flag in the slice header is equal to 0, 2929 it is the same as the derived value NumDeltaPocs[RefRpsIdx]. It can be used to parse 2930 the RPS data in slice headers instead of skipping it with @short_term_ref_pic_set_size. 2931 When the value of short_term_ref_pic_set_sps_flag in the slice header is 2932 equal to 1, num_delta_pocs_of_ref_rps_idx shall be set to 0. 2933 * - struct :c:type:`v4l2_hevc_dpb_entry` 2934 - ``dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]`` 2935 - The decoded picture buffer, for meta-data about reference frames. 2936 * - __u64 2937 - ``flags`` 2938 - See :ref:`Decode Parameters Flags <hevc_decode_params_flags>` 2939 2940 .. _hevc_decode_params_flags: 2941 2942 ``Decode Parameters Flags`` 2943 2944 .. cssclass:: longtable 2945 2946 .. flat-table:: 2947 :header-rows: 0 2948 :stub-columns: 0 2949 :widths: 1 1 2 2950 2951 * - ``V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC`` 2952 - 0x00000001 2953 - 2954 * - ``V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC`` 2955 - 0x00000002 2956 - 2957 * - ``V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR`` 2958 - 0x00000004 2959 - 2960 2961 .. _v4l2-codec-stateless-av1: 2962 2963 ``V4L2_CID_STATELESS_AV1_SEQUENCE (struct)`` 2964 Represents an AV1 Sequence OBU (Open Bitstream Unit). See section 5.5 2965 "Sequence header OBU syntax" in :ref:`av1` for more details. 2966 2967 .. c:type:: v4l2_ctrl_av1_sequence 2968 2969 .. cssclass:: longtable 2970 2971 .. tabularcolumns:: |p{5.8cm}|p{4.8cm}|p{6.6cm}| 2972 2973 .. flat-table:: struct v4l2_ctrl_av1_sequence 2974 :header-rows: 0 2975 :stub-columns: 0 2976 :widths: 1 1 2 2977 2978 * - __u32 2979 - ``flags`` 2980 - See :ref:`AV1 Sequence Flags <av1_sequence_flags>`. 2981 * - __u8 2982 - ``seq_profile`` 2983 - Specifies the features that can be used in the coded video sequence. 2984 * - __u8 2985 - ``order_hint_bits`` 2986 - Specifies the number of bits used for the order_hint field at each frame. 2987 * - __u8 2988 - ``bit_depth`` 2989 - the bit depth to use for the sequence as described in section 5.5.2 2990 "Color config syntax" in :ref:`av1` for more details. 2991 * - __u8 2992 - ``reserved`` 2993 - Applications and drivers must set this to zero. 2994 * - __u16 2995 - ``max_frame_width_minus_1`` 2996 - Specifies the maximum frame width minus 1 for the frames represented by 2997 this sequence header. 2998 * - __u16 2999 - ``max_frame_height_minus_1`` 3000 - Specifies the maximum frame height minus 1 for the frames represented by 3001 this sequence header. 3002 3003 .. _av1_sequence_flags: 3004 3005 ``AV1 Sequence Flags`` 3006 3007 .. cssclass:: longtable 3008 3009 .. flat-table:: 3010 :header-rows: 0 3011 :stub-columns: 0 3012 :widths: 1 1 2 3013 3014 * - ``V4L2_AV1_SEQUENCE_FLAG_STILL_PICTURE`` 3015 - 0x00000001 3016 - If set, specifies that the coded video sequence contains only one coded 3017 frame. If not set, specifies that the coded video sequence contains one 3018 or more coded frames. 3019 * - ``V4L2_AV1_SEQUENCE_FLAG_USE_128X128_SUPERBLOCK`` 3020 - 0x00000002 3021 - If set, indicates that superblocks contain 128x128 luma samples. 3022 When equal to 0, it indicates that superblocks contain 64x64 luma 3023 samples. The number of contained chroma samples depends on 3024 subsampling_x and subsampling_y. 3025 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_FILTER_INTRA`` 3026 - 0x00000004 3027 - If set, specifies that the use_filter_intra syntax element may be 3028 present. If not set, specifies that the use_filter_intra syntax element 3029 will not be present. 3030 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTRA_EDGE_FILTER`` 3031 - 0x00000008 3032 - Specifies whether the intra edge filtering process should be enabled. 3033 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_INTERINTRA_COMPOUND`` 3034 - 0x00000010 3035 - If set, specifies that the mode info for inter blocks may contain the 3036 syntax element interintra. If not set, specifies that the syntax element 3037 interintra will not be present. 3038 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_MASKED_COMPOUND`` 3039 - 0x00000020 3040 - If set, specifies that the mode info for inter blocks may contain the 3041 syntax element compound_type. If not set, specifies that the syntax 3042 element compound_type will not be present. 3043 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_WARPED_MOTION`` 3044 - 0x00000040 3045 - If set, indicates that the allow_warped_motion syntax element may be 3046 present. If not set, indicates that the allow_warped_motion syntax 3047 element will not be present. 3048 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_DUAL_FILTER`` 3049 - 0x00000080 3050 - If set, indicates that the inter prediction filter type may be specified 3051 independently in the horizontal and vertical directions. If the flag is 3052 equal to 0, only one filter type may be specified, which is then used in 3053 both directions. 3054 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_ORDER_HINT`` 3055 - 0x00000100 3056 - If set, indicates that tools based on the values of order hints may be 3057 used. If not set, indicates that tools based on order hints are 3058 disabled. 3059 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_JNT_COMP`` 3060 - 0x00000200 3061 - If set, indicates that the distance weights process may be used for 3062 inter prediction. 3063 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_REF_FRAME_MVS`` 3064 - 0x00000400 3065 - If set, indicates that the use_ref_frame_mvs syntax element may be 3066 present. If not set, indicates that the use_ref_frame_mvs syntax element 3067 will not be present. 3068 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_SUPERRES`` 3069 - 0x00000800 3070 - If set, specifies that the use_superres syntax element will be present 3071 in the uncompressed header. If not set, specifies that the use_superres 3072 syntax element will not be present (instead use_superres will be set to 3073 0 in the uncompressed header without being read). 3074 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_CDEF`` 3075 - 0x00001000 3076 - If set, specifies that cdef filtering may be enabled. If not set, 3077 specifies that cdef filtering is disabled. 3078 * - ``V4L2_AV1_SEQUENCE_FLAG_ENABLE_RESTORATION`` 3079 - 0x00002000 3080 - If set, specifies that loop restoration filtering may be enabled. If not 3081 set, specifies that loop restoration filtering is disabled. 3082 * - ``V4L2_AV1_SEQUENCE_FLAG_MONO_CHROME`` 3083 - 0x00004000 3084 - If set, indicates that the video does not contain U and V color planes. 3085 If not set, indicates that the video contains Y, U, and V color planes. 3086 * - ``V4L2_AV1_SEQUENCE_FLAG_COLOR_RANGE`` 3087 - 0x00008000 3088 - If set, signals full swing representation, i.e. "Full Range 3089 Quantization". If not set, signals studio swing representation, i.e. 3090 "Limited Range Quantization". 3091 * - ``V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_X`` 3092 - 0x00010000 3093 - Specify the chroma subsampling format. 3094 * - ``V4L2_AV1_SEQUENCE_FLAG_SUBSAMPLING_Y`` 3095 - 0x00020000 3096 - Specify the chroma subsampling format. 3097 * - ``V4L2_AV1_SEQUENCE_FLAG_FILM_GRAIN_PARAMS_PRESENT`` 3098 - 0x00040000 3099 - Specifies whether film grain parameters are present in the coded video 3100 sequence. 3101 * - ``V4L2_AV1_SEQUENCE_FLAG_SEPARATE_UV_DELTA_Q`` 3102 - 0x00080000 3103 - If set, indicates that the U and V planes may have separate delta 3104 quantizer values. If not set, indicates that the U and V planes will share 3105 the same delta quantizer value. 3106 3107 ``V4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY (struct)`` 3108 Represents a single AV1 tile inside an AV1 Tile Group. Note that MiRowStart, 3109 MiRowEnd, MiColStart and MiColEnd can be retrieved from struct 3110 v4l2_av1_tile_info in struct v4l2_ctrl_av1_frame using tile_row and 3111 tile_col. See section 6.10.1 "General tile group OBU semantics" in 3112 :ref:`av1` for more details. 3113 3114 .. c:type:: v4l2_ctrl_av1_tile_group_entry 3115 3116 .. cssclass:: longtable 3117 3118 .. tabularcolumns:: |p{5.8cm}|p{4.8cm}|p{6.6cm}| 3119 3120 .. flat-table:: struct v4l2_ctrl_av1_tile_group_entry 3121 :header-rows: 0 3122 :stub-columns: 0 3123 :widths: 1 1 2 3124 3125 * - __u32 3126 - ``tile_offset`` 3127 - Offset from the OBU data, i.e. where the coded tile data actually starts. 3128 * - __u32 3129 - ``tile_size`` 3130 - Specifies the size in bytes of the coded tile. Equivalent to "TileSize" 3131 in :ref:`av1`. 3132 * - __u32 3133 - ``tile_row`` 3134 - Specifies the row of the current tile. Equivalent to "TileRow" in 3135 :ref:`av1`. 3136 * - __u32 3137 - ``tile_col`` 3138 - Specifies the column of the current tile. Equivalent to "TileColumn" in 3139 :ref:`av1`. 3140 3141 .. c:type:: v4l2_av1_warp_model 3142 3143 AV1 Warp Model as described in section 3 "Symbols and abbreviated terms" of 3144 :ref:`av1`. 3145 3146 .. raw:: latex 3147 3148 \scriptsize 3149 3150 .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}| 3151 3152 .. flat-table:: 3153 :header-rows: 0 3154 :stub-columns: 0 3155 :widths: 1 1 2 3156 3157 * - ``V4L2_AV1_WARP_MODEL_IDENTITY`` 3158 - 0 3159 - Warp model is just an identity transform. 3160 * - ``V4L2_AV1_WARP_MODEL_TRANSLATION`` 3161 - 1 3162 - Warp model is a pure translation. 3163 * - ``V4L2_AV1_WARP_MODEL_ROTZOOM`` 3164 - 2 3165 - Warp model is a rotation + symmetric zoom + translation. 3166 * - ``V4L2_AV1_WARP_MODEL_AFFINE`` 3167 - 3 3168 - Warp model is a general affine transform. 3169 3170 .. c:type:: v4l2_av1_reference_frame 3171 3172 AV1 Reference Frames as described in section 6.10.24 "Ref frames semantics" 3173 of :ref:`av1`. 3174 3175 .. raw:: latex 3176 3177 \scriptsize 3178 3179 .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}| 3180 3181 .. flat-table:: 3182 :header-rows: 0 3183 :stub-columns: 0 3184 :widths: 1 1 2 3185 3186 * - ``V4L2_AV1_REF_INTRA_FRAME`` 3187 - 0 3188 - Intra Frame Reference. 3189 * - ``V4L2_AV1_REF_LAST_FRAME`` 3190 - 1 3191 - Last Frame Reference. 3192 * - ``V4L2_AV1_REF_LAST2_FRAME`` 3193 - 2 3194 - Last2 Frame Reference. 3195 * - ``V4L2_AV1_REF_LAST3_FRAME`` 3196 - 3 3197 - Last3 Frame Reference. 3198 * - ``V4L2_AV1_REF_GOLDEN_FRAME`` 3199 - 4 3200 - Golden Frame Reference. 3201 * - ``V4L2_AV1_REF_BWDREF_FRAME`` 3202 - 5 3203 - BWD Frame Reference. 3204 * - ``V4L2_AV1_REF_ALTREF2_FRAME`` 3205 - 6 3206 - ALTREF2 Frame Reference. 3207 * - ``V4L2_AV1_REF_ALTREF_FRAME`` 3208 - 7 3209 - ALTREF Frame Reference. 3210 3211 .. c:type:: v4l2_av1_global_motion 3212 3213 AV1 Global Motion parameters as described in section 6.8.17 3214 "Global motion params semantics" of :ref:`av1`. 3215 3216 .. cssclass:: longtable 3217 3218 .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}| 3219 3220 .. flat-table:: struct v4l2_av1_global_motion 3221 :header-rows: 0 3222 :stub-columns: 0 3223 :widths: 1 1 2 3224 3225 * - __u8 3226 - ``flags[V4L2_AV1_TOTAL_REFS_PER_FRAME]`` 3227 - A bitfield containing the flags per reference frame. See 3228 :ref:`AV1 Global Motion Flags <av1_global_motion_flags>` for more 3229 details. 3230 * - enum :c:type:`v4l2_av1_warp_model` 3231 - ``type[V4L2_AV1_TOTAL_REFS_PER_FRAME]`` 3232 - The type of global motion transform used. 3233 * - __s32 3234 - ``params[V4L2_AV1_TOTAL_REFS_PER_FRAME][6]`` 3235 - This field has the same meaning as "gm_params" in :ref:`av1`. 3236 * - __u8 3237 - ``invalid`` 3238 - Bitfield indicating whether the global motion params are invalid for a 3239 given reference frame. See section 7.11.3.6 Setup shear process and the 3240 variable "warpValid". Use V4L2_AV1_GLOBAL_MOTION_IS_INVALID(ref) to 3241 create a suitable mask. 3242 * - __u8 3243 - ``reserved[3]`` 3244 - Applications and drivers must set this to zero. 3245 3246 .. _av1_global_motion_flags: 3247 3248 ``AV1 Global Motion Flags`` 3249 3250 .. cssclass:: longtable 3251 3252 .. flat-table:: 3253 :header-rows: 0 3254 :stub-columns: 0 3255 :widths: 1 1 2 3256 3257 * - ``V4L2_AV1_GLOBAL_MOTION_FLAG_IS_GLOBAL`` 3258 - 0x00000001 3259 - Specifies whether global motion parameters are present for a particular 3260 reference frame. 3261 * - ``V4L2_AV1_GLOBAL_MOTION_FLAG_IS_ROT_ZOOM`` 3262 - 0x00000002 3263 - Specifies whether a particular reference frame uses rotation and zoom 3264 global motion. 3265 * - ``V4L2_AV1_GLOBAL_MOTION_FLAG_IS_TRANSLATION`` 3266 - 0x00000004 3267 - Specifies whether a particular reference frame uses translation global 3268 motion 3269 3270 .. c:type:: v4l2_av1_frame_restoration_type 3271 3272 AV1 Frame Restoration Type. 3273 3274 .. raw:: latex 3275 3276 \scriptsize 3277 3278 .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}| 3279 3280 .. flat-table:: 3281 :header-rows: 0 3282 :stub-columns: 0 3283 :widths: 1 1 2 3284 3285 * - ``V4L2_AV1_FRAME_RESTORE_NONE`` 3286 - 0 3287 - No filtering is applied. 3288 * - ``V4L2_AV1_FRAME_RESTORE_WIENER`` 3289 - 1 3290 - Wiener filter process is invoked. 3291 * - ``V4L2_AV1_FRAME_RESTORE_SGRPROJ`` 3292 - 2 3293 - Self guided filter process is invoked. 3294 * - ``V4L2_AV1_FRAME_RESTORE_SWITCHABLE`` 3295 - 3 3296 - Restoration filter is swichtable. 3297 3298 .. c:type:: v4l2_av1_loop_restoration 3299 3300 AV1 Loop Restoration as described in section 6.10.15 "Loop restoration params 3301 semantics" of :ref:`av1`. 3302 3303 .. cssclass:: longtable 3304 3305 .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}| 3306 3307 .. flat-table:: struct v4l2_av1_loop_restoration 3308 :header-rows: 0 3309 :stub-columns: 0 3310 :widths: 1 1 2 3311 3312 * - __u8 3313 - ``flags`` 3314 - See :ref:`AV1 Loop Restoration Flags <av1_loop_restoration_flags>`. 3315 * - __u8 3316 - ``lr_unit_shift`` 3317 - Specifies if the luma restoration size should be halved. 3318 * - __u8 3319 - ``lr_uv_shift`` 3320 - Specifies if the chroma size should be half the luma size. 3321 * - __u8 3322 - ``reserved`` 3323 - Applications and drivers must set this to zero. 3324 * - :c:type:`v4l2_av1_frame_restoration_type` 3325 - ``frame_restoration_type[V4L2_AV1_NUM_PLANES_MAX]`` 3326 - Specifies the type of restoration used for each plane. 3327 * - __u8 3328 - ``loop_restoration_size[V4L2_AV1_MAX_NUM_PLANES]`` 3329 - Specifies the size of loop restoration units in units of samples in the 3330 current plane. 3331 3332 .. _av1_loop_restoration_flags: 3333 3334 ``AV1 Loop Restoration Flags`` 3335 3336 .. cssclass:: longtable 3337 3338 .. flat-table:: 3339 :header-rows: 0 3340 :stub-columns: 0 3341 :widths: 1 1 2 3342 3343 * - ``V4L2_AV1_LOOP_RESTORATION_FLAG_USES_LR`` 3344 - 0x00000001 3345 - Retains the same meaning as UsesLr in :ref:`av1`. 3346 * - ``V4L2_AV1_LOOP_RESTORATION_FLAG_USES_CHROMA_LR`` 3347 - 0x00000002 3348 - Retains the same meaning as UsesChromaLr in :ref:`av1`. 3349 3350 .. c:type:: v4l2_av1_cdef 3351 3352 AV1 CDEF params semantics as described in section 6.10.14 "CDEF params 3353 semantics" of :ref:`av1`. 3354 3355 .. cssclass:: longtable 3356 3357 .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}| 3358 3359 .. flat-table:: struct v4l2_av1_cdef 3360 :header-rows: 0 3361 :stub-columns: 0 3362 :widths: 1 1 2 3363 3364 * - __u8 3365 - ``damping_minus_3`` 3366 - Controls the amount of damping in the deringing filter. 3367 * - __u8 3368 - ``bits`` 3369 - Specifies the number of bits needed to specify which CDEF filter to 3370 apply. 3371 * - __u8 3372 - ``y_pri_strength[V4L2_AV1_CDEF_MAX]`` 3373 - Specifies the strength of the primary filter. 3374 * - __u8 3375 - ``y_sec_strength[V4L2_AV1_CDEF_MAX]`` 3376 - Specifies the strength of the secondary filter. 3377 * - __u8 3378 - ``uv_pri_strength[V4L2_AV1_CDEF_MAX]`` 3379 - Specifies the strength of the primary filter. 3380 * - __u8 3381 - ``uv_sec_strength[V4L2_AV1_CDEF_MAX]`` 3382 - Specifies the strength of the secondary filter. 3383 3384 .. c:type:: v4l2_av1_segment_feature 3385 3386 AV1 segment features as described in section 3 "Symbols and abbreviated terms" 3387 of :ref:`av1`. 3388 3389 .. raw:: latex 3390 3391 \scriptsize 3392 3393 .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}| 3394 3395 .. flat-table:: 3396 :header-rows: 0 3397 :stub-columns: 0 3398 :widths: 1 1 2 3399 3400 * - ``V4L2_AV1_SEG_LVL_ALT_Q`` 3401 - 0 3402 - Index for quantizer segment feature. 3403 * - ``V4L2_AV1_SEG_LVL_ALT_LF_Y_V`` 3404 - 1 3405 - Index for vertical luma loop filter segment feature. 3406 * - ``V4L2_AV1_SEG_LVL_REF_FRAME`` 3407 - 5 3408 - Index for reference frame segment feature. 3409 * - ``V4L2_AV1_SEG_LVL_REF_SKIP`` 3410 - 6 3411 - Index for skip segment feature. 3412 * - ``V4L2_AV1_SEG_LVL_REF_GLOBALMV`` 3413 - 7 3414 - Index for global mv feature. 3415 * - ``V4L2_AV1_SEG_LVL_MAX`` 3416 - 8 3417 - Number of segment features. 3418 3419 .. c:type:: v4l2_av1_segmentation 3420 3421 AV1 Segmentation params as defined in section 6.8.13 "Segmentation params 3422 semantics" of :ref:`av1`. 3423 3424 .. cssclass:: longtable 3425 3426 .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}| 3427 3428 .. flat-table:: struct v4l2_av1_segmentation 3429 :header-rows: 0 3430 :stub-columns: 0 3431 :widths: 1 1 2 3432 3433 * - __u8 3434 - ``flags`` 3435 - See :ref:`AV1 Segmentation Flags <av1_segmentation_flags>` 3436 * - __u8 3437 - ``last_active_seg_id`` 3438 - Indicates the highest numbered segment id that has some 3439 enabled feature. This is used when decoding the segment id to only decode 3440 choices corresponding to used segments. 3441 * - __u8 3442 - ``feature_enabled[V4L2_AV1_MAX_SEGMENTS]`` 3443 - Bitmask defining which features are enabled in each segment. Use 3444 V4L2_AV1_SEGMENT_FEATURE_ENABLED to build a suitable mask. 3445 * - __u16 3446 - ``feature_data[V4L2_AV1_MAX_SEGMENTS][V4L2_AV1_SEG_LVL_MAX]`` 3447 - Data attached to each feature. Data entry is only valid if the feature 3448 is enabled. 3449 3450 .. _av1_segmentation_flags: 3451 3452 ``AV1 Segmentation Flags`` 3453 3454 .. cssclass:: longtable 3455 3456 .. flat-table:: 3457 :header-rows: 0 3458 :stub-columns: 0 3459 :widths: 1 1 2 3460 3461 * - ``V4L2_AV1_SEGMENTATION_FLAG_ENABLED`` 3462 - 0x00000001 3463 - If set, indicates that this frame makes use of the segmentation tool. If 3464 not set, indicates that the frame does not use segmentation. 3465 * - ``V4L2_AV1_SEGMENTATION_FLAG_UPDATE_MAP`` 3466 - 0x00000002 3467 - If set, indicates that the segmentation map are updated during the 3468 decoding of this frame. If not set, indicates that the segmentation map 3469 from the previous frame is used. 3470 * - ``V4L2_AV1_SEGMENTATION_FLAG_TEMPORAL_UPDATE`` 3471 - 0x00000004 3472 - If set, indicates that the updates to the segmentation map are coded 3473 relative to the existing segmentation map. If not set, indicates that 3474 the new segmentation map is coded without reference to the existing 3475 segmentation map. 3476 * - ``V4L2_AV1_SEGMENTATION_FLAG_UPDATE_DATA`` 3477 - 0x00000008 3478 - If set, indicates that the updates to the segmentation map are coded 3479 relative to the existing segmentation map. If not set, indicates that 3480 the new segmentation map is coded without reference to the existing 3481 segmentation map. 3482 * - ``V4L2_AV1_SEGMENTATION_FLAG_SEG_ID_PRE_SKIP`` 3483 - 0x00000010 3484 - If set, indicates that the segment id will be read before the skip 3485 syntax element. If not set, indicates that the skip syntax element will 3486 be read first. 3487 3488 .. c:type:: v4l2_av1_loop_filter 3489 3490 AV1 Loop filter params as defined in section 6.8.10 "Loop filter semantics" of 3491 :ref:`av1`. 3492 3493 .. cssclass:: longtable 3494 3495 .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}| 3496 3497 .. flat-table:: struct v4l2_av1_loop_filter 3498 :header-rows: 0 3499 :stub-columns: 0 3500 :widths: 1 1 2 3501 3502 * - __u8 3503 - ``flags`` 3504 - See 3505 :ref:`AV1 Loop Filter flags <av1_loop_filter_flags>` for more details. 3506 * - __u8 3507 - ``level[4]`` 3508 - An array containing loop filter strength values. Different loop 3509 filter strength values from the array are used depending on the image 3510 plane being filtered, and the edge direction (vertical or horizontal) 3511 being filtered. 3512 * - __u8 3513 - ``sharpness`` 3514 - indicates the sharpness level. The loop_filter_level and 3515 loop_filter_sharpness together determine when a block edge is filtered, 3516 and by how much the filtering can change the sample values. The loop 3517 filter process is described in section 7.14 of :ref:`av1`. 3518 * - __u8 3519 - ``ref_deltas[V4L2_AV1_TOTAL_REFS_PER_FRAME]`` 3520 - contains the adjustment needed for the filter level based on the 3521 chosen reference frame. If this syntax element is not present, it 3522 maintains its previous value. 3523 * - __u8 3524 - ``mode_deltas[2]`` 3525 - contains the adjustment needed for the filter level based on 3526 the chosen mode. If this syntax element is not present, it maintains its 3527 previous value. 3528 * - __u8 3529 - ``delta_lf_res`` 3530 - specifies the left shift which should be applied to decoded loop filter 3531 delta values. 3532 3533 .. _av1_loop_filter_flags: 3534 3535 ``AV1 Loop Filter Flags`` 3536 3537 .. cssclass:: longtable 3538 3539 .. flat-table:: 3540 :header-rows: 0 3541 :stub-columns: 0 3542 :widths: 1 1 2 3543 3544 * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_ENABLED`` 3545 - 0x00000001 3546 - If set, means that the filter level depends on the mode and reference 3547 frame used to predict a block. If not set, means that the filter level 3548 does not depend on the mode and reference frame. 3549 * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_UPDATE`` 3550 - 0x00000002 3551 - If set, means that additional syntax elements are present that specify 3552 which mode and reference frame deltas are to be updated. If not set, 3553 means that these syntax elements are not present. 3554 * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_PRESENT`` 3555 - 0x00000004 3556 - Specifies whether loop filter delta values are present 3557 * - ``V4L2_AV1_LOOP_FILTER_FLAG_DELTA_LF_MULTI`` 3558 - 0x00000008 3559 - A value equal to 1 specifies that separate loop filter 3560 deltas are sent for horizontal luma edges, vertical luma edges, 3561 the U edges, and the V edges. A value of delta_lf_multi equal to 0 3562 specifies that the same loop filter delta is used for all edges. 3563 3564 .. c:type:: v4l2_av1_quantization 3565 3566 AV1 Quantization params as defined in section 6.8.11 "Quantization params 3567 semantics" of :ref:`av1`. 3568 3569 .. cssclass:: longtable 3570 3571 .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}| 3572 3573 .. flat-table:: struct v4l2_av1_quantization 3574 :header-rows: 0 3575 :stub-columns: 0 3576 :widths: 1 1 2 3577 3578 * - __u8 3579 - ``flags`` 3580 - See 3581 :ref:`AV1 Loop Filter flags <av1_quantization_flags>` for more details. 3582 * - __u8 3583 - ``base_q_idx`` 3584 - Indicates the base frame qindex. This is used for Y AC coefficients and 3585 as the base value for the other quantizers. 3586 * - __u8 3587 - ``delta_q_y_dc`` 3588 - Indicates the Y DC quantizer relative to base_q_idx. 3589 * - __u8 3590 - ``delta_q_u_dc`` 3591 - Indicates the U DC quantizer relative to base_q_idx. 3592 * - __u8 3593 - ``delta_q_u_ac`` 3594 - Indicates the U AC quantizer relative to base_q_idx. 3595 * - __u8 3596 - ``delta_q_v_dc`` 3597 - Indicates the V DC quantizer relative to base_q_idx. 3598 * - __u8 3599 - ``delta_q_v_ac`` 3600 - Indicates the V AC quantizer relative to base_q_idx. 3601 * - __u8 3602 - ``qm_y`` 3603 - Specifies the level in the quantizer matrix that should be used for 3604 luma plane decoding. 3605 * - __u8 3606 - ``qm_u`` 3607 - Specifies the level in the quantizer matrix that should be used for 3608 chroma U plane decoding. 3609 * - __u8 3610 - ``qm_v`` 3611 - Specifies the level in the quantizer matrix that should be used for 3612 chroma V plane decoding. 3613 * - __u8 3614 - ``delta_q_res`` 3615 - Specifies the left shift which should be applied to decoded quantizer 3616 index delta values. 3617 3618 .. _av1_quantization_flags: 3619 3620 ``AV1 Quantization Flags`` 3621 3622 .. cssclass:: longtable 3623 3624 .. flat-table:: 3625 :header-rows: 0 3626 :stub-columns: 0 3627 :widths: 1 1 2 3628 3629 * - ``V4L2_AV1_QUANTIZATION_FLAG_DIFF_UV_DELTA`` 3630 - 0x00000001 3631 - If set, indicates that the U and V delta quantizer values are coded 3632 separately. If not set, indicates that the U and V delta quantizer 3633 values share a common value. 3634 * - ``V4L2_AV1_QUANTIZATION_FLAG_USING_QMATRIX`` 3635 - 0x00000002 3636 - If set, specifies that the quantizer matrix will be used to compute 3637 quantizers. 3638 * - ``V4L2_AV1_QUANTIZATION_FLAG_DELTA_Q_PRESENT`` 3639 - 0x00000004 3640 - Specifies whether quantizer index delta values are present. 3641 3642 .. c:type:: v4l2_av1_tile_info 3643 3644 AV1 Tile info as defined in section 6.8.14 "Tile info semantics" of ref:`av1`. 3645 3646 .. cssclass:: longtable 3647 3648 .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}| 3649 3650 .. flat-table:: struct v4l2_av1_tile_info 3651 :header-rows: 0 3652 :stub-columns: 0 3653 :widths: 1 1 2 3654 3655 * - __u8 3656 - ``flags`` 3657 - See 3658 :ref:`AV1 Tile Info flags <av1_tile_info_flags>` for more details. 3659 * - __u8 3660 - ``context_update_tile_id`` 3661 - Specifies which tile to use for the CDF update. 3662 * - __u8 3663 - ``tile_cols`` 3664 - Specifies the number of tiles across the frame. 3665 * - __u8 3666 - ``tile_rows`` 3667 - Specifies the number of tiles down the frame. 3668 * - __u32 3669 - ``mi_col_starts[V4L2_AV1_MAX_TILE_COLS + 1]`` 3670 - An array specifying the start column (in units of 4x4 luma 3671 samples) for each tile across the image. 3672 * - __u32 3673 - ``mi_row_starts[V4L2_AV1_MAX_TILE_ROWS + 1]`` 3674 - An array specifying the start row (in units of 4x4 luma 3675 samples) for each tile across the image. 3676 * - __u32 3677 - ``width_in_sbs_minus_1[V4L2_AV1_MAX_TILE_COLS]`` 3678 - Specifies the width of a tile minus 1 in units of superblocks. 3679 * - __u32 3680 - ``height_in_sbs_minus_1[V4L2_AV1_MAX_TILE_ROWS]`` 3681 - Specifies the height of a tile minus 1 in units of superblocks. 3682 * - __u8 3683 - ``tile_size_bytes`` 3684 - Specifies the number of bytes needed to code each tile size. 3685 * - __u8 3686 - ``reserved[3]`` 3687 - Applications and drivers must set this to zero. 3688 3689 .. _av1_tile_info_flags: 3690 3691 ``AV1 Tile Info Flags`` 3692 3693 .. cssclass:: longtable 3694 3695 .. flat-table:: 3696 :header-rows: 0 3697 :stub-columns: 0 3698 :widths: 1 1 2 3699 3700 * - ``V4L2_AV1_TILE_INFO_FLAG_UNIFORM_TILE_SPACING`` 3701 - 0x00000001 3702 - If set, means that the tiles are uniformly spaced across the frame. (In 3703 other words, all tiles are the same size except for the ones at the 3704 right and bottom edge which can be smaller). If not set means that the 3705 tile sizes are coded. 3706 3707 .. c:type:: v4l2_av1_frame_type 3708 3709 AV1 Frame Type 3710 3711 .. raw:: latex 3712 3713 \scriptsize 3714 3715 .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}| 3716 3717 .. flat-table:: 3718 :header-rows: 0 3719 :stub-columns: 0 3720 :widths: 1 1 2 3721 3722 * - ``V4L2_AV1_KEY_FRAME`` 3723 - 0 3724 - Key frame. 3725 * - ``V4L2_AV1_INTER_FRAME`` 3726 - 1 3727 - Inter frame. 3728 * - ``V4L2_AV1_INTRA_ONLY_FRAME`` 3729 - 2 3730 - Intra-only frame. 3731 * - ``V4L2_AV1_SWITCH_FRAME`` 3732 - 3 3733 - Switch frame. 3734 3735 .. c:type:: v4l2_av1_interpolation_filter 3736 3737 AV1 Interpolation Filter 3738 3739 .. raw:: latex 3740 3741 \scriptsize 3742 3743 .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}| 3744 3745 .. flat-table:: 3746 :header-rows: 0 3747 :stub-columns: 0 3748 :widths: 1 1 2 3749 3750 * - ``V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP`` 3751 - 0 3752 - Eight tap filter. 3753 * - ``V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH`` 3754 - 1 3755 - Eight tap smooth filter. 3756 * - ``V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP`` 3757 - 2 3758 - Eight tap sharp filter. 3759 * - ``V4L2_AV1_INTERPOLATION_FILTER_BILINEAR`` 3760 - 3 3761 - Bilinear filter. 3762 * - ``V4L2_AV1_INTERPOLATION_FILTER_SWITCHABLE`` 3763 - 4 3764 - Filter selection is signaled at the block level. 3765 3766 .. c:type:: v4l2_av1_tx_mode 3767 3768 AV1 Tx mode as described in section 6.8.21 "TX mode semantics" of :ref:`av1`. 3769 3770 .. raw:: latex 3771 3772 \scriptsize 3773 3774 .. tabularcolumns:: |p{7.4cm}|p{0.3cm}|p{9.6cm}| 3775 3776 .. flat-table:: 3777 :header-rows: 0 3778 :stub-columns: 0 3779 :widths: 1 1 2 3780 3781 * - ``V4L2_AV1_TX_MODE_ONLY_4X4`` 3782 - 0 3783 - The inverse transform will use only 4x4 transforms. 3784 * - ``V4L2_AV1_TX_MODE_LARGEST`` 3785 - 1 3786 - The inverse transform will use the largest transform size that fits 3787 inside the block. 3788 * - ``V4L2_AV1_TX_MODE_SELECT`` 3789 - 2 3790 - The choice of transform size is specified explicitly for each block. 3791 3792 ``V4L2_CID_STATELESS_AV1_FRAME (struct)`` 3793 Represents a Frame Header OBU. See 6.8 "Frame Header OBU semantics" of 3794 :ref:`av1` for more details. 3795 3796 .. c:type:: v4l2_ctrl_av1_frame 3797 3798 .. cssclass:: longtable 3799 3800 .. tabularcolumns:: |p{5.8cm}|p{4.8cm}|p{6.6cm}| 3801 3802 .. flat-table:: struct v4l2_ctrl_av1_frame 3803 :header-rows: 0 3804 :stub-columns: 0 3805 :widths: 1 1 2 3806 3807 * - struct :c:type:`v4l2_av1_tile_info` 3808 - ``tile_info`` 3809 - Tile info 3810 * - struct :c:type:`v4l2_av1_quantization` 3811 - ``quantization`` 3812 - Quantization parameters. 3813 * - __u8 3814 - ``superres_denom`` 3815 - The denominator for the upscaling ratio. 3816 * - struct :c:type:`v4l2_av1_segmentation` 3817 - ``segmentation`` 3818 - Segmentation parameters. 3819 * - struct :c:type:`v4l2_av1_loop_filter` 3820 - ``loop_filter`` 3821 - Loop filter params 3822 * - struct :c:type:`v4l2_av1_cdef` 3823 - ``cdef`` 3824 - CDEF params 3825 * - __u8 3826 - ``skip_mode_frame[2]`` 3827 - Specifies the frames to use for compound prediction when skip_mode is 3828 equal to 1. 3829 * - __u8 3830 - ``primary_ref_frame`` 3831 - Specifies which reference frame contains the CDF values and other state 3832 that should be loaded at the start of the frame. 3833 * - struct :c:type:`v4l2_av1_loop_restoration` 3834 - ``loop_restoration`` 3835 - Loop restoration parameters. 3836 * - struct :c:type:`v4l2_av1_global_motion` 3837 - ``global_motion`` 3838 - Global motion parameters. 3839 * - __u32 3840 - ``flags`` 3841 - See 3842 :ref:`AV1 Frame flags <av1_frame_flags>` for more details. 3843 * - enum :c:type:`v4l2_av1_frame_type` 3844 - ``frame_type`` 3845 - Specifies the AV1 frame type 3846 * - __u32 3847 - ``order_hint`` 3848 - Specifies OrderHintBits least significant bits of the expected output 3849 order for this frame. 3850 * - __u32 3851 - ``upscaled_width`` 3852 - The upscaled width. 3853 * - enum :c:type:`v4l2_av1_interpolation_filter` 3854 - ``interpolation_filter`` 3855 - Specifies the filter selection used for performing inter prediction. 3856 * - enum :c:type:`v4l2_av1_tx_mode` 3857 - ``tx_mode`` 3858 - Specifies how the transform size is determined. 3859 * - __u32 3860 - ``frame_width_minus_1`` 3861 - Add 1 to get the frame's width. 3862 * - __u32 3863 - ``frame_height_minus_1`` 3864 - Add 1 to get the frame's height. 3865 * - __u16 3866 - ``render_width_minus_1`` 3867 - Add 1 to get the render width of the frame in luma samples. 3868 * - __u16 3869 - ``render_height_minus_1`` 3870 - Add 1 to get the render height of the frame in luma samples. 3871 * - __u32 3872 - ``current_frame_id`` 3873 - Specifies the frame id number for the current frame. Frame 3874 id numbers are additional information that do not affect the decoding 3875 process, but provide decoders with a way of detecting missing reference 3876 frames so that appropriate action can be taken. 3877 * - __u8 3878 - ``buffer_removal_time[V4L2_AV1_MAX_OPERATING_POINTS]`` 3879 - Specifies the frame removal time in units of DecCT clock ticks counted 3880 from the removal time of the last random access point for operating point 3881 opNum. 3882 * - __u8 3883 - ``reserved[4]`` 3884 - Applications and drivers must set this to zero. 3885 * - __u32 3886 - ``order_hints[V4L2_AV1_TOTAL_REFS_PER_FRAME]`` 3887 - Specifies the expected output order hint for each reference frame. 3888 This field corresponds to the OrderHints variable from the specification 3889 (section 5.9.2 "Uncompressed header syntax"). As such, this is only 3890 used for non-intra frames and ignored otherwise. order_hints[0] is 3891 always ignored. 3892 * - __u64 3893 - ``reference_frame_ts[V4L2_AV1_TOTAL_REFS_PER_FRAME]`` 3894 - The V4L2 timestamp for each of the reference frames enumerated in 3895 enum :c:type:`v4l2_av1_reference_frame` starting at 3896 ``V4L2_AV1_REF_LAST_FRAME``. This represents the state of reference 3897 slot as described in the spec and updated by userland through the 3898 "Reference frame update process" in section 7.20 The timestamp refers 3899 to the ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the 3900 :c:func:`v4l2_timeval_to_ns()` function to convert the struct 3901 :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64. 3902 * - __s8 3903 - ``ref_frame_idx[V4L2_AV1_REFS_PER_FRAME]`` 3904 - An index into ``reference_frame_ts`` representing the ordered list of 3905 references used by inter-frame. Matches the bitstream syntax 3906 element of the same name. 3907 * - __u8 3908 - ``refresh_frame_flags`` 3909 - Contains a bitmask that specifies which reference frame slots will be 3910 updated with the current frame after it is decoded. 3911 3912 .. _av1_frame_flags: 3913 3914 ``AV1 Frame Flags`` 3915 3916 .. cssclass:: longtable 3917 3918 .. flat-table:: 3919 :header-rows: 0 3920 :stub-columns: 0 3921 :widths: 1 1 2 3922 3923 * - ``V4L2_AV1_FRAME_FLAG_SHOW_FRAME`` 3924 - 0x00000001 3925 - If set, specifies that this frame should be immediately output once 3926 decoded. If not set, specifies that this frame should not be immediately 3927 output; it may be output later if a later uncompressed header uses 3928 show_existing_frame equal to 1. 3929 * - ``V4L2_AV1_FRAME_FLAG_SHOWABLE_FRAME`` 3930 - 0x00000002 3931 - If set, specifies that the frame may be output using the 3932 show_existing_frame mechanism. If not set, specifies that this frame 3933 will not be output using the show_existing_frame mechanism. 3934 * - ``V4L2_AV1_FRAME_FLAG_ERROR_RESILIENT_MODE`` 3935 - 0x00000004 3936 - Specifies whether error resilient mode is enabled. 3937 * - ``V4L2_AV1_FRAME_FLAG_DISABLE_CDF_UPDATE`` 3938 - 0x00000008 3939 - Specifies whether the CDF update in the symbol decoding process should 3940 be disabled. 3941 * - ``V4L2_AV1_FRAME_FLAG_ALLOW_SCREEN_CONTENT_TOOLS`` 3942 - 0x00000010 3943 - If set, indicates that intra blocks may use palette encoding. If not 3944 set, indicates that palette encoding is never used. 3945 * - ``V4L2_AV1_FRAME_FLAG_FORCE_INTEGER_MV`` 3946 - 0x00000020 3947 - If set, specifies that motion vectors will always be integers. If not 3948 set, specifies that motion vectors can contain fractional bits. 3949 * - ``V4L2_AV1_FRAME_FLAG_ALLOW_INTRABC`` 3950 - 0x00000040 3951 - If set, indicates that intra block copy may be used in this frame. If 3952 not set, indicates that intra block copy is not allowed in this frame. 3953 * - ``V4L2_AV1_FRAME_FLAG_USE_SUPERRES`` 3954 - 0x00000080 3955 - If set, indicates that upscaling is needed. 3956 * - ``V4L2_AV1_FRAME_FLAG_ALLOW_HIGH_PRECISION_MV`` 3957 - 0x00000100 3958 - If set, specifies that motion vectors are specified to eighth pel 3959 precision. If not set, specifies that motion vectors are specified to 3960 quarter pel precision; 3961 * - ``V4L2_AV1_FRAME_FLAG_IS_MOTION_MODE_SWITCHABLE`` 3962 - 0x00000200 3963 - If not set, specifies that only the SIMPLE motion mode will be used. 3964 * - ``V4L2_AV1_FRAME_FLAG_USE_REF_FRAME_MVS`` 3965 - 0x00000400 3966 - If set specifies that motion vector information from a previous frame 3967 can be used when decoding the current frame. If not set, specifies that 3968 this information will not be used. 3969 * - ``V4L2_AV1_FRAME_FLAG_DISABLE_FRAME_END_UPDATE_CDF`` 3970 - 0x00000800 3971 - If set indicates that the end of frame CDF update is disabled. If not 3972 set, indicates that the end of frame CDF update is enabled 3973 * - ``V4L2_AV1_FRAME_FLAG_ALLOW_WARPED_MOTION`` 3974 - 0x00001000 3975 - If set, indicates that the syntax element motion_mode may be present, if 3976 not set, indicates that the syntax element motion_mode will not be 3977 present. 3978 * - ``V4L2_AV1_FRAME_FLAG_REFERENCE_SELECT`` 3979 - 0x00002000 3980 - If set, specifies that the mode info for inter blocks contains the 3981 syntax element comp_mode that indicates whether to use single or 3982 compound reference prediction. If not set, specifies that all inter 3983 blocks will use single prediction. 3984 * - ``V4L2_AV1_FRAME_FLAG_REDUCED_TX_SET`` 3985 - 0x00004000 3986 - If set, specifies that the frame is restricted to a reduced subset of 3987 the full set of transform types. 3988 * - ``V4L2_AV1_FRAME_FLAG_SKIP_MODE_ALLOWED`` 3989 - 0x00008000 3990 - This flag retains the same meaning as SkipModeAllowed in :ref:`av1`. 3991 * - ``V4L2_AV1_FRAME_FLAG_SKIP_MODE_PRESENT`` 3992 - 0x00010000 3993 - If set, specifies that the syntax element skip_mode will be present, if 3994 not set, specifies that skip_mode will not be used for this frame. 3995 * - ``V4L2_AV1_FRAME_FLAG_FRAME_SIZE_OVERRIDE`` 3996 - 0x00020000 3997 - If set, specifies that the frame size will either be specified as the 3998 size of one of the reference frames, or computed from the 3999 frame_width_minus_1 and frame_height_minus_1 syntax elements. If not 4000 set, specifies that the frame size is equal to the size in the sequence 4001 header. 4002 * - ``V4L2_AV1_FRAME_FLAG_BUFFER_REMOVAL_TIME_PRESENT`` 4003 - 0x00040000 4004 - If set, specifies that buffer_removal_time is present. If not set, 4005 specifies that buffer_removal_time is not present. 4006 * - ``V4L2_AV1_FRAME_FLAG_FRAME_REFS_SHORT_SIGNALING`` 4007 - 0x00080000 4008 - If set, indicates that only two reference frames are explicitly 4009 signaled. If not set, indicates that all reference frames are explicitly 4010 signaled. 4011 4012 ``V4L2_CID_STATELESS_AV1_FILM_GRAIN (struct)`` 4013 Represents the optional film grain parameters. See section 4014 6.8.20 "Film grain params semantics" of :ref:`av1` for more details. 4015 4016 .. c:type:: v4l2_ctrl_av1_film_grain 4017 4018 .. cssclass:: longtable 4019 4020 .. tabularcolumns:: |p{1.5cm}|p{5.8cm}|p{10.0cm}| 4021 4022 .. flat-table:: struct v4l2_ctrl_av1_film_grain 4023 :header-rows: 0 4024 :stub-columns: 0 4025 :widths: 1 1 2 4026 4027 * - __u8 4028 - ``flags`` 4029 - See :ref:`AV1 Film Grain Flags <av1_film_grain_flags>`. 4030 * - __u8 4031 - ``cr_mult`` 4032 - Represents a multiplier for the cr component used in derivation of the 4033 input index to the cr component scaling function. 4034 * - __u16 4035 - ``grain_seed`` 4036 - Specifies the starting value for the pseudo-random numbers used during 4037 film grain synthesis. 4038 * - __u8 4039 - ``film_grain_params_ref_idx`` 4040 - Indicates which reference frame contains the film grain parameters to be 4041 used for this frame. 4042 * - __u8 4043 - ``num_y_points`` 4044 - Specifies the number of points for the piece-wise linear scaling 4045 function of the luma component. 4046 * - __u8 4047 - ``point_y_value[V4L2_AV1_MAX_NUM_Y_POINTS]`` 4048 - Represents the x (luma value) coordinate for the i-th point 4049 of the piecewise linear scaling function for luma component. The values 4050 are signaled on the scale of 0..255. In case of 10 bit video, these 4051 values correspond to luma values divided by 4. In case of 12 bit video, 4052 these values correspond to luma values divided by 16. 4053 * - __u8 4054 - ``point_y_scaling[V4L2_AV1_MAX_NUM_Y_POINTS]`` 4055 - Represents the scaling (output) value for the i-th point 4056 of the piecewise linear scaling function for luma component. 4057 * - __u8 4058 - ``num_cb_points`` 4059 - Specifies the number of points for the piece-wise linear scaling 4060 function of the cb component. 4061 * - __u8 4062 - ``point_cb_value[V4L2_AV1_MAX_NUM_CB_POINTS]`` 4063 - Represents the x coordinate for the i-th point of the 4064 piece-wise linear scaling function for cb component. The values are 4065 signaled on the scale of 0..255. 4066 * - __u8 4067 - ``point_cb_scaling[V4L2_AV1_MAX_NUM_CB_POINTS]`` 4068 - Represents the scaling (output) value for the i-th point of the 4069 piecewise linear scaling function for cb component. 4070 * - __u8 4071 - ``num_cr_points`` 4072 - Represents the number of points for the piece-wise 4073 linear scaling function of the cr component. 4074 * - __u8 4075 - ``point_cr_value[V4L2_AV1_MAX_NUM_CR_POINTS]`` 4076 - Represents the x coordinate for the i-th point of the 4077 piece-wise linear scaling function for cr component. The values are 4078 signaled on the scale of 0..255. 4079 * - __u8 4080 - ``point_cr_scaling[V4L2_AV1_MAX_NUM_CR_POINTS]`` 4081 - Represents the scaling (output) value for the i-th point of the 4082 piecewise linear scaling function for cr component. 4083 * - __u8 4084 - ``grain_scaling_minus_8`` 4085 - Represents the shift - 8 applied to the values of the chroma component. 4086 The grain_scaling_minus_8 can take values of 0..3 and determines the 4087 range and quantization step of the standard deviation of film grain. 4088 * - __u8 4089 - ``ar_coeff_lag`` 4090 - Specifies the number of auto-regressive coefficients for luma and 4091 chroma. 4092 * - __u8 4093 - ``ar_coeffs_y_plus_128[V4L2_AV1_AR_COEFFS_SIZE]`` 4094 - Specifies auto-regressive coefficients used for the Y plane. 4095 * - __u8 4096 - ``ar_coeffs_cb_plus_128[V4L2_AV1_AR_COEFFS_SIZE]`` 4097 - Specifies auto-regressive coefficients used for the U plane. 4098 * - __u8 4099 - ``ar_coeffs_cr_plus_128[V4L2_AV1_AR_COEFFS_SIZE]`` 4100 - Specifies auto-regressive coefficients used for the V plane. 4101 * - __u8 4102 - ``ar_coeff_shift_minus_6`` 4103 - Specifies the range of the auto-regressive coefficients. Values of 0, 4104 1, 2, and 3 correspond to the ranges for auto-regressive coefficients of 4105 [-2, 2), [-1, 1), [-0.5, 0.5) and [-0.25, 0.25) respectively. 4106 * - __u8 4107 - ``grain_scale_shift`` 4108 - Specifies how much the Gaussian random numbers should be scaled down 4109 during the grain synthesis process. 4110 * - __u8 4111 - ``cb_mult`` 4112 - Represents a multiplier for the cb component used in derivation of the 4113 input index to the cb component scaling function. 4114 * - __u8 4115 - ``cb_luma_mult`` 4116 - Represents a multiplier for the average luma component used in 4117 derivation of the input index to the cb component scaling function.. 4118 * - __u8 4119 - ``cr_luma_mult`` 4120 - Represents a multiplier for the average luma component used in 4121 derivation of the input index to the cr component scaling function. 4122 * - __u16 4123 - ``cb_offset`` 4124 - Represents an offset used in derivation of the input index to the 4125 cb component scaling function. 4126 * - __u16 4127 - ``cr_offset`` 4128 - Represents an offset used in derivation of the input index to the 4129 cr component scaling function. 4130 * - __u8 4131 - ``reserved[4]`` 4132 - Applications and drivers must set this to zero. 4133 4134 .. _av1_film_grain_flags: 4135 4136 ``AV1 Film Grain Flags`` 4137 4138 .. cssclass:: longtable 4139 4140 .. flat-table:: 4141 :header-rows: 0 4142 :stub-columns: 0 4143 :widths: 1 1 2 4144 4145 * - ``V4L2_AV1_FILM_GRAIN_FLAG_APPLY_GRAIN`` 4146 - 0x00000001 4147 - If set, specifies that film grain should be added to this frame. If not 4148 set, specifies that film grain should not be added. 4149 * - ``V4L2_AV1_FILM_GRAIN_FLAG_UPDATE_GRAIN`` 4150 - 0x00000002 4151 - If set, means that a new set of parameters should be sent. If not set, 4152 specifies that the previous set of parameters should be used. 4153 * - ``V4L2_AV1_FILM_GRAIN_FLAG_CHROMA_SCALING_FROM_LUMA`` 4154 - 0x00000004 4155 - If set, specifies that the chroma scaling is inferred from the luma 4156 scaling. 4157 * - ``V4L2_AV1_FILM_GRAIN_FLAG_OVERLAP`` 4158 - 0x00000008 4159 - If set, indicates that the overlap between film grain blocks shall be 4160 applied. If not set, indicates that the overlap between film grain blocks 4161 shall not be applied. 4162 * - ``V4L2_AV1_FILM_GRAIN_FLAG_CLIP_TO_RESTRICTED_RANGE`` 4163 - 0x00000010 4164 - If set, indicates that clipping to the restricted (studio, i.e. limited) 4165 range shall be applied to the sample values after adding the film grain 4166 (see the semantics for color_range for an explanation of studio swing). 4167 If not set, indicates that clipping to the full range shall be applied 4168 to the sample values after adding the film grain.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.