Commit Graph

406 Commits

Author SHA1 Message Date
Johann
c4b3625393 Merge "Remove pair quantization" 2014-11-04 16:29:19 -08:00
Johann
b4957234af Avoid divide-by-zero in vp8 initialization
Check that the numerator is not zero. If it is, guess 30fps.

Fixes a clang IOC error in the quantize test. It's very unlikely for
this to occur in the wild because the setup in the quantize test is very
nonstandard.

Change-Id: Icdab7b81d4e168d3423e14db20787f960052e0c3
2014-11-04 12:52:10 -08:00
Johann
2134eb2f05 Remove pair quantization
The intrinsics version of the pair quant is slower than running it
individually.

Change-Id: I7b4ea8599d4aab04be0a5a0c59b8b29a7fc283f4
2014-10-31 13:42:55 -07:00
Marco
fe2fd37bb2 vp8: Updates to noise level estimate.
-Use full bandwidth (when temporal layers is on) for checking switching.
-Normalize metric wrt num_blocks.
-Rounding fix to update of average noise level metric.
-Make default internal denoiser mode == kDenoiserOnYUV (in denoiser set_parameters()).
-Adjust some thresholds.

Change-Id: Ib827512b25a7bf1f66c76d3045f3a68ce56b1cd2
2014-10-24 09:36:18 -07:00
Marco
d166be653e vp8: Update to computation of noise level.
Avoid unneeded computation of mse in process_denoise.

Change-Id: I3a538178f2d138750d0c38ea4dd05dbbc2b7df41
2014-10-22 10:38:24 -07:00
Marco
06fce6b640 vp8: Update to the adaptive denoising mode.
Allow for option to apply spatial blur for temporal
denoising, under the aggressive denoising mode.

Change-Id: I41c5fdc0b6cf32d8f8d1d4236b25fa5aa406e89e
2014-09-19 09:06:16 -07:00
Marco
0c7a9925d6 vp8: Updates for adaptive denoiser mode.
Add qp/bitrate condition, update some settings.

Change-Id: I1af0f102823a886393be063ad9d17d7564753cc7
2014-09-09 09:19:01 -07:00
Marco
842454d2aa Make process_denoise_mode_change function cond-compiled.
This function is called only when temporal denoising is enabled.

Change-Id: I25a036e3d628edd34410d6e6fe1f9e68a90a8e56
2014-09-03 11:39:34 -07:00
Marco
4eb8a850e0 Merge "Fixes to adaptive denoiser mode." 2014-08-20 11:39:44 -07:00
Marco
d2274ed354 Bugfix for vp8 aggressive denoiser mode.
Change-Id: I6c1ccd88df7c39377d5f98f8533c0cabd53cf86f
2014-08-20 10:38:59 -07:00
Marco
aa88e32017 Fixes to adaptive denoiser mode.
Scale min_consec_zero_last wrt to #temporal layers,
and use full framerate as factor in noise metric.

Change-Id: Id0842b90164ce468d1236173c51965e7620c0e12
2014-08-20 10:34:58 -07:00
Marco
8609048a77 vp8: Add check on noise_sensitivity/denoiser on.
Change-Id: Ic53b2fb69e6eee600ea222e4d06424a1bbca496c
2014-08-16 06:14:21 -07:00
Marco Paniconi
715bab6e55 Merge "Add an adaptive denoising mode." 2014-08-15 08:51:08 -07:00
Marco Paniconi
8db245b6a1 Add an adaptive denoising mode.
On key frame, will always start with normal denoising mode,
but based on a computed noise metric (normalized mse on source diff)
may switch to aggressive mode (and back down again).

Change-Id: I20330b2dcf3056287be37223302b2cab5fc103eb
2014-08-14 17:29:51 -07:00
Marco
21a0dade42 vp8: Modify to use closest reference in zero_mv bias.
Modify zero_mv bias condition to include check that "closest" reference is last_frame.
This is needed for temporal layers, where the last_frame is not always the closest reference.
Also, constain zeromv_count to be for last_frame reference.

