platform/upstream/libvpx.git
13 years agoRemoved unnecessary MB_MODE_INFO copies
Scott LaVarnway [Thu, 12 Aug 2010 20:25:43 +0000 (16:25 -0400)]
Removed unnecessary MB_MODE_INFO copies

These copies occurred for each macroblock in the encoder and decoder.
Thetemp MB_MODE_INFO mbmi was removed from MACROBLOCKD.  As a result,
a large number compile errors had to be fixed.

Change-Id: I4cf0ffae3ce244f6db04a4c217d52dd256382cf3

13 years agoMerge "Finished vp8_sixtap_predict4x4_ssse3 function"
Scott LaVarnway [Wed, 11 Aug 2010 19:23:24 +0000 (12:23 -0700)]
Merge "Finished vp8_sixtap_predict4x4_ssse3 function"

13 years agocosmetics: add missing 2D array braces
John Koleszar [Mon, 9 Aug 2010 17:48:04 +0000 (13:48 -0400)]
cosmetics: add missing 2D array braces

Silences compile warning.

Change-Id: I4b207d97f8570fe29aa2710e4ce4f02e7e43b57a

13 years agoavoid negative array subscript warnings
John Koleszar [Mon, 9 Aug 2010 17:27:26 +0000 (13:27 -0400)]
avoid negative array subscript warnings

The mv_ref and sub_mv_ref token encodings are indexed from NEARESTMV
and LEFT4X4, respectively, rather than being zero-based like the
other token encodings.

Change-Id: I3699c3f84111209ecfb91097c4b900773e9a3ad5

13 years agoFinished vp8_sixtap_predict4x4_ssse3 function
Scott LaVarnway [Wed, 11 Aug 2010 17:49:00 +0000 (13:49 -0400)]
Finished vp8_sixtap_predict4x4_ssse3 function

Added vp8_filter_block1d4_h6_ssse3 and vp8_filter_block1d4_v6_ssse3
assembly routines.  Also removed unused assembly.

Change-Id: I01c1021835f2edda9da706822345f217087ca0d0

13 years agorename DETOK_[AL]
Johann [Wed, 11 Aug 2010 17:36:35 +0000 (13:36 -0400)]
rename DETOK_[AL]

everything else uses lowercase detok

Change-Id: I9671e2e90eb2961208dfa81c00b3accb5749ec04

13 years agoMoved gf_active code to encoder only
Scott LaVarnway [Wed, 11 Aug 2010 15:02:31 +0000 (11:02 -0400)]
Moved gf_active code to encoder only

The gf_active code is only used by the encoder, so it was moved from
common and decoder.

Change-Id: Iada15acd5b2b33ff70c34668ca87d4cfd0d05025

13 years agoRemoved duplicate functions
Yaowu Xu [Wed, 11 Aug 2010 04:45:34 +0000 (21:45 -0700)]
Removed duplicate functions

Change-Id: Ie587972ccefd3c762b8cdf8ef39345cd22924b9b

13 years agoNormalize quantizer's zero bin and rounding factors
Yaowu Xu [Wed, 11 Aug 2010 04:12:04 +0000 (21:12 -0700)]
Normalize quantizer's zero bin and rounding factors

This patch changes a few numbers in the two constant arrays
for quantizer's zerobin and rounding factors, in general to
make the sum of the two factors for any Q to be 128.  While
it might be beneficial to calibrate the two arrays for best
quantizer performance, it is not the purpose of this patch.
Normalizing the two arrays will enable quick optimization
of the current faster quantizer, i.e .zerobin check can be
removed.

Change-Id: If9abfd7929bf4b8e9ecd64a79d817c6728c820bd

13 years agoAdd trellis quantization.
Timothy B. Terriberry [Fri, 2 Jul 2010 21:35:53 +0000 (14:35 -0700)]
Add trellis quantization.

Replace the exponential search for optimal rounding during
 quantization with a linear Viterbi trellis and enable it
 by default when using --best.
Right now this operates on top of the output of the adaptive
 zero-bin quantizer in vp8_regular_quantize_b() and gives a small
 gain.
It can be tested as a replacement for that quantizer by
 enabling the call to vp8_strict_quantize_b(), which uses
 normal rounding and no zero bin offset.
Ultimately, the quantizer will have to become a function of lambda
 in order to take advantage of activity masking, since there is
 limited ability to change the quantization factor itself.
However, currently vp8_strict_quantize_b() plus the trellis
 quantizer (which is lambda-dependent) loses to
 vp8_regular_quantize_b() alone (which is not) on my test clip.

Patch Set 3:

Fix an issue related to the cost evaluation of successor
states when a coefficient is reduced to zero. With this
issue fixed, now the trellis search almost exactly matches
the exponential search.

Patch Set 2:

Overall, the goal of this patch set is to make "trellis"
search to produce encodings that match the exponential
search version. There are three main differences between
Patch Set 2 and 1:
a. Patch set 1 did not properly account for the scale of
2nd order error, so patch set 2 disable it all together
for 2nd blocks.
b. Patch set 1 was not consistent on when to enable the
the quantization optimization. Patch set 2 restore the
condition to be consistent.
c. Patch set 1 checks quantized level L-1, and L for any
input coefficient was quantized to L. Patch set 2 limits
the candidate coefficient to those that were rounded up
to L. It is worth noting here that a strategy to check
L and L+1 for coefficients that were truncated down to L
might work.

(a and b get trellis quant to basically match the exponential
search on all mid/low rate encodings on cif set, without
a, b, trellis quant can hurt the psnr by 0.2 to .3db at
200kbps for some cif clips)
(c gets trellis quant  to match the exponential search
to match at Q0 encoding, without c, trellis quant can be
1.5 to 2db lower for encodings with fixed Q at 0 on most
derf cif clips)

Change-Id: Ib1a043b665d75fbf00cb0257b7c18e90eebab95e

13 years agoAdded ssse3 version of sixtap filters
Scott LaVarnway [Tue, 10 Aug 2010 21:06:05 +0000 (17:06 -0400)]
Added ssse3 version of sixtap filters

Improved decoder performance by 9% for the clip used.

Change-Id: I8fc5609213b7bef10248372595dc85b29f9895b9

13 years agoFirst modification of multi-thread decoder
Yunqing Wang [Thu, 29 Jul 2010 20:24:26 +0000 (16:24 -0400)]
First modification of multi-thread decoder

This is the first modification of VP8 multi-thread decoder, which uses
same threads to decode macroblocks and then do loopfiltering for each
frame.

Inspired by Rob Clark, synchronization was done on every 8 macroblocks
instead of every macroblock to reduce lock contention.

Comparing with the original code, this implementation gave about 15%-
20% performance gain while decoding my test clips on a Core2 Quad
platform (Linux).

The work is not done yet.

Test on other platforms are needed.

Change-Id: Ice9ddb0b511af1359b9f71e65066143c04fef3b5

13 years agoMark loopfilter C functions as static
John Koleszar [Mon, 9 Aug 2010 13:33:00 +0000 (09:33 -0400)]
Mark loopfilter C functions as static

Clang defaults to C99 mode, and inline works differently in C99.
(gcc, on the other hand, defaults to a special gnu-style inlining,
which uses different syntax.)   Making the functions static makes sure
clang doesn't decide to discard a function because it's too large to
inline.

Thanks to eli.friedman for the patch.

Fixes http://code.google.com/p/webm/issues/detail?id=114

Change-Id: If3c1c3c176eb855a584a60007237283b0cc631a4

13 years agoMerge "Issue 150: Fixing linker warning in extend.c."
John Koleszar [Mon, 2 Aug 2010 16:35:05 +0000 (09:35 -0700)]
Merge "Issue 150: Fixing linker warning in extend.c."

13 years agoconfigure: support directories containing .o
John Koleszar [Mon, 2 Aug 2010 14:21:52 +0000 (10:21 -0400)]
configure: support directories containing .o

Fixes http://code.google.com/p/webm/issues/detail?id=96

The regex which postprocesses the gcc make-deps (-M) output was too
greedy and matching in the dependencies part of the rule rather than
the target only. The patch provided with the issue was not correct, as
it tried to match the .o at the end of the line, which isn't correct
at least for my GCC version. This patch matches word characters
instead of .*

Thanks to raimue and the MacPorts community for isolating this issue.

Change-Id: I28510da2252e03db910c017101d9db12e5945a27

13 years agonasm: avoid space before the :data symbol type.
Jan Kratochvil [Sat, 31 Jul 2010 15:12:31 +0000 (17:12 +0200)]
nasm: avoid space before the :data symbol type.

global label:data
           ^^

Provide nasm compatibility.  No binary change by this patch with yasm
on {x86_64,i686}-fedora13-linux-gnu.  Few longer opcodes with nasm on
{x86_64,i686}-fedora13-linux-gnu have been checked as safe.

Change-Id: I10f17eb1e4d4a718d4ebd1d0ccddc807c365e021

13 years agonasm: end labels with colon (':')
Jan Kratochvil [Sat, 31 Jul 2010 15:12:31 +0000 (17:12 +0200)]
nasm: end labels with colon (':')

Labels should end by colon (':'), nasm requires it.

Provide nasm compatibility.  No binary change by this patch with yasm
on {x86_64,i686}-fedora13-linux-gnu.  Few longer opcodes with nasm on
{x86_64,i686}-fedora13-linux-gnu have been checked as safe.

Change-Id: I0b2ec6f01afb061d92841887affb5ca0084f936f

13 years agonasm: use OWORD vs DQWORD
Jan Kratochvil [Sat, 31 Jul 2010 15:12:31 +0000 (17:12 +0200)]
nasm: use OWORD vs DQWORD

nasm knows only OWORD.  yasm knows both OWORD and DQWORD.

Provide nasm compatibility.  No binary change by this patch with yasm on
{x86_64,i686}-fedora13-linux-gnu.  Few longer opcodes with nasm on
{x86_64,i686}-fedora13-linux-gnu have been checked as safe.

Change-Id: I62151390089e90df9a7667822fa594ac20b00e78

13 years agoMerge "Replace pinsrw (SSE) with MMX instructions"
John Koleszar [Mon, 2 Aug 2010 13:16:26 +0000 (06:16 -0700)]
Merge "Replace pinsrw (SSE) with MMX instructions"

13 years agoReplace pinsrw (SSE) with MMX instructions
Philip Jägenstedt [Tue, 13 Jul 2010 09:43:51 +0000 (11:43 +0200)]
Replace pinsrw (SSE) with MMX instructions

Fixes http://code.google.com/p/webm/issues/detail?id=136

Change-Id: I5a3e294061644a1a9718e8ba4a39548ede25cc42

13 years agoapple: include proper mach primatives
John Koleszar [Thu, 29 Jul 2010 21:04:39 +0000 (17:04 -0400)]
apple: include proper mach primatives

Fixes implicit declaration warning for 'mach_task_self'.

Patch courtesy of timeless at gmail.com

Change-Id: I9991dedd1ccfddc092eca86705ecbc3b764b799d

13 years agoMerge "Enable the switch between two versions of quantizer"
Yaowu Xu [Thu, 29 Jul 2010 14:17:40 +0000 (07:17 -0700)]
Merge "Enable the switch between two versions of quantizer"

13 years agoRemoved two unused global variables.
Frank Galligan [Wed, 28 Jul 2010 21:25:09 +0000 (17:25 -0400)]
Removed two unused global variables.

Removed the global variables vp8_an and vp8_cd. vp8_an was causing problems
because it was increasing the .bss by 1572864 bytes.

Change-Id: I6c12e294133c7fb6e770c0e4536d8287a5720a87

13 years agoEnable the switch between two versions of quantizer
Yaowu Xu [Wed, 28 Jul 2010 17:44:17 +0000 (10:44 -0700)]
Enable the switch between two versions of quantizer

To facilitate more testing related to quantizer and rate
control, the old version quantizer is added back. old and
new quantizer can be switched back and forth by define or
un-define the macro "EXACT_QUANT".

Change-Id: Ia77e687622421550f10e9d65a9884128a79a65ff

13 years agoconfigure: pass original arguments through to make dist
John Koleszar [Tue, 22 Jun 2010 13:53:23 +0000 (09:53 -0400)]
configure: pass original arguments through to make dist

When running configure automatically through the make dist target,
reuse the arguments passed to the original configure command.

Change-Id: I40e5b8384d6485a565b91e6d2356d5bc9c4c5928

13 years agoMerge "msvs: fix install of codec sources"
John Koleszar [Tue, 27 Jul 2010 18:21:42 +0000 (11:21 -0700)]
Merge "msvs: fix install of codec sources"

13 years agox86/sse2: disable asm quantizer
Johann [Tue, 27 Jul 2010 16:10:48 +0000 (12:10 -0400)]
x86/sse2: disable asm quantizer

follow up to Change I0e51492d: neon: disable asm quantizer

Now x86 doesn't segfault with --disable-runtime-cpu-detect and -p=2

Change-Id: I8ca127bb299198efebbcbd5a661e81788361933f

13 years agoFix build w/o RTCD
Johann [Tue, 27 Jul 2010 15:56:19 +0000 (11:56 -0400)]
Fix build w/o RTCD

So many places to update ...

Change-Id: Ide957b40cc833f99c2d1849acade6850fbf7585d

13 years agoneon: disable asm quantizer
John Koleszar [Tue, 27 Jul 2010 15:12:21 +0000 (11:12 -0400)]
neon: disable asm quantizer

The assembly version of the quantizer has not been updated to match
the new exact quantizer introduced in commit e04e2935. That commit tried
to disable this code but missed the non-RTCD case.

Thanks to David Baker <david.baker at openmarket.com> for isolating the
issue and testing this fix.

Change-Id: I0e51492dc6f8e44d2c10b587427448bf94135c65

13 years agoMerge "update arm idct functions"
Fritz Koenig [Mon, 26 Jul 2010 13:05:39 +0000 (06:05 -0700)]
Merge "update arm idct functions"

13 years agoMerge changes I896fe6f9,I90d8b167
Fritz Koenig [Mon, 26 Jul 2010 13:05:30 +0000 (06:05 -0700)]
Merge changes I896fe6f9,I90d8b167

* changes:
  Change the x86 idct functions to do reconstruction at the same time
  Combine idct and reconstruction steps

13 years agoupdate arm idct functions
Johann [Fri, 23 Jul 2010 17:42:30 +0000 (13:42 -0400)]
update arm idct functions

Jeff Muizelaar posted some changes to the idct/reconstruction c code.
This is the equivalent update for the arm assembly.

This shows a good boost on v6, and a minor boost on neon.
Here are some numbers for highway in qcif, 2641 frames:
HEAD neon: ~161 fps
new neon:  ~162 fps
HEAD v6:   ~102 fps
new v6:    ~106 fps

The following functions have been updated for armv6 and neon:
vp8_dc_only_idct_add
vp8_dequant_idct_add
vp8_dequant_dc_idct_add

Conflicts:

vp8/decoder/arm/armv6/dequantdcidct_v6.asm
vp8/decoder/arm/armv6/dequantidct_v6.asm

Resolved by removing these files. When I rewrote the functions, I also
moved the files to dequant_dc_idct_v6.asm/dequant_idct_v6.asm

Change-Id: Ie3300df824d52474eca1a5134cf22d8b7809a5d4

