Commit Graph

1910 Commits

Author SHA1 Message Date
Christian Duvivier
5715c39cf8 Inline Intrinsic optimized Denoiser
Faster version of denoiser, cut cost by 1.7x for C path, by 3.3x for
SSE2 path.

Change-Id: I154786308550763bc0e3497e5fa5bfd1ce651beb
2012-05-30 14:31:22 -07:00
Alpha Lam
d7f26e13fe Fix windows build: obj_int_extract to extract numbrs from .rdata
The change in assembly offset files to define values as const int broke
Windows build, because the variables are stored in .rdata section instead
of .data section.

This CL changes the integer peeking from .data to .rdata.

Change-Id: I87e465ddcc78d39ec29f3720ea7df0ab807d5512
2012-05-30 11:22:21 -07:00
Stefan Holmer
d850034443 Added another denoising threshold for finding DC shifts.
Compares the sum of differences between the input block and the averaged
block. If they differ too much the block will not be filtered. Negligible
perfomance hit.

Change-Id: Ib1c31a265efd4d100b3abc4a1ea6675038c8ddde
2012-05-30 16:50:21 +02:00
Jim Bankoski
ffe79d61d4 Merge "fix denoiser for temporal patterns and rd" 2012-05-25 09:56:08 -07:00
Jim Bankoski
9ec20f85c4 boolcoder_test
Changed to google style rather than pseudo webm project style

Change-Id: I0e19d57342a1b27b818fe6a5ae9f6bb3710a122a
2012-05-25 09:07:32 -07:00
John Koleszar
caf0f14f84 Merge changes I231c062e,Idadc42c7
* changes:
  Add external resize tests
  Prevent external frame size changes in two-pass
2012-05-24 12:22:34 -07:00
John Koleszar
d708e7fbbe Merge "Fix another multithreaded encoder loopfilter race condition" 2012-05-24 09:40:48 -07:00
John Koleszar
d790bc1779 Merge "asm_*_offsets to define variables as constants" 2012-05-24 09:40:29 -07:00
John Koleszar
2fb29ff7f9 Add external resize tests
Adds a test that ensures the application is able to trigger frame size
changes via vpx_codec_enc_config_set()

Change-Id: I231c062e533d75c8d63c5f8a5544650117429a63
2012-05-24 09:38:39 -07:00
Jim Bankoski
57faddb7c5 fix denoiser for temporal patterns and rd
This extends the denoiser to work for temporally scalable
coding.

I believe this also fixes a very rare but really bad bug in the original
implementation.


Change-Id: I8b3593a8c54b86eb76f785af1970935f7d56262a
2012-05-24 07:44:03 -07:00
Alpha Lam
49f7f05f52 asm_*_offsets to define variables as constants
This change is to allow obj_int_extract to extract all integers
in the data segment. With the const keyword these variables are
forced into the .rodata segment even for zero variable value.

We had a problem before that zero valueed variables would get
assigned to BSS segment that fooled obj_int_extract to give
incorrect values.

Change-Id: Icd94f80a8ab356879894ca508bf132d20b865299
2012-05-23 21:40:55 -07:00
John Koleszar
5e39a8c16f Merge "Make libvpx Chromium build friendly" 2012-05-23 20:56:49 -07:00
Alpha Lam
0f7e4665ae Make libvpx Chromium build friendly
Add PRIVATE macro for adding private_extern directive for yasm
to hide global symbols. This is only enabled if -DCHROMIUM is used
with YASM.

Also fixed a small problem with	rtcd_defs.sh to guard TEMPORAL_DENOISING.

Change-Id: I9027fce3ebddcf20078293e4b86b396f21da7857
2012-05-23 18:15:05 -07:00
Attila Nagy
4890853010 Fix another multithreaded encoder loopfilter race condition
After a key frame encoding, the frame type could change while
filtering is still going on. Pass the frame type as parameter to the
loopfilter function and don't read it from common storage.

