Commit Graph

3665 Commits

Author SHA1 Message Date
Paul Wilkins
ba30e7746e Explicit MV reference experiment.
Coding and costing of mv reference signal.

Issues in updating MV ref with COMPANDED_MVREF_THRESH
to be resolved. Ideally the MV precision should be defined based
on absolute MV magnitude not as now the MV ref magnitude.

Update to mv counts moved into bitstream.c because otherwise
if the motion reference is changed at the last minute the encoder
and decoder get out of step in terms of the counts used to update
entropy probs.

Code working on a few test clips but no results yet re benefit vs
signaling cost and no tuning of red loop to test lower cost alternatives
based on the available reference values.

Patch 3. Added check to make sure we don't pick a reference
that would give rise to an uncodeable / out of range residual.

Patch 6-7: Attempt to rebase. OK to submit but best to leave flag off for now.

Patch 9. Remove print no longer needed.

Change-Id: I1938c2ffe41afe6d3cf6ccc0cb2c5d404809a712
2012-10-26 13:35:02 +01:00
Ronald S. Bultje
6d465faa34 Extend edges correctly during actual frame encoding also.
Should fix B_PRED-related encoder/decoder mismatches.

Change-Id: I16f808dffd19094e02e8562ba58cc1016155ce93
2012-10-25 18:09:02 -07:00
Scott LaVarnway
ce811f87c4 Faster 8t filtering
Quickly modified the ssse3 sixtap filters to support eight taps.  For the test
clip used, a 23+% boost in decoder performance was seen.  We can
revisit later and improve further.

Change-Id: I5f59860459e80d6fa23e6cc0fd91296a969f5240
2012-10-25 17:24:50 -07:00
Johann
96e5939faf Use vp8_clear_system_state helper function
Change-Id: I4dd192c3297e31b8eadd108ca8d0934e58f502f7
2012-10-25 17:04:03 -07:00
Johann
6106b72eb6 variance.h uses defines in vpx_config.h
Change-Id: Ibd3e4425a3bf8aae8aa33b70da2b84e1cda8c07f
2012-10-25 16:09:17 -07:00
Debargha Mukherjee
47fb14743d Merge "Always extend macroblock edges in the decoder." into experimental 2012-10-25 13:52:29 -07:00
Ronald S. Bultje
403f6b5846 Always extend macroblock edges in the decoder.
This fixes edge extension if SB [0,1] doesn't use B_PRED but [1,1] does.

Change-Id: I48354a9dba0de16472938824f5e6db87ce61979f
2012-10-25 12:46:39 -07:00
Scott LaVarnway
d3465a5352 Added sse2 instrinsic version of vp8_sad3x16
1.6% boost in decoder performance for the clip used.

Change-Id: I91f3c4573fd3d10afbf18930f279af7ae2223e3a
2012-10-25 12:19:41 -07:00
Scott LaVarnway
be4e7c5f77 Merge "Added sse2 instrinsic version of vp8_sad16x3" into experimental 2012-10-25 12:19:26 -07:00
Scott LaVarnway
9ba2efd034 Added sse2 instrinsic version of vp8_sad16x3
3.7% boost in decoder performance for the clip used.

Change-Id: I74f28486a9352b472b36e21b5eaf30eff35e9199
2012-10-25 12:16:08 -07:00
Ronald S. Bultje
fbf2ac111e Fix 4x4 intra prediction on the edge of SB rows.
Change-Id: I87d571008c73f0a8514e0a864405aadb82fd1bc0
2012-10-25 12:05:58 -07:00
Ronald S. Bultje
2c4f616a61 Fix yet another typo in splitmv/tx_select code.
Change-Id: I6a28cc87af275fc267b3cc8d90d642dcc870c249
2012-10-25 09:17:47 -07:00
Ronald S. Bultje
b4cdcd6ea6 Generalize coefficient tokenizing.
Change-Id: Ie33f7d0f90d0e5862be975d676a700d06f79eec6
2012-10-25 09:14:21 -07:00
Ronald S. Bultje
cb9e6abf80 Generalize EOB token stuffing.
Change-Id: Ibb51f3f8c3575d4621890220b20887a13a46a04e
2012-10-24 16:59:00 -07:00
Ronald S. Bultje
ce9f61ec50 Merge "Fix typo in splitmv/tx_select code." into experimental 2012-10-24 15:21:05 -07:00
Ronald S. Bultje
29b6a45b88 Fix typo in splitmv/tx_select code.
Change-Id: I2823043634b0fa617c2715d63ff18595b7209287
2012-10-24 13:04:09 -07:00
John Koleszar
45b4832ffd Fix bad merge of coef_probs update
Stray CONFIG_HYBRIDTRANSFORM caused decode mismatch.

