Minor rate control refactoring and experiments.
authorPaul Wilkins <paulwilkins@google.com>
Mon, 25 Feb 2013 12:36:38 +0000 (12:36 +0000)
committerPaul Wilkins <paulwilkins@google.com>
Mon, 25 Feb 2013 17:07:45 +0000 (17:07 +0000)
commit97da8b8c3395ba3de5e13b8d77a8432b9a462b78
tree8d9a9a798a8bc2fd5cb24f56131f556c9c5510b1
parent499fe05dc030b31d15c2ad9717e6bcee839f7d12
Minor rate control refactoring and experiments.

Some minor refactoring code relating to estimates of
bits per MB at a given Q and estimating the allowed Q range.

Most of the changes here were included in a previous commit.
This commit seeks to separate out the refactoring from more
the material changes.

Two #define control flags have been added for experimentation.

ONE_SHOT_Q_ESTIMATE force the two pass encoder to
use its initial Q range estimate for the whole clip even if this results
in a miss on the target data rate. In effect this tightens the Q range
seen at the expense of rate control accuracy.

DISABLE_RC_LONG_TERM_MEM is a related flag that disables the
long term memory in the rate control. Local adjustments are still
made to try and better hit the rate target on a per frame basis but
the impact of rate control misses is not propagated to the remainder
of the clip. This means that for example an overshoot early on will not
cause frames later in the clip to be starved of bits. Again the result
of this relaxation amy be less rate control accuracy especially on short
clips.

The flags are disabled by default for now.

Change-Id: I7482f980146d8ea033b5d50cc689f772e4bd119e
vp9/encoder/vp9_firstpass.c
vp9/encoder/vp9_onyx_if.c
vp9/encoder/vp9_onyx_int.h
vp9/encoder/vp9_ratectrl.c
vp9/encoder/vp9_ratectrl.h