13 years agoIssue 150: Fixing linker warning in extend.c.
Justin Lebar [Fri, 23 Jul 2010 23:42:25 +0000 (16:42 -0700)]
Issue 150: Fixing linker warning in extend.c.

13 years agoDon't dereference ctx->priv if it hasn't been setup correctly.
Fredrik Söderquist [Mon, 7 Jun 2010 16:24:41 +0000 (18:24 +0200)]
Don't dereference ctx->priv if it hasn't been setup correctly.

13 years agoOnly touch ctx->priv if vp8_mmap_alloc succeeded.
Fredrik Söderquist [Mon, 7 Jun 2010 16:20:47 +0000 (18:20 +0200)]
Only touch ctx->priv if vp8_mmap_alloc succeeded.

13 years agoChange the x86 idct functions to do reconstruction at the same time
Jeff Muizelaar [Thu, 3 Jun 2010 14:16:07 +0000 (10:16 -0400)]
Change the x86 idct functions to do reconstruction at the same time

Change-Id: I896fe6f9664e6849c7cee2cc6bb4e045eb42540f

13 years agoCombine idct and reconstruction steps
Jeff Muizelaar [Fri, 28 May 2010 18:28:12 +0000 (14:28 -0400)]
Combine idct and reconstruction steps

This moves the prediction step before the idct and combines the idct and
reconstruction steps into a single step. Combining them seems to give an
overall decoder performance improvement of about 1%.

Change-Id: I90d8b167ec70d79c7ba2ee484106a78b3d16e318

13 years agoSwap alt/gold/new/last frame buffer ptrs instead of copying.
Fritz Koenig [Thu, 22 Jul 2010 12:07:32 +0000 (08:07 -0400)]
Swap alt/gold/new/last frame buffer ptrs instead of copying.

At the end of the decode, frame buffers were being copied.
The frames are not updated after the copy, they are just
for reference on later frames.  This change allows multiple
references to the same frame buffer instead of copying it.

Changes needed to be made to the encoder to handle this.  The
encoder is still doing frame buffer copies in similar places
where pointer reference could be done.

Change-Id: I7c38be4d23979cc49b5f17241ca3a78703803e66

13 years agoMerge commit 'refs/changes/51/351/1' of ssh://review.webmproject.org:29418/libvpx...
Paul Wilkins [Fri, 23 Jul 2010 16:45:26 +0000 (17:45 +0100)]
Merge commit 'refs/changes/51/351/1' of ssh://review.webmproject.org:29418/libvpx into KfRateBugMerged

13 years agoMerge "Make the quantizer exact."
Yaowu Xu [Fri, 23 Jul 2010 16:26:26 +0000 (09:26 -0700)]
Merge "Make the quantizer exact."

13 years agoRate control bug with long key frame interval.
Paul Wilkins [Fri, 23 Jul 2010 16:01:12 +0000 (17:01 +0100)]
Rate control bug with long key frame interval.

In two pass encodes, the calculation of the number of bits
allocated to a KF group had the potential to overflow for high data
rates if the interval is very long.

We observed the problem in one test clip where there was one
section where there was an 8000 frame gap between key frames.

Change-Id: Ic48eb86271775d7573b4afd166b567b64f25b787

13 years agoMake the quantizer exact.
Timothy B. Terriberry [Tue, 29 Jun 2010 00:15:09 +0000 (17:15 -0700)]
Make the quantizer exact.

This replaces the approximate division-by-multiplication in the
 quantizer with an exact one that costs just one add and one
 shift extra.
The asm versions have not been updated in this patch, and thus
 have been disabled, since the new method requires different
 multipliers which are not compatible with the old method.

Change-Id: I53ac887af0f969d906e464c88b1f4be69c6b1206

13 years ago80 character line length on Arnr LUT
Paul Wilkins [Fri, 23 Jul 2010 15:47:54 +0000 (16:47 +0100)]
80 character line length on Arnr LUT

Tweaked table to fit to 80 characters.

Change-Id: Ie6ba80e0b31b33e23d2bf78599abe223369fcefb

13 years agoRemove CONFIG_NEW_TOKENS files.
Fritz Koenig [Thu, 22 Jul 2010 13:46:54 +0000 (09:46 -0400)]
Remove CONFIG_NEW_TOKENS files.

These files were out of date and no longer maintained.
Token decoding has implemented the no-crash code which
is incompatible with this arm assembly code.

Change-Id: Ibf729886c56fca48181af60b44bda896c30023fc

13 years agomsvs: fix install of codec sources
John Koleszar [Tue, 22 Jun 2010 12:44:48 +0000 (08:44 -0400)]
msvs: fix install of codec sources

The libs.mk file must be installed for the vpx.vcproj file to be
generated. It was being installed, but not in the src/ directory as
expected.

Also missed include files yasm.rules, quantize_x86.h

Change-Id: Ic1a6f836e953bfc954d6e42a18c102a0114821eb

13 years agoChange devenv.com command line.
Tom Finegan [Thu, 22 Jul 2010 21:51:17 +0000 (17:51 -0400)]
Change devenv.com command line.

Change /build to -build to avoid problems when builds are run within
msys bash shells.

Change-Id: Ie68d72f702adad00d99be8a01c7a388c3af7657d

