ENUM V4L2_STATELESS_H264_DECODE_MODE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… enum v4l2_stateless_h264_decode_mode(9) β€” the Kernel API Manual, bestie edition ✨

okay so this is a page straight outta the Kernel API Manual, and it's about one tiny but iconic enum: enum v4l2_stateless_h264_decode_mode. it's giving "small file, big responsibilities" ngl. let's get into it 🫢


🌸 NAME 🌸

enum v4l2_stateless_h264_decode_mode β€” literally just the decoding mode. that's the whole vibe. πŸ’…


✨ SYNOPSIS ✨

here's the whole enum, copy-pasted with love and zero edits (do NOT come for me about the spacing, it's canon):

enum v4l2_stateless_h264_decode_mode {
    V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED ,
    V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED

};

πŸŽ€ Constants πŸŽ€

two constants, two whole personalities. let's meet them πŸ¦‹

  • V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED β€” this one says decoding happens one slice at a time. in this mode, V4L2_CID_STATELESS_H264_SLICE_PARAMS must contain the parsed slice parameters, and the OUTPUT buffer must contain a single slice. also!! the V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF feature gets used in order to support multislice frames. it's giving "one slice at a time, main character energy" πŸ“
  • V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED β€” this one is the group-chat mode: decoding is performed per frame. the OUTPUT buffer must contain all slices and also both fields (yes, both, no skipping πŸ’€). this mode is typically supported by device drivers that are able to parse the slice(s) header(s) in hardware β€” hardware girlies who handle their own parsing, we love to see it πŸ‘‘. when this mode is selected, V4L2_CID_STATELESS_H264_SLICE_PARAMS is not used. periodt.

πŸ”₯ SEE ALSO πŸ”₯

bestie there are SO many cross-references here, grab a snack πŸ“. first up, the kernel file:

  • ./include/uapi/linux/v4l2-controls.h

and then the whole extended friend group:

  • enum v4l2_mpeg_video_av1_profile(9)
  • enum v4l2_mpeg_video_av1_level(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_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)

like, that's the whole codec cinematic universe fr fr 🌈


ok that's the whole page!! no cap, every single reference made it in, I checked twice πŸ’–

and finally, the cute little sign-off 🌸: this page lives in ./include/uapi/linux, dated October 2026 β€” so mark your calendars bestie, it's a whole era πŸŽ€βœ¨

slay, go decode something πŸ’…

πŸ“¦ where this page comes from