Commit Graph

3465 Commits

Author SHA1 Message Date
Ronald S. Bultje
41e3a9ef14 Add and consistently use PLANE_TYPE.
Change the macros PLANE_TYPE_{Y_NO_DC,Y2,UV,Y_WITH_DC} to a typed enum,
and use this typed enum consistently across all places where relevant.
In places where the type is implied (e.g. in functions that only handle
second order planes or chroma planes), remove it as a function argument
and instead hardcode the proper enum in the code directly.

Change-Id: I93652b4a36aa43163d49c732b0bf5c4442738c47
2012-10-15 07:57:16 -07:00
Ronald S. Bultje
5cfff7ce88 Merge duplicate loops in tokenization code.
Also merge the three occurrences of 4x4 chroma block writing into a
single function, and call that function instead of duplicating the
4x4 chroma tokenization code in 3 places.

Change-Id: I7913538d1029f709b0e3ae49fff1148d3be9eeb9
2012-10-15 07:55:27 -07:00
Ronald S. Bultje
a0ad521caf Minor refactoring in encodeintra.c.
Merge code blocks for different transform sizes; use MACROBLOCKD as a
temp variable where that leads to smaller overall source code; remove
duplicate code under #if CONFIG_HYBRIDTRANSFORM/#else blocks. Some style
changes to make it follow the style guide a little better.

Change-Id: I1870a06dae298243db46e14c6729c96c66196525
2012-10-14 17:09:08 -07:00
Ronald S. Bultje
e7a4bccaee Make optimize_mb_16x16() static.
It is not used outside this file.

Change-Id: Id0947180edab4c5f1f50589863350b21e97c25f1
2012-10-14 17:09:08 -07:00
Ronald S. Bultje
781f6ad7c6 Remove assignment in vp8_optimize_mby_16x16().
The result of the assignment is unused.

Change-Id: Id94b790baa6451f24e9aeda6f036390388d93921
2012-10-14 17:09:07 -07:00
Ronald S. Bultje
11e42d46aa Remove duplicate code in optimize_mb_NxN vs. vp8_optimize_mby/uv_NxN().
Instead, just call vp8_optimize_mby/uv_NxN() inside optimize_mb_NxN().

Change-Id: Ief941064d86db4277ba02e990a26819144b55f7c
2012-10-14 17:09:07 -07:00
Ronald S. Bultje
238ed517fd Remove duplicate or unused code in encoder/encodemb.c.
Also make some minor stylistic changes to bring the code closer to
the style guide. Remove distinction between inter and intra transform
functions, since both do exactly the same thing except for the check
against SPLITMV for the second-order transform. Remove some commented
out debug code. Remove 8x8/16x16 transform code in encode_inter16x16y(),
since the first-pass only uses 4x4 anyway.

Change-Id: Ife54816ff759825b9141f95dc2ba43c253c14dba
2012-10-14 17:09:02 -07:00
Ronald S. Bultje
f41adbb468 Remove duplicate or unused code in encoder/quantize.c.
Also make some minor stylistic changes to bring the code closer to
the style guide. Remove checks against i8x8/bpred in the mb-codepath,
since these do individual block reconstruction and thus don't go through
this codepath.

Change-Id: I4dfcf8f78746f4647a206475acf731837aa4fd47
2012-10-14 08:04:06 -07:00
Ronald S. Bultje
78bf1029f1 Remove duplicate or unused code in common/invtrans.c.
Also make some minor stylistic changes to bring the code closer to
the style guide.

Change-Id: Idafa280724f49868ed6b7d65b7fd9227d781994b
2012-10-14 08:04:05 -07:00
Ronald S. Bultje
f1e629320b Add a _4x4 sufix to all 4x4-transform-related functions.
This includes trellis optimization, forward/inverse transform,
quantization, tokenization and stuffing functions.

