Commit Graph

4451 Commits

Author SHA1 Message Date
John Koleszar
8e1c368486 Merge "Add an in-loop deringing experiment" into experimental 2013-03-26 08:36:55 -07:00
John Koleszar
7d9a7fb297 Merge "Code cleanup." into experimental 2013-03-26 08:34:06 -07:00
John Koleszar
f0923f3b01 Merge "Code cleanup." into experimental 2013-03-26 08:30:46 -07:00
John Koleszar
49c5841b2b Merge "Changing initialization order of mb_to_top_edge & mb_to_bottom_edge" into experimental 2013-03-26 08:25:45 -07:00
John Koleszar
441e2eab1b Add an in-loop deringing experiment
Adds a per-frame, strength adjustable, in loop deringing filter. Uses
the existing vp9_post_proc_down_and_across 5 tap thresholded blur
code, with a brute force search for the threshold.

Results almost strictly positive on the YT HD set, either having no
effect or helping PSNR in the range of 1-3% (overall average 0.8%).
Results more mixed for the CIF set, (-0.5 min, 1.4 max, 0.1 avg).
This has an almost strictly negative impact to SSIM, so examining a
different filter or a more balanced search heuristic is in order.

Other test set results pending.

Change-Id: I5ca6ee8fe292dfa3f2eab7f65332423fa1710b58
2013-03-26 08:23:24 -07:00
Deb Mukherjee
d14c7265f1 Bugfix in model coef prob experiment
Fixes an issue with model based update that got into
the original patch that was merged.

Change-Id: Ie42d3d0aff2e48cd187d96664dbd3e9d6d3ac22f
2013-03-26 07:30:42 -07:00
Deb Mukherjee
49dcc71493 Merge "Modeling default coef probs with distribution" into experimental 2013-03-26 07:13:13 -07:00
Deb Mukherjee
fd18d5dffe Modeling default coef probs with distribution
Replaces the default tables for single coefficient magnitudes with
those obtained from an appropriate distribution. The EOB node
is left unchanged. The model is represeted as a 256-size codebook
where the index corresponds to the probability of the Zero or the
One node. Two variations are implemented corresponding to whether
the Zero node or the One-node is used as the peg. The main advantage
is that the default prob tables will become considerably smaller and
manageable. Besides there is substantially less risk of over-fitting
for a training set.

Various distributions are tried and the one that gives the best
results is the family of Generalized Gaussian distributions with
shape parameter 0.75. The results are within about 0.2% of fully
trained tables for the Zero peg variant, and within 0.1% of the
One peg variant.

The forward updates are optionally (controlled by a macro)
model-based, i.e. restricted to only convey probabilities from the
codebook. Backward updates can also be optionally (controlled by
another macro) model-based, but is turned off by default. Currently
model-based forward updates work about the same as unconstrained
updates, but there is a drop in performance with backward-updates
being model based.

The model based approach also allows the probabilities for the key
frames to be adjusted from the defaults based on the base_qindex of
the frame. Currently the adjustment function is a placeholder that
adjusts the prob of EOB and Zero node from the nominal one at higher
quality (lower qindex) or lower quality (higher qindex) ends of the
range. The rest of the probabilities are then derived based on the
model from the adjusted prob of zero.

Change-Id: Iae050f3cbcc6d8b3f204e8dc395ae47b3b2192c9
2013-03-25 23:43:38 -07:00
Dmitry Kovalev
3644a5b632 Code cleanup.
Fixing function arguments alignment, reusing MIN/MAX and clamp functions.

Change-Id: I87dd5a40ffb65b521b8abbf0fccf2f50552c5309
2013-03-25 15:16:14 -07:00
Dmitry Kovalev
7cc14e598e Code cleanup.
Lower case variable names, code simplification by using already defined
clamp and read_le16 functions.

Change-Id: I8fd544365bd8d1daed86d7b2ae0843e4ef80df08
2013-03-25 14:24:26 -07:00
Dmitry Kovalev
8015a9aedc Fixing fourcc for VP8 and VP9.
Changing 0x00 ('') fourcc byte to 0x30 ('0'). For VP8 from
0x00385056 to 0x30385056, for VP9 from 0x00395056 to 0x30395056.

Change-Id: I26b1b603c20dd41f7aeabf8cd7893dfd5b1c8b59
2013-03-22 11:56:02 -07:00
Yunqing Wang
f68350ca98 Merge "Optimize 16x16 idct10 function" into experimental 2013-03-22 11:17:32 -07:00
Paul Wilkins
99a4939ec3 Merge "Disable zero bin mode boost." into experimental 2013-03-22 10:59:43 -07:00
Paul Wilkins
bfe7666142 Merge "Minor code clean up" into experimental 2013-03-22 10:53:12 -07:00
Paul Wilkins
ec080fa9de Disable zero bin mode boost.
As things stand the zero bin mode boost is hurting somewhat.
In part this seems to be because the boost applied as is
interferes with the rd mode selection loop.

