Commit Graph

5058 Commits

Author SHA1 Message Date
Yaowu Xu
f2d682fc10 change the order of inter modes evaluated
Change-Id: I10c1ad23b110cf92cb026e895039c215c47abfd0
2015-03-16 12:49:30 -07:00
Yaowu Xu
51d529a578 vp9_pick_inter_mode(): minor optimizations
1. remove duplicate initialization to mbmi->interp_filter.
2. move mv clamping into ref_frame loop instead of mode checking loop.
3. move the check if last frame is same as golden frame earlier to
avoid initialization of Golden reference related variables.

Change-Id: Idf2d05e19e94a24f69cc289687869fc71d2ff289
2015-03-16 10:08:02 -07:00
Jingning Han
1f9b2b77ad Merge "Fix choose_partitioning threshold setup for speed -5" 2015-03-15 09:04:07 -07:00
Jingning Han
b03cf9317a Fix 1-step refinement search table
Change-Id: I32f0bcb40c6e7ba63bfae487739ededd0b6b2dde
2015-03-14 10:52:11 -07:00
Jingning Han
1f00a9b9d5 Fix choose_partitioning threshold setup for speed -5
The compression performance of speed -5 is on average 12.6% better
than speed -6. At lower bit-rates, the gains are typically 20% or
more. For 2-thread encoding, the speed -5 takes about 1.6x time of
speed -6.

Change-Id: If7a73464a24d33e8f49b9533b51ec51c8da7fc80
2015-03-13 17:01:56 -07:00
Marco
87999b1c2e Merge "Fix crash with vp9 denoiser on." 2015-03-13 14:31:40 -07:00
Jingning Han
6cceed09cf Merge "Use sdx4df to do 1-step refinement" 2015-03-13 12:57:49 -07:00
Marco
e38066a74d Fix crash with vp9 denoiser on.
Crash occured on very first key frame, because denoiser
temporal function was beng entered.

Updated denoiser unittest to set cpu_used from first frame,
and verified fix fixes the crash.

Change-Id: I3be1124b52846fbbe7248d2c3d6136e086c80bc1
2015-03-13 11:10:02 -07:00
Marco
deaf661f45 Merge "Lower bitrate threshold below which cyclic refresh is turned off." 2015-03-13 10:31:35 -07:00
Alex Converse
f8df916931 Merge "Reconcile active_map and cyclic refresh" 2015-03-13 10:20:15 -07:00
Jingning Han
688c99a706 Merge "Reset src buffer only once in vp9_int_pro_motion_estimation" 2015-03-13 09:56:00 -07:00
Jingning Han
1b3499ae8b Merge "Reduce the number of full block SAD calls" 2015-03-13 09:55:52 -07:00
Jingning Han
cce7020f2c Use sdx4df to do 1-step refinement
Change-Id: Ie0c3ef3ae3aedf049b1a296de607730b79c12672
2015-03-13 09:53:15 -07:00
Marco
62a3f53997 Lower bitrate threshold below which cyclic refresh is turned off.
Change-Id: Ib54ab11adf8178eec74f65388a89c8f912c7869a
2015-03-13 09:42:45 -07:00
paulwilkins
b6749aa3a7 Merge "Shorten GF/arf interval in hard scenes." 2015-03-13 08:45:52 -07:00
Jingning Han
ba29125f7b Reset src buffer only once in vp9_int_pro_motion_estimation
Change-Id: I5c96b6a25f9df60da65b7af7c92a921b611746e3
2015-03-12 18:50:53 -07:00
Yaowu Xu
1aa75c65cc Merge "vp9_pick_inter_mode(): Use single loop to evaluate inter modes" 2015-03-12 18:43:23 -07:00
Jingning Han
427cdf0a41 Reduce the number of full block SAD calls
This commit uses a 6-point 1-step refine motion search in the
integral projection based full pixel motion estimation, to replace
the current 9-point search.

It reduces runtime cost of speed -6 on some noisy clips, e.g.,
dark720p single thread
33314 b/f, 40.076 dB, 18231 ms ->
33307 b/f, 40.067 dB, 17768 ms

The compression performance for rtc set remains unchanged.

