STRUCT V4L2_VP9_FRAME_SYMBOL_COUNTS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct v4l2_vp9_frame_symbol_counts(9) β€” Kernel API Manual ✨

okay so bestie, welcome to the glow-up of struct v4l2_vp9_frame_symbol_counts β€” it's giving "pointers to arrays of symbol counts" and honestly? kind of iconic. this is a kernel API manual page, and yes the header literally reads struct v4l2...ymbol_counts(9) because the terminal truncates it (rude) but we move.


πŸŽ€ NAME

struct v4l2_vp9_frame_symbol_counts β€” pointers to arrays of symbol counts. that's it, that's the vibe. 🫢


✨ SYNOPSIS

struct v4l2_vp9_frame_symbol_counts {
    u32 (*partition)[16][4];
    u32 (*skip)[3][2];
    u32 (*intra_inter)[4][2];
    u32 (*tx32p)[2][4];
    u32 (*tx16p)[2][4];
    u32 (*tx8p)[2][2];
    u32 (*y_mode)[4][10];
    u32 (*uv_mode)[10][10];
    u32 (*comp)[5][2];
    u32 (*comp_ref)[5][2];
    u32 (*single_ref)[5][2][2];
    u32 (*mv_mode)[7][4];
    u32 (*filter)[4][3];
    u32 (*mv_joint)[4];
    u32 (*sign)[2][2];
    u32 (*classes)[2][11];
    u32 (*class0)[2][2];
    u32 (*bits)[2][10][2];
    u32 (*class0_fp)[2][2][4];
    u32 (*fp)[2][4];
    u32 (*class0_hp)[2][2];
    u32 (*hp)[2][2];
    u32 (*coeff[4][2][2][6][6])[3];
    u32 *eob[4][2][2][6][6][2];
 };

look at all those nested brackets β€” it's lowkey a whole aesthetic. πŸ¦‹


🌸 Members

  • partition β€” partition counts. simple. slay.
  • skip β€” skip counts. no notes.
  • intra_inter β€” is inter-block counts. (yes, the manpage says "is". we keep it. periodt.)
  • tx32p β€” TX32 counts.
  • tx16p β€” TX16 counts.
  • tx8p β€” TX8 counts.
  • y_mode β€” Y prediction mode counts.
  • uv_mode β€” UV prediction mode counts.
  • comp β€” compound prediction mode counts.
  • comp_ref β€” compound ref counts.
  • single_ref β€” single ref counts.
  • mv_mode β€” inter mode counts.
  • filter β€” interpolation filter counts.
  • mv_joint β€” motion vector joint counts.
  • sign β€” motion vector sign counts.
  • classes β€” motion vector class counts.
  • class0 β€” motion vector class0 bit counts.
  • bits β€” motion vector bits counts.
  • class0_fp β€” motion vector class0 fractional bit counts.
  • fp β€” motion vector fractional bit counts.
  • class0_hp β€” motion vector class0 high precision fractional bit counts.
  • hp β€” motion vector high precision fractional bit counts.
  • coeff β€” coefficient counts.
  • eob β€” eob counts. (the original has no period here. i'm not adding one. character-for-character, bestie. πŸ’…)

twenty-four members and every single one of them counted πŸ‘‘


πŸ’œ Description

The fields correspond to what is specified in section 8.3 "Clear counts process" of the spec.

Different pieces of hardware can report the counts in different order, so we cannot rely on simply overlaying a struct on a relevant block of memory. Instead we provide pointers to arrays or array of pointers to arrays in case of coeff, or array of pointers for eob.

⚠️ ok so this is the part where you don't just memcpy a struct over a chunk of memory and hope for the best. hardware is chaotic, the ordering varies, that way lies pain. pointers are the whole point. iykyk 😭

🧚 SEE ALSO


anyway that's the page, bestie β€” go count some symbols responsibly. πŸ’–

mwah πŸ’‹ β€” this came out of ./include/media, dated October 2026, and the version string still insists on truncating itself to struct v4l2...ymbol_counts(9) in the footer. we love a consistent queen. πŸŽ€βœ¨

πŸ“¦ where this page comes from