ENUM V4L2_STATELESS_H264_DECODE_MODE(9)
π 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_PARAMSmust contain the parsed slice parameters, and theOUTPUTbuffer must contain a single slice. also!! theV4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUFfeature 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. theOUTPUTbuffer 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_PARAMSis 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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms