[Spice-devel] [spice] streaming: Limit the h264 image compression level
Francois Gouget
fgouget at codeweavers.com
Thu Oct 27 19:06:32 UTC 2016
On Thu, 27 Oct 2016, Francois Gouget wrote:
> When uncapped x264enc can compress the frames beyond recognition in low
> bitrate situation. Beyond the set limit the gains are modest and it is
> better to drop frames to reduce the bit rate further.
In case anyone is interested, here is a spreadsheet and graphs
of the frame sizes at various quantizer settings for h264 and VP8.
http://fgouget.free.fr/tmp/Spice-qpmax-h264.png
http://fgouget.free.fr/tmp/Spice-qpmax-vp8.png
http://fgouget.free.fr/tmp/Spice-qpmax.xls
In both cases I did the test by setting the min and max quantizer to the
same value, tracing the frame size in encode_frame() and playing the
same test video. For instance:
- gstenc_opts = g_strdup("byte-stream=true aud=true qp-min=15 qp-max=35 tune=4 sliced-threads=true speed-preset=ultrafast intra-refresh=true");
+ gstenc_opts = g_strdup("byte-stream=true aud=true qp-min=35 qp-max=35 tune=4 sliced-threads=true speed-preset=ultrafast intra-refresh=true");
In my tests a quantizer of 35 in x264enc is roughly equivalent to a
quantizer of 55 or 60 in vp8enc. The comparison is tricky because at low
bitrates x264enc tends to result in images that look noisy while vp8enc
instead tends to erase all details (e.g. you lose most of a face's
features).
So it's interesting that at these settings vp8enc beats x264enc handily
in frame sizes: 1612 down to 984 bytes for vp8enc vs. 5048 to 1715 bytes
for x264enc. So if you want video on a very low bandwidth link vp8enc
seems to be the way to go.
Also whereas at its maximum setting, 63, vp8enc still produces a poor
quality but still watchable video, at 40 x264enc produces video that's
annoying to watch and increasing the quantizer a bit more soon produces
unrecognizable images. This is why I don't plan on limiting the
quantizer for vp8enc.
--
Francois Gouget <fgouget at codeweavers.com>
More information about the Spice-devel
mailing list