Commit Graph

15654 Commits

Author SHA1 Message Date
hui su
c3a9247e09 VP9: adjust trellis quant optimization RD parameters
Coding gain:
lowres  0.64%
midres  0.38%
hdres   0.58%

Change-Id: I233fa2a4b24bd1e15091a5f5ef6aff661f3f50ec
2016-04-26 10:17:38 -07:00
hui su
c8f56d2303 VP9: enable trellis quantization optimization for intra blocks
Coding gain:
lowres  0.18%
midres  0.23%
hdres   0.36%

Change-Id: I044c8afbc481fc55b23d440352941071355b0afb
2016-04-26 10:17:29 -07:00
JackyChen
1a53c0c9e1 vp9: Simplify the logic in denoiser SSE2 code.
Block size passed into denoiser filter is always >= BLOCK_8X8 (in
vp9_pick_inter_mode), it is not necessary to check smaller block
size. Passed the bitexact test on clips with different resolutions and
noise levels.

Change-Id: I19fa3195d18c27d9e5de60dc11cff1522ef3714e
2016-04-26 09:04:39 -07:00
Paul Wilkins
779840c9f4 Merge "Resolve a couple of TODOs in firstpass.c" 2016-04-26 12:57:09 +00:00
Paul Wilkins
7a4c2c7671 Merge "Experiment to adapt for net AQ offset." 2016-04-26 12:56:52 +00:00
Marco
b7e8b3cbb6 vp9: Fix consec_zero_mv in skin detection.
This was missed in https://chromium-review.googlesource.com/#/c/340135/.

Change-Id: Iafc83141f4ff744819bdbde7d239678b215feb9d
2016-04-25 15:39:15 -07:00
Marco
9f90473ef8 vp9: Fix condition to update consec_zero_mv.
Fix will reset the consec_zero_mv map on non-skipped blocks with non-zero mv.
Adjust thresholds on consec_zero_mv in noise estimation and skin detection,
as more possible reset on map means lower thresholds should be used.

Change-Id: Ibe8520057472b3609585260b51b6f95a38fb777d
2016-04-25 15:29:11 -07:00
Marco Paniconi
97d8adef82 Merge "vp9: 1 pass vbr: Adjust gf boost/interval on motion level." 2016-04-25 21:13:56 +00:00
Vignesh Venkatasubramanian
9680d4fa2a webmdec.h: remove stale TODO
webm_read_frame is the only function now which requires
documentation for what the return value means (other two are quite
obvious - file_is_webm and webm_guess_framerate).

Change-Id: I7a4f7d8097b1d748812b2ee251ee718a0b5ce836
2016-04-25 14:05:59 -07:00
Vignesh Venkatasubramanian
9441f10b51 TODO cleanup: s/EbmlGlobal/WebmOutputContext/
This brings the struct's name in line with WebmInputContext.

Change-Id: I1a1c7ae60b006ae5de8253177d6d996f5867866d
2016-04-25 13:30:08 -07:00
Jacky Chen
ef4a132cc4 Merge "vp9: Fix a bug where best_sse_mv is not set properly." 2016-04-25 20:00:43 +00:00
Johann Koenig
520055bd1a Merge "vpx_minmax_8x8_neon and test" 2016-04-25 18:58:29 +00:00
Marco
e172e8aa26 vp9: 1 pass vbr: Adjust gf boost/interval on motion level.
Add some adjustment for high motion case.

Change-Id: If700be1ce849c187ed031221ea7cabbc8d91ec2b
2016-04-25 11:54:10 -07:00
JackyChen
57c7c11633 vp9: Fix a bug where best_sse_mv is not set properly.
In VP9 internal denoiser, motion magnitude is computed from
best_sse_mv, which should be set to 0 at the begining. This bug may
cause visual aritifact in denoiser. Also, delete two improper comments.

Change-Id: I8710d2acba23320bc85cf72af17d65245c19438b
2016-04-25 11:44:40 -07:00
Marco Paniconi
bd3c874cac Merge "vp9-denoiser: Bugfix and some adjustments for high noise case." 2016-04-25 17:16:10 +00:00
Marco
229c686c89 vp9-denoiser: Bugfix and some adjustments for high noise case.
Need to check that sse for non-zero mv has been set for the current block
(i.e., check that nonzero-mv is tested as a mode, so newmv_sse != UINT_MAX)
before forcing to not use zero-mv for denoising.