vp8cx_set_alt_lf_level has to be done before packing the stream.
Currently alt_lf_level is not used so there hasn't been any visible
problem here.

Change-Id: Ia114162158cd833c2b16e3b89303cc9c91f19165
2012-05-23 13:50:59 -07:00
John Koleszar
410ae576e7 Prevent external frame size changes in two-pass
The two-pass code does not support the case where the application
changes the frame size dynamically. Add this case to the validation
checks in the vpx_codec_enc_config_set() path.

Change-Id: Idadc42c7c3bd566ecdbce30d8dd720add097f992
2012-05-23 13:49:05 -07:00
John Koleszar
a419f0f232 Merge changes I38e93fe2,I6d6a0fb6,I51155833,If4c3e5d4,Ia2f40ef2
* changes:
  Add initial keyframe tests
  Move all tests to test/ directory
  Enable unit tests by default
  Build unit tests monolithically
  configure: initial support for CXX, CXXFLAGS variables
2012-05-23 13:47:48 -07:00
John Koleszar
cf0970157d Fix memory leak in vpx_codec_enc_config_set()
Resolution changes in calls to vpx_codec_enc_config_set() would cause
a memory leak due to failing to release the lookahead and alt ref
buffers.

Change-Id: I48392ea25e71fe2760d60cfde3fb3874598cc85f
2012-05-23 12:59:40 -07:00
Yunqing Wang
ad479a9b3d multi-res: modify memory allocation code
Reverted part of change in memory alllocation code, which ensures
that the function returns 0 and encoder works correctly when
CONFIG_MULTI_RES_ENCODING isn't turned on.

Change-Id: Id5d5e7f2c8bd9e961a6dca79d257e8185f0d592a
2012-05-23 13:40:24 -04:00
Attila Nagy
ea392d4714 Fix another multithreaded encoder loopfilter race condition
After a key frame encoding, the frame type could change while
filtering is still going on. Pass the frame type as parameter to the
loopfilter function and don't read it from common storage.

vp8cx_set_alt_lf_level has to be done before packing the stream.
Currently alt_lf_level is not used so there hasn't been any visible
problem here.

Change-Id: Ia114162158cd833c2b16e3b89303cc9c91f19165
2012-05-23 15:19:48 +03:00
John Koleszar
b9180fc049 Add initial keyframe tests
Implements a couple simple tests of the encoder API using the gtest
framework:

  TestDisableKeyframes
  TestForceKeyframe
  TestKeyframeMaxDistance

Change-Id: I38e93fe242fbeb30bb11b23ac12de8ddc291a28d
2012-05-22 15:08:11 -07:00
John Koleszar
2d225689d3 Move all tests to test/ directory
Consolodate the unit tests under vp8/ to the test/ directory

Change-Id: I6d6a0fb60f5e3874a4d6710e9e121dd3e81a93db
2012-05-22 15:00:10 -07:00
John Koleszar
2bf62c1dbb Enable unit tests by default
Build unit tests by default if there is a working C++ toolchain
available.

Change-Id: I511558339b332fadfde37ef01b2dbf2755f48f89
2012-05-22 15:00:06 -07:00
John Koleszar
e82d261d10 Build unit tests monolithically
Rework unit tests  to have a single executable rather than many, which
should avoid pollution of the visual studio project namespace, improve
build times, and make it easier to use the gtest test sharding system
when we get these going on the continuous build cluster.

Change-Id: If4c3e5d4b3515522869de6c89455c2a64697cca6
2012-05-22 14:37:30 -07:00
John Koleszar
8631c1b8a2 configure: initial support for CXX, CXXFLAGS variables
Use CXX rather than assuming g++ to invoke the compiler. Also introduce
separate CXXFLAGS, as certain CFLAGS we enable by default cause warnings
with g++.