Average gains (derf 0.072, yt 0.243, ythd 0.179 std-hd 0.212%)

Change-Id: Icaecea3908d9a7352370e49b8fa822f2c2c49dc1
2013-03-22 17:43:43 +00:00
Paul Wilkins
815734e5fb Minor code clean up
Change-Id: Ifa864e0acb253b238b03cdeed0fe5d6ee30a45d8
2013-03-22 17:42:45 +00:00
Paul Wilkins
52abaeca85 Merge "Remove TX size segment feature" into experimental 2013-03-22 10:39:22 -07:00
Shimon Doodkin
907016fdc7 Remove gcc-specific __label__
Use unique names and ditch the local label declaration. Visual Studio
does not support it.

https://code.google.com/p/webm/issues/detail?id=561

Change-Id: Ica643cf5abb56ee6156371f5bf73fdeb58014422
2013-03-22 10:08:19 -07:00
Yunqing Wang
869d6c0534 Optimize 16x16 idct10 function
Wrote sse2 version of vp9_short_idct10_16x16 function. Compared
to c version, the sse2 version is 2.3X faster.

Change-Id: I314c4f09369648721798321eeed6f58e38857f26
2013-03-21 16:36:01 -07:00
Dmitry Kovalev
407940243f Changing initialization order of mb_to_top_edge & mb_to_bottom_edge
Making consistent initialization of mb_to_{top,botton,left,right}_edge
variables after set_mb_row & set_mb_col calls. A little bit of code cleanup
additionally.

Change-Id: I245bfe32c5701e9836956dc25cf8c770d109cbc1
2013-03-21 12:51:57 -07:00
Yunqing Wang
8a3233b54d Merge "Optimize 16x16 idct function" into experimental 2013-03-21 11:54:20 -07:00
Yunqing Wang
ec3100661c Optimize 16x16 idct function
Wrote sse2 version of vp9_short_idct16x16 function. Compared to c
version, the sse2 version is over 2.5X faster.

Change-Id: I38536e2b846427a2cc5c5423aaf305fd0e605d61
2013-03-21 11:44:05 -07:00
Dmitry Kovalev
56f3a2c663 Code cleanup: lower case variable names.
Renaming Width to width, Height to height and Version to version in
several structs and function signatures.

Change-Id: I084c3f7e747cb2ce3345aff27a3dff9b13a87543
2013-03-20 16:41:30 -07:00
Scott LaVarnway
699196dc3d Removed mode_chosen_counts
This eliminates a tsan warning.

Change-Id: I204d109b12adb4e347762e63d12859244f28d1a9
2013-03-20 14:41:24 -07:00
Dmitry Kovalev
66eff0aa38 Merge "Motion vector code cleanup." into experimental 2013-03-19 11:17:22 -07:00
Paul Wilkins
1c75e77b6d Remove TX size segment feature
Change-Id: I0d226e4cb240caced37230f46905bf69b46e0cce
2013-03-19 17:31:08 +00:00
Paul Wilkins
d8ffee4526 Changes to rd error_per_bit calculation.
Specifically changes to retain more precision
especially at low Q through to the point of use.

Change-Id: Ief5f010f2ca4daaabef49520e7edb46c35daf397
2013-03-18 23:07:51 +00:00
Ronald S. Bultje
a5b54d73e4 Merge "Fix ENTROPY_STATS code in vp9_tokenize.c." into experimental 2013-03-18 15:58:33 -07:00
Ronald S. Bultje
65d22825e2 ENTROPY_STATS -> VP8_ENTROPY_STATS in vp8/.
Change-Id: I0027483e47900de84394de47c3273cc8292e6119
2013-03-18 15:39:04 -07:00
Ronald S. Bultje
b99dce6881 Fix ENTROPY_STATS code in vp9_tokenize.c.
Change-Id: I9b4cb1e2ce6c6a99cffd473ff2fa7579bd318fcd
2013-03-18 15:39:04 -07:00
Yunqing Wang
6344c84c82 Optimize 8x8 idct function
Wrote sse2 functions of vp9_short_idct8x8 and vp9_short_idct10_8x8.
Compared to c version, the sse2 version is 2X faster. The decoder
test didn't show noticeable gain since 8x8 idct doesn't take much
of decoding time (less than 1% in my test).

