287 Commits

Author SHA1 Message Date
Dmitry Kovalev
67304d10ad Merge "Adding local pointer variables referencing REATE_CONTROL struct." 2014-04-02 10:58:49 -07:00
Marco Paniconi
eb0ab20700 Merge "Remove the q division by 3 for first frame." 2014-04-02 10:21:52 -07:00
Jingning Han
d8b8d87eb7 Make frame level quantization change a parameter
Parameterize the frame level quantization index used in non-RD
coding flow with cbr.

Change-Id: I79cfbd9c32c0d0fc33ad720d2180432e910baf7a
2014-04-02 09:51:22 -07:00
Jingning Han
751d002f2f Adjust rate allocation in non-RD coding mode
This commit reduces the frequency of frames using finer quantizer
in non-RD coding flow, and slightly tune up the quantizer resolution
when used. It provides 1.7% compression gains in speed -5 at no speed
difference.

Change-Id: I430249a51260a841a0402666e5ec1566e4f7d5a6
2014-04-02 09:51:22 -07:00
Paul Wilkins
769cd78ff2 Add speed feature for recode tolerance.
The new tolerance is a little higher than before (especially
for kf/gf/arf) so this change gives an encode speed up
for some clips up for speeds 0-2.

Change-Id: I63f7d6c9cc11c7f58742f41e250dcd3eab1741eb
2014-04-02 12:18:05 +01:00
Paul Wilkins
88690475ea Merge "Speed setting correction to max q estimate." 2014-04-02 04:08:18 -07:00
Dmitry Kovalev
21b8fc4ce4 Adding local pointer variables referencing REATE_CONTROL struct.
Change-Id: I1d8c312a599db505a023e5cd0cc4ba2b8f696a2e
2014-04-01 20:11:41 -07:00
Marco Paniconi
939f0e7444 Remove the q division by 3 for first frame.
This code/setting was actually not used (since speed features were not set on first frame,
until a recent change) and should be removed.

In CBR mode, the q value for the first frame can be controlled by setting
the target size via the parameters rc_buf_initial_sz (and max_intra_size_pct).

Change-Id: I65afc64972b36c449bd5a8c25800e65da5389066
2014-04-01 18:42:05 -07:00
Paul Wilkins
992c41d2fd Speed setting correction to max q estimate.
Use a crude correction factor to correct for
lower compression efficiency at higher encode
speeds when estimating the max Q for the
clip.

Change-Id: I5ae377647f4adf5e91d700a8791fb3b8f70efc73
2014-04-01 17:03:04 +01:00
Jingning Han
99893f2410 Apply finer quantizer to partition search frames in non-RD flow
This commit optimizes the bit allocation for the non-RD coding flow.
It applies slightly better quantizer to the frames, where all blocks
run a non-RD partition search. Such frames typically have better
rate-distortion trade off, thus improving the reconstruction quality
for next few frames reference at reasonably low increment in rate
cost.

The coding performance for rtc set at speed -5 with error-resilient
tuned on and rate control set as cbr is improved by 19.58%. It improved
the coding speed by about 10% for a portion of local test clips.

Change-Id: I9d56696cd4359dc8136ca10aff10fff05aaa2686
2014-03-31 09:33:11 -07:00
Minghai Shang
9ee6087f34 [svc] Finalize first version of 2nd pass rc
Change-Id: I366850015004644c4fc7feabe27a782fdd8d8718
2014-03-28 13:38:02 -07:00
Dmitry Kovalev
94800ae0ce Merge "Moving setup_{key, inter}_frame() to vp9_onyx_if.c." 2014-03-25 16:28:49 -07:00
Dmitry Kovalev
5b8c834c1a Initialization code cleanup.
Change-Id: I47a8b4bf9a6cc0063d1a6785eaaad641d0659e24
2014-03-24 12:21:22 -07:00
Dmitry Kovalev
20a40bd0e8 Moving setup_{key, inter}_frame() to vp9_onyx_if.c.
Change-Id: I044e393438c7b58a6393e20efa38fd03d745ad33
2014-03-24 11:27:08 -07:00
Yaowu Xu
39f95de83d Merge "Removed several unused functions." 2014-03-19 09:04:44 -07:00
Dmitry Kovalev
d3df2086c9 Merge "Cleaning up calc_active_worst_quality_one_pass_vbr()." 2014-03-18 13:10:10 -07:00
Dmitry Kovalev
645cb98e90 Cleaning up calc_active_worst_quality_one_pass_vbr().
Change-Id: Ibfccee5e35c235c02843e1c1fbd3c39034619cf5
2014-03-18 10:41:22 -07:00
Yaowu Xu
5511968f21 Removed several unused functions.
Change-Id: Ib9e27298c575afc02a98b593bc6ad60762064d9b
2014-03-17 14:09:29 -07:00
Dmitry Kovalev
8228ead7df Moving defines from vp9_onyx_int.h to suitable *.c files.
Change-Id: I0d39bdbb8166ee44561f1008d1a2e76e70b36f30
2014-03-17 12:54:51 -07:00
Marco Paniconi
02b8baf35e Avoid gf/altref boost in pick_q under svc cbr mode.
Change-Id: Ib719a9f74924718715592e0238bc391ae239d026
2014-03-03 19:11:02 -08:00
Dmitry Kovalev
4b7addcc10 Fixing include order in vp9_ratectrl.c.
Change-Id: Id1ec41275cc35565e522a1b2ac252ea3ec05638f
2014-02-27 15:35:38 -08:00
Dmitry Kovalev
8b33c64162 Merge "Using clamp() for active_{best, worst}_quality." 2014-02-26 09:20:14 -08:00
Dmitry Kovalev
8d80c262d1 Using clamp() for active_{best, worst}_quality.
Change-Id: Ia79f975f54829b8ae6b568ca5c05f4f1f541706f
2014-02-25 18:01:49 -08:00
Deb Mukherjee
10bae82510 Adds variance based fixed size partitioning
Adds a method for determining a fixed size partition based on
variance of a 64x64 SB. This method is added to rtc speed 6.
Also fixes a bug in rtc_use_partition() and includes some
refactoring related to partitioning search, and some cosmetics.

