968 Commits

Author SHA1 Message Date
Jim Bankoski
c522217d78 Merge "Add biasing to ZEROMV for videos with static background" 2012-08-21 15:56:59 -07:00
Scott LaVarnway
2a96d6b0d5 Merge "Removed last_kf_gf_q" 2012-08-21 15:19:58 -07:00
Yunqing Wang
24c346dffc Add biasing to ZEROMV for videos with static background
For videos with big static background(such as video conferencing
clips), the mode decision was biased to ZEROMV in order to
obtain a stable background. The percentage of ZEROMV on last
frame was used to predict if there is static area in current frame,
and checking already-encoded neighboring macroblocks' motion
vectors to make sure the local area has low motion.

Change-Id: I05b3241d3a56a0bda88b6681e5646c1c8baf2e57
2012-08-21 14:56:02 -07:00
Yunqing Wang
8ee88da060 Fix inter_zz_count calculation bug
The current way of counting inter_zz_count doesn't work correctly
in multi-threaded encoding. Calculating it after the frame is
encoded fixed the problem.

Change-Id: Ifcb1972cde950b8cc194f75c6d7b6af09e8b0e65
2012-08-20 17:43:06 -07:00
Yaowu Xu
b0cfcb2ca8 Merge "realtime turndown loopfilter for 00" 2012-08-20 13:44:56 -07:00
Yaowu Xu
1829d03906 Merge "static threshold fix for realtime" 2012-08-20 13:40:53 -07:00
Jim Bankoski
9f0b42247d realtime turndown loopfilter for 00
Loop filter producing wierd artifacts when
repeatedly applied in noisy video.   This
mitigates the effect.

Change-Id: If4b1a8543912d186a486f84e11d8b01f7436fa5f
2012-08-20 13:04:53 -07:00
Jim Bankoski
985f09fdca static threshold fix for realtime
This code allows us to skip encoding if the sse
is less than the error we could possibly encode.

Change-Id: Iefb590dc0ee30b660495218398c7969f7d5fd19f
2012-08-20 12:58:31 -07:00
Yaowu Xu
d71ba03822 silent compiling warnings for VC9 build
Change-Id: Iaa947e640f27e6f6eaf7d845f243536bca2df513
2012-08-20 11:45:01 -07:00
Attila Nagy
69babd39f1 Merge "Fix encoder mem allocation when picture size is changed" 2012-08-02 22:29:51 -07:00
Attila Nagy
b78d90703c Merge "Fix potential encoder dead-lock after picture resize" 2012-08-02 22:29:38 -07:00
Johann
4b0b43632b Pass B_PREDICTION_MODE to intra4x4_predict
Use the correct type when calling and inside the function.

Change-Id: Idbaf1bf58b9574f0cba73d78780e9aedd8889dfd
2012-08-02 15:26:24 -07:00
Scott LaVarnway
6ce58e84d3 Removed last_kf_gf_q
Not used.

Change-Id: I7595cb21db73bd56ee4d9280ecb7ab9b1240f4e2
2012-08-02 12:02:36 -07:00
Johann
a497cb59cd Rename vp8_intra4x4_predict_d
predict_d has become canonical. Remove previous helper function.

Disable ARM assembly pending update.

Change-Id: Idd84ac8a28f9b0221ea97904a77de1e705d06a7d
2012-08-01 11:17:57 -07:00
Johann
41aede61e9 Use intra4x4_predict_d parameter names
Rename the local variables for consistency.

Change-Id: Ic202ff54551332f706d97da9b67b2e0959ee7f61
2012-08-01 11:14:10 -07:00
Johann
a82c58c40f Change vp8_intra4x4_predict call sites
Use the _d variant from the decoder. It moves the pointer calculations
to the caller.

Change-Id: Iae2a793433ef082980a3ffa0a1cabf0264a6a24d
2012-08-01 10:48:46 -07:00
Attila Nagy
03b3fcecac Fix potential encoder dead-lock after picture resize
The sync interval for the multithreaded encoder was considered as not changing
during the encoding. This is not true if picture size is changed.
The encoder could dead-lock because the main thread and the other threads were
using different sync interval.

Change-Id: I75232bbdbc6c02d77f830d870fd8b4e96697c64e
2012-08-01 08:28:54 +03:00
Attila Nagy
cbc249ba00 Fix encoder mem allocation when picture size is changed
After the picture size was changed to a bigger one, the internal memory was
corrupted and multithreaded encoder was deadlocking.