14 years agoAdd vs9 targets.
Tom Finegan [Thu, 22 Jul 2010 17:34:25 +0000 (13:34 -0400)]
Add vs9 targets.

Add targets x86-win32-vs9 and x86_64-win64-vs9 for support of Visual
Studio 2008-- this removes the need to convert the vs8 projects before
using them within the IDE.

Change-Id: Idb83e2ae701e07d98db1be71638280a493d770a2

14 years agoMerge "limit range checking code for L[k] to CONFIG_DEBUG. patch by timeless@gmail...
Johann [Wed, 21 Jul 2010 19:59:39 +0000 (12:59 -0700)]
Merge "limit range checking code for L[k] to CONFIG_DEBUG. patch by timeless@gmail.com"

14 years agoMerge "Improve the accuracy of forward walsh-hadamard transform"
Yaowu Xu [Mon, 19 Jul 2010 14:50:26 +0000 (07:50 -0700)]
Merge "Improve the accuracy of forward walsh-hadamard transform"

14 years agoARNR Lookup Table.
Paul Wilkins [Mon, 19 Jul 2010 12:28:34 +0000 (13:28 +0100)]
ARNR Lookup Table.

Change submitted for Adrian Grange. Convert threshold
calculation in ARNR filter to a lookup table.

Change-Id: I12a4bbb96b9ce6231ce2a6ecc2d295610d49e7ec

14 years agoParameter limit change.
Paul Wilkins [Mon, 19 Jul 2010 10:32:09 +0000 (11:32 +0100)]
Parameter limit change.

Change maximum ARNR filter width to 15.

Change-Id: I3b72450ea08e96287445ec18810630ee2292954c

14 years agoRate control fix for ARNR filtered frames.
Paul Wilkins [Mon, 19 Jul 2010 13:10:07 +0000 (14:10 +0100)]
Rate control fix for ARNR filtered frames.

Previously we had assumed that it was necessary to give a full frame's
bit allocation to the alt ref frame if it has been created through temporal
filtering. This is not the case. The active max quantizer control
insures that sufficient bits are allocated if needed and allocating a
full frame's worth of bits creates an excessive overhead for the ARF.

Change-Id: I83c95ed7bc7ce0e53ccae6ff32db5a97f145937a

14 years agoFix: Incorrect 'cols' calculation in temporal filter.
Paul Wilkins [Fri, 16 Jul 2010 14:57:17 +0000 (15:57 +0100)]
Fix: Incorrect 'cols' calculation in temporal filter.

Change-Id: I37f10fbe4fbb505c1d34980a59af3e817c287e22

14 years agolimit range checking code for L[k] to CONFIG_DEBUG. patch by timeless@gmail.com
Michael Kohler [Mon, 12 Jul 2010 16:41:45 +0000 (18:41 +0200)]
limit range checking code for L[k] to CONFIG_DEBUG. patch by timeless@gmail.com

14 years agomsvs: disable CRT deprecation warnings
John Koleszar [Tue, 22 Jun 2010 13:45:43 +0000 (09:45 -0400)]
msvs: disable CRT deprecation warnings

Disables the warnings produced for so-called insecure standard C
functions.

Change-Id: I0e6f448e27f899a0eaefc1151185945fbe15718e

14 years agoMerge "Fix misspelled "paramter" in vpx_codec_internal.h" to "parameter"."
John Koleszar [Wed, 7 Jul 2010 23:57:37 +0000 (16:57 -0700)]
Merge "Fix misspelled "paramter" in vpx_codec_internal.h" to "parameter"."

14 years agoMerge "Fix misspelled "skiped" in onyxc_int.h to "skipped"."
John Koleszar [Wed, 7 Jul 2010 23:57:08 +0000 (16:57 -0700)]
Merge "Fix misspelled "skiped" in onyxc_int.h to "skipped"."

14 years agoFix a compiling error on armv6
Yaowu Xu [Wed, 7 Jul 2010 17:26:30 +0000 (10:26 -0700)]
Fix a compiling error on armv6

The issue was caused by a bad merge in Change I5559d1e8

Change-Id: I6563f652bc1500202de361f8f51d11cc6ddf3331

14 years agoFix misspelled "paramter" in vpx_codec_internal.h" to "parameter".
Michael Kohler [Wed, 7 Jul 2010 17:49:58 +0000 (19:49 +0200)]
Fix misspelled "paramter" in vpx_codec_internal.h" to "parameter".

Signed-off-by: Michael Kohler <michaelkohler@live.com>
14 years agoFix misspelled "skiped" in onyxc_int.h to "skipped".
Michael Kohler [Wed, 7 Jul 2010 17:48:12 +0000 (19:48 +0200)]
Fix misspelled "skiped" in onyxc_int.h to "skipped".

Signed-off-by: Michael Kohler <michaelkohler@live.com>
14 years agoFix bug in 1st pass motion compensation
Adrian Grange [Thu, 1 Jul 2010 13:17:04 +0000 (14:17 +0100)]
Fix bug in 1st pass motion compensation

In the case where the best reference mv is not (0,0) a secondary
search is carried out centered on (0,0). However, rather than
sending tmp_err into the search function, motion_error was
inadvertently passed.

