I want to encode 3D-Rendered images in real time using VP9 codec in order to send them over a network. I need small latencies (ideally each frame should be encoded separately), so FFMPEG with its separated send & receive functions was not an option. I chose libvpx.
I implemented the funcionality, but it gives horrendous performance (<1FPS at 1280x728 resolution, no chroma subsampling, bit depth 8).
Now the problem is that I can’t figure out what settings I should pass when I initialize the encoder for this particular use case.
Furthermore, even though I know come options for speeding up VP9 (e.g. “speed” and “row-mt“), they are VP9-specific, and I couldn’t find a way to tweak those using libvpx’s API, even after looking at the source code. It looks like the structures they are in (such as VP9EncoderConfig) that aren’t exposed to the user in any way.
TL;DR:
- What encoder settings are suitable for my use case?
- In case they are VP9-specific, how to pass them into libvpx?