summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2010-08-11cosmetics: add missing 2D array bracesJohn Koleszar
Silences compile warning. Change-Id: I4b207d97f8570fe29aa2710e4ce4f02e7e43b57a
2010-08-11avoid negative array subscript warningsJohn Koleszar
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
2010-08-11rename DETOK_[AL]Johann
everything else uses lowercase detok Change-Id: I9671e2e90eb2961208dfa81c00b3accb5749ec04
2010-08-11Moved gf_active code to encoder onlyScott LaVarnway
The gf_active code is only used by the encoder, so it was moved from common and decoder. Change-Id: Iada15acd5b2b33ff70c34668ca87d4cfd0d05025
2010-08-10Removed duplicate functionsYaowu Xu
Change-Id: Ie587972ccefd3c762b8cdf8ef39345cd22924b9b
2010-08-10Normalize quantizer's zero bin and rounding factorsYaowu Xu
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
2010-08-10Add trellis quantization.Timothy B. Terriberry
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
2010-08-10Added ssse3 version of sixtap filtersScott LaVarnway
Improved decoder performance by 9% for the clip used. Change-Id: I8fc5609213b7bef10248372595dc85b29f9895b9
2010-08-10First modification of multi-thread decoderYunqing Wang
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
2010-08-09Mark loopfilter C functions as staticJohn Koleszar
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
2010-08-02Merge "Issue 150: Fixing linker warning in extend.c."John Koleszar
2010-08-02configure: support directories containing .oJohn Koleszar
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
2010-08-02nasm: avoid space before the :data symbol type.Jan Kratochvil
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
2010-08-02nasm: end labels with colon (':')Jan Kratochvil
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
2010-08-02nasm: use OWORD vs DQWORDJan Kratochvil
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
2010-08-02Merge "Replace pinsrw (SSE) with MMX instructions"John Koleszar
2010-08-02Replace pinsrw (SSE) with MMX instructionsPhilip Jägenstedt
Fixes http://code.google.com/p/webm/issues/detail?id=136 Change-Id: I5a3e294061644a1a9718e8ba4a39548ede25cc42
2010-07-29apple: include proper mach primativesJohn Koleszar
Fixes implicit declaration warning for 'mach_task_self'. Patch courtesy of timeless at gmail.com Change-Id: I9991dedd1ccfddc092eca86705ecbc3b764b799d
2010-07-29Merge "Enable the switch between two versions of quantizer"Yaowu Xu
2010-07-28Removed two unused global variables.Frank Galligan
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
2010-07-28Enable the switch between two versions of quantizerYaowu Xu
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
2010-07-27configure: pass original arguments through to make distJohn Koleszar
When running configure automatically through the make dist target, reuse the arguments passed to the original configure command. Change-Id: I40e5b8384d6485a565b91e6d2356d5bc9c4c5928
2010-07-27Merge "msvs: fix install of codec sources"John Koleszar
2010-07-27x86/sse2: disable asm quantizerJohann
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
2010-07-27Fix build w/o RTCDJohann
So many places to update ... Change-Id: Ide957b40cc833f99c2d1849acade6850fbf7585d
2010-07-27neon: disable asm quantizerJohn Koleszar
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
2010-07-26Merge "update arm idct functions"Fritz Koenig
2010-07-26Merge changes I896fe6f9,I90d8b167Fritz Koenig
* changes: Change the x86 idct functions to do reconstruction at the same time Combine idct and reconstruction steps
2010-07-26update arm idct functionsJohann
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
2010-07-23Issue 150: Fixing linker warning in extend.c.Justin Lebar
2010-07-23Don't dereference ctx->priv if it hasn't been setup correctly.Fredrik Söderquist
2010-07-23Only touch ctx->priv if vp8_mmap_alloc succeeded.Fredrik Söderquist
2010-07-23Change the x86 idct functions to do reconstruction at the same timeJeff Muizelaar
Change-Id: I896fe6f9664e6849c7cee2cc6bb4e045eb42540f
2010-07-23Combine idct and reconstruction stepsJeff Muizelaar
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
2010-07-23Swap alt/gold/new/last frame buffer ptrs instead of copying.Fritz Koenig
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
2010-07-23Merge commit 'refs/changes/51/351/1' of ↵Paul Wilkins
ssh://review.webmproject.org:29418/libvpx into KfRateBugMerged
2010-07-23Merge "Make the quantizer exact."Yaowu Xu
2010-07-23Rate control bug with long key frame interval.Paul Wilkins
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
2010-07-23Make the quantizer exact.Timothy B. Terriberry
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
2010-07-2380 character line length on Arnr LUTPaul Wilkins
Tweaked table to fit to 80 characters. Change-Id: Ie6ba80e0b31b33e23d2bf78599abe223369fcefb
2010-07-22Remove CONFIG_NEW_TOKENS files.Fritz Koenig
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
2010-07-22msvs: fix install of codec sourcesJohn Koleszar
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
2010-07-22Change devenv.com command line.Tom Finegan
Change /build to -build to avoid problems when builds are run within msys bash shells. Change-Id: Ie68d72f702adad00d99be8a01c7a388c3af7657d
2010-07-22Add vs9 targets.Tom Finegan
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
2010-07-21Merge "limit range checking code for L[k] to CONFIG_DEBUG. patch by ↵Johann
timeless@gmail.com"
2010-07-19Merge "Improve the accuracy of forward walsh-hadamard transform"Yaowu Xu
2010-07-19ARNR Lookup Table.Paul Wilkins
Change submitted for Adrian Grange. Convert threshold calculation in ARNR filter to a lookup table. Change-Id: I12a4bbb96b9ce6231ce2a6ecc2d295610d49e7ec
2010-07-19Parameter limit change.Paul Wilkins
Change maximum ARNR filter width to 15. Change-Id: I3b72450ea08e96287445ec18810630ee2292954c
2010-07-19Rate control fix for ARNR filtered frames.Paul Wilkins
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
2010-07-16Fix: Incorrect 'cols' calculation in temporal filter.Paul Wilkins
Change-Id: I37f10fbe4fbb505c1d34980a59af3e817c287e22