STRUCT V4L2_CTRL_H264_SPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct v4l2_ctrl_h264_sps(9) β€” H264 sequence parameter set πŸ’–

Okay bestie, sit down, hydrate, and get comfy, because this is a page from the Kernel API Manual and it's literally about one struct: struct v4l2_ctrl_h264_sps, aka the H264 sequence parameter set. That's it. That's the whole name section. No cap. πŸŽ€


✨ SYNOPSIS ✨

Here's the whole squad, member by member, exactly as it lives in the source:

struct v4l2_ctrl_h264_sps {
    __u8 profile_idc;
    __u8 constraint_set_flags;
    __u8 level_idc;
    __u8 seq_parameter_set_id;
    __u8 chroma_format_idc;
    __u8 bit_depth_luma_minus8;
    __u8 bit_depth_chroma_minus8;
    __u8 log2_max_frame_num_minus4;
    __u8 pic_order_cnt_type;
    __u8 log2_max_pic_order_cnt_lsb_minus4;
    __u8 max_num_ref_frames;
    __u8 num_ref_frames_in_pic_order_cnt_cycle;
    __s32 offset_for_ref_frame[255];
    __s32 offset_for_non_ref_pic;
    __s32 offset_for_top_to_bottom_field;
    __u16 pic_width_in_mbs_minus1;
    __u16 pic_height_in_map_units_minus1;
    __u32 flags;
 };

🌸 Members 🌸

So, like, every single one of these? They all do the same thing: see H264 specification. That's the vibe. The struct is a faithful mirror of the spec's syntax, so the man page just points you at the source of truth. Respect. πŸ’…

  • profile_idc β€” see H264 specification.
  • constraint_set_flags β€” see H264 specification.
  • level_idc β€” see H264 specification.
  • seq_parameter_set_id β€” see H264 specification.
  • chroma_format_idc β€” see H264 specification.
  • bit_depth_luma_minus8 β€” see H264 specification.
  • bit_depth_chroma_minus8 β€” see H264 specification.
  • log2_max_frame_num_minus4 β€” see H264 specification.
  • pic_order_cnt_type β€” see H264 specification.
  • log2_max_pic_order_cnt_lsb_minus4 β€” see H264 specification.
  • max_num_ref_frames β€” see H264 specification.
  • num_ref_frames_in_pic_order_cnt_cycle β€” see H264 specification.
  • offset_for_ref_frame β€” see H264 specification.
  • offset_for_non_ref_pic β€” see H264 specification.
  • offset_for_top_to_bottom_field β€” see H264 specification.
  • pic_width_in_mbs_minus1 β€” see H264 specification.
  • pic_height_in_map_units_minus1 β€” see H264 specification.
  • flags β€” see V4L2_H264_SPS_FLAG_{}. πŸ‘‘
Bestie note: don't go guessing at any of these semantics from the field names alone. The page is extremely clear that the H264 specification is the authority here. 🫢

πŸ¦‹ Description πŸ¦‹

Every single member on this sequence parameter set structure matches the sequence parameter set syntax as specified by the H264 specification. All of them. Like, the whole struct is just the spec wearing a little kernel hat. So when in doubt, go read the spec β€” that's the assignment. πŸ’–


🌈 SEE ALSO 🌈

Here's the full friend group, and yes I'm listing every one of them because we don't do half-finished around here:

Kernel file ./include/uapi/linux/v4l2-controls.h, 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_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_h264_decode_params(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).


Ok that's the whole page, you ate that. πŸ’…βœ¨

Cute little sign-off before you go: this one lives in ./include/uapi/linux, dated October 2026, and it's filed under struct v4l2_ctrl_h264_sps(9). Go forth and decode, icon. πŸ¦‹πŸ’œ

πŸ“¦ where this page comes from