Change-Id: I1d77bad9b366f7a6ceb3cb45269ed5badb5c4c53
2012-10-24 12:59:22 -07:00
John Koleszar
226e55c17d coef_probs: remove duplicate read/update code
Refactor per-transform copy & paste into a common function
update_coef_probs_common() and read_coef_probs_common(). The dry-run and
bit-writing loops in the encoder are still obvious candidates to be made
common, but they start to diverge a bit in the next commit, so are left
as-is for now.

Change-Id: I896bd3f4a073a6296eab7e92463fef79d8c6c08c
2012-10-24 09:41:04 -07:00
John Koleszar
6baa2b47eb Merge "Fix "_FORTIFY_SOURCE" redefined warning" into experimental 2012-10-24 09:36:40 -07:00
Yunqing Wang
bc1d3cb90b Fix "_FORTIFY_SOURCE" redefined warning
On Ubuntu 12.04, we got the following warning message:
<command-line>:0:0: warning: "_FORTIFY_SOURCE" redefined
 [enabled by default]
<built-in>:0:0: note: this is the location of the previous definition

This was already fixed in VP8 configure file. Did the same change in
experimental branch to stop this warning.

Change-Id: Id162e5fd8841585ae806df6560b2f7536ea307c0
2012-10-24 09:22:10 -07:00
Yaowu Xu
f75448ed73 Merge "Fixed the MSVC compiling error with correct cast" into experimental 2012-10-23 14:31:38 -07:00
Scott LaVarnway
f8e9d0104b Fixed the MSVC compiling error with correct cast
Change-Id: Ia904f4ec72500d29f1361ce305d8f3231e592f47
2012-10-23 14:25:01 -07:00
pascal massimino
73d387dcd2 Merge "Change eob[] array type in splitmv RD loop to a regular integer." into experimental 2012-10-23 14:00:01 -07:00
Yaowu Xu
d3b7c850a4 Revert "make the instrinsic code build with MS compilers"
This reverts commit b0e3ca1261.

Change-Id: I9c5aa463461b187160ad01fbc1795ae4f5263b2c
2012-10-23 13:03:35 -07:00
Yaowu Xu
bf284cee80 Merge "changed to avoid code confusion" into experimental 2012-10-23 11:54:25 -07:00
Yaowu Xu
5d739f507e Merge "make the instrinsic code build with MS compilers" into experimental 2012-10-23 11:54:07 -07:00
John Koleszar
fd3078fd8f postproc_sse2: avoid reading off the end of the limits array
Rather than unconditionally reading in the next MB's limits, test
the loop exit condition first.

Change-Id: I105d1e92698fb5561aa87160816787604aed03a2
2012-10-23 10:59:05 -07:00
Scott LaVarnway
b0e3ca1261 make the instrinsic code build with MS compilers
to enable build under windows/MSVC

Change-Id: Ida41cc5b3c8d0fec9512c2f5c5feb64e07b44805
2012-10-23 10:52:11 -07:00
Ronald S. Bultje
6498516bb6 Change eob[] array type in splitmv RD loop to a regular integer.
Change-Id: I240d6b50069fd3f35cc4fed2f4507796f0ef25e9
2012-10-23 09:23:23 -07:00
Deb Mukherjee
5373119713 Merging in the Switchable interp experiment
There is a macro DEFAULT_INTERP_FILTER defined in encoder/onyx_if.c that
is set as EIGHTTAP for now - so SWITCHABLE is not really used. Ideally,
this should be SWITCHABLE but that would make the encoder quite a bit slower.
We will change the default filter to SWITCHABLE once we find a faster way to
search for switchable filters.

Change-Id: Iee91832cdc07e6e14108d9b543130fdd12fc9874
2012-10-23 08:50:52 -07:00
Ronald S. Bultje
f93d316e0c Merge "Change entropy context assignment style from *(x + y) = z to x[y] = z." into experimental 2012-10-22 22:04:28 -07:00
Deb Mukherjee
04d62a989b Merging in the TX_SELECT experiment
Change-Id: I0d306b0062be59bc785b65882691c956c8b5e7c8
2012-10-22 16:58:57 -07:00
Deb Mukherjee
78808ad9fb Merge of the newmventropy experiment
Removes the old mv encoding code.

Change-Id: I1026d48cc5ac15ccb776f98463e929254c3dc7da
2012-10-22 15:23:41 -07:00
John Koleszar
5ed84c2fdf Merge "postproc: allocate enough memory for limits buffer" 2012-10-22 15:09:33 -07:00
John Koleszar
861a6bbbfd postproc: allocate enough memory for limits buffer
The vp8_post_proc_down_and_across_mb_row_sse2() needs space for an
even number of macroblocks, as they are read two at a time for the
chroma planes. Round up the width during the allocation of
pp_limits_buffer to support this.