Change-Id: I7af54a809ebf01ef43b9933c9d4095b6cb189390
2014-08-14 15:55:20 -07:00
Marco Paniconi
354a2e612d vp8: Code cleanup for control of denoiser mode.
Change-Id: Icb9918dd38d15061d62852e6a2d905e8ceb2c1ac
2014-08-08 16:15:28 -07:00
Marco Paniconi
84ba62d353 vp8: for spatial resize, reallocate denoiser in vp8_allocate_comp.
Change-Id: I1827efe2126501a4a5637ee3ae85233d7526bc0e
2014-08-07 13:55:32 -07:00
Marco Paniconi
8450b41d4b vp8 bugfix: Reallocate denoiser when spatially resizing.
This is needed to update the width/height and stride parameters
for the reference buffers that the denoiser uses.

Change-Id: Id51b3bdcb56bbbc8187865544ccd3d872a0d51fe
2014-08-06 14:57:52 -07:00
Marco Paniconi
fbaa4b84af Fix to Visual Studio build error.
signed/unsigned mismatch from commit: 918011.

Change-Id: I6b9bb3618f8e72ea4cc0e6ba8fb9b13676985ed0
2014-07-30 09:14:56 -07:00
Marco Paniconi
91801176fe vp8: Add an aggressive denoising mode.
Change-Id: Ie4686e1b15af6bcc8d59d585bbeb996f38224522
2014-07-29 11:16:45 -07:00
Marco Paniconi
64db43d6a7 vp8: reduce refresh_max_mbs_perframe with fewer layers.
Change-Id: Ib39cc0218a1f232c0cde8e99ca3319c17274bd48
2014-07-24 15:47:19 -07:00
Marco Paniconi
aa2ba46a61 Merge "vp8 denoiser fix: Update denoised altref on key frame." 2014-07-22 11:15:08 -07:00
Marco Paniconi
f909e43abc vp8 denoiser fix: Update denoised altref on key frame.
On a key frame, the denoised-running_avg for all references
frames should be updated with the source.
The altref denoised-running_avg was not being updated on key frame,
this fixes that.

Change-Id: Ie02cd0ba5383e013af59240e6df7e185d11703f6
2014-07-22 10:14:03 -07:00
Yunqing Wang
765485cab2 Add -DNDEBUG when config option debug is disabled
For gcc, when libvpx config option debug is disabled, added the
flag -DNDEBUG to disable the assertions in libvpx for some speedup.

Change-Id: Ifcb7b9e8ef5cbe5d07a24407b53b9a2923f596ee
2014-07-21 09:20:03 -07:00
James Zern
61c3338516 call vp[89]_clear_system_state after longjmp
restore the environment post encode/decode failure

Change-Id: I3c72e2260a616432eaf1f9545d4fb4d8e45cc7b0
2014-07-10 12:36:28 -07:00
Marco Paniconi
d08b2ba172 Allow for deblocking temporal-denoised signal.
Allow for an option to selectively apply the deblocking loop filter to the denoised
raw block, based on the denoised state (no-filter, filter with zero motion, or filter with non-zero motion)
of the current block and its upper and left denoised block.
This helps to reduce some blocking artifacts from the motion-compensated denoising.

Change-Id: I0ac4e70076df69a98c5391979e739a2681e24ae6
2014-06-13 14:34:05 -07:00
Tim Kopp
05e8c61903 Added OUTPUT_YUV_DENOISED CFLAG to VP8 encoder
When this compiler flag is enabled, the encoder will write a denoised,
uncompressed, version of the input to denoised.yuv.

Change-Id: Ie0247f76b23219d95fe97dd70f23e097d742c249
2014-06-05 11:18:32 -07:00
Tim Kopp
f204a9a482 Fixed OUTPUT_YUV_SRC behavior for VP8
By enabling the OUTPUT_YUV_SRC compiler flag, the encoder will write the raw
input to bd.yuv.

The functionality was mostly implemented, but in its previous state did not
compile.