Also increase some thresholds (sse and sse_diff) for high noise case,
and use shift operaton instead of multiplication on a threshold computation.

Change-Id: Iae7339475d57240316b7fa8b887c4ee3c0d0dbec
2016-04-25 10:15:03 -07:00
Marco
8b25dd599f vp9: Add rc quantity to track amount of low motion in scene.
Use it for now in noise estimation to bypass estimation if
motion level is high.

Change-Id: I033662dc909f2060e4e81abf562a7ad262dc8170
2016-04-25 09:07:35 -07:00
Scott LaVarnway
cc5023d55f Merge "VP9: Do not call vp9_adjust_mask() in vp9_setup_mask()" 2016-04-25 13:39:29 +00:00
paulwilkins
015c43f0c1 Resolve a couple of TODOs in firstpass.c
Resolved two TODO items.

Force a minimum value of 1.0 for frame duration as per section duration.

Column inactive zone is currently set to 0 as most of the serious issues
relating to inactive regions relate to letter boxing.

Change-Id: Ifbab3acf2c089d7305620a7ff7ed7c3536cc9235
2016-04-25 12:38:10 +01:00
paulwilkins
4b590058c8 Experiment to adapt for net AQ offset.
In Aq mode 1 the segment and AQ delta for each block is based
on spatial variance. There may be a net imbalance between blocks
that have lower Q than the baseline value and those that have higher Q.

This patch monitors that imbalance and extends the allowed baseline
Q range for the frame to accommodate adjustment of that baseline value
to compensate.

Change-Id: Iae8a48c7c01fe2af94a141e149d03acf467237ca
2016-04-25 12:07:07 +01:00
Scott LaVarnway
9e0efb6008 VP9: Do not call vp9_adjust_mask() in vp9_setup_mask()
vp9_adjust_mask() is called again in loop_filter_rows().

Change-Id: If52f5339dfa7971c47b12f9e05f87951044d9391
2016-04-22 13:53:32 -07:00
James Zern
52889c1016 Merge "hadamard_test: align src/dst buffers" 2016-04-22 20:03:06 +00:00
Marco Paniconi
cf82222316 Merge "vp9: Some adjustments to denoiser under high-noise condition." 2016-04-22 18:55:57 +00:00
Marco
80ed9e4f5c vp9-noise estimation: Add check on whether skin detection is enabled.
Change-Id: Ie80b7a14e3505c40b5742793f84aa6fb9d21dab5
2016-04-22 10:37:00 -07:00
Marco
80bbba1494 vp9: Some adjustments to denoiser under high-noise condition.
Change-Id: Ib47d742d07f13c7c39cea85e228c19ae298baf4a
2016-04-22 10:31:19 -07:00
Marco Paniconi
2c8338f982 Merge "vp9: Move consec_zero_mv from cyclic refresh to cpi struct." 2016-04-22 17:06:31 +00:00
Yi Luo
b547a2f38c Add the 64-bit CPU cycle count utility function
Change-Id: Ie87245bbdf5735bc9729199eeb07899d81dbf267
2016-04-22 09:34:35 -07:00
Marco
adf8533cee vp9: Move consec_zero_mv from cyclic refresh to cpi struct.
So it can be used even with aq-mode=3 not enabled.
Also cleans up some code in the places where its used.

No change in behavior.

Change-Id: Ib6b265308dbd483f691200da9a0be4da4b380dbc
2016-04-22 08:09:39 -07:00
James Zern
9222d467e7 hadamard_test: align src/dst buffers
fixes crash in 32-bit builds

Change-Id: I149e517c940a8cd43643e213bfbe077b6f579090
2016-04-22 00:06:49 -07:00
Johann
2f5840de3e vpx_minmax_8x8_neon and test
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1156

Change-Id: Ief0ad8d6255b0ef0f233cda153799e3c72d3dbc6
2016-04-21 21:40:25 -07:00
Johann Koenig
1710419eb5 Merge "hadamard 8x8 test" 2016-04-22 04:36:10 +00:00
Johann
8c02a36953 hadamard 8x8 test
The order of the output structure is not currently important.

BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1021