As a result tmp_err remains set at INT_MAX and the (0,0)-based
search result will never be selected, even if it is better.

Change-Id: I3c82b246c8c82ba887b9d3fb4c9e0a0f2fe5a76c

14 years agoMerge "Further adjustment of RD behaviour with Q and Zbin."
Paul Wilkins [Thu, 1 Jul 2010 08:53:40 +0000 (01:53 -0700)]
Merge "Further adjustment of RD behaviour with Q and Zbin."

14 years agoMerge "ivfenc: correct fixed kf interval, --disable-kf"
John Koleszar [Thu, 1 Jul 2010 00:19:26 +0000 (17:19 -0700)]
Merge "ivfenc: correct fixed kf interval, --disable-kf"

14 years agoMerge "ARM WinCE VS8 build update"
John Koleszar [Wed, 30 Jun 2010 15:01:02 +0000 (08:01 -0700)]
Merge "ARM WinCE VS8 build update"

14 years agoMerge "Remove INLINE/FORCEINLINE"
John Koleszar [Wed, 30 Jun 2010 14:59:39 +0000 (07:59 -0700)]
Merge "Remove INLINE/FORCEINLINE"

14 years agoUpdate loopfilter frame/filter/sharp info for multithread
John Koleszar [Wed, 30 Jun 2010 14:22:40 +0000 (10:22 -0400)]
Update loopfilter frame/filter/sharp info for multithread

Change I9fd1a5a4 updated the multithreaded loopfilter to avoid
reinitializing several parameteres if they haven't changed from the
last frame, but the code to update the last frame's parameters wasn't
invoked in the multithreaded case.

Change-Id: Ia23d937af625c01dd739608e02d110f742b7e1f2

14 years agoMerge "Add loopfilter initialization fix in multithreading code"
Yunqing Wang [Wed, 30 Jun 2010 13:56:36 +0000 (06:56 -0700)]
Merge "Add loopfilter initialization fix in multithreading code"

14 years agoAdd loopfilter initialization fix in multithreading code
Yunqing Wang [Wed, 30 Jun 2010 13:42:39 +0000 (09:42 -0400)]
Add loopfilter initialization fix in multithreading code

Modified loopfilter initialization to avoid unnecessary operations.

Change-Id: I9fd1a5a49edc1cb8116c2a72a6908b1e437459ec

14 years agoMerge "Fixed buffer selection for UV in AltRef filtering"
Adrian Grange [Wed, 30 Jun 2010 09:43:47 +0000 (02:43 -0700)]
Merge "Fixed buffer selection for UV in AltRef filtering"

14 years agoImprove SSE2 loopfilter functions
Yunqing Wang [Fri, 25 Jun 2010 13:18:11 +0000 (09:18 -0400)]
Improve SSE2 loopfilter functions

Restructured and rewrote SSE2 loopfilter functions. Combined u and
v into one function to take advantage of SSE2 128-bit registers.
Tests on test clips showed a 4% decoder performance improvement on
Linux desktop.

Change-Id: Iccc6669f09e17f2224da715f7547d6f93b0a4987

14 years agoARM WinCE VS8 build update
James Zern [Tue, 29 Jun 2010 16:02:19 +0000 (12:02 -0400)]
ARM WinCE VS8 build update

The generated project is vpx.vcproj, change vpx_decoder references to
match. Remove .rules file dependency as it will be pulled from the
source tree.

Change-Id: I679db2748b37adae3bafd764dba8575fc3abde72

14 years agoFurther adjustment of RD behaviour with Q and Zbin.
Paul Wilkins [Tue, 29 Jun 2010 11:15:54 +0000 (12:15 +0100)]
Further adjustment of RD behaviour with Q and Zbin.

Following conversations with Tim T (Derf) I ran a large number of
tests comparing the existing polynomial expression with a simpler
^2 variant. Though the polynomial was sometimes a little better at
the extremes of Q it was possible to get close for most clips and
even a little better on some.

This code also changes the way the RD multiplier is calculated
when the ZBIN is extended to use a variant of the same ^2
expression.

I hope that this simpler expression will be easier to tune further
as we expand our test set and consider adjustments based on content.

Change-Id: I73b2564346e74d1332c33e2c1964ae093437456c

14 years agoImprove the accuracy of forward walsh-hadamard transform
Yaowu Xu [Tue, 29 Jun 2010 05:03:43 +0000 (22:03 -0700)]
Improve the accuracy of forward walsh-hadamard transform

Besides the slight improvement in round trip error. This
also fixes a sign bias in the forward transform, so the
round trip errors are evenly distributed between +1s and
-1s. The old bias seemed to work well with the dc sign bias
in old fdct,  which no longer exist in the improved fdct.

Change-Id: I8635e7be16c69e69a8669eca5438550d23089cef

14 years agoFixed buffer selection for UV in AltRef filtering
Adrian Grange [Mon, 28 Jun 2010 11:00:11 +0000 (12:00 +0100)]
Fixed buffer selection for UV in AltRef filtering

Corrected setting of "which_buffer" for U & V cases to match that
used for Y, i.e. to refer to the temporally most recent frame of
those to be filtered.

Change-Id: Idf94b287ef47a05f060da3e61134a0b616adcb6b

