vpxenc: Add new bit-per-pixel property to select a better "default" bitrate
authorMikhail Fludkov <misha@pexip.com>
Thu, 26 Nov 2015 16:52:29 +0000 (17:52 +0100)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 4 Jun 2020 20:14:03 +0000 (20:14 +0000)
commit7b390a8bbd0da33199e3c083f13bf5cd1a825a96
treebe8b12de1173bdd4888638c71208dd6d02062607
parentb90dd2d755880d8dc0a956e47d7c3793cf563233
vpxenc: Add new bit-per-pixel property to select a better "default" bitrate

As part of this also change the default bitrate value to 0. The default
value was 256000 previously. In reality, if the property was not set the
bitrate value would be scaled according to the resolution which is not
very intuitive behavior. It is better to use 0 for this purpose. Now
together with newly introduced property "bits-per-pixel" 0 means to
assign the bitrate according to resolution/framerate.

The default bitrates are now
 - 1.2Mbps for VP8 720p@30fps
 - 0.8Mbps for VP9 720p@30fps
and scaled accordingly for different resolutions/framerates.

Previously the default bitrate was also not scaled according to the
framerate but only took the resolution into account.

This also fixes the side effect of setting bitrate to 0. Previously
encoder would not produce any data at all.

Addition from Sebastian Dröge <sebastian@centricular.com> to assume
30fps if no framerate is given in the caps instead of not calculating
any bitrate at all.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/611>
ext/vpx/gstvp9enc.c
ext/vpx/gstvpxenc.c
ext/vpx/gstvpxenc.h
tests/check/elements/vp8enc.c
tests/check/elements/vp9enc.c