Change-Id: I194ea5a9ce52e5a10baeee36338633adc22f764c
2015-03-12 18:30:57 -07:00
Yunqing Wang
769e6567e9 Merge "Minorly modify model_rd_for_sb_y function" 2015-03-12 17:16:48 -07:00
Jingning Han
7a9d8f1efe Merge "Fix fdct8x8_quant ssse3 overflow issue" 2015-03-12 16:43:09 -07:00
Alex Converse
1bfacd3529 Reconcile active_map and cyclic refresh
Change-Id: Id7f8654aeeb20caa402bc822521b1d72c658f4f9
2015-03-12 16:19:49 -07:00
Yaowu Xu
2b368097c8 vp9_pick_inter_mode(): Use single loop to evaluate inter modes
This commit changes to use single loop to evaluate all inter modes.
There is no impact on compression quality and speed, but allow future
experiment with the order of modes evaluated.

Change-Id: I71696ce1014cbe127e25e98710d835987f5ecc09
2015-03-12 16:14:29 -07:00
Yunqing Wang
5d677c97eb Minorly modify model_rd_for_sb_y function
Added a skip_dc check. If skip_dc = 1, we could eliminate calling
of vp9_model_rd_from_var_lapndz(). This gave slight PSNR & SSIM
gain(<0.1%), and no speed change.

Change-Id: If5ca733366148c86b98e196a00cc890f50e9a3e5
2015-03-12 14:04:14 -07:00
Jingning Han
fcb96b3afd Fix fdct8x8_quant ssse3 overflow issue
This resolves webm issue 968.

Change-Id: Ieb363129b1e135a561141c68211d413226aba754
2015-03-12 12:43:19 -07:00
Deb Mukherjee
791bf5657f Merge "Some rate control adjustments to control overshoot" 2015-03-12 11:10:59 -07:00
Jingning Han
1ff15fbffe Merge "Prevent integer overflow in choose_partitioning" 2015-03-12 09:24:02 -07:00
Jingning Han
90ea10ec91 Merge "Remove unnecessary speed feature checking" 2015-03-12 09:23:51 -07:00
Jingning Han
594890a534 Merge "Apply fast motion search to golden reference frame" 2015-03-12 09:23:41 -07:00
Jingning Han
8fdddd5c01 Merge "Refactor to remove GLOBAL_MOTION" 2015-03-12 09:23:31 -07:00
Marco
0adc58037a Merge "Fix visual studio build failure." 2015-03-11 17:19:47 -07:00
Jingning Han
238b6be24b Prevent integer overflow in choose_partitioning
Re-arrange the multiplication and right shift operations to avoid
integer overflow in choose_partitioning.

Change-Id: Ib4005cafb410a67c1960486471d75b6ebe38c4e0
2015-03-11 16:31:42 -07:00
Marco
a291b0b4a3 Fix visual studio build failure.
Change-Id: Ifeb14f945d0f0300eb7b21b38e5720ac1c11a6cf
2015-03-11 16:12:39 -07:00
Jingning Han
313c28f8b8 Remove unnecessary speed feature checking
This commit removes the pred_mv_sad comparison from rtc motion
search, given that a stronger comparison has been done at the
mode search level to eliminate unlikely selected reference frames.

Change-Id: I49b8d24b2174303066fd8eff2102c0648f2869df
2015-03-11 16:11:40 -07:00
Adrian Grange
39d20c6ac3 Merge "Clamp rate correction factor after scaling it" 2015-03-11 16:09:49 -07:00
Jingning Han
54eda13f8d Apply fast motion search to golden reference frame
This commit enables the rtc coding mode to run integral projection
based motion search for golden reference frame. It improves the
speed -6 compression performance by 1.1% on average, 3.46% for
jimred_vga, 6.46% for tacomascmvvga, and 0.5% for vidyo clips. The
speed -6 is about 6% slower.

Change-Id: I0fe402ad2edf0149d0349ad304ab9b2abdf0c804
2015-03-11 16:03:49 -07:00
Jingning Han
1ca4d51b2e Refactor to remove GLOBAL_MOTION
Make the vp9_int_pro_motion_estimation() function return zero
motion vector if high bit depth is turned on, instead of removing
it from compiled codes.

Change-Id: Ia48f010eb590b2d517d5678c394110b326a1a95e
2015-03-11 15:53:15 -07:00
Yaowu Xu
dc902fedb2 Merge "Separate rd_thresh adaption by ref_frame" 2015-03-11 10:41:20 -07:00
Adrian Grange
42a89eb8cc Clamp rate correction factor after scaling it
Added clamp on the rate correction factor after
it has been scaled.

