diff options
-rw-r--r-- | vp9/encoder/vp9_onyx_if.c | 8 | ||||
-rw-r--r-- | vp9/encoder/vp9_onyx_int.h | 1 | ||||
-rw-r--r-- | vp9/encoder/vp9_ratectrl.c | 7 |
3 files changed, 14 insertions, 2 deletions
diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index 6335827cf..23e4f8acf 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -2845,7 +2845,15 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi, cpi->active_best_quality * 15 / 16; } } else { +#ifdef ONE_SHOT_Q_ESTIMATE +#ifdef STRICT_ONE_SHOT_Q + cpi->active_best_quality = Q; +#else cpi->active_best_quality = inter_minq[Q]; +#endif +#else + cpi->active_best_quality = inter_minq[Q]; +#endif // For the constant/constrained quality mode we dont want // q to fall below the cq level. diff --git a/vp9/encoder/vp9_onyx_int.h b/vp9/encoder/vp9_onyx_int.h index 3dc4772ef..75331755b 100644 --- a/vp9/encoder/vp9_onyx_int.h +++ b/vp9/encoder/vp9_onyx_int.h @@ -31,6 +31,7 @@ // Experimental rate control switches // #define ONE_SHOT_Q_ESTIMATE 1 +// #define STRICT_ONE_SHOT_Q 1 // #define DISABLE_RC_LONG_TERM_MEM 1 // #define SPEEDSTATS 1 diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c index a2a79574d..d679aaf7a 100644 --- a/vp9/encoder/vp9_ratectrl.c +++ b/vp9/encoder/vp9_ratectrl.c @@ -120,11 +120,14 @@ int vp9_bits_per_mb(FRAME_TYPE frame_type, int qindex, double q = vp9_convert_qindex_to_q(qindex); if (frame_type == KEY_FRAME) { - enumerator = 4500000; + enumerator = 4000000; } else { - enumerator = 2850000; + enumerator = 2500000; } + // Q based adjustment to baseline enumberator + enumerator += (int)(enumerator * q) >> 12; + return (int)(0.5 + (enumerator * correction_factor / q)); } |