[FFmpeg-devel] Video codec design for very low-end decoder

Lauri Kasanen cand at gmx.com
Mon Jan 7 10:17:48 EET 2019


If you were to design a video codec for a very low-end decoder, what
would it look like?

My target is MIPS 100MHz, and it should decode 320x240x30 in full speed
in software, with headroom for audio too. Seems all the codec research
in last 20 years has been more quality with more overhead, nobody
looking into "improve quality without more overhead".

Currently I'm thinking it would have to be a variant of vector
quantization, like Cinepak. The target bitrates however are ~250 kbps
or lower, where Cinepak targeted 1200 or higher. Are there any tricks
that would improve quality with only encoder-side effort? What is the
current top-of-the-line interframe prediction, that is still fast to

The platform is fast enough to play back mpeg1, and xvid simple
profile L3 barely. Cinepak should also work, but I'd like the quality
to be higher than these three.

The last relevant VQ paper I found was 
https://arxiv.org/abs/1710.05311 which used a genetic algorithm to seed
the codebook generation, improving PSNR by a few db over previous
approaches. I've implemented that (for a single grayscale frame), but it
looks too bad at reasonable bitrates.

The modern approaches, DCT, FFT, wavelets and such transforms, are all
likely too slow to decode.

Not sure if this would be better off on other MLs, didn't seem to apply
to ffmpeg-user really.

- Lauri

More information about the ffmpeg-devel mailing list