Change-Id: Ibd34132e1bf0cd667671a57b3f25b3d361b9bf8a
2012-10-14 08:04:05 -07:00
Ronald S. Bultje
e03715fe6c Replace vp8_inverse_htransform_b() by direct call to vp8_ihtllm_c().
Change-Id: I55ee7566341b04d7e7340fdab95189f82231a792
2012-10-14 08:04:05 -07:00
Jim Bankoski
f9d5f86643 Revert "removed the recon. rtcd invoke macro code"
This reverts commit 2113a83157
2012-10-13 20:29:04 -07:00
Jim Bankoski
2113a83157 removed the recon. rtcd invoke macro code
Code clean up - removed rtcd

Change-Id: Id963ecf53c370b1d99484ef18d6befeed7e0c748
2012-10-13 18:49:44 -07:00
Adrian Grange
6e3c7849f7 Merge "Remove reverting of tx-select if only a single txfm-size is used." into experimental 2012-10-12 15:08:24 -07:00
Yaowu Xu
707e6c301e removed the dependency cross key frame boundary
This allowed decoding from any key frame after skipping the frames
prior.

Change-Id: I096fccad5346d75ae50a017c94eb8d772a7e8b00
2012-10-12 12:25:21 -07:00
Yaowu Xu
f6022327f1 Merge "added the ablility to skip first n frames for vpxdec" into experimental 2012-10-12 12:23:18 -07:00
Ronald S. Bultje
5a4ea8bea6 Remove reverting of tx-select if only a single txfm-size is used.
Entropy coding takes care of this anyway, and this causes changes to
the txfm size assigned to skip blocks, which can affect the loopfilter
output, thus causing encoder/decoding mismatches.

Change-Id: I591a8d8a4758a507986b751a9f83e6d76e406998
2012-10-12 11:44:15 -07:00
Ronald S. Bultje
0dac290106 Remove CONFIG_TX16X16, since the experiment was merged.
Change-Id: Ib74824c824f7ebb279e7df8eb32440d4d65fbd79
2012-10-12 11:06:55 -07:00
John Koleszar
17fd972aea consolidate update_mb_segmentation_map data
The update_mb_segmentation_map flag was being signalled earlier than
other data dependent on that flag. Consolidate this data so it's
parsed within the same if-scope as the flag is originally parsed in.

Change-Id: I10e90b4f511856445ef75a85a44ff441e1e5e672
2012-10-12 07:12:59 -07:00
Yaowu Xu
c394ffc603 added the ablility to skip first n frames for vpxdec
Change-Id: Id7d1f25078be92dd6cda246738ad6fb50579f555
2012-10-11 15:18:30 -07:00
Ronald S. Bultje
3121497041 Add encoder/decoder mismatch information to internal stats file.
Change-Id: Ibb6ba26e8718d3af27553ca59443a8c6aec7749d
2012-10-11 10:13:48 -07:00
John Koleszar
9da8a34437 Merge "Add option to disable documentation" 2012-10-11 09:55:06 -07:00
Ronald S. Bultje
f39b0f192f Use transform-size selection for i8x8_pred also.
Change-Id: Iecb282fc89f9b5145ef31c5eda294ad42bc32a5d
2012-10-11 09:26:00 -07:00
Yunqing Wang
52bddd44c0 Clean up error return code in alloccommon.c
Clean up the duplicate code as Pascal suggested.

Change-Id: I685fcbb488502e969f6cb73a46db3ea79b90910d
2012-10-11 08:46:23 -07:00
Yunqing Wang
f6886c4b93 post-proc: fix 0 or negative threshold handling
If the threshold(limits) <= 0, skipped filtering and copied the
frame directly. Also, fixed memory allocation checking.

Change-Id: If3d79d5b2bcb71b9777e6eb5cba1384585131e22
2012-10-10 18:36:26 -07:00
Deb Mukherjee
a7333b0a5b Merge of the TX_16X16 experiment
Change-Id: I22aa803ffff330622cdb77277e7b196a9766f882
2012-10-10 17:05:54 -07:00
John Koleszar
47dcdf11b9 rtcd: merge rtcd.c from master
Pick up changes to multithreading and once() implementations.