Change-Id: Ia2f40ef27c93e45c971d070cc58bdcde9da2ac7c
2012-05-22 14:32:08 -07:00
Yunqing Wang
eb5b965b44 Merge "multi-res: force Key frame sychronization" 2012-05-22 08:00:12 -07:00
Johann
600875cd6a Merge "Be explicit about 'in-place'" 2012-05-21 15:01:20 -07:00
Jim Bankoski
0fe79aab19 Merge "Inline Intrinsic optimized Denoiser" 2012-05-21 13:30:19 -07:00
Christian Duvivier
38ddb426d0 Inline Intrinsic optimized Denoiser
Faster version of denoiser, cut cost by 1.7x for C path, by 3.3x for
SSE2 path.

Change-Id: I154786308550763bc0e3497e5fa5bfd1ce651beb
2012-05-21 07:54:20 -07:00
James Berry
c1b417c6ba Merge "bug fix: do not set noise sensitivity in vp8_scalable_patterns.c" 2012-05-21 07:36:54 -07:00
John Koleszar
282b58006b Merge "examples: use alignment > 1 w/vpx_img_alloc" 2012-05-18 20:39:50 -07:00
James Zern
1e1799c9cb examples: use alignment > 1 w/vpx_img_alloc
aligned buffers improve performace. this change brings vpxenc &
vp8_scalable_patterns in line with the other examples.

Change-Id: I4cf9f3e4728b901161905dd7ccb092e774ffb15f
2012-05-18 19:22:26 -07:00
James Berry
4853e5fb1b bug fix: do not set noise sensitivity in vp8_scalable_patterns.c
setting VP8E_SET_NOISE_SENSITIVITY not currently supported
for scalable patterns.

Change-Id: Ia7bd6a5fdd2551340ce993276cf70de2a44345b9
2012-05-18 17:04:24 -04:00
Yunqing Wang
65dd157c3c multi-res: force Key frame sychronization
In multi-resolution encoding, frame_type decision for each frame
is made by the lowest-resolution encoder. For all other higher-
resolution encoders, kf_mode is always set to VPX_KF_DISABLED,
and they are forced to use the same frame_type picked by the
lowest-resolution encoder.

Change-Id: Ic4d52ec65bbc012ca9c2d236210e28a295591eaf
2012-05-16 15:06:42 -04:00
John Koleszar
51fe9168d5 Merge "Fix missing param name in NEON scaler functions" 2012-05-14 12:39:23 -07:00
John Koleszar
eec30c891d Merge "fix warnings for building on win32" 2012-05-14 12:06:08 -07:00
Alexis Ballier
871bd23e4c Allow target autodetection to work when cross-compiling.
Allow CHOST to override the gcc -dumpmachine output. This allows to
use the target autodetection code when cross compiling by setting the
CHOST variable.

On Gentoo, we would like to support easy cross-compilation, and for
libvpx this would basically mean copying the code in
build/make/configure.sh to setup the right --target option. It seems a
lot easier to let it guess by itself.

Another option I considered was using CROSS-gcc instead but this would
not work for our multilib setups: They use gcc -m32 to build 32bits
binaries and gcc -m32 -dumpmachine will output the 64bits version,
which would then make libvpx wrongly believe it is building for a
64bits architecture.

Change-Id: I05a19be402228f749e23be7473ca53ae74fd2186
2012-05-14 11:23:03 -07:00
Scott Graham
92963df086 fix warnings for building on win32
Change-Id: If6e11ba3d681e831d7d98662c0abdd2ac16b3811
2012-05-11 12:36:50 -07:00
John Koleszar
44d35f7b25 Merge branch 'origin/eider' into master
Conflicts:
	vp8/common/entropymode.c
	vp8/common/entropymode.h
	vp8/encoder/encodeframe.c
	vp8/vp8_cx_iface.c

