Yaowu Xu [Tue, 13 Jan 2015 20:39:42 +0000 (12:39 -0800)]
Fix comments for encoder controls
This commit added coments for the following encoder controls:
VP9E_SET_LOSSLESS
VP9E_SET_TILE_COLUMNS
VP9E_SET_TILE_ROWS
VP9E_SET_FRAME_PARALLEL_DECODING
VP9E_SET_AQ_MODE
Yaowu Xu [Fri, 9 Jan 2015 18:36:43 +0000 (10:36 -0800)]
Fix comments and color format
Replaced "color space" with "color format" in comments where color
sampling format is concerned, so to differentiate from the concept
defined in COLOR_SPACE.
Jingning Han [Thu, 8 Jan 2015 20:15:30 +0000 (12:15 -0800)]
Refactor mc reference block fetch in denoiser
This commit refactors the motion compensated reference block fetch
process in denoiser. It skips the stage that generates motion
compensated reference block if denoiser decides to use copy block
mode. For high motion clips, this could speed up the denoising
process by about 10%.
Jingning Han [Thu, 8 Jan 2015 02:30:50 +0000 (18:30 -0800)]
Refactor denoiser frame buffer update
Use frame buffer pointer swap instead of memcpy when possible.
These two CLs make the denoiser when running on vidyo1 720p at
speed -6 over 10% faster.
Jingning Han [Wed, 7 Jan 2015 19:41:56 +0000 (11:41 -0800)]
Initalize zeromv_sse and newmv_sse in vp9_pick_inter_mode
These two parameters are used to control the denoiser cut-off
thresholds. They should be properly initialized when starting
mode search of a given block.
Jingning Han [Wed, 7 Jan 2015 00:17:05 +0000 (16:17 -0800)]
Always check and free denoiser buffer memory space
The vp9_denoiser_free() function will internally check if the
buffer pointers are NULL. This commit makes the encoder always
call vp9_denoiser_free() after finishing encoding. It protects the
case where noise_sensitivity_level is changed during encoding
process and happen to be turned off towards the end of sequence,
which could result memory space allocated to denoiser not being
released.
Jingning Han [Sun, 4 Jan 2015 04:46:13 +0000 (20:46 -0800)]
Fix denoiser chroma component initialization
Use the correct frame size and stride value for chroma components
when setting the initial values. These control parameters are
assigned when the denoiser buffer was allocated and initialized.
Jingning Han [Sat, 3 Jan 2015 20:00:46 +0000 (12:00 -0800)]
Skip duplicate denoiser frame buffer allocation
Allocate the frame buffer allocation for denoiser once during the
encoder initialization. This avoids allocating frame buffer
multiple times and overwriting the buffer pointer without proper
releasing.
Paul Wilkins [Fri, 19 Dec 2014 16:58:05 +0000 (16:58 +0000)]
Use 64 bit to accumulate frame sse.
When testing frame sse to choose a loop filter value and
when checking ambient error in kf Q selection, use 64 bit
values for accumulating the sse, to avoid risk of overflow
for large image formats.
Jingning Han [Tue, 6 Jan 2015 18:04:56 +0000 (10:04 -0800)]
Turn denoiser sensitivity on starting from kf in unit test
The denoiser sensitivity level should be set to 1 starting from
key frame. The internal function of denoiser should make the
temporal denoising operations cut off in key frame coding.
JackyChen [Mon, 5 Jan 2015 18:41:12 +0000 (10:41 -0800)]
Adopt weighted averaging in MFQE.
By using weighted averaging in the calculation of the frames to be
displayed, we get an average gain of more than 1 db for key frames
whose base qp are 20 higher than non-key frames.
Jingning Han [Sat, 3 Jan 2015 20:34:44 +0000 (12:34 -0800)]
Fix denoised video output function
This commit fixes the buffer alignment control in denoised video
output function. The encoder is now able to properly store the
denoised input video into provided file when enabled.
Yaowu Xu [Tue, 30 Dec 2014 16:35:40 +0000 (08:35 -0800)]
Properly set size based on actual buffer layout
VP9FrameSizeTestsLarge.OneByOneVideo has been causing a failure in
jenkins libvpx__unit_tests-valgrind_long for "using of uninitialized
memory", the root cause was that the input image for this test was
not initialized with proper size, therefore plan U and V were not
initialized at all.
This commit fixes the size initialization, and resolves the issue.
Jingning Han [Mon, 22 Dec 2014 21:38:34 +0000 (13:38 -0800)]
Enable sub8x8 inter block search for RTC coding mode
This commit enables sub8x8 inter block coding for RTC mode. The
use of sub8x8 blocks can be turned on by allowing
choose_partitioning function to select 4x4/4x8/8x4 block sizes.
Jingning Han [Tue, 23 Dec 2014 17:30:24 +0000 (09:30 -0800)]
Set ref frame scaling factor in RTC inter mode decision
Properly set the corresponding scaling factor of the reference
frame in the non-RD mode decision process. This allows the mode
search process to account for the scaled reference frame when
selecting coding mode.
James Zern [Tue, 23 Dec 2014 16:44:11 +0000 (11:44 -0500)]
vp9: fix -Wclobbered (longjmp + local variables)
Local variables used at the setjmp() site need to be marked volatile.
Relevant excerpt from the 'man longjmp':
===============
The values of automatic variables are unspecified after a call to
longjmp() if they meet all the following criteria:
· they are local to the function that made the corresponding setjmp(3) call;
· their values are changed between the calls to setjmp(3) and longjmp(); and
· they are not declared as volatile.
===============