Change-Id: I4a98df6b714f3208643798e0e7f74e373a7931e3
2012-10-10 12:30:16 -07:00
Johann
ec658125b0 Add option to disable documentation
Documentation is typically auto-detected by checking for php and
doxygen. Add an option to explicitly disable it.

Remove toggle keywords from libraries, examples, documentation and
unit tests. They were not consistent with the default status.

Change-Id: I21049675ccfd8e58ac612cd058641b197db5c0eb
2012-10-10 09:19:26 -07:00
Scott LaVarnway
239b6a8f30 Merge "Removing dr[16] from VP8D_COMP" into experimental 2012-10-10 09:08:03 -07:00
John Koleszar
9581bf46dc Merge "write_kfmodes: use update_skip_probs()" into experimental 2012-10-10 08:49:50 -07:00
Paul Wilkins
a2b4a560b4 Merge "convert copy16x16 to rtcd" into experimental 2012-10-10 05:45:19 -07:00
Jim Bankoski
89f060e88a convert copy16x16 to rtcd
Convert copy16x16 from invoke to rtcd.  The first in a long
string of converts.

Change-Id: I296b0aa32f40e9fb649f7a3cb914a4e5300cad63
2012-10-09 17:09:08 -07:00
Scott LaVarnway
f56d0679f3 Removing dr[16] from VP8D_COMP
Currently not used.  Also using this as a test commit into the
experimental branch.

Change-Id: I68c479461ae02f1c7a7f75fa02d1fc0db84bf198
2012-10-09 15:54:32 -07:00
John Koleszar
d94d2b75ea write_kfmodes: use update_skip_probs()
Use the common update_skip_probs() function rather than duplicating its
logic in write_kf_modes().

Change-Id: I2890a28f6907cb79ffe0fb21d20f0ef98b85cdd9
2012-10-09 15:36:00 -07:00
John Koleszar
d21070a538 multi-res: disable intra on forced ref frames
If a reference frame is forced because of low dissimilarity, then
shut off the search of intra modes. This change has mixed results. On
one clip (QVGA), it hurt quality by ~1.5% with negligible speed impact.
On another (VGA) it had negligible affect on quality, but a ~0.2% speed
impact.

Change-Id: Ic8b07648979d732f489de5f094957e140f84d2eb
2012-10-09 10:25:01 -07:00
John Koleszar
81fd7ac589 Merge "multi-res: add parent_ref_valid flag" 2012-10-09 10:24:37 -07:00
John Koleszar
4de7aed6fb multi-res: add parent_ref_valid flag
Rather than overloading the parent_ref_frame value to shut off the
search in some cases, add a new validity flag. This cleans up some
of the duplicated mr_encoder_id && mr_low_res_mv_avail checks as
well, for readability.

Change-Id: Iddad93a27066c3d85ff2f25a361ac113b288ab7b
2012-10-09 09:29:45 -07:00
Yunqing Wang
8b698e8cb1 Merge "post-proc: deblock filter optimization" 2012-10-09 09:26:36 -07:00
Ronald S. Bultje
9ca3c8b2c4 Selectable transform size try 2.
Results: derf (vanilla or +hybridtx) +0.2% and (+hybrid16x16
or +tx16x16) +0.7%-0.8%; HD (vanilla or +hybridtx) +0.1-0.2%
and (+hybrid16x16 or +tx16x16) +1.4%, STD/HD (vanilla or +hybridtx)
about even, and (+hybrid16x16 or +tx16x16) +0.8-1.0%.