Change-Id: Ibfc10c7be290d961ab23ac3dde12a7bb96c12af0
2012-10-22 15:07:52 -07:00
Yunqing Wang
adaf77c075 Merge "Add unit test for decoder test_vector_test" 2012-10-22 14:26:53 -07:00
Ronald S. Bultje
95dcfb9dd6 Change entropy context assignment style from *(x + y) = z to x[y] = z.
Change-Id: Ibc4425bb6e01606751021e57c93106c365a2da21
2012-10-22 14:06:52 -07:00
Yaowu Xu
906c1b4bd9 changed to avoid code confusion
The previous double if and else code snippets were rather confusing.

Change-Id: Id1b6152fa0e471beb9b20407aa406e109c1471e3
2012-10-22 13:58:26 -07:00
Scott LaVarnway
12c1b180f8 Merge "Added rtcd support vp8_sad16x3 and vp8_sad3x16" into experimental 2012-10-22 13:57:03 -07:00
Yunqing Wang
15dffcfefa Add unit test for decoder test_vector_test
Got 61 test vectors from vp8-test-vectors.git
(http://git.chromium.org/gitweb/?p=webm/vp8-test-vectors.git)

Added decoder test vectors downloading in unit tests. Uploaded
the test vectors and their md5 files to WebM website.
  $ gsutil cp *.* gs://downloads.webmproject.org/test_data/libvpx

Added their sha1sum to the test/test-data.sha1 file.

In unit tests, download the test vectors to LIBVPX_TEST_DATA_PATH.

Test_vector_test goes through the test vectors, decodes them, and
compute the md5 checksums. The checksums are compared with the
expected md5 checksums to tell if the decoder decodes correctly.

Change-Id: Ia1e84f9347ddf1d4a02e056c0fee7d28dccfae15
2012-10-22 13:46:11 -07:00
Scott LaVarnway
d36ecb42da Added rtcd support vp8_sad16x3 and vp8_sad3x16
Change-Id: I5bca7b7a4b230082d36ac6fb84db84137ad177d7
2012-10-22 13:45:42 -07:00
Ronald S. Bultje
97096f5fa3 Merge changes I02e7f64a,Ide954b00,Idc8b5977 into experimental
* changes:
  Fix another typo in 4x4-transform-for-i8x8-intra-pred coeff contexts.
  8x8 transform support in splitmv.
  Use SPLITMV_PARTITIONING instead of a plain integer type.
2012-10-22 12:54:39 -07:00
Deb Mukherjee
7906ed091a Merge "Merging the hybrid transform experiments" into experimental 2012-10-22 12:18:46 -07:00
Deb Mukherjee
f10465634b Merging the hybrid transform experiments
Change-Id: I99f1982b30a630a9a070a8326d83b34a33cba14c
2012-10-22 11:55:29 -07:00
Ronald S. Bultje
f72fdf1c7f Fix another typo in 4x4-transform-for-i8x8-intra-pred coeff contexts.
Change-Id: I02e7f64a7c99f6c222b9ef21341b0e801d646810
2012-10-22 11:55:06 -07:00
Ronald S. Bultje
84ea002eb1 8x8 transform support in splitmv.
For splitmv, where partitioning is 8x16, 16x8 or 8x8, this patch
uses the 8x8 transform (instead of the 4x4) if txfm_mode is
ALLOW_8X8 or ALLOW_16X16. For TX_MODE_SELECT, splitmv can indicate
which of the 2 transform sizes (4x4 or 8x8) it wants to use.

Gains (with hybridtx4x4/8x8/16x16 and tx_select experiments
enabled) on derf: +0.9%, HD: +0.4%, STD/HD: +0.8% (SSIM or overall
PSNR, both metrics show similar improvements).

Change-Id: Ide954b000b415548ed92a7ac78e24f36e60fcf06
2012-10-22 11:49:00 -07:00
Scott LaVarnway
372e001d68 Merge "Re-enable specialized sse2 block loop filter functions" into experimental 2012-10-22 11:39:08 -07:00
Scott LaVarnway
e095785820 Merge "sse2 intrinsic version of vp8_mbloop_filter_vertical_edge()" into experimental 2012-10-22 11:38:37 -07:00
Scott LaVarnway
bb550d90f7 Merge "sse2 intrinsic version of vp8_mbloop_filter_horizontal_edge()" into experimental 2012-10-22 11:38:21 -07:00
Ronald S. Bultje
5a80e7a292 Use SPLITMV_PARTITIONING instead of a plain integer type.
This can be used to distinguish between 16x8, 8x16, 8x8 and 4x4
partitioning modes when choosing splitmv as a MB mode.

Change-Id: Idc8b59772e1a80ccc4ad44d63c5c2ec3fc061a3c
2012-10-22 11:25:48 -07:00