Change-Id: Ia331ad0f4c6e6f9f51e8d42cd33ba8cc146b3dbf
2014-05-30 09:39:07 -07:00
Adrian Grange
93a8a1eb8c Fix generic-gnu target build
Added macro to conditionally compile some of the
post-processing functions only when CONFIG_POSTPROC
is defined.

This was causing the build for the generic-gnu target
to fail.

Change-Id: Ibfa447feceb7a0528135025f105be48f97e9965c
2014-05-05 11:00:43 -07:00
Yunqing Wang
096eaba728 Remove VP8 save_reg_neon function
This patch did a cleanup following the commit "Save NEON registers
in VP8 NEON functions". The pushing/poping of callee-saved NEON
registers was moved into individual NEON functions. Therefore,
we don't need to save those registers at the beginning of codec.
The related code was removed.

Change-Id: I5648166514fc9beffb780aa138495597731f49ea
2014-04-29 16:13:24 -07:00
Sergey Ulanov
409f8da265 Fix onyx_if.c to not to redefine M_LOG2_E if it's already defined.
This fixes warning when compiling libvpx for PNaCl. PNaCl's version
of math.h defines M_LOG2_E.

Change-Id: Iba9450441538e9f82447ad2936bea94d21bafdf1
2014-04-10 08:54:30 -07:00
James Zern
2a19c96362 onyx_if: quiet -Warray-bounds warnings
'number_of_layers' is range checked before assignment from the user
config.

Change-Id: Idefdaceb8736f126fa7c647da2b047dafb56ea52
2014-03-15 10:36:27 -07:00
Dmitry Kovalev
7d5bffc452 Adding vpx_sse_to_psnr() function.
Removing all copies of identical vp8_mse2psnr/vp9_mse2psnr functions.
Using vpx_sse_to_psnr() instead in all places.

Change-Id: I15beef9834d43d8fc8a8a7a2d1fc5de3d658fed8
2014-02-26 16:21:12 -08:00
Adrian Grange
b7be30eb36 Cleanup some comments.
Change-Id: I568861ba1d43620865ad9a98a97eef37a51fd856
2014-02-14 15:05:30 -08:00
Marco Paniconi
193fa5c8ba Keep buffer clipped to maximum in change_config.
Under a configuration change, where the bitrate suddenly decreases,
the buffer level may be larger than maximum allowed (for that first frame to be encoded after change_config).
This change keeps it clipped to its maximum level.

Change-Id: I4d0b5b3d1fd8148600dd39e02bd630c9464baba5
2014-01-09 14:33:40 -08:00
Adrian Grange
8af3e6507e Fix the printf format string
There were two problems with the format string in
the conditionally compiled print statement. It referred
to a variable that is no longer available and it used
incorrect format specifiers.

Change-Id: I315e22bea2691bb535a2e33f5ca206fc55287a37
2013-12-11 10:47:59 -08:00
Marco Paniconi
d486427cf1 Undo the vp8 change in "Reduce loop filter in..."
Patch in https://gerrit.chromium.org/gerrit/#/c/41176/
was merged into repository by mistake.

Change-Id: I235c71af26bb2d72698c8aac2301e5a7e9c5f960
2013-11-19 17:16:00 -08:00
Jim Bankoski
69541e1dec Merge "Reduce loop filter in cyclic refresh." 2013-11-19 14:42:32 -08:00
Marco Paniconi
41138e01f5 Fixes to buffer update for temporal layers.
When a frame is dropped due to |buffer_level| < 0 for a given temporal layer,
the buffer level for the upper temporal layers was not updated (in calc_pframe_target_size()).
This change fixes that.

Also, use the layer per-frame-bandwidth for updating the buffer level
of the higher layers when a frame is dropped.

Change-Id: I660c23f3229b47e9d124a950b480314b4307c5a8
2013-11-01 11:47:40 -07:00
James Zern
5f30a0c687 VP[89]_COMMON: remove golden/altref frame counts
these are only used in the encoder.
frames_since_golden / frames_till_alt_ref_frame -> VP[89]_COMP