14 years agoAdded first-pass sse2 version of Yaowu's new fdct.
Scott LaVarnway [Thu, 24 Jun 2010 17:11:30 +0000 (13:11 -0400)]
Added first-pass sse2 version of Yaowu's new fdct.

Change-Id: Ib479210067510162879c368428b92690591120b2

14 years agoRedo the forward 4x4 dct
Yaowu Xu [Wed, 16 Jun 2010 19:52:18 +0000 (12:52 -0700)]
Redo the forward 4x4 dct

The new fdct lowers the round trip sum squared error for a
4x4 block ~0.12. or ~0.008/pixel. For reference, the old
matrix multiply version has average round trip error 1.46
for a 4x4 block.

Thanks to "derf" for his suggestions and references.

Change-Id: I5559d1e81d333b319404ab16b336b739f87afc79

14 years agovp8cx : bestsad declared and initialized incorrectly.
Fritz Koenig [Thu, 24 Jun 2010 18:30:48 +0000 (14:30 -0400)]
vp8cx : bestsad declared and initialized incorrectly.

bestsad needs to be a int and set to INT_MAX because at the end
of the function it is compared to INT_MAX to determine if there
was a match in the function.

Change-Id: Ie80e88e4c4bb4a1ff9446079b794d14d5a219788

14 years agovp8cx : bestsad declared and initialized incorrectly.
Fritz Koenig [Thu, 24 Jun 2010 16:18:23 +0000 (12:18 -0400)]
vp8cx : bestsad declared and initialized incorrectly.

bestsad should be an int initialized to INT_MAX.  The optimized
SAD function expects a signed value for bestsad to use for comparison
and early loop termination.  When no match is made, which is
determined by a comparison of bestsad to INT_MAX, INT_MAX is returned.

14 years agoRemove INLINE/FORCEINLINE
John Koleszar [Thu, 24 Jun 2010 13:02:48 +0000 (09:02 -0400)]
Remove INLINE/FORCEINLINE

These are mostly vestigial, it's up to the compiler to decide what
should be inlined, and this collided with certain Windows platform SDKs.

Change-Id: I80dd35de25eda7773156e355b5aef8f7e44e179b

14 years agoconfigure: remove postproc-generic
John Koleszar [Thu, 24 Jun 2010 12:51:00 +0000 (08:51 -0400)]
configure: remove postproc-generic

This option is vestigial and is unreferenced.

Change-Id: I8bd27cb674c263e9a86fb43244003a9b9df3ca9c

14 years agoivfenc: correct fixed kf interval, --disable-kf
John Koleszar [Thu, 24 Jun 2010 12:41:51 +0000 (08:41 -0400)]
ivfenc: correct fixed kf interval, --disable-kf

ivfenc was setting the VPX_KF_FIXED mode when the kf_min_dist and
kf_max_dist parameters were set to each other. This flag actually means
that keyframes are disabled, and that name was deprecated to avoid
confusion such as this. Instead, a new option is exposed for setting the
VPX_KF_DISABLED mode, and the intervals are passed through to the codec,
which will do automatic placement at a fixed interval as expected.

Change-Id: I15abbec5936f39d5901878b4bc154372fbc23a43

14 years agoMerge "Remove deprecated `svnstat' rule from Makefile"
John Koleszar [Mon, 21 Jun 2010 17:00:36 +0000 (10:00 -0700)]
Merge "Remove deprecated `svnstat' rule from Makefile"

14 years agoFix breakout thresh computation for golden & AltRef frames
agrange [Mon, 21 Jun 2010 12:44:42 +0000 (13:44 +0100)]
Fix breakout thresh computation for golden & AltRef frames

1. Unavailability of each reference frame type should be tested
independently,
2. Also, only the VP8_GOLD_FLAG needs to be tested before setting
golden frame specific thresholds, and only VP8_ALT_FLAG needs
testing before setting thresholds relevant to the AltRef frame.
(Raised by gbvalor, in response to Issue 47)

Change-Id: I6a06fc2a6592841d85422bc1661e33349bb6c3b8

14 years agoRemove deprecated `svnstat' rule from Makefile
Giuseppe Scrivano [Mon, 21 Jun 2010 15:15:04 +0000 (17:15 +0200)]
Remove deprecated `svnstat' rule from Makefile

14 years agoChanged unary operator from ! to ~
agrange [Fri, 18 Jun 2010 14:58:18 +0000 (15:58 +0100)]
Changed unary operator from ! to ~

Since the intent is
to reset the appropriate bit in ref_frame_flags not to
test a logic condition. Prior result would always have
been ref_frame_flags being set to 0.
(Issue reported by dgohman, issue 47)

Change-Id: I2c12502ed74c73cf38e98c9680e0249c29e16433

14 years agoMoved DOUBLE_DIVIDE_CHECK to denominator (was on numerator)
agrange [Fri, 18 Jun 2010 14:18:09 +0000 (15:18 +0100)]
Moved DOUBLE_DIVIDE_CHECK to denominator (was on numerator)

The DOUBLE_DIVIDE_CHECK macro prevents from divide by 0,
so must be on the denominator to work as intended.

Change-Id: Ie109242d52dbb9a2c4bc1e11890fa51b5f87ffc7