Currently compared to speed 5, the coding efficiency of speed 6
is -19% and that of speed 7 is -55%, in cbr mode.

Change-Id: I057e04125a8b765906bb7d4bf7a36d1e575de7c6
2014-02-25 12:20:59 -08:00
Adrian Grange
9b9c33a2b8 Remove comment from calls to vp9_clear_system_state.
Removed the comment "// __asm emms;" from all calls
to vp9_clear_system_state.

Change-Id: Ib4dae69c1cdf3f185b04184a870cd70c4d703f10
2014-02-18 15:43:42 -08:00
Deb Mukherjee
12ae6eaf21 Enforce max-intra-pct in one-pass cbr mode
This was inadvertently left out in a previous refactoring step.

Change-Id: Idf3350e95152f876a1a1a4591dd30c8981856c96
2014-02-14 14:27:02 -08:00
Jim Bankoski
fb4f10a26e vp9_ratectrl - convert buffers to int64 to avoid casting
Change-Id: Ifd6b2d36d91237b5f38853a3a8a529d8be38ba09
2014-02-14 07:36:47 -08:00
Marco Paniconi
e590e087d5 Fix target frame size setting, for 1pass cbr.
Only use layered average size if number_temporal_layers > 1.

Also removed unneeded commented-out line, and change some parameter
setting in vpx_temporal_scalable_patterns.c

Change-Id: Ic86e43e7daf0313e8c5a4aba1497299158111955
2014-02-13 15:21:09 -08:00
Jim Bankoski
7336dfe2ae Merge "static analysis warning in vp9_ratectrl.c" 2014-02-13 06:20:35 -08:00
Jim Bankoski
eb5889f882 static analysis warning in vp9_ratectrl.c
Change-Id: I8aa3dd068d9a7225b3e8b24392a7b4a54b9435dd
2014-02-12 11:54:53 -08:00
Deb Mukherjee
cf479baa03 Merge "Removes active_worst_quality feedback" 2014-02-12 09:20:31 -08:00
Deb Mukherjee
d23e339202 Removes active_worst_quality feedback
Removes certain cases of feedback of active_worst_quality,
and removes it from the RATE_CONTROL structure. Now active
worst quality is expected to be computed locally in the
q picking function during the encode.
Making temporal filter strength depend on avg_frame_qindex
rather than on active_worst_quality actually improves
performance esp. for yt.
derf: +0.038%
yt: +0.359%

Change-Id: I1fe5a343034b55af9322289165321f00ac0827b1
2014-02-11 16:59:56 -08:00
Jingning Han
220e9a932e Merge "Use more meaningful names for speed features" 2014-02-11 08:49:35 -08:00
Jingning Han
734938dc6b Use more meaningful names for speed features
Use frame_parameter_update to precisely describe the functionality.

Change-Id: Ia9a55ba8efef7b987e30d949dd00ac716189bdb9
2014-02-10 15:20:11 -08:00
Deb Mukherjee
15fb5510a8 Further one-pass vbr rate control changes
Some parameter changes and fixes on one-pass rate control.
derfraw300 is now only 10% below 2-pass speed 0 rate control.

Change-Id: I1940eef8a5a035dc18e71b880d5e00cabd1f01b9
2014-02-10 14:27:19 -08:00
Marco Paniconi
812bacc919 Some updates and fixes for layered CBR mode.
-Properly set the average frame size for each layer.

-Allow each layer to update its average/last Q stats after encoding.