Change-Id: Ie14a6f46987bced685ddb449b85dc261caba6dfe
2013-07-18 14:09:21 -07:00
James Zern
9581eb6e8a use consistent framerate naming
s/frame_rate/framerate/g

Change-Id: I6fc3e088e419c5f46e3a9390dd8a2cad2677a2fc
2013-07-16 14:12:47 -07:00
James Zern
4fc6c88e9c yv12config: remove YUV_TYPE
this was never fleshed out in the context of VP8, for which it was
added. for VP9 it has no meaning.

Change-Id: Iba2ecc026d9e947067b96690245d337e51e26eff
2013-07-12 15:25:48 -07:00
Frank Galligan
4524548f80 Fix compile warnings on windows.
Change-Id: If74bc6110016bc75ea3883ab136fbbac88f6a913
2013-06-12 11:34:15 -07:00
John Koleszar
d0ed677a34 Merge branch 'master' into experimental
Change-Id: Ie648398b82f7311143709f55c0e30ba452f50eff
2013-06-11 16:29:28 -07:00
Yaowu Xu
8b3ad75266 Specify mv neighborhood for block larger than 8x8
The new neighorbhood adapts to the shape and size of the block type
cif +.16%
stdhd +.13%

Change-Id: I978db58278e9ae3fbd6726ef831bdfc5f5f37d02
2013-06-07 08:59:48 -07:00
Scott LaVarnway
ec34afd1b0 Fixed crash in VP8/CQTest
If the codec was configured with --enable-internal-stats,
a seg fault would occur.  This patch fixes the problem.

Change-Id: Id10a577973d185e93037c59e5b36bebdded327da
2013-06-05 12:04:19 -07:00
Marco Paniconi
fb48bbf5c6 Fixes for run-time change in temporal layers.
Use a separate counter for resetting the pattern upon
a change in temporal layers, and set/initialize the
layer context parameters for the new temporal layer state.

Also moved the setting of layer configuation in init_config()
to a separate function.

Change-Id: Ic7fc023a1e5490020509e107004645098f4c00f0
2013-05-21 09:04:14 -07:00
Johann
32a5c52856 Merge branch 'master' into experimental
Conflicts:
	vp9/common/vp9_findnearmv.c
	vp9/common/vp9_rtcd_defs.sh
	vp9/decoder/vp9_decodframe.c
	vp9/decoder/x86/vp9_dequantize_sse2.c
	vp9/encoder/vp9_rdopt.c
	vp9/vp9_common.mk

Resolve file name changes in favor of master. Resolve rdopt changes in
favor of experimental, preserving the newer experiments.

Change-Id: If51ed8f457470281c7b20a5c1a2f4ce2cf76c20f
2013-04-26 12:57:10 -07:00
Scott LaVarnway
55dc089522 Merge "Removed shadow warnings : bitstream.c encodeframe.c onyx_if.c" 2013-04-19 07:08:59 -07:00
Adrian Grange
c2876cf0fd Initial addition of multiple ARF frames
This is work-in-progress, it implements multiple ARF
encoding behind an experimental flag.

It adds the ability to insert multiple ARF frames into a
single ARF group. This patch implements the reordering
of the coded frames, and implements a fixed-length coding
pattern. It applies a fixed quantizer strategy based on
where the frame is in the coding sequence.

Further work to modify the rate control strategy is
ongoing and will be submitted via a set of future patches.

In this first step, each ARF group is recursively
bisected and an ARF frame added at that position in the
sequence. The recursion continues until ARF frames are
within MIN_GF_INTERVAL frames.

The code sits behind the "multiple-arf" experimental
flag ("CONFIG_MULTIPLE_ARF"). The experimental flag
"oneshotq" ("CONFIG_ONESHOTQ") also needs to be enabled
for this patch to work correctly.

Change-Id: Ie473b05ebb43ac473c0cfb659b2b8042823085e2
2013-04-15 09:11:39 -07:00