STRUCT VDEC_VP9_SLICE_INSTANCE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

struct vdec_vp9_slice_instance β€” bestie, this one struct literally represents one vp9 instance πŸ’… that's the whole vibe

So like, this is the Kernel API Manual page for it, and we're gonna walk through every single field together, no skipping, no cap 🫢


🌸 SYNOPSIS 🌸

okay so here's the whole shape of it, exactly as it lives, don't touch anything:

struct vdec_vp9_slice_instance {
    struct mtk_vcodec_dec_ctx *ctx;
    struct vdec_vpu_inst vpu;
    int seq;
    enum vdec_vp9_slice_resolution_level level;
    unsigned int width;
    unsigned int height;
    unsigned int frame_type;
    unsigned int irq;
    unsigned int show_frame;
    struct vdec_vp9_slice_ref dpb[VB2_MAX_FRAME];
    struct mtk_vcodec_mem mv[2];
    struct mtk_vcodec_mem seg[2];
    struct mtk_vcodec_mem tile;
    struct mtk_vcodec_mem prob;
    struct mtk_vcodec_mem counts;
    struct vdec_vp9_slice_frame_ctx frame_ctx[4];
    struct v4l2_vp9_frame_context frame_ctx_helper;
    unsigned char dirty[4];
    union {
      struct vdec_vp9_slice_init_vsi *init_vsi;
      struct vdec_vp9_slice_vsi *vsi;
    };
    struct vdec_vp9_slice_vsi *core_vsi;
    struct vdec_vp9_slice_pfc sc_pfc;
    struct vdec_vp9_slice_counts_map counts_map;
    struct v4l2_vp9_frame_symbol_counts counts_helper;
 };

like… look at her. icon behavior honestly πŸ‘‘


πŸŽ€ Members πŸŽ€

the basics, the main characters

  • ctx β€” pointer to codec's context. your anchor, your home base 🏠
  • vpu β€” VPU instance. that's the struct vdec_vpu_inst one, she's doing the actual work πŸ’œ
  • seq β€” global picture sequence. an int, keeping count of pictures across everything ✨
  • level β€” level of current resolution, typed as enum vdec_vp9_slice_resolution_level
  • width β€” width of last picture, an unsigned int πŸ¦‹
  • height β€” height of last picture, also unsigned int
  • frame_type β€” frame_type of last picture
  • irq β€” irq to Main CPU or MicroP ⚑ (yes, that's how the original says it, keeping it exactly)
  • show_frame β€” show_frame of last picture

the reference picture situation

  • dpb β€” picture information (width/height) for reference. she's an array: struct vdec_vp9_slice_ref dpb[VB2_MAX_FRAME] πŸ“

working buffers, the whole crew

  • mv β€” mv working buffer. array of 2: struct mtk_vcodec_mem mv[2]
  • seg β€” segmentation working buffer. also [2]: struct mtk_vcodec_mem seg[2]
  • tile β€” tile buffer, a single struct mtk_vcodec_mem
  • prob β€” prob table buffer, used to set/update prob table 🧚
  • counts β€” counts table buffer, used to update prob table

frame context era

  • frame_ctx β€” 4 frame context according to VP9 Spec. literally struct vdec_vp9_slice_frame_ctx frame_ctx[4] πŸ’«
  • frame_ctx_helper β€” 4 frame context according to newest kernel spec, typed struct v4l2_vp9_frame_context
  • dirty β€” state of each frame context, unsigned char dirty[4] β€” she's tracking vibes per frame ok πŸ”₯

the anonymous union moment

  • {unnamed_union} β€” anonymous πŸ‘€ (keeping that exactly as written, it's giving mysterious)
    • init_vsi β€” vsi used for initialized VP9 instance
    • vsi β€” vsi used for decoding/flush ... (yes the ... is literally in there πŸ’€)

and the rest of the core cast

  • core_vsi β€” vsi used for Core stage πŸ‘‘
  • sc_pfc β€” per frame context single core, a struct vdec_vp9_slice_pfc
  • counts_map β€” used map to counts_helper 🌈
  • counts_helper β€” counts table according to newest kernel spec, a struct v4l2_vp9_frame_symbol_counts

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file, bestie, go read the source fr fr:

./drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c

and these iconic siblings:

  • struct vdec_vp9_slice_counts_map(9)
  • struct vdec_vp9_slice_vsi(9)
  • struct vdec_vp9_slice_pfc(9)

okay and finally, the cute little sign-off πŸ’– this page came from ./drivers/media/platform/media..., dated October 2026, and she's all about struct vdec_...ice_instance(9) β€” that's the whole manual, you ate it, periodt πŸŒŸπŸŽ€

πŸ“¦ where this page comes from