Change-Id: I56313e18cd481700b3b52c4eda5ca204ca6365f3
2013-03-18 15:34:14 -07:00
John Koleszar
449f136886 VP9/ResizeInternalTest: adjust passing threshold
Update to +/- 1dB.

Change-Id: Idada001f261b36945c9334e288a415ee2c79c415
2013-03-18 15:17:45 -07:00
John Koleszar
93529bd7c1 Merge "Replace scaling byte with explicit display size" into experimental 2013-03-18 13:02:07 -07:00
John Koleszar
8a3f55f2d4 Replace scaling byte with explicit display size
If the intended display size is different than the size the frame is
coded at, then send that size explicitly in the bitstream. Adds a new
bit to the frame header to indicate whether the extra size fields
are present.

Change-Id: I525c66f22d207efaf1e5f903c6a2a91b80245854
2013-03-18 12:02:20 -07:00
Paul Wilkins
ef179bce61 Merge "Adapt ARNR filter length and strength." into experimental 2013-03-18 12:00:39 -07:00
John Koleszar
c5b317057b Merge "Fix pulsing issue with scaling" into experimental 2013-03-18 11:57:36 -07:00
John Koleszar
e5d7542447 Merge "Add VP9_GET_REFERENCE control" into experimental 2013-03-18 11:57:31 -07:00
Paul Wilkins
cdb322dd72 Adapt ARNR filter length and strength.
Adjust the filter length and strength for each
ARF group based on a measure of difficulty (the boost)
and the active q range.

Remove lower limit on RDMULT value.

Average gains on the different sets in range 0.4%-0.9%.
However the ARNR changes give a very big boost on a
few clips.

Eg. Soccer ~5%, in derf set and Cyclist ~ 10% in the std-hd set

Change-Id: I2078d78798e27ad2bcc2b32d703ea37b67412ec4
2013-03-18 16:17:04 +00:00
Yaowu Xu
d29f5435df Merge "put refmvselection under experiment" into experimental 2013-03-18 08:51:33 -07:00
Yaowu Xu
12ade55719 Merge "removed reference to "LLM" and "x8"" into experimental 2013-03-18 08:51:19 -07:00
John Koleszar
9a56ea7e46 Merge "Remove some unused rate control variables" into experimental 2013-03-18 08:36:23 -07:00
John Koleszar
571fce6546 Merge "Fix use of NaN in firstpass" into experimental 2013-03-18 08:36:18 -07:00
Deb Mukherjee
bf7387f6b7 Merge "Context-pred fix to not use top/left on edges" into experimental 2013-03-16 19:09:25 -07:00
Deb Mukherjee
b1921b2f08 Context-pred fix to not use top/left on edges
This fix resolves some of the mismatch issues being seen
recently. While this is the right thing to do when tiling
is used for this experiment, it is not the underlying cause
of the the mismatches.
Something else is causing writing outside of the allowable
frame area in the encoder leading to this mismatch.

Change-Id: If52c6f67555aa18ab8762865384e323b47237277
2013-03-16 09:26:52 -07:00
Dmitry Kovalev
235898c3b2 Merge "Basic encryption feature for libvpx." 2013-03-15 20:14:46 -07:00
Dmitry Kovalev
26cec5c13f Basic encryption feature for libvpx.
New decoder control paramter VP8_SET_DECRYPT_KEY to set the decryption key.

Change-Id: I6fc1f44d41f74f3b3f702778af1a6f8f5cc9439f
2013-03-15 18:21:55 -07:00
John Koleszar
b8ac9f2f2c Remove some unused rate control variables
These variables are unused, and are subject to overflowing, causing
assertions when built with -ftrapv.

Change-Id: Ia00a3201af309906c05bcd4b23a643925ed6ea86
2013-03-15 17:53:45 -07:00
John Koleszar
db5f2cb57b Fix use of NaN in firstpass
If the second reference is better than the first in the long term,
it was possible to try to take the fractional exponent of a
negative number, giving an undefined result.

Change-Id: I1dd08286747ceae960eb03bb5d98a383cc9d253b
2013-03-15 17:53:38 -07:00
John Koleszar
117514b30f Merge "Cleaning up frame decoding functionality." into experimental 2013-03-15 17:44:32 -07:00
Christian Duvivier
4418b790a7 Faster vp9_short_fdct16x16.
Scalar path is about 1.5x faster (3.1% overall encoder speedup).
SSE2 path is about 7.2x faster (7.8% overall encoder speedup).

Change-Id: I06da5ad0cdae2488431eabf002b0d898d66d8289
2013-03-15 15:55:31 -07:00