Commit Graph

161 Commits

Author SHA1 Message Date
Dmitry Kovalev
93169f8bf8 vp9_rc_postencode_update() cleanup.
Change-Id: Idb1289aa0eadff8f75dcf995547ab3a1b9e27375
2014-04-11 10:36:10 -07:00
Paul Wilkins
1d9755436d Adjust active minQ calculation for normal frames.
This increases the range of Q values available to
normal inter frames to allow encoder a better chance
to hit the target rate.

Change-Id: I33cd96469a46577fdcea631e26d3355710909e6d
2014-04-11 15:02:15 +01:00
Paul Wilkins
d83f6f0632 Change Qlimit for arf kf.
The limits applied under the flag
"LIMIT_QRANGE_FOR_ALTREF_AND_KEY"
behaved in an undesirable way if the gap between
active_worst_quality and active_best_quality was
changed.

In this patch, the adjustment is made using the
vp9_compute_qdelta_by_rate() function and fixed
rate multiplier values. Hence it is not impacted by
the relative value of active_best_quality.

Change-Id: I93b3308e04ade1e4eb5af63edf64f91cd3700249
2014-04-11 15:00:06 +01:00
Dmitry Kovalev
a286ff8077 Moving last_frame_type update out from vp9_rc_postencode_update.
Change-Id: Ib00a694b9cf8e0c276dfefddab8cb36b8693e022
2014-04-10 16:35:10 -07:00
Marco Paniconi
a39b201344 Remove the unneeded output_framerate from svc.
And change a parameter setting in vpx_temporal_scalable_patterns.

Change-Id: I7c208296ebcecbc8f73de032f6cdb26a1fc1442b
2014-04-10 13:49:25 -07:00
Jingning Han
2255085584 Fix coding format in vp9_rc_regulate_q
Change-Id: I08aa0c213df34c084eb7a3c51b6b3306e49c7757
2014-04-09 15:41:39 -07:00
Dmitry Kovalev
e8e380f994 Merge "Cleaning up vp9_ratectrl.c file." 2014-04-08 15:06:29 -07:00
Dmitry Kovalev
e9fb970af1 Merge "Moving init_rate_control() to vp9_ratectrl.{c, h}." 2014-04-08 12:45:49 -07:00
Dmitry Kovalev
92380695f6 Cleaning up vp9_ratectrl.c file.
Change-Id: If8044d9c71afe02ed1e6c94487344e143bdfcd74
2014-04-08 11:59:41 -07:00
Yaowu Xu
e2ab65ab7d Merge "vp9_ratectrl: change ARF overlays rate correction factor" 2014-04-08 07:17:38 -07:00
Yaowu Xu
8f68468917 Merge "Replace imprecise 32 bits calculations by 64 bits calculations" 2014-04-08 07:14:21 -07:00
Yaowu Xu
2914bcfd9b Merge "vp9_firstpass: Get rid of magic number in bits per MB calculation" 2014-04-08 07:13:49 -07:00
Dmitry Kovalev
91dbac178f Moving compute_qdelta functions into vp9_ratectrl.{h, c}.
Change-Id: I512f2a287dd8765879a2d1144e2f028dc65f71ff
2014-04-07 16:57:53 -07:00
Dmitry Kovalev
e7e426b274 Moving init_rate_control() to vp9_ratectrl.{c, h}.
Change-Id: Iab3effc39064f265426c82b455ef38d37dcce5a8
2014-04-07 14:34:46 -07:00
Dmitry Kovalev
22580c462b Moving {restore, save}_coding_context to vp9_onyx_if.c
These functions do nothing about rate control.

Change-Id: I714e80b1c1f4f9aa157a56df705247fce6db138d
2014-04-07 10:32:15 -07:00
Guillaume Martres
4664b219a2 vp9_ratectrl: change ARF overlays rate correction factor
ARF overlays now use the same rate correction factor as regular inter
frames, further testing would be needed to see if it makes sense to use
a completely separate rate correction factor for ARF overlays.

$ vpxenc --cpu-used=5  --fps=50/1 --target-bitrate=2000
         parkjoy.y4m -o out.webm
=> Before: 3356 kb/s
=> After: 2271 kb/s

Change-Id: I73e4defa615ba7a8a2bdb845864f4b1721cbbffe
2014-04-07 18:22:11 +02:00
Guillaume Martres
0ec5919d42 Replace imprecise 32 bits calculations by 64 bits calculations
Change-Id: If1b0a2d6603ce24f5dd99855e8dfe459e7a2835a
2014-04-07 18:22:08 +02:00
Guillaume Martres
ded9e19144 vp9_firstpass: Get rid of magic number in bits per MB calculation
Change-Id: Ib3886cb7cafc211581f4f9e7f76782d9d1984434
2014-04-07 18:21:40 +02:00
Marco Paniconi
0eb88c9064 Add codec control function for enabling frame_periodic_boost.
Change-Id: I6371ef7301c6bc3138552bd349e9bd154dee3e08
2014-04-03 15:49:03 -07:00
Deb Mukherjee
d6f7bfc34e Merge "Rate ctrl changes to track target bitrates closer" 2014-04-02 13:29:34 -07:00
Jingning Han
c42e8f1429 Merge "Make frame level quantization change a parameter" 2014-04-02 12:48:05 -07:00
Jingning Han
409f48ec52 Merge "Adjust rate allocation in non-RD coding mode" 2014-04-02 12:47:50 -07:00
Paul Wilkins
32eb8c7955 Merge "Add speed feature for recode tolerance." 2014-04-02 12:22:33 -07:00
Deb Mukherjee
97f4fb7b5f Rate ctrl changes to track target bitrates closer
Turns off the DISABLE_RC_LONG_TERM_MEM macro and makes other changes
in the way the bits are updated, to make 2-pass rate control track
target bitrates closer.

Change-Id: I5f3be4b11c2908e6a9a9a1dd4fcf4e65531c44d8
2014-04-02 11:16:20 -07:00
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