STRUCT V4L2_CTRL_H264_DECODE_PARAMS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct v4l2_ctrl_h264_decode_params(9) πŸ’–

okay so bestie, welcome to the Kernel API Manual ✨ β€” this page is all about the H264 decoding parameters struct, and honestly it's giving "main character of the stateless decoder world." Let's get into it 🎬


🌸 NAME 🌸

struct v4l2_ctrl_h264_decode_params β€” the H264 decoding parameters, periodt πŸ’…


✨ SYNOPSIS ✨

struct v4l2_ctrl_h264_decode_params {
    struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
    __u16 nal_ref_idc;
    __u16 frame_num;
    __s32 top_field_order_cnt;
    __s32 bottom_field_order_cnt;
    __u16 idr_pic_id;
    __u16 pic_order_cnt_lsb;
    __s32 delta_pic_order_cnt_bottom;
    __s32 delta_pic_order_cnt0;
    __s32 delta_pic_order_cnt1;
    __u32 dec_ref_pic_marking_bit_size;
    __u32 pic_order_cnt_bit_size;
    __u32 slice_group_change_cycle;
    __u32 reserved;
    __u32 flags;
 };

like, there she is 🫢 the whole glow-up in one struct. now let's meet every single member, no skipping, we're doing a full vibe check πŸ”


πŸŽ€ Members πŸŽ€

  • dpb β€” the decoded picture buffer. literally the memory closet where your reference frames hang out πŸ’€
  • nal_ref_idc β€” a slice header syntax element. yep, that's the whole description, iykyk 🧚
  • frame_num β€” slice header syntax element. iconic, mysterious, does not elaborate ✨
  • top_field_order_cnt β€” matches the TopFieldOrderCnt picture value. no cap πŸ“Œ
  • bottom_field_order_cnt β€” matches the BottomFieldOrderCnt picture value. also, heads up: which picture field it is gets indicated by v4l2_buffer.field πŸ‘€ don't forget that part!!
  • idr_pic_id β€” slice header syntax element. again. we love a recurring theme πŸ’…
  • pic_order_cnt_lsb β€” slice header syntax element. bestie it's serving consistency πŸ“
  • delta_pic_order_cnt_bottom β€” slice header syntax element. yes queen, another one πŸ‘‘
  • delta_pic_order_cnt0 β€” slice header syntax element. (the zero one, keep them straight!!) 🌈
  • delta_pic_order_cnt1 β€” slice header syntax element. (and the one one 🌟)
  • dec_ref_pic_marking_bit_size β€” size in bits of the dec_ref_pic_marking syntax element. bits!! very specific, very demure πŸŽ€
  • pic_order_cnt_bit_size β€” size in bits of the pic order count syntax. also in bits, we're counting very precisely here πŸ”₯
  • slice_group_change_cycle β€” slice header syntax element. yeah. her again πŸ’œ
  • reserved β€” padding field. should be zeroed by applications β€” like, do it. don't leave garbage in there, that's so not the move πŸ™ˆ
  • flags β€” see V4L2_H264_DECODE_PARAM_FLAG_{} for the details, that's where the flag lore lives ⭐

πŸ¦‹ SEE ALSO πŸ¦‹

so this is the whole group chat of related things β€” Kernel file ./include/uapi/linux/v4l2-controls.h, plus:

  • enum v4l2_mpeg_video_av1_profile(9)
  • enum v4l2_mpeg_video_av1_level(9)
  • enum v4l2_stateless_h264_decode_mode(9)
  • enum v4l2_stateless_h264_start_code(9)
  • struct v4l2_ctrl_h264_sps(9)
  • struct v4l2_ctrl_h264_pps(9)
  • struct v4l2_ctrl_h264_scaling_matrix(9)
  • struct v4l2_ctrl_h264_pred_weights(9)
  • struct v4l2_h264_reference(9)
  • struct v4l2_ctrl_h264_slice_params(9)
  • struct v4l2_h264_dpb_entry(9)
  • struct v4l2_ctrl_fwht_params(9)
  • struct v4l2_vp8_segment(9)
  • struct v4l2_vp8_loop_filter(9)
  • struct v4l2_vp8_quantization(9)
  • struct v4l2_vp8_entropy(9)
  • struct v4l2_vp8_entropy_coder_state(9)
  • struct v4l2_ctrl_vp8_frame(9)
  • struct v4l2_ctrl_mpeg2_sequence(9)
  • struct v4l2_ctrl_mpeg2_picture(9)
  • struct v4l2_ctrl_mpeg2_quantisation(9)
  • struct v4l2_ctrl_hevc_sps(9)
  • struct v4l2_ctrl_hevc_pps(9)
  • struct v4l2_hevc_dpb_entry(9)
  • struct v4l2_hevc_pred_weight_table(9)
  • struct v4l2_ctrl_hevc_slice_params(9)
  • struct v4l2_ctrl_hevc_decode_params(9)
  • struct v4l2_ctrl_hevc_scaling_matrix(9)
  • struct v4l2_vp9_loop_filter(9)
  • struct v4l2_vp9_quantization(9)
  • struct v4l2_vp9_segmentation(9)
  • struct v4l2_ctrl_vp9_frame(9)
  • struct v4l2_vp9_mv_probs(9)
  • struct v4l2_ctrl_vp9_compressed_hdr(9)
  • struct v4l2_ctrl_av1_sequence(9)
  • struct v4l2_ctrl_av1_tile_group_entry(9)
  • enum v4l2_av1_warp_model(9)
  • enum v4l2_av1_reference_frame(9)
  • struct v4l2_av1_global_motion(9)
  • enum v4l2_av1_frame_restoration_type(9)
  • struct v4l2_av1_loop_restoration(9)
  • struct v4l2_av1_cdef(9)
  • enum v4l2_av1_segment_feature(9)
  • struct v4l2_av1_segmentation(9)
  • struct v4l2_av1_loop_filter(9)
  • struct v4l2_av1_quantization(9)
  • struct v4l2_av1_tile_info(9)
  • enum v4l2_av1_frame_type(9)
  • enum v4l2_av1_interpolation_filter(9)
  • enum v4l2_av1_tx_mode(9)
  • struct v4l2_ctrl_av1_frame(9)
  • struct v4l2_ctrl_av1_film_grain(9)

that's the whole page bestie, you ate that πŸ½οΈπŸ’–

cute little sign-off: this came out of ./include/uapi/linux, dated October 2026 πŸ—“οΈβœ¨ go forth and decode, you absolute icon πŸ‘‘πŸ¦‹
πŸ“¦ where this page comes from