Change-Id: I5d4b46a101987b43c5bcfd7e0bd1b7b4d53640a4
2015-03-11 09:08:15 -07:00
paulwilkins
b29c48b03c Shorten GF/arf interval in hard scenes.
This patch accounts in the first pass stats for blocks that
while not coded as intra, are complex and have an intra error /
best error ratio below a threshold.

The modification shortens the GF arf interval for a particular
class of content that contains a lot of blocks matching the
above criteria. (In one short problem test sequence the average
interval dropped from about 14-15 to 10-11)

The change results in small net gains in metrics results for the
Yt(~0.2%) and yt-hd (~0.5%) sets and is approximately neutral
for the other test sets.

The change is currently shielded by a flag and off by default
pending verification that it does not cause other regressions
in tests on a wider YT test set.

Change-Id: I6b803daa6a4ac09a6f428fb3a18be1ecedd974b7
2015-03-11 14:15:23 +00:00
Yaowu Xu
d549aa3b17 Separate rd_thresh adaption by ref_frame
Only update the rd_thresh factors for modes sharing same reference
frame. This helps overall compression of 6 and 7 by .13% and .19%
respectively without any noticeable speed difference.

Change-Id: Idb3a3879512c5d7d0880034516079949290690c5
2015-03-10 19:06:52 -07:00
Deb Mukherjee
0308e2ee6d Some rate control adjustments to control overshoot
Some rate control adjustments to control overshoot
in the constrained quality mode.

Change-Id: I8907b9a883642d779009d0a138adfa6ba67e7f41
2015-03-10 17:25:10 -07:00
Marco
340260585c Merge "Modify update golden reference update under aq-mode=3 mode." 2015-03-10 11:48:10 -07:00
Marco
fb31aa09e2 Modify update golden reference update under aq-mode=3 mode.
For non-SVC 1 pass CBR: make the GF update interval a multiple of the
cyclic refresh period, and use encoding stats to prevent GF update at certain times.

Change-Id: I4c44cacc2f70f1d27391a47644837e1eaa065017
2015-03-10 10:54:00 -07:00
Yaowu Xu
12943e722d Merge "Enable using Golden reference in choose_partition()" 2015-03-10 10:48:52 -07:00
paulwilkins
4b01a2d350 Merge "Allow q adjustment for VPX_CQ and VPX_CBR." 2015-03-10 10:45:02 -07:00
Adrian Grange
78df712216 Fix vp9_compute_qdelta_by_rate loop behavior
The return value from vp9_compute_qdelta_by_rate, which is
a delta value for the quantizer, could never be 0 if
(qindex == rc->worst_quality).

This occurs because target_index was setup unconditionally
in the loop and yet the loop counter stopped at
(rc->worst_quality - 1).

Change-Id: I6b59cd9b5811ff33357e71cd7d814c5e53d291f2
2015-03-10 09:14:54 -07:00
Yaowu Xu
059a473b35 Enable using Golden reference in choose_partition()
Choose_partition uses only the last frame as reference frame in making
partition decision, this commit adds the check on how well Golden
frame with (0,0) predicts the current block, and uses GF(0,0) as
basis for partition decision if it produces better prediction.

The commit improves rtc speed 6 and 7 encoding by 0.14% and 0.19%
respectively.

Change-Id: I156acf925bd6e0b586d48155d1940d27270a3915
2015-03-10 08:57:28 -07:00
Alex Converse
066ed601a5 Merge "Don't waste time partitioning skip superblocks." 2015-03-09 13:02:16 -07:00
Jingning Han
9708f9d66a Merge "Skip golden ref frame check when it is same as last ref frame" 2015-03-09 12:27:19 -07:00
Jingning Han
6245a91e0b Skip golden ref frame check when it is same as last ref frame
When golden reference frame is refreshed, the next frame has both
its last and golden reference frames point to the same reference
frame in real-time coding mode. Experiments suggest that using
two separate reference frames for frames right after golden refresh
frame does not provide further compression performance advantage.
This commit hence retains the current encoder implementation and
shuts off the mode search over golden reference frame in this case.

It makes the encoder run slightly faster at no coding performance
change.

Change-Id: I1561f7799253a10e675d05c63c1749fe9e85b472
2015-03-09 11:14:55 -07:00