Expose params min-gf-interval/max-gf-interval
Adds two new vp9 parameters --min-gf-interval and --max-gf-interval to enable testing based on frequency of alt-ref frames. Also adds a unit-test to test enforcement of min-gf-interval. For both these parameters the default value is 0, which indicates they are picked by the encoder, based on resolution and framerate considerations. If they are greater than zero, the specified parameter is honored. (Additional note by paulwilkins) Note that there is a slight oddity in that key frames are also GFs and considered part of GF only group. However they are treated as not being part of an arf group because for arf groups the previous GF is assumed to be the terminal or overlay frame for the previous group. (end note) Change-Id: Ibf0c30b72074b3f71918ab278ccccc02a95a70a0
This commit is contained in:
@@ -24,6 +24,9 @@ extern "C" {
|
||||
// Bits Per MB at different Q (Multiplied by 512)
|
||||
#define BPER_MB_NORMBITS 9
|
||||
|
||||
#define MIN_GF_INTERVAL 4
|
||||
#define MAX_GF_INTERVAL 16
|
||||
|
||||
typedef enum {
|
||||
INTER_NORMAL = 0,
|
||||
INTER_HIGH = 1,
|
||||
@@ -155,6 +158,12 @@ double vp9_convert_qindex_to_q(int qindex, vpx_bit_depth_t bit_depth);
|
||||
|
||||
void vp9_rc_init_minq_luts(void);
|
||||
|
||||
int vp9_rc_get_default_min_gf_interval(int width, int height, double framerate);
|
||||
// Note vp9_rc_get_default_max_gf_interval() requires the min_gf_interval to
|
||||
// be passed in to ensure that the max_gf_interval returned is at least as bis
|
||||
// as that.
|
||||
int vp9_rc_get_default_max_gf_interval(double framerate, int min_frame_rate);
|
||||
|
||||
// Generally at the high level, the following flow is expected
|
||||
// to be enforced for rate control:
|
||||
// First call per frame, one of:
|
||||
|
||||
Reference in New Issue
Block a user