STRUCT V4L2_CTRL_VP8_FRAME(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 πŸ’…. see v4l2_vp8_segment for more details.
  • lf β€” loop filter parameters ✨. see v4l2_vp8_loop_filter for more details.
  • quant β€” quantization parameters 🎚️. see v4l2_vp8_quantization for more details.
  • entropy β€” update probabilities πŸ”₯. see v4l2_vp8_entropy for more details.
  • coder_state β€” boolean coder state 🧚. see v4l2_vp8_entropy_coder_state for 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 the timestamp field in struct v4l2_buffer. use v4l2_timeval_to_ns to convert the struct timeval to a __u64. iykyk 😌
  • golden_frame_ts β€” the "golden" reference buffer timestamp 🌟.
  • alt_frame_ts β€” the "alt" reference buffer timestamp πŸ¦‹.
  • flags β€” see V4L2_VP8_FRAME_FLAG_{} βš‘.
ngl the three *_ts fields are the ones people fumble, so like... read the v4l2_timeval_to_ns bit 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