Change-Id: I03899e2f7a64e725a863f32e55366035ba77aa62
2012-10-09 09:18:21 -07:00
John Koleszar
107f14bcf9 Merge "multi-res: work around reference mismatch" 2012-10-08 15:48:25 -07:00
Yunqing Wang
4c53bacce4 post-proc: deblock filter optimization
1. Algorithm modification:
Instead of having same filter threshold for a whole frame, now we
allow the thresholds to be adjusted for each macroblock. In current
implementation, to avoid excessive blur on background as reported
in issue480(http://code.google.com/p/webm/issues/detail?id=480), we
reduce the thresholds for skipped macroblocks.

2. SSE2 optimization:
As started in issue479(http://code.google.com/p/webm/issues/detail?id=479),
the filter calculation was adjusted for better performance. The c
code was also modified accordingly. This made the deblock filter
2x faster, and the decoder was 1.2x faster overall.

Next, the demacroblock filter will be modified similarly.

Change-Id: I05e54c3f580ccd427487d085096b3174f2ab7e86
2012-10-08 12:06:44 -07:00
John Koleszar
30d8ba541e multi-res: work around reference mismatch
In some situations, believed to be an interaction between temporal
scalability and dropped frames, the references available to an
encoder may not be the same references available to its parent.
Previously, the code tried to force the reference frame chosen by
the parent to be used on this frame, even if it was disabled. This
was preventing the pick mode loop from running even once, which led
to a crash.

Attempts to reproduce this bug locally were unsuccessful, so it is
still undetermined what the underlying cause of this issue is. In
the specific case that was failing, the application did not set
any flags which influenced the reference selection on that frame.
ref_frame_flags indicated that the golden frame was disabled,
believed to be because the last frame updated the last and golden
frames, so golden was shut off by default. It's not clear why this
wouldn't have also been true in the lower res encoder, ie, why the
lower res encoder decided to use and/or was allowed to use the
golden frame. We weren't able to debug into the non-crashing
lower res encoder as the crash couldn't be reproduced locally.

Change-Id: Ifb265253d26963ac2afde0e20cf6792788be6af7
2012-10-08 08:39:47 -07:00
Deb Mukherjee
54434bdba2 Merge "Mismatch bug-fix when transform expts are off" into experimental 2012-10-05 06:49:08 -07:00
Deb Mukherjee
105746c8fe Mismatch bug-fix when transform expts are off
A variety of issues related to tangling of various hybrid transform
experiments.

Change-Id: I84dac65ff513f8b024407760df55fffa95e198de
2012-10-05 05:30:00 -07:00
Paul Wilkins
81c6041922 Fix SIMD unsafe use of floating point.
This commit fixes unsafe simd / floating point interactions arising
from the current hybrid and 16x16 transform implementation.
These led to a raft of bugs and issues when the project was
built using VS2008 for Win32 though they did not show up with
the unix builds.

Gerrit makes a meal out of presenting the fix but all I have actually
done is indent the body of each function that uses floating point by
one level and bracket with emms instructions using  the function
vp8_clear_system_state(). See below.

function () {
  vp8_clear_system_state();
  {
  ... function body
  }
  vp8_clear_system_state();
}

This is almost certainly over the top in terms of number of emms
instructions but is a temporary measure pending implementation of
integer variants of each function to replace the floating point.

Limited testing suggests that this fixes the problems that arose for
Win32 VS2008 when the hybrid or 16x16 transforms were enabled.

Change-Id: I7c9a72bd79315246ed880578dec51e2b7c178442
2012-10-05 11:16:46 +01:00
Adrian Grange
55cff377dd Merge "Unit Test for Error Resilience Mode" 2012-10-04 17:33:55 -07:00
Ronald S. Bultje
1a89bc04e8 Add a unit test for CQ mode.
Change-Id: I66c391987eabc5ea0159bf4a2a4fd8e8e163872f
2012-10-04 16:38:21 -07:00
Adrian Grange
eb8e9f80c4 Merge "Added handler for PSNR packets to EncoderTest class" 2012-10-04 10:38:35 -07:00
Adrian Grange
85b27a1271 Merge "Add initialization and per frame flag members" 2012-10-04 10:37:38 -07:00
Adrian Grange
cc017ca8df Unit Test for Error Resilience Mode
This unit test compares the difference in quality with
error resilience enabled and disabled. The test runs
for all of the one-pass encoding modes.

The test ensures that the effect of turning on error
resilience makes less than a 10% difference in PSNR.

Further cases should be added to do a more comprehensive
test.

Change-Id: I1fc747fc78c9459bc6c74494f4b38308dbed0c32
2012-10-03 14:58:26 -07:00