-Initialize for some layer context variables.

Change-Id: Iaa37d144fcf4f30ff4283a4e8db8b9ca8bf4c815
2014-02-10 10:21:20 -08:00
Dmitry Kovalev
0865e0d532 Cleaning up vp9_ratectl.c.
Change-Id: I13738ef1f307cc5f563126bc7a92beaa01fde3bd
2014-02-07 15:01:32 -08:00
Deb Mukherjee
b2209c3346 Parameter fixes for one-pass non-cbr mode
Fixes some of the parameters for 1-pass non-cbr mode.
Also includes some cleanups, inlcuding refactoring of the
recode_loop options.

Results on derfraw300 improve by about 5-6%, so that the one-pass
mode is now 13% below the 2-pass mode in speed 0.

Change-Id: I844cc2638694c7574f3be00d41d60b23dc1016f0
2014-02-06 13:49:52 -08:00
Marco Paniconi
4864ab21b0 Layer based rate control for CBR mode.
This patch adds a buffer-based rate control for temporal layers,
under CBR mode.

Added vpx_temporal_scalable_patters.c encoder for testing temporal
layers, for both vp9 and vp8 (replaces the old vp8_scalable_patterns).

Updated datarate unittest with tests for temporal layer rate-targeting.

Change-Id: I8900a854288b9354d9c697cfeb0243a9fd6790b1
2014-02-06 09:24:45 -08:00
Dmitry Kovalev
6432ae4902 Merge "Clamping active_{best, worst}_quality values." 2014-02-05 15:53:00 -08:00
Deb Mukherjee
40e63d4b51 One-pass rate control cleanups/fixes/refactoring
Inlcudes a number cleanups:
1. Moves the one-pass pre-encode parameter setting functions
to vp9_ratectrl.c
2. Deprecates per_frame_bandwidth in RATE_CONTROL structure
3. Removes target_bandwidth in cpi structure since it is not used.
4. Various renaming of functions

There is no bit-stream change in 2-pass, one-pass cbr and one-pass
vbr modes.

Change-Id: Ifd9916bf4d485b7d04c5f52044ffe6703254ccbd
2014-02-05 11:22:15 -08:00
Deb Mukherjee
35ee7f5f4b One-pass rate control fixes and cleanups
Fixes rate control partially in one-pass non-cbr case to achieve a
bitrate close to the one desired. Previous version was way off at
the high bitrate end.

Also includes several one-pass rate control cleanups and refactoring.

On derfraw300, one-pass encoding is now 19% off from two-pass speed
0 encoding, down from 35%.

Change-Id: I6f0dcdb7f8aa85a7e7cd3a3155d4f9d2a4d2f4f4
2014-02-04 10:51:27 -08:00
James Zern
ef951d1919 vp9/encoder: fix function prototypes
silences warnings about declarations not matching prototype

Change-Id: I30b9a24f78ebe3b9cc2bbfcd3a7363ba7c328e4d
2014-01-31 20:45:36 -08:00
Deb Mukherjee
50bf8fd4f5 Enables alt-ref frames in one pass mode
Includes a few fixes and clean-ups that adds the ability
to use alt-ref frames in one-pass mode.
Whether alt-refs are actually used or not is controlled by a
macro USE_ALTREF_FOR_ONE_PASS in vp9_firstpass.c.

This first cut seems to improve derf by 15+% in 1-pass mode.
But further experiments with parameters are underway.

Change-Id: I78254421435478003367c788c7930d2dc4ee2816
2014-01-29 11:04:52 -08:00
Dmitry Kovalev
aaa43ed383 Clamping active_{best, worst}_quality values.
Change-Id: If370f83080b403e417716d1edad58fdaa2b90170
2014-01-27 12:58:31 -08:00
Dmitry Kovalev
4bc1877b71 Cleaning up vp9_ratectl.c file.
Change-Id: I8cfa5d5eb2c1bbacd9b604cc5dc0a2cd2e5cebb8
2014-01-24 11:14:05 -08:00
Dmitry Kovalev
3cdcb2f567 Simplifying target_size_from_buffer_level() function.
Change-Id: I1d556ddf04ab0a98eadf412972a6977c1055446f
2014-01-22 02:24:01 -08:00
Dmitry Kovalev
6031abeb38 Cleaning up vp9_ratectrl.c.
Change-Id: I3a260d3ca68db3a9352ae5409de76e56202976e5
2014-01-17 17:43:04 -08:00
Alex Converse
2b3891d9da Fix key frames for one pass.
Set this_key_frame_forced flag and don't use kf_boost when not set.

Change-Id: Ibe66a82fa9219e60db358ddeb43d6471816c8b50
2014-01-16 13:04:51 -08:00
Dmitry Kovalev
8f0d213494 Merge "Cleaning up reatectrl.c file." 2014-01-15 16:26:09 -08:00