Change-Id: Ibc0006d569675db6c5060c4529f5d9e73f2e96a6
2016-04-21 22:28:21 +00:00
James Bankoski
b816eea5ef Merge "vp9_loopfilter.c : fix / clarify todo" 2016-04-21 20:40:41 +00:00
James Bankoski
2bcec13e5f Merge "vp9_loopfilter.c: Todo clean up encoder should work like decoder." 2016-04-21 20:40:35 +00:00
James Bankoski
166fc7cb43 Merge "vp9_loopfilter.c : todo cleanup" 2016-04-21 20:40:24 +00:00
Jim Bankoski
996ccc3311 vp9_loopfilter.c : fix / clarify todo
Change-Id: Ie3ec67a83d1877d3deae9c7922b6899d915aa19e
2016-04-21 20:39:56 +00:00
Jim Bankoski
6bd28a2d05 vp9_loopfilter.c: Todo clean up encoder should work like decoder.
Change-Id: I570c6859d6e18cd94ce4a29068477b937489399c
2016-04-21 20:36:39 +00:00
Jim Bankoski
1de659af06 vp9_encodemb.c: TODO clean up
huisu did in nextgen branch -> please try in vp9

Change-Id: I0ff35db07ac38464e0e2858e303be686c03a5d0e
2016-04-21 20:35:54 +00:00
Jim Bankoski
df4c95afce vp9_loopfilter.c : todo cleanup
Removed this todo because of another todo which says none of this code
should exist. It should be integrated into the block by block encode
process as per the decoder.

Change-Id: I076bd15140a060e69c014dd7d7cd07fea260aba3
2016-04-21 20:35:30 +00:00
Yaowu Xu
d179b784f9 Merge "vp9_loopfilter.c: Todo try inloop calculation." 2016-04-21 15:38:12 +00:00
Jim Bankoski
b627af0eb0 vp9_loopfilter.c: Todo try inloop calculation.
This is implemented in the decoder already.  Will add a todo for the
encoder.

Change-Id: I5e78c045cb2edb5ba171022aeeb70051a708b916
2016-04-20 23:53:20 +00:00
Marco
83f17eeede vp9: 1 pass vbr: Small fix on reset avg_intersize_gfint on scene cut.
Change-Id: Ie73d1bbc2c953d010b32097440698f0d060750be
2016-04-20 16:32:09 -07:00
Marco
8a906039a7 vp9: 1 pass vbr: small adjustment to active_best factor for inter.
Change-Id: I9c68aa9e72969b0ffbf57eb186380ff666745aeb
2016-04-20 14:25:13 -07:00
Marco Paniconi
e4d9f0e31f Merge "vp8: Update on sum_diff_threshold." 2016-04-20 00:20:42 +00:00
Marco
9ca6b46cef vp9: Adjust gf period for high average Q and overshoot.
For 1 pass vbr mode.
Increase the gf interval for case where average Q is close to
max and high overshoot is detected.

Small increase in overall avg_psnr/sssim metrics (~0.2/0.1%) for ytlive,
but improves the low-end (low bitrate) for several clips (less overshoot).

Change-Id: Ifba40f25b4861b2e0d9832c82d5359a6a3dce9f2
2016-04-19 17:18:11 -07:00
Marco
d33be6caa9 vp8: Update on sum_diff_threshold.
Reset to previous values.

Change-Id: Ia49bafc1d1ec5f657819ffba04d11fd701f315e8
2016-04-19 15:59:48 -07:00
Marco
9cc1f692bd vp9: 1 pass vbr: More even spacing for gf near key frame.
More even spacing near key frame and avoid gf on scene cut
if its close to key frame.

Small increase in metrics for ytlive set (which uses key-period=150).
(~0.2% gain)

Change only affects 1 pass vbr mode.

Change-Id: If1e5a59baf1e0befbaf998522fbc47d94ac5b5df
2016-04-18 14:40:55 -07:00
Marco
d488236ce3 vp9: Adjustment to active_best_quality for inter_frame, 1 pass vbr.
Change only affects 1 pass vbr.

Use a q value somewhat larger (~6%) than avg_frame_qindex[INTER]
as basis for active_best_quality for inter-frames.
And use the minium of this (avg_frame_qindex) and the active_worst_quality.

This reduces some overshoot in ytlive clips.
Overall small but positive average increase in metrics (up on average ~0.2%).

Change-Id: Icdbaae7872d5675fd38a13c0ec6ce0e2e3b919ce
2016-04-18 13:01:27 -07:00
Paul Wilkins
2e0841931c Merge "Adjustment to prediction decay." 2016-04-18 18:47:13 +00:00
Scott LaVarnway
9faa0296b8 Merge "VP9: inline vp9_get_intra_inter_context()" 2016-04-15 19:06:33 +00:00