STRUCT V4L2_AV1_GLOBAL_MOTION(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ struct v4l2_av1_global_motion πŸŽ€

okay bestie, welcome to the Kernel API Manual ✨ this one's about struct v4l2_av1_global_motion β€” the AV1 Global Motion params, exactly as described in section 6.8.17 "Global motion params semantics" of the AV1 specification. no cap, that's literally the whole vibe of this struct πŸ’…


✨ SYNOPSIS ✨

struct v4l2_av1_global_motion {
    __u8 flags[V4L2_AV1_TOTAL_REFS_PER_FRAME];
    enum v4l2_av1_warp_model type[V4L2_AV1_TOTAL_REFS_PER_FRAME];
    __s32 params[V4L2_AV1_TOTAL_REFS_PER_FRAME][6];
    __u8 invalid;
    __u8 reserved[3];
 };

like, look at her. arrays of arrays. main character energy fr fr 🫢


🌸 Members 🌸

  • flags β€” a bitfield holding the flags, one set per reference frame πŸ’– see V4L2_AV1_GLOBAL_MOTION_FLAG_{} for what goes in there.
  • type β€” the type of global motion transform being used. that's the whole personality of this field, it's giving enum v4l2_av1_warp_model. πŸ¦‹
  • params β€” this field has the same meaning as "gm_params" in the AV1 specification. same meaning, same energy, no notes πŸ”₯
  • invalid β€” a bitfield indicating whether the global motion params are invalid for a given reference frame πŸ‘€ see section 7.11.3.6 Setup shear process and the variable "warpValid". use V4L2_AV1_GLOBAL_MOTION_IS_INVALID(ref) to create a suitable mask. yes bestie, there's a macro for it, use the macro πŸ™ˆ
  • reserved β€” padding field. should be zeroed by applications. that's it, that's the whole job, just zero it out πŸ’€
ngl the reserved field is the quiet kid in the group chat β€” doesn't say anything, but if you don't zero it out things get weird. don't be weird. πŸ“

πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./include/uapi/linux/v4l2-controls.h β€” go read it, it's iconic:

  • 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_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)
  • 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)

and that's the whole page, bestie πŸ’œ you understood it, i'm obsessed, periodt. anyway this little masterpiece lives in ./include/uapi/linux, dated October 2026, and it'll always be here for you as struct v4l2...lobal_motion(9) β€” the nickname's cute, we're keeping it. mwah 🧚✨

πŸ“¦ where this page comes from