The commmit changed to use same intra prediction function for all
block sizes.
Some details on the changes:
1. All directional modes except DC/TM/V/H now have built-in filtering
for all pixels with filter taps either (1, 2, 1)/4 or (1, 1)/2.
2. Above edge get automatic extended to double width (bw*2), which
makes a lot of the prediciton mode computation simpler.
3. Same intra prediction function is called with different size
for i4x4_pred and all other larger size.
Overall, the change helped keyframe only coding for both cif size
and std-hd size test sets by .5% consistently on all encodings.
For normal coding with single/auto key frame, the change now also
is consistently net positive for all encodings. The overall gains
is about .15% on std-hd set.
John Koleszar [Sat, 27 Apr 2013 00:52:35 +0000 (17:52 -0700)]
Unify decode_sb for >16x16 in vp9_decodframe.c
First patch to make sb decoding based on the transform size. This patch
is working for the sb modes, combining the parts of decode_mb that fit
into this framework will come as a second patch.
John Koleszar [Fri, 26 Apr 2013 13:52:43 +0000 (06:52 -0700)]
Restore vp9_asm_enc_offsets.c
The previous commit 15255ee "Move dequant from BLOCKD to per-plane MACROBLOCKD"
removed the vp9_asm_enc_offsets.c file, but didn't update the various secondary
build systems that special case these files. Restore it for now, to ensure any
in-progress changes and builds continue working, to allow time to more carefully
coordinate removal of these files.
Scott LaVarnway [Fri, 26 Apr 2013 14:19:43 +0000 (10:19 -0400)]
Removed bmi from blockd
This originally was "Removed update_blockd_bmi()". Now,
this patch removed bmi from blockd and uses the bmi found
in mode_info_context. Eliminates unnecessary bmi copies between
blockd and mode_info_context.
John Koleszar [Thu, 25 Apr 2013 18:54:18 +0000 (11:54 -0700)]
Fix incorrect dequant used in detokenize
The quantizer can vary per-plane, and the dequantization vector is
available in the per-plane part of MACROBLOCKD. The previous code would
incorrectly use the Y quantizer for the whole macroblock.
Function set_mb_row() and set_mb_col() do similar work and are always
called together, this commit merged them into a single function for
clarity and easy maintainence. This was a TODO item.
Jingning Han [Tue, 23 Apr 2013 17:12:18 +0000 (10:12 -0700)]
Contextual entropy coding of partition syntax
This commit enables selecting probability models for recursive block
partition information syntax, depending on its above/left partition
information, as well as the current block size. These conditional
probability models are reasonably stationary and consistent across
frames, hence the backward adaptive approach is used to maintain and
update the contextual models.
It achieves coding performance gains (on top of enabling rectangular
block sizes):
derf: 0.242%
yt: 0.391%
hd: 0.376%
stdhd: 0.645%
Johann [Wed, 24 Apr 2013 16:08:56 +0000 (09:08 -0700)]
Rename quantize_sse2_intrinsics.c
The only reason for the _intrinsics part of the file name was for the
interim period where only one of the functions was redone and the base
file name was the same.
Paul Wilkins [Wed, 24 Apr 2013 12:04:45 +0000 (13:04 +0100)]
Extension of segmentation to 8 segments.
Also some further simplification following removal
of top node code.
There is an issue in regards to the shared file vp8cx.h
in regard to the roi_map as this interface assumes that
there are only 4 segments. I have left the value here as
4 for now meaning that the roi_map interface is broken
for VP9.
Note that this change would have been easier if I hadn't
had to search for hard wire instances of the number 4
and <= 3.
John Koleszar [Tue, 23 Apr 2013 16:51:09 +0000 (09:51 -0700)]
Convert coeff to per-plane MACROBLOCK data
This commit moves the coeff storage from the MACROBLOCK struct to its
per-plane part. The next commit will remove the coeff member from the
BLOCK structure so that it is consistently accessed per-plane.
Also refactors vp9_sb_block_error_c and vp9_sb_uv_block_error_c to be
variable subsampling aware.
Jingning Han [Tue, 23 Apr 2013 22:07:35 +0000 (15:07 -0700)]
Enable rectangular support for comp inter-intra
This commit enables rectangular block prediction of compound
inter-intra mode. It combines the mb/sb32/sb64 prediction functions
into a unified version with configurable block width and height.
This fixes the enc/dec mismatch of the codebase when
comp-interintra-pred is enabled.
Johann [Tue, 23 Apr 2013 17:10:10 +0000 (10:10 -0700)]
Resolve declaration and implementation.
Clean Windows build warnings:
warning C4028: formal parameter <N> different from declaration
This was fixed independently in master and experimental but the fixes
were in opposite directions. One added const to the declaration and the
other removed it from the implementation.
Also update the variable names. This doesn't modify the data so call it
ref, matching the functions in the vicinity, rather than dst.
Johann [Tue, 23 Apr 2013 16:55:03 +0000 (09:55 -0700)]
Improve sign consistency.
Fix warning on windows: signed/unsigned mismatch on lines 415, 454
Comparison was between size_t data_sz >= int index_sz on 415 and
unsigned int data_sz >= int index_sz on 454. Both might be changed to
size_t but that would be tracing and replacing all comparisons is
outside the scope of this change.
In the rest of these two functions ensure unsigned values are used
consistently.
Ronald S. Bultje [Tue, 23 Apr 2013 19:32:32 +0000 (12:32 -0700)]
Make loopfilter aware of rectangular blocks.
Also use explicitely named enum values in sb_type comparisons, rather
than relying on absolute integer values, because enum values may
change in the future.
John Koleszar [Tue, 23 Apr 2013 15:26:10 +0000 (08:26 -0700)]
Move src_diff to per-plane MACROBLOCK data
First in a series of commits making certain MACROBLOCK members
addressable per-plane. This commit also refactors the block subtraction
functions vp9_subtract_b, vp9_subtract_sby_c, etc to be
loops-over-planes and variable subsampling aware.