STRUCT V4L2_CTRL_VP8_FRAME(9)
π struct v4l2_ctrl_vp8_frame β VP8 frame parameters β¨
okay so bestie, welcome to the struct v4l2_ctrl_vp8_frame page π β this is straight out of the Kernel API Manual (section 9, it's giving very official), and it's literally the whole bundle of VP8 frame parameters. one struct, all the frame vibes. let's get into it π«Ά
πΈ SYNOPSIS πΈ
here's the whole struct, character for character, no cap:
struct v4l2_ctrl_vp8_frame {
struct v4l2_vp8_segment segment;
struct v4l2_vp8_loop_filter lf;
struct v4l2_vp8_quantization quant;
struct v4l2_vp8_entropy entropy;
struct v4l2_vp8_entropy_coder_state coder_state;
__u16 width;
__u16 height;
__u8 horizontal_scale;
__u8 vertical_scale;
__u8 version;
__u8 prob_skip_false;
__u8 prob_intra;
__u8 prob_last;
__u8 prob_gf;
__u8 num_dct_parts;
__u32 first_part_size;
__u32 first_part_header_bits;
__u32 dct_part_sizes[8];
__u64 last_frame_ts;
__u64 golden_frame_ts;
__u64 alt_frame_ts;
__u64 flags;
};
like, look at her. main character struct energy π.
π Members π
okay so here's the member-by-member breakdown, and yes i'm gonna hype each one up:
segmentβ the segmentation parameters π . seev4l2_vp8_segmentfor more details.lfβ loop filter parameters β¨. seev4l2_vp8_loop_filterfor more details.quantβ quantization parameters ποΈ. seev4l2_vp8_quantizationfor more details.entropyβ update probabilities π₯. seev4l2_vp8_entropyfor more details.coder_stateβ boolean coder state π§. seev4l2_vp8_entropy_coder_statefor more details.widthβ frame width π.heightβ frame height π.horizontal_scaleβ horizontal scaling factor βοΈ.vertical_scaleβ vertical scaling factor βοΈ.versionβ bitstream version π’.prob_skip_falseβ frame header syntax element πΈ.prob_intraβ frame header syntax element πΈ.prob_lastβ frame header syntax element πΈ.prob_gfβ frame header syntax element πΈ.num_dct_partsβ number of DCT coefficients partitions π°.first_part_sizeβ size of the first partition, i.e. the control partition π.first_part_header_bitsβ size in bits of the first partition header portion π.dct_part_sizesβ DCT coefficients sizes π¦.last_frame_tsβ the "last" reference buffer timestamp β±οΈ. the timestamp refers to thetimestampfield instruct v4l2_buffer. usev4l2_timeval_to_nsto convert thestruct timevalto a__u64. iykyk πgolden_frame_tsβ the "golden" reference buffer timestamp π.alt_frame_tsβ the "alt" reference buffer timestamp π¦.flagsβ seeV4L2_VP8_FRAME_FLAG_{}β.
ngl the three*_tsfields are the ones people fumble, so like... read thev4l2_timeval_to_nsbit twice bestie, that conversion is not optional π.
π SEE ALSO π
kernel file ./include/uapi/linux/v4l2-controls.h (that's where the enum lives, go look π), plus this absolutely iconic lineup of friends:
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_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_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... the whole codec family reunion ππ it's a lot but they're all icons fr fr.
that's the page bestie!! π«Άβ¨ this one came from ./include/uapi/linux and it's dated October 2026 β so yeah, shoutout to that path and that date, slay ππΈ see u in the next manpage, mwah π
π¦ 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