14 years agoFix a linker error on x86-64 Linux when not using a version script.
Timothy B. Terriberry [Fri, 18 Jun 2010 02:33:52 +0000 (19:33 -0700)]
Fix a linker error on x86-64 Linux when not using a version script.

If the version script produced by the libvpx build system is not
 used when linking a shared library on x86-64 Linux, the constant
 data in the subpel filters produces R_X86_64_32 relocation errors
 due to the use of wrt rip addressing instead of
 wrt rip wrt ..gotpcrel.
Instead of adding a new macro for this addressing mode, this patch
 sets the ELF visibility of these symbols to "hidden", which
 allows wrt rip addressing to work without a text relocation.
This allows building a shared library without using the provided
 build system or a separate version script.
Fixes http://code.google.com/p/webm/issues/detail?id=46

Change-Id: Ie108f9d9a4352e5af46938bf4750d2302c1b2dc2

14 years agovp8_block_error_xmm: remove unnecessary instructions
Jim Bankoski [Wed, 16 Jun 2010 16:36:53 +0000 (12:36 -0400)]
vp8_block_error_xmm: remove unnecessary instructions

Remove a couple instructions from this function which weren't
necessary for correct execution.

Change-Id: Ib649674f140689f7e5c1530c35686241688a3151

14 years agoMerge "cosmetics: trim trailing whitespace"
John Koleszar [Fri, 18 Jun 2010 17:26:16 +0000 (10:26 -0700)]
Merge "cosmetics: trim trailing whitespace"

14 years agoMerge "Add x86_64-linux-icc target to build VP8 with icc"
Yunqing Wang [Fri, 18 Jun 2010 17:25:26 +0000 (10:25 -0700)]
Merge "Add x86_64-linux-icc target to build VP8 with icc"

14 years agoAdd x86_64-linux-icc target to build VP8 with icc
Yunqing Wang [Thu, 17 Jun 2010 17:34:19 +0000 (13:34 -0400)]
Add x86_64-linux-icc target to build VP8 with icc

Add a target for icc.

Change-Id: Ia1db82373d9c7268848bbb65c9483d408b9d933f

14 years agocosmetics: trim trailing whitespace
John Koleszar [Fri, 18 Jun 2010 16:39:21 +0000 (12:39 -0400)]
cosmetics: trim trailing whitespace

When the license headers were updated, they accidentally contained
trailing whitespace, so unfortunately we have to touch all the files
again.

Change-Id: I236c05fade06589e417179c0444cb39b09e4200d

14 years agoMerge "Change bitreader to use a larger window."
John Koleszar [Fri, 18 Jun 2010 01:08:36 +0000 (18:08 -0700)]
Merge "Change bitreader to use a larger window."

14 years agoCHANGELOG: 0.9.1 v0.9.1
John Koleszar [Thu, 17 Jun 2010 13:07:33 +0000 (09:07 -0400)]
CHANGELOG: 0.9.1

Change-Id: Icca54b9d51becc49255193801762e1936a07aa2d

14 years agoUpdate AUTHORS
John Koleszar [Wed, 16 Jun 2010 19:44:07 +0000 (15:44 -0400)]
Update AUTHORS

Change-Id: I1c6a275278788dfdc630ed436d2c770acfcbd097

14 years agoGenerate AUTHORS file with a script
John Koleszar [Wed, 16 Jun 2010 19:43:09 +0000 (15:43 -0400)]
Generate AUTHORS file with a script

This information is in git, so it's better to use that as a source than
updating this file manually. This script can be run manually at release
time for now, or we can set up a cron job sometime in the future.

Change-Id: I0344135ceb9c04ed14e2e2d939a93194e35973db

14 years agoMerge "Avoid encoding garbage when ivfenc encounters an unsupported Y4M file."
John Koleszar [Wed, 16 Jun 2010 18:54:39 +0000 (11:54 -0700)]
Merge "Avoid encoding garbage when ivfenc encounters an unsupported Y4M file."

14 years agoMerge "gen_scalers: fix 64-bit integer promotion bug"
John Koleszar [Wed, 16 Jun 2010 18:54:10 +0000 (11:54 -0700)]
Merge "gen_scalers: fix 64-bit integer promotion bug"

14 years agoAvoid encoding garbage when ivfenc encounters an unsupported Y4M file.
Tom Finegan [Wed, 16 Jun 2010 17:24:55 +0000 (13:24 -0400)]
Avoid encoding garbage when ivfenc encounters an unsupported Y4M file.

This change stops ivfenc from treating unsupported Y4M files as raw
input.

For example, if given an interlaced Y4M file, ivfenc treated the input
as if it were raw data because the unsupported Y4M file case previously
fell through without being handled.

Change-Id: I06caa50f3448e6388741a77346daaebf77c277e1

14 years agogen_scalers: fix 64-bit integer promotion bug
John Koleszar [Wed, 16 Jun 2010 16:27:52 +0000 (12:27 -0400)]
gen_scalers: fix 64-bit integer promotion bug

i needs to be treated as signed to get the proper indexing on 64-bit
platforms. This behavior was accidentally reverted when fixing an
unsigned/signed comparison warning.

Change-Id: Ic306d609bdc8de94c8f8ba29c6e45c736101a82e