1759 Commits

Author SHA1 Message Date
Yaowu Xu
bb25083d65 Added the ability to accumulate coef stats across encodings
This commit added the ability to accumulate the coef stats across
different encodings using an intermediate binary stats files. The
accumulation happens only the binary stats file exists in current
directory. The encoder needs to be built with "ENTROPY_STATS" to
allow the output. The commit also fixed a few formating issues in
output stats file.

Change-Id: Ib1a41180aa554845cf51e4421a230b128a3a82b4
2012-06-12 14:41:51 -07:00
Paul Wilkins
36fe9735a9 Merge "Merge of further two pass rc clean up and adjustments." into experimental 2012-06-12 16:29:46 +00:00
Paul Wilkins
9b2c63e982 Merge "Key frame and GF sizing changes." into experimental 2012-06-12 16:19:13 +00:00
Paul Wilkins
7eb66d82ca Merge of further two pass rc clean up and adjustments.
Changes to calculation of  sr_coded_error to include 0,0 case.

Experimental use of sr_coded_error in calculating correction factor
for estimating the allowable Q range.

Reinstated some code needed for calculating section_intra_rating.

Add flash detection in calculation of KF boost

Increased tolerance in testing candidate key frames (needed with
longer motion search as this tends to slightly increase inter %.

Zbin changes for 8x8.

Other minor adjustments, refactoring and bug fixes.

Reinstated some motion break out clauses in boost loop
as their removal hurt a few 50fps  clips badly in the std set.
It may be possible to remove them again later if a better way
can be found of preventing overly long gf intervals.

Change-Id: Iee686d0c31072828bb1ccd2bc63f5f1c7c548ea2
2012-06-12 17:15:29 +01:00
Yunqing Wang
0ca0c4f6a0 Remove goldfreq in VP8_COMP
goldfreq can be replaced by DEFAULT_GF_INTERVAL.

Change-Id: I3659a9e7b9a6be9cb1952a1838e02c20d656e369
2012-06-12 11:57:26 -04:00
John Koleszar
0164a1cc5b Fix pedantic compiler warnings
Allows building the library with the gcc -pedantic option, for improved
portabilty. In particular, this commit removes usage of C99/C++ style
single-line comments and dynamic struct initializers. This is a
continuation of the work done in commit 97b766a46, which removed most
of these warnings for decode only builds.

Change-Id: Id453d9c1d9f44cc0381b10c3869fabb0184d5966
2012-06-11 15:14:58 -07:00
John Koleszar
52ec78be7d Fix bad merge
Change-Id: I45849dde0ee9b7e87fa32adb65ade8486bb66556
2012-06-11 12:24:14 -07:00
John Koleszar
71618e542c Merge "Reset Q for key frame when spatial resizing occurs." 2012-06-11 12:02:56 -07:00
Paul Wilkins
0cb4985b51 Key frame and GF sizing changes.
Changes to the equations for kf and gf minQ and to
the boost calculations for kg and gf

Change-Id: I312031c910e6a575334f49075c32f49a8dfff239
2012-06-08 10:49:22 +01:00
Yunqing Wang
53d92e61cc Fix decimation_count in drop_frame
Frame dropping decision is made by evaluating both current frame
and next frame's buffer_level. If both buffer_levels are less
than drop_mark, next frame is dropped. When frame dropping is
over, namely, buffer_level becomes normal again, we need to
reset decimation_count to 0.

Change-Id: Iae182612e61e0da367fbd43afdc90738d975d1a3
2012-06-07 14:47:37 -04:00
Yunqing Wang
9904c28f5b Remove unused code in drop_frame
Removed unused parameters and code related to drop_frame.

Change-Id: I594e050d49b1805c6f72abf06005ef624256bb57
2012-06-07 11:26:47 -04:00
Marco Paniconi
baedcedcbe Reset Q for key frame when spatial resizing occurs.
The logic for spatial resizing is done after the Q is selected for the
frame. This causes a problem that the Q we select for the (resized)
key frame may be based on a different resolution than the frame we
will encode.

This fix is to ensure that, when resize is on, the selected Q is still
based on the resolution of the frame to be encoded.

Change-Id: Ia49a9eac5f64e48d1c00dfc7ed4ce26fe84d3fa1
2012-06-06 15:18:18 -07:00
Johann
965d8686bb Remove extra enum
VP8_REFFRAME is the same as vpx_ref_frame_type

Change-Id: I63c2ddfb39f6ec87d1e5eb6a8852846464552b1b
2012-06-04 16:56:55 -07:00
Johann
c8a88a7642 Explicitly discard fwrite/fread return values
Using if(); triggers an empty body warning with clang

Change-Id: I0fa2ee676400a974b40f8eaafca9ae668107eebb
2012-06-04 15:50:44 -07:00
Adrian Grange
04fa2ecdf2 Fixed bug where invalid pointer is dereferenced
Variables m & mi were being dereferenced when they might
hold invalid values.

The fix is simply to move these dereferences to after the
point at which mb_row and mb_col are tested for validity.

Change-Id: Ib16561efa9792dc469759936189ea379d374ad20
2012-05-31 11:07:17 -07:00
Stefan Holmer
cab6ac16e0 Fixes a win build issue related to denoising.
Change-Id: I912384f526865089aa03ca8875591324e5c1c449
2012-05-31 07:37:14 -07:00
Stefan Holmer
b073e3cdd4 Fixes a clang linking error.
Change-Id: I1d2db53129dc6ec068093ad1e5fc0d94110473b3
2012-05-31 07:37:07 -07:00
Stefan Holmer
cd0bf0e407 Fixes a win build issue related to denoising.
Change-Id: I912384f526865089aa03ca8875591324e5c1c449
2012-05-31 15:44:28 +02:00
Stefan Holmer
0927a41139 Fixes a clang linking error.
Change-Id: I1d2db53129dc6ec068093ad1e5fc0d94110473b3
2012-05-31 10:52:20 +02:00
Stefan Holmer
dd6134b472 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 14:36:02 -07:00
Alpha Lam
fc2fc899ae 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-30 14:35:55 -07:00
Jim Bankoski
f78e5a04e6 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-30 14:32:04 -07:00
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
Paul Wilkins
b8c369053b Rate control fix.
This fix addresses some problems with very complex clips like
handling of flashes on clips like crew (which was made worse
by an earlier patch (derf and std-hd)).

Most clips a small effect but some between 1 & 2%

Derf +0.039, +0.211%
YT +0.042, +0.083%

Change-Id: I65fc7c13afc31482040068544dd65b8808f5cb4a
2012-05-30 09:53:52 -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
Paul Wilkins
09a9701272 Merge "fixed one more compiling issue with VC" into experimental 2012-05-29 10:06:49 +00:00
Paul Wilkins
f66747fe38 Remove "est_max_qcorrection_factor"
Removed the local scaling factor est_max_qcorrection_factor
and related code to simplify estimateq calculation (little effect
anyway)

Cap range of total correction factor.

Slight change to break out case to turn off arf.

Change-Id: I748187737ba93cfadf016f3dfdf8d2741934067f
2012-05-29 09:55:04 +01:00
Yaowu Xu
2722cfb4b8 fixed one more compiling issue with VC
One more compiling issue, only happened in Visual C under a specific
combination of experiments.

Change-Id: Iba0775dc0ea7342b556348a9cdf60a05a59e0241
2012-05-25 21:52:09 -07:00
Yaowu Xu
ea0e4f1743 fixed a number of compiling issues
the commit fixed a number of compiling issues when some epxeriments
are turned on at the same time.

Change-Id: Idb15b215e2d2a7d25f2707f99ef55a34e7301ce7
2012-05-25 10:55:47 -07:00
Jim Bankoski
ffe79d61d4 Merge "fix denoiser for temporal patterns and rd" 2012-05-25 09:56:08 -07:00
Paul Wilkins
289be52117 Merge "Experimental change to two pass prediction decay calculation." into experimental 2012-05-25 09:15:27 +00:00
John Koleszar
d708e7fbbe Merge "Fix another multithreaded encoder loopfilter race condition" 2012-05-24 09:40:48 -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
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
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
Yaowu Xu
e9818bb697 changed the way that default probs for 8x8 is set.
The commit changed how baseline 8x8 coefficient probabilities are
initialized, to be consistent with the initialization of baseline
4x4 coefficient probabilities.

The commit does not have any effect on compression.

Change-Id: Ifb3902b5dc0b0c2e6dc3aa5d4a6589d528e58355
2012-05-23 10:09:41 -07: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
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
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
Yunqing Wang
eb5b965b44 Merge "multi-res: force Key frame sychronization" 2012-05-22 08:00:12 -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
Paul Wilkins
6c8fb82c14 Merge "Further firstpass.c changes." into experimental 2012-05-18 15:43:58 +00:00
Paul Wilkins
f63894f691 Experimental change to two pass prediction decay calculation.
Remove dependency on amount and speed of motion as this
may not behave well across different image sizes.

Tweak impact of % inter.

Add in experimental adjustment based on relative quality of an
older second reference frame.

Cap range of decay values allowed.

Some small + effect on derf but -ve on yt & hd at this stage.

Change-Id: I390d6f6ebe67a2eb0b834980d0d4650124980d3e
2012-05-17 09:40:34 +01:00
Paul Wilkins
a29a4e2414 Merge "Move / re-factor some of boost calculation code." into experimental 2012-05-17 08:37:30 +00: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
Ronald S. Bultje
0b8a95a0b2 Rewrite reference frame costing in the RD loop.
I now see I didn't write a very long description, so let's do it
here then. We took a pretty big quality hit (0.1-0.2%) from my
recent fix of the inversion of arguments to vp8_cost_bit() in the
RD reference frame costing. I looked into it and basically the
costing prevented us from switching reference frames. This is of
course silly, since each frame codes its own prob_intra_coded, so
using last frame cost indications as a limiting factor can never
be right.

Here, I've rewritten that code to estimate costings based partially
on statistics from progress on current frame encoding. Overall,
this gives us a ~0.2%-0.3% improvement over what we had previously
before my argument-inversion-fix, and thus about ~0.4% over current
git (on derf-set), and a little more (0.5-1.0%) on HD/STD-HD/YT.

Change-Id: I79ebd4ccec4d6edbf0e152d9590d103ba2747775
2012-05-15 15:32:44 -07:00
Paul Wilkins
acf3c729d8 Further firstpass.c changes.
base the static image test off a measure of 0,0 motion
instead of the decay accumulator value.

Change "transition to still detection" to compare the
decay rate from successive frames.

Minor tweak to the arf extra boost given based on the
number of frames affected.

Removed unused variable mod_err_per_mb_accumulator.

Change-Id: Idd8360083ad409e45f133ce97dd2488259003e64
2012-05-15 18:01:44 +01:00