Implementing a Stateless V4L2 Decoder Driver: Architecture and Lessons Learned
summary
A stateless V4L2 decoder driver for Chips&Media VPU is implemented and upstreamed; GStreamer plugins and kernel driver live in mainline and support H.264, HEVC, VP9, AV1 and MPEG‑2. Userspace parses SPS/PPS and per‑frame slice headers, packages controls via the media_request API, and queues paired input/output buffers; driver allocates DPB-sized capture buffers, manages reference frames and DPP slots, sends addresses to VPU, and uses IRQs to complete frames. Encoder support remains RFC stage.
AI-written summary · about
chapters (20)
- 0:00Stateless V4L2 decoders intro
- 1:06Stateful vs stateless decoding
- 2:33GStreamer and kernel roles
- 5:05GStreamer pipeline for stateless
- 6:07Plugin init and hardware negotiation
- 7:10Frame vs slice decoding
- 8:14Negotiation flow in stateless
- 9:20Bitstream buffer processing
- 11:29Media requests to V4L2 driver
- 12:32VISL virtual driver overview
- 14:00Decoded Picture Buffer management
- 15:24Output picture handling
- 16:09Current stateless decoder status
- 17:35VISL driver capabilities
- 18:17Kernel driver call sequence
- 19:40Implementation details
- 21:26Software architecture diagram
- 22:10Hardware: stateful vs stateless
- 22:53Media frameworks comparison
- 24:17Summary of stateless decoders
related talks
44mKernel TEE subsystem BoF
35mIsolating GPU access in its own process
58mModern & secure adaptive streaming on the Web
42mDisplay Sharing in Heterogeneous Systems Using Linux as High...
20mProtected DMAbufs and its dynamic memory assignment woes
15mtalks about Kodi on ARM, V4L2, OpenCDM, EME for HTML5
11mNon-Standard Codecs With Standard WebRTC
50mExporting Virtual Memory as dmabuf