Change-Id: I708b0f30449b9502b382e47b745d56f5ed2ce265
2012-05-11 10:51:05 -07:00
Jim Bankoski
c7ca380832 Merge "vp8e - boolcoder unit test" 2012-05-09 15:41:23 -07:00
John Koleszar
297dc90255 Update CHANGELOG for v1.1.0 (Eider) release
Change-Id: Ic429556e76bcc4f96a34e18835a153b07fe410a2
2012-05-08 16:14:00 -07:00
John Koleszar
499510f2be Update AUTHORS
Change-Id: Id9dd1802ae597a39eb46d2cbe531d5b04bd0a1c5
2012-05-08 15:01:35 -07:00
John Koleszar
2d6cb342c2 Update .mailmap
Change-Id: If3a9958f6e2a466c631972316c3a49c253cbd9c2
2012-05-08 15:01:35 -07:00
John Koleszar
c8f4c187b3 Use consistent range for VP8E_SET_NOISE_SENSITIVITY
Accept the same range of inputs for the VP8E_SET_NOISE_SENSITIVITY
control, regardless of whether temporal denoising is enabled or not.
This is important for maintaining compatibility with existing
applications.

Change-Id: I94cd4bb09bf7c803516701a394cf1a63bfec0097
2012-05-08 15:01:24 -07:00
Jim Bankoski
9851486b2f vp8e - boolcoder unit test
Adds a unit test to the boolcoder that tests encoding 
and decoding thousands of different bits, with different 
probabilities in different patterns.   

Code borrowed from the webp project - and its committers.

Change-Id: Icabbb884d57e666496490c961dd29b246144ab3e
2012-05-08 07:29:19 -07:00
Johann
6f3d7ecc66 Be explicit about 'in-place'
On darwin, sed expects an argument for '-i'. Make it empty.

Change-Id: I5dc6cdf667a754b2624f1767eb6e8025df48e308
2012-05-04 17:45:14 -07:00
John Koleszar
14d827f44e fix vp8_ namespace issues
Make functions only referenced from one translation unit static. Other
symbols with extern linkage get a vp8/vpx prefix.

Change-Id: I928c7e0d0d36e89ac78cb54ff8bb28748727834f
2012-05-04 12:24:04 -07:00
John Koleszar
22f56b93e5 Formalize encodeframe.c forward delclarations
Change If4321cc5 fixed a bug caused by forward declarations not being
kept in sync across C files, resulting in a function call with the
wrong arguments. The commit moves the affected function declarations
into a header file, along with the other symbols from encodeframe.c
that were being sloppily shared.

Change-Id: I76a7b4c66d4fe175f9cbef7e52148655e4bb9ba1
2012-05-04 10:44:47 -07:00
Attila Nagy
3e32105d63 Fix multi-resolution threaded encoding
mb_row and mb_col was not passed to vp8cx_encode_inter_macroblock in
threaded encoding.

Change-Id: If4321cc59bf91e991aa31e772f882ed5f2bbb201
2012-05-04 10:44:46 -07:00
John Koleszar
2bf8fb5889 remove deprecated pre-v0.9.0 API
Remove a bunch of compatibility code dating back to before the initial
libvpx release.

Change-Id: Ie50b81e7d665955bec3d692cd6521c9583e85ca3
2012-05-04 10:44:46 -07:00
Attila Nagy
f039a85fd8 Make global data const
Removes all runtime initialization of global data. This commit is a
squashed version of the following series cherry-picked from master.
This is necessary because of a change that was merged to the tester
that depends on the scaler being moved to the RTCD framework, which
is a worthwhile thing to include in Eider anyway.

  - a91b42f02 Makes all global data in entropy.c const
  - b35a0db0e Makes all global data in tokenize.c const
  - 441cac8ea Makes all mode token tables const
  - 5948a0210 Ports vpx_xcaler to new RTCD method
  - 317d4244c Makes all mode token tables const part 2

Change-Id: Ifeaea24df2b731e7c509fa6c6ef6891a374afc26
2012-05-04 10:42:21 -07:00