For decoding, it depends on each platform, but most efficient way is to decode into a hardware buffer using avcodec (ffmpeg)
Then you’ll turn that buffer into either a Metal, Dx12, or Vulkan surface that is rendered by wGPU.
Gpui doesn’t expose the custom shader by default, so I made a light fork that added that capability in