Memory for last frame's MVs, segmentation map and active map were allocated when
the compressor was created (vp8_create_compressor). Buffers need to be
reallocated when picture size is changed, so, the allocation was moved to
vp8_alloc_compressor_data, which is called every time the picture is resized.

Change-Id: I7ce16b8e69bbf0386d7997df57add155aada2240
2012-08-01 08:23:35 +03:00
Johann
1347b2ce0f Merge "Be consistent with SAD values" 2012-07-31 10:21:57 -07:00
Jim Bankoski
f47544745e Merge "Remove the resetting of qp params for temporal layers." 2012-07-27 21:22:15 -07:00
Marco Paniconi
ef4a9670a8 Remove the resetting of qp params for temporal layers.
The ambient qp and active worse/best qp were reset for every frame
when temporal layers is on. This change removes this reset.

As this affects the target size for forced key frames
(it will actually lower the size somewhat), we increased the
inital boost factor to compensate.

Change-Id: Ie38d95f5c99ab3d447469c49e2177bc3fcc4ad28
2012-07-27 17:27:32 -07:00
Johann
1161055129 Be consistent with SAD values
SAD returns unsigned values. Make all the declarations the same.

Remove bestsad initialization and check. It is always set to the
result of a SAD call so it will never remain UINT_MAX

Use ja instead of jg to test unsigned comparison instead of signed.

Update test.

Change-Id: I46336ab45f4e60fc37caf20bd36bc5782079c7a5
2012-07-27 16:15:31 -07:00
Johann
aa4f9dd153 Merge "SAD cosmetic cleanup" 2012-07-27 16:05:12 -07:00
Attila Nagy
e66e9ddfb4 Optimizes updates of encoder block ptrs
Precalculated block ptrs do not need updates during encoding.
Set these at init stage.

Moved the allocation of 'mt_current_mb_col' (last encoded MB on each
row) to vp8_alloc_compressor_data(), so that it is correctly
reallocated when frame size is changing.

Change-Id: Idcdaa2d0cf3a7f782b7d888626b7cf22a4ffb5c1
2012-07-27 09:59:09 +03:00
Johann
dd0100ddb1 SAD cosmetic cleanup
Change-Id: Iae915f2988081697cca6b65943afaca1d8de8df3
2012-07-26 12:48:31 -07:00
Yunqing Wang
4066c8b205 multi-res: add drop_frame support
Added drop_frame support in multi-resolution encoder.

If one frame is dropped at a lower-resolution level, the next
upper-resolution level encoder needs to encode that frame
independently without any lower-resolution level motion
information.

Another issue is that if one frame is dropped at some but not all
resolution levels, a frame after that one may use different set
of reference frames at different resolution levels. This reference
frame asynchronization could degrade motion search precision in
upper-resolution level encoding, which uses lower-resolution level
motion result. This change compares the lower-resolution and upper-
resolution level's reference frames. If they are not the same, the
upper-resolution level encoder can not use lower-resolution level
motion result.

Change-Id: I61afa4f313630e75b7cbdd5742e230e8724a988a
2012-07-26 08:36:53 -07:00
Yunqing Wang
bb3d510a18 Merge "Remove goldfreq in VP8_COMP" 2012-07-10 09:19:37 -07:00
Yunqing Wang
b293698561 Fix subpixel_predict initialization
xd->subpixel_predict16x16 is called in first pass, but isn't
initialized in first pass, which causes segfault. This patch
fixed that problem.

Change-Id: Ibd2cad4e2d32ea589fc3e0876d60d3079ae836e7
2012-07-02 14:47:47 -07:00
Yunqing Wang
e2c5e78ad9 Merge "Fix decimation_count in drop_frame" 2012-06-29 10:57:39 -07:00
Paul Wilkins
6fc1d9efc4 Merge "Fix segmentation updates with vp8_set_roimap()" 2012-06-20 10:34:28 -07:00
John Koleszar
6291dd4c2f Fix compilation with -werror
Fix a last few warnings with multithread, arm, 32 bit

Change-Id: Ic7c67616c370d0ff87562a232fb1e5df0702dc86
2012-06-20 09:43:42 -07:00
Paul Wilkins
7c32cb52b5 Fix segmentation updates with vp8_set_roimap()
Changes relating to Issue 411

Removed code that was clearing down the segmentation data each
frame.

Added range/parameter checking in vp8_set_roimap(); Return error
if called when cyclic_refresh is enabled.

Correct setup_features() so that it sets or clears the segment update
flags as appropriate.

Change-Id: Ib31ac53006640ddf1ba7b9ec8f8b952e3eff860a
2012-06-20 12:49: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
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
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
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