What kind of hardware is this that makes it usable for encoding/decoding mpeg2/h264/h265? Is this something that should be exposed as a general programming target instead of a set of video specific APIs?
the device is generally single-function for each codec, with the decoding pipeline implemented in actual hardware. Unless you were able to express your kernel as a data transform used in a common video codec and express your I/O data as pixels, you're unlikely to accelerate a general purpose task this way.
Comments
What kind of hardware is this that makes it usable for encoding/decoding mpeg2/h264/h265? Is this something that should be exposed as a general programming target instead of a set of video specific APIs?
As you can see from the documented reverse-engineering of the hardware here:
http://linux-sunxi.org/VE_Register_guide
the device is generally single-function for each codec, with the decoding pipeline implemented in actual hardware. Unless you were able to express your kernel as a data transform used in a common video codec and express your I/O data as pixels, you're unlikely to accelerate a general purpose task this way.
It's a DSP firmware turned into silicon. If you look at for example the VP8 decoder registers for a Rockchip VPU here:
https://patchwork.kernel.org/patch/8118991/
You can see it's quite specific to the primitives the codec needs. If you want general purpose, we now have Vulkan for that.
(And this one is reasonably low-level. On some like the Raspberry Pi, you throw bitstream over the wall to a coprocessor which gives you YUV back)
On Raspberry Pi it's not clear who is coprocessor, actually.