Dmitry Kovalev [Mon, 21 Apr 2014 17:41:04 +0000 (10:41 -0700)]
Merge "Cleaning up vp9_rdopt.c."
Dmitry Kovalev [Mon, 21 Apr 2014 17:40:30 +0000 (10:40 -0700)]
Merge "Don't set loop filter sharpness in vp9_change_config()."
Dmitry Kovalev [Mon, 21 Apr 2014 17:40:05 +0000 (10:40 -0700)]
Merge "Cleaning vp9_variance.{c, h}."
Jingning Han [Mon, 21 Apr 2014 16:36:11 +0000 (09:36 -0700)]
Merge "Enable background detection for adaptive quantizer control"
Yaowu Xu [Mon, 21 Apr 2014 16:11:24 +0000 (09:11 -0700)]
Merge "Merge two new VBR adjustment schemes."
Yaowu Xu [Mon, 21 Apr 2014 16:11:19 +0000 (09:11 -0700)]
Merge "Add experimental VBR adaptation method."
Jingning Han [Thu, 17 Apr 2014 16:58:17 +0000 (09:58 -0700)]
Enable background detection for adaptive quantizer control
This commit enables a background detection approach for adaptive
quantizer control. It combines the cyclic refresh pattern and the
background information to determine the segment id for adaptive
quantizer selection, prior to the non-RD mode decision process.
It hence allows proper quantization information update for a more
precise rate-distortion modeling in the non-RD mode decision.
The compression performance of speed -5 for rtc set is improved
by 2.5%, at no speed change.
Change-Id: Ic3713e8ed9185b403b5b1679d19dabd57506d452
James Zern [Sat, 19 Apr 2014 16:29:26 +0000 (09:29 -0700)]
test/WebMVideoSource: fix WebMInputContext leak
lost in the shuffle of:
4fd6317 Remove duplicate code in test/webm_video_source.h
Change-Id: I89792fa17f03920616c55486bbdaf56c6461c9eb
Dmitry Kovalev [Sat, 19 Apr 2014 01:18:08 +0000 (18:18 -0700)]
Merge "Moving set_rd_speed_thresholds{,_sub8x8} to vp9_rdopt.{h, c}."
Dmitry Kovalev [Sat, 19 Apr 2014 00:05:28 +0000 (17:05 -0700)]
Cleaning vp9_variance.{c, h}.
Change-Id: I802308de4817e48a627bb44a744d32010fe7818f
Dmitry Kovalev [Fri, 18 Apr 2014 23:56:43 +0000 (16:56 -0700)]
Cleaning up vp9_rdopt.c.
Change-Id: Ifd008968326e61ab492162351e358bf0ac0dac0a
Adrian Grange [Fri, 18 Apr 2014 23:34:57 +0000 (16:34 -0700)]
Merge "Remove ALT_REF_MC_ENABLED and tidy-up ARNR code."
Dmitry Kovalev [Tue, 15 Apr 2014 23:52:28 +0000 (16:52 -0700)]
Moving set_rd_speed_thresholds{,_sub8x8} to vp9_rdopt.{h, c}.
Change-Id: I983364b33e8f103b43a0448821e890989176f1cc
Dmitry Kovalev [Fri, 18 Apr 2014 20:59:30 +0000 (13:59 -0700)]
Don't set loop filter sharpness in vp9_change_config().
The right value is calculated and set in vp9_pick_filter_level().
Change-Id: I5f725ac21f90dc9b80181a09a2040970bf6671d4
Dmitry Kovalev [Fri, 18 Apr 2014 18:01:36 +0000 (11:01 -0700)]
Renaming VP9_CONFIG to VP9EncoderConfig.
Change-Id: Id48edd12c6f649c82113128491ef6ea7410e93b2
Dmitry Kovalev [Fri, 18 Apr 2014 17:38:20 +0000 (10:38 -0700)]
Merge "Adding get_pass() function."
James Zern [Fri, 18 Apr 2014 17:32:11 +0000 (10:32 -0700)]
Merge "Remove duplicate code in test/webm_video_source.h"
Adrian Grange [Mon, 14 Apr 2014 23:56:40 +0000 (16:56 -0700)]
Remove ALT_REF_MC_ENABLED and tidy-up ARNR code.
Change-Id: I922d988486b47f413d11a8eeb38532a484d15c80
Jingning Han [Fri, 18 Apr 2014 15:46:53 +0000 (08:46 -0700)]
Merge "Fix broken encoding process at sub8x8 block size"
Vignesh Venkatasubramanian [Mon, 14 Apr 2014 21:19:50 +0000 (14:19 -0700)]
Remove duplicate code in test/webm_video_source.h
Remove duplicate WebM parsing code in test/webm_video_source.h and linking it
against webmdec.c which does the exact same thing.
Change-Id: Ib7152eecde890fca58be42028cab18c9cb54221c
Vignesh Venkatasubramanian [Fri, 18 Apr 2014 06:41:24 +0000 (23:41 -0700)]
Remove warn() call in webmdec.c
Remove call to warn() in webmdec.c so that it does not depend on
tools_common.c for compilation.
Change-Id: I2790e837985ce1d84b35f5a20c783d0e6020a9f5
Dmitry Kovalev [Fri, 18 Apr 2014 01:27:19 +0000 (18:27 -0700)]
Merge "Removing cq_target_quality from VP9_COMP."
Dmitry Kovalev [Fri, 18 Apr 2014 01:26:54 +0000 (18:26 -0700)]
Merge "Adding is_best_mode() function."
Jim Bankoski [Thu, 17 Apr 2014 22:42:41 +0000 (15:42 -0700)]
Merge "rename labels2mode because it was a terrible name."
Jim Bankoski [Thu, 17 Apr 2014 22:42:36 +0000 (15:42 -0700)]
Merge "renamed pick_best_mbsegmentation and remove rd_check_segment_txsize"
Jim Bankoski [Thu, 17 Apr 2014 22:42:27 +0000 (15:42 -0700)]
Merge "rename mode_index to ref index in vp9_rd_pick_inter_mode_sub_8x8"
Jingning Han [Thu, 17 Apr 2014 21:44:02 +0000 (14:44 -0700)]
Fix broken encoding process at sub8x8 block size
Use the correct buffer to update the coding mode decision for
sub8x8 blocks.
Change-Id: I091ef27d2047eeb8b73ceb7c2c7c45b38ba8c6d5
Dmitry Kovalev [Thu, 17 Apr 2014 22:25:20 +0000 (15:25 -0700)]
Adding get_pass() function.
Change-Id: I43de248615b79828d5164b670e7358b8a520d075
Jingning Han [Thu, 17 Apr 2014 22:22:41 +0000 (15:22 -0700)]
Merge "Skip fetching original frame pointers for UV in background check"
Dmitry Kovalev [Thu, 17 Apr 2014 22:09:55 +0000 (15:09 -0700)]
Adding is_best_mode() function.
Change-Id: Idca7c1cd8a12df465c58b6ba064a99404b3b4bce
James Zern [Thu, 17 Apr 2014 21:58:55 +0000 (14:58 -0700)]
Merge "examples: remove off_t overrides"
Dmitry Kovalev [Thu, 17 Apr 2014 21:57:43 +0000 (14:57 -0700)]
Removing cq_target_quality from VP9_COMP.
Use cq_level (which is identical) from VP9_CONFIG instead.
Change-Id: I1aaf2fcef3d2dbd4577f613d27693ff8a68989fd
Dmitry Kovalev [Thu, 17 Apr 2014 21:34:26 +0000 (14:34 -0700)]
Merge "Replacing cpu_used with speed in VP9_CONFIG."
Jim Bankoski [Thu, 17 Apr 2014 20:48:54 +0000 (13:48 -0700)]
rename labels2mode because it was a terrible name.
Change-Id: I2d577d11966fcc5ffaaf0896bf51d18078ad1e9c
Yaowu Xu [Thu, 17 Apr 2014 20:47:47 +0000 (13:47 -0700)]
Merge "Relax the threshold for datarate test by 5%"
Paul Wilkins [Wed, 16 Apr 2014 23:53:55 +0000 (16:53 -0700)]
Merge two new VBR adjustment schemes.
To make direct side by side testing this patch combines two
VBR corrections schemes to allow more direct side by side testing.
(The other patch was by Debargha chg id I0cd1f7...)
Change-Id: I271c45e5c4ccf8de8305589000218b80d9dc3a25
Jingning Han [Wed, 16 Apr 2014 22:43:38 +0000 (15:43 -0700)]
Skip fetching original frame pointers for UV in background check
The background detection only tracks luma component. This commits
removes the frame buffer pointer retrieval for chroma components.
Change-Id: I098bd2950f5e5829ed5dc2b48568167248da7fad
James Zern [Thu, 17 Apr 2014 17:47:08 +0000 (10:47 -0700)]
examples: remove off_t overrides
this is error prone, int64 will suffice for all cases
Change-Id: I94883f93518cfc356ed57b14dc39d79aebccf47d
Jingning Han [Thu, 17 Apr 2014 16:36:30 +0000 (09:36 -0700)]
Merge "Remove redundant buffer initialization and mode_info assignments"
Jim Bankoski [Thu, 17 Apr 2014 16:11:23 +0000 (09:11 -0700)]
renamed pick_best_mbsegmentation and remove rd_check_segment_txsize
Change-Id: Ia7d33bc3eb595965bccf4b2231df1e3b2a0243c6
Yaowu Xu [Thu, 17 Apr 2014 15:45:00 +0000 (08:45 -0700)]
Relax the threshold for datarate test by 5%
Change-Id: Ibc770df77939a68f9f0d1d78c0edd737b0d398ad
Jim Bankoski [Thu, 17 Apr 2014 15:40:47 +0000 (08:40 -0700)]
rename mode_index to ref index in vp9_rd_pick_inter_mode_sub_8x8
Change-Id: I00bceb9de2009963c91e5102564c05c31ac1ad78
Jim Bankoski [Thu, 17 Apr 2014 14:30:55 +0000 (07:30 -0700)]
add a context tree structure to encoder
This patch sets up a quad_tree structure (pc_tree) for holding all of
pick_mode_context data we use at any square block size during encoding
or picking modes. That includes contexts for 2 horizontal and 2 vertical
splits, one none, and pointers to 4 sub pc_tree nodes corresponding
to split. It also includes a pointer to the current chosen partitioning.
This replaces code that held an index for every level in the pick
modes array including: sb_index, mb_index,
b_index, ab_index.
These were used as stateful indexes that pointed to the current pick mode
contexts you had at each level stored in the following arrays
array ab4x4_context[][][],
sb8x4_context[][][], sb4x8_context[][][], sb8x8_context[][][],
sb8x16_context[][][], sb16x8_context[][][], mb_context[][], sb32x16[][],
sb16x32[], sb32_context[], sb32x64_context[], sb64x32_context[],
sb64_context
and the partitioning that had been stored in the following:
b_partitioning, mb_partitioning, sb_partitioning, and sb64_partitioning.
Prior to this patch before doing an encode you had to set the appropriate
index for your block size ( switch statement), update it ( up to 3
lookups for the index array value) and then make your call into a recursive
function at which point you'd have to call get_context which then
had to do a switch statement based on the blocksize, and then up to 3
lookups based upon the block size to find the context to use.
With the new code the context for the block size is passed around directly
avoiding the extraneous switch statements and multi dimensional array
look ups that were listed above. At any level in the search all of the
contexts are local to the pc_tree you are working on (in?).
In addition in most places code that used to call sub functions and
then check if the block size was 4x4 and index was > 0 and return
now don't preferring instead to call the right none function on the inside.
Change-Id: I06e39318269d9af2ce37961b3f95e181b57f5ed9
Dmitry Kovalev [Thu, 17 Apr 2014 02:27:49 +0000 (19:27 -0700)]
Merge "Cleaning up vp9_init_second_pass()."
Dmitry Kovalev [Thu, 17 Apr 2014 01:31:42 +0000 (18:31 -0700)]
Replacing cpu_used with speed in VP9_CONFIG.
Change-Id: I86b85b5c11388e84a48f8936330c0d920df5d1f0
Jingning Han [Wed, 16 Apr 2014 17:39:23 +0000 (10:39 -0700)]
Remove redundant buffer initialization and mode_info assignments
There is no need to initialize source/dst frame buffers at frame
level. These will be done at block coding stage. This commit hence
removes the redundant operations.
Change-Id: I11d9f2556058c6205c8e58ed53e31f78622c41b7
Jingning Han [Thu, 17 Apr 2014 00:00:13 +0000 (17:00 -0700)]
Merge "Enable more precise background detection for partition decision"
Paul Wilkins [Tue, 15 Apr 2014 01:06:52 +0000 (18:06 -0700)]
Add experimental VBR adaptation method.
Add code to monitor over and under spend and
apply limited correction to the data rate of subsequent
frames. To prevent the problem of starvation or overspend
on individual frames (especially near the end of a clip) the
maximum adjustment on a single frame is limited to a %
of its un-modified allocation.
Change-Id: I6e1ca035ab8afb0c98eac4392115d0752d9cbd7f
Yaowu Xu [Wed, 16 Apr 2014 22:41:04 +0000 (15:41 -0700)]
Merge "Prevent reading of uninitialized value"
Dmitry Kovalev [Wed, 16 Apr 2014 22:17:53 +0000 (15:17 -0700)]
Cleaning up vp9_init_second_pass().
Change-Id: Ibf360fe0728e07de448e77e3841c49eb25d3ba2d
Paul Wilkins [Wed, 16 Apr 2014 21:24:25 +0000 (14:24 -0700)]
Merge "Remove old activity masking code."
Dmitry Kovalev [Wed, 16 Apr 2014 21:21:32 +0000 (14:21 -0700)]
Merge "Renaming VP9D_CONFIG to VP9DecoderConfig."
Dmitry Kovalev [Wed, 16 Apr 2014 21:07:46 +0000 (14:07 -0700)]
Merge "Adding sad function generation macros."
Jingning Han [Tue, 15 Apr 2014 18:41:39 +0000 (11:41 -0700)]
Enable more precise background detection for partition decision
This commit compares the current original frame to the previous
original frame at 64x64 block level and decides if the entire
block belongs to background area. If it is in the background area,
skip non-RD partition search and copy the partition types of the
collocated block in the previous frame.
For vidyo1 in the rtc set, this makes the speed -5 coding speed
about 8% faster. The overall compression performance is down by
1.37% for rtc set.
Change-Id: Iccf920562fcc88f21d377fb6a44c547c8689b7ea
Yaowu Xu [Wed, 16 Apr 2014 19:22:49 +0000 (12:22 -0700)]
Prevent reading of uninitialized value
This commit added a check of reference frame to make sure that pre
buffer pointers are initialized only when necessary and make them
to 0 if ref frame is intra, hence those buffer should never be used.
Change-Id: Ieb474fcd9feb759f02e2f9c282b7348a8fa31117
Yaowu Xu [Wed, 16 Apr 2014 19:55:48 +0000 (12:55 -0700)]
Merge "Add consts in set_fixed_partitioning()"
Yaowu Xu [Wed, 16 Apr 2014 19:29:12 +0000 (12:29 -0700)]
Merge "Refactor common code into a function"
Paul Wilkins [Mon, 14 Apr 2014 19:38:57 +0000 (12:38 -0700)]
Remove old activity masking code.
Delete code relating to the old VP8_TUNE_SSIM flag
as this code does not currently work and is largely made
redundant in VP9 by the various AQ modes.
Change-Id: I71f28e1f680573d296422254489000678552b17b
Paul Wilkins [Wed, 16 Apr 2014 19:07:42 +0000 (12:07 -0700)]
Merge "Fix rate control bug."
Alex Converse [Fri, 11 Apr 2014 19:42:13 +0000 (12:42 -0700)]
Unfork rd_thresh sub8x8.
Remove duplicate rd_thresh code introduced when vp9_rd_pick_inter_mode_sub8x8()
was forked from vp9_rd_pick_inter_mode_sb().
Change-Id: I3c9b7143d182e1f28b29c16518eaca81dc2ecfed
Paul Wilkins [Wed, 16 Apr 2014 02:15:43 +0000 (19:15 -0700)]
Fix rate control bug.
Fix rate control bug whereby the rate factor heuristics
were being updated on arf overlays causing a rate surge
for a few frames followed by a corrective drop.
This fix eliminates many of the overshoot problems that
we were seeing on hard clips (even without applying
stricter vbr rate control) and also helps quality on
almost all clips with some hard clips improving by >5%.
Overall quality results measured at speed 2.
Derf +1.78% opsnr , +2.44% SSIM
Stdhd +2.41% opsnr, +2.85% SSIM
Change-Id: I2369df6295c2705963fa6307877f6acb304bcc39
Vignesh Venkatasubramanian [Wed, 16 Apr 2014 16:47:24 +0000 (09:47 -0700)]
Merge "webmdec: Fix return values for webm_read_frame"
Dmitry Kovalev [Wed, 16 Apr 2014 06:00:16 +0000 (23:00 -0700)]
Merge "Renaming av_per_frame_bandwidth to avg_frame_bandwidth."
Dmitry Kovalev [Wed, 16 Apr 2014 05:59:37 +0000 (22:59 -0700)]
Merge "Consistent mode names."
Dmitry Kovalev [Thu, 10 Apr 2014 18:28:29 +0000 (11:28 -0700)]
Renaming av_per_frame_bandwidth to avg_frame_bandwidth.
Just to be consistent with min_frame_bandwidth & max_frame_bandwidth names.
Change-Id: I36702c708cba9ad1a5c36393f37758a2edeadb90
Dmitry Kovalev [Wed, 16 Apr 2014 00:55:13 +0000 (17:55 -0700)]
Merge "Adding scale_if_required() function."
Dmitry Kovalev [Wed, 16 Apr 2014 00:46:45 +0000 (17:46 -0700)]
Adding sad function generation macros.
Change-Id: If6f013835b69ae61b0a0c6006fe0955303f579a5
Dmitry Kovalev [Tue, 15 Apr 2014 23:39:27 +0000 (16:39 -0700)]
Merge "Adding get_search_range() function."
Dmitry Kovalev [Tue, 15 Apr 2014 21:58:31 +0000 (14:58 -0700)]
Merge "Cleaning up vp9_rc_compute_frame_size_bounds()."
Dmitry Kovalev [Tue, 15 Apr 2014 21:57:33 +0000 (14:57 -0700)]
Merge "Cleaning up vp9_twopass_worst_quality()."
Dmitry Kovalev [Tue, 15 Apr 2014 21:43:45 +0000 (14:43 -0700)]
Adding scale_if_required() function.
Change-Id: I87819fed5aebb6ffe2f4d4655df226235a3d21cb
Dmitry Kovalev [Tue, 15 Apr 2014 21:40:40 +0000 (14:40 -0700)]
Adding get_search_range() function.
Change-Id: I988eea8f78f71135b914661420c5c75674e5c010
Dmitry Kovalev [Tue, 15 Apr 2014 19:00:23 +0000 (12:00 -0700)]
Merge "More user friendly vpxenc help strings."
Vignesh Venkatasubramanian [Mon, 14 Apr 2014 22:21:22 +0000 (15:21 -0700)]
webmdec: Fix return values for webm_read_frame
Fix return values for webm_read_frame so that we can distinguish between
error and end of stream. 0 - Success, 1 - End of stream, -1 error.
Change-Id: Ic35d0c7d7a166e027711a3d2300ecdda25a5d0cc
Yaowu Xu [Tue, 15 Apr 2014 17:49:27 +0000 (10:49 -0700)]
Add consts in set_fixed_partitioning()
Change-Id: Ib8c1b3b0a5a5689d3261dc822a69e9d473b89be1
Dmitry Kovalev [Tue, 15 Apr 2014 17:39:31 +0000 (10:39 -0700)]
Merge "Moving frame_frags field from VP9Common to VP9_COMP."
Dmitry Kovalev [Tue, 15 Apr 2014 17:25:14 +0000 (10:25 -0700)]
Merge "Using anonymous enum instead of macros."
Dmitry Kovalev [Tue, 15 Apr 2014 17:24:59 +0000 (10:24 -0700)]
Merge "Adding get_skip_encode_frame()."
Yaowu Xu [Tue, 15 Apr 2014 17:02:33 +0000 (10:02 -0700)]
Refactor common code into a function
Change-Id: Id156af5662ebe6fbe1cab636564f5f4bedb85ab0
Vignesh Venkatasubramanian [Tue, 15 Apr 2014 16:54:01 +0000 (09:54 -0700)]
Merge "Remove fatal() call in webmdec.c"
Dmitry Kovalev [Tue, 15 Apr 2014 00:05:15 +0000 (17:05 -0700)]
Merge "Removing unused vp9_mcomp_x86.h file."
Dmitry Kovalev [Tue, 15 Apr 2014 00:05:04 +0000 (17:05 -0700)]
Merge "Replacing int_mv with MV."
Paul Wilkins [Mon, 14 Apr 2014 23:41:09 +0000 (16:41 -0700)]
Merge "Remove vp9_ prefix on static inline function."
Dmitry Kovalev [Mon, 14 Apr 2014 22:19:43 +0000 (15:19 -0700)]
Adding get_skip_encode_frame().
Change-Id: Id687aa617650a859463e7ae63dd4c0dc4f3e4779
Dmitry Kovalev [Mon, 14 Apr 2014 22:11:13 +0000 (15:11 -0700)]
Using anonymous enum instead of macros.
Change-Id: I5ed360585dae2c9fea6c32058dbfb8ec07700677
Yaowu Xu [Mon, 14 Apr 2014 21:39:50 +0000 (14:39 -0700)]
Merge "Reduce code duplication"
Adrian Grange [Mon, 14 Apr 2014 21:39:46 +0000 (14:39 -0700)]
Merge "Enable vpxenc to specify internal coded frame size"
Vignesh Venkatasubramanian [Mon, 14 Apr 2014 21:21:47 +0000 (14:21 -0700)]
Remove fatal() call in webmdec.c
Remove call to fatal() in webmdec.c so that it does not depend on
tools_common.c for compilation.
Change-Id: I3eec483afe6fae72436993c72b26d61d14a7f2bf
Dmitry Kovalev [Mon, 14 Apr 2014 21:09:39 +0000 (14:09 -0700)]
Consistent mode names.
Change-Id: Icb4851d98c951506fe5d73d8d5a8ac7e53fecfd0
Dmitry Kovalev [Mon, 14 Apr 2014 19:12:50 +0000 (12:12 -0700)]
More user friendly vpxenc help strings.
Change-Id: I257fb32673c47848258dc7e6e22147d0beb49f86
Paul Wilkins [Mon, 14 Apr 2014 19:08:42 +0000 (12:08 -0700)]
Merge "Speed 2 alternative balance."
Dmitry Kovalev [Mon, 14 Apr 2014 18:42:56 +0000 (11:42 -0700)]
Replacing int_mv with MV.
Change-Id: I35b9d1856d7951b8df7c933df6936dfc52a28451
Dmitry Kovalev [Mon, 14 Apr 2014 18:32:58 +0000 (11:32 -0700)]
Removing unused vp9_mcomp_x86.h file.
We don't use declarations from this file. The real declarations
(differently named) are in vp9_rtcd_defs.pl, e.g. vp9_full_search_sad.
Change-Id: I73cbf064305710ba20747233cfdbe67366f069a0
Yaowu Xu [Mon, 14 Apr 2014 18:23:19 +0000 (11:23 -0700)]
Reduce code duplication
Change-Id: I6ea1c335da9ca5b65f6a11466b417ad196fd0d65
Adrian Grange [Wed, 9 Apr 2014 21:51:29 +0000 (14:51 -0700)]
Enable vpxenc to specify internal coded frame size
Added command line flags "resize-width" & "resize-height"
to allow the user to specify the frame size to encode at.
These two flags are ignored if the "resize-allowed" switch
is not set to 1.
All frames in the clip are then encoded at this size, which
must be smaller than the raw frame size.
Change-Id: I3d64bd9303d5c0bd678461a866a1ea621700d744
Dmitry Kovalev [Mon, 14 Apr 2014 17:33:43 +0000 (10:33 -0700)]
Merge "Cleaning up check_best_zero_mv()."
Dmitry Kovalev [Mon, 14 Apr 2014 17:32:58 +0000 (10:32 -0700)]
Merge "Cleaning up optimize_b()."
Dmitry Kovalev [Mon, 14 Apr 2014 17:30:38 +0000 (10:30 -0700)]
Merge "Removing redundant mvsadcost local variables."
Dmitry Kovalev [Mon, 14 Apr 2014 17:29:22 +0000 (10:29 -0700)]
Merge "Removing redundant checks from vp9_change_config()."
Paul Wilkins [Mon, 14 Apr 2014 17:04:35 +0000 (10:04 -0700)]
Remove vp9_ prefix on static inline function.
This prefix reserved for global scope functions etc.
Change-Id: I671cda2a63e01a40aae3d7407dd1bb4d338d709c