Jingning Han [Thu, 6 Jun 2013 04:14:14 +0000 (21:14 -0700)]
Fix UV intra coding rd loop
This commit makes the coding/reconstruction operations of intra
coding rate-distortion loop for UV components consistent with those
of the encoding process.
Deb Mukherjee [Tue, 4 Jun 2013 22:25:16 +0000 (15:25 -0700)]
Clean-ups on switchable interpolation and mv_ref
Adds backward adaptation and differential forward updates of switchable
interpolation filter probabilities. Also adds some cosmetic cleanups
and minor fixes on mv_ref probabilities.
derfraw300: +0.353% (with most coming from switchable interp changes)
Jingning Han [Mon, 3 Jun 2013 22:33:31 +0000 (15:33 -0700)]
Make sb intra rd search consistent with encoding
This commit makes operations of the superblock intra coding rate
distortion optimization consistent with those used in the encoding
process. Given the test prediction mode and transform size, the rd
optimizer encodes and reconstructs each transformed block of the
superblock consecutively, then computes the total rate-distortion
costs accosicated with the current superblock to select the coding
decisions.
It achieves coding performance gains:
derf 0.353%
yt 1.111%
Jingning Han [Mon, 3 Jun 2013 16:16:48 +0000 (09:16 -0700)]
Put iterative motion search under speed control
Enable iterative motion search for compound inter-inter prediction
of block sizes 4x4/4x8/8x4 only when best coding quality is selected.
The iterative motion search provides about 0.1% gains for derf and
stdhd at this point, at the expense of longer runtime.
Jim Bankoski [Thu, 30 May 2013 22:13:08 +0000 (15:13 -0700)]
Creates a new speed 1:
This speed 1 - uses variance threshold stolen from static-thresh
to determine split. Any superblock with greater than the variance
set by static thresh * quantizer index squared is split. In addition
transform size is set to largest size less than or equal to partition
size, sub pixel filter is set to normal, and only 12 modes are used
at all.
Ronald S. Bultje [Thu, 30 May 2013 19:49:38 +0000 (12:49 -0700)]
Remove splitmv.
We leave it in rdopt.c as a local define for now - this can be removed
later. In all other places, we remove it, thereby slightly decreasing
the size of some arrays in the bitstream.
Ronald S. Bultje [Thu, 30 May 2013 18:27:40 +0000 (11:27 -0700)]
Remove i4x4_pred.
It remains as a local define in rdopt.c so we can distinguish between
split and non-split modes in the RD loop, but disappears outside that
scope in the codec.
Yaowu Xu [Thu, 30 May 2013 21:24:12 +0000 (14:24 -0700)]
Changed to use a new variant of WHT
The commit changed to use a new variant of Walsh-Hadamard Transform
by Tim Terriberry. This new variant has the best compression among a
number of variants that developed by Tim.
Sami Pietila [Thu, 30 May 2013 09:51:36 +0000 (12:51 +0300)]
Replace scatter scan 32x32 with HW friendly scan.
The first 240 coeff positions (15 top-left blocks) are scanned in the
same order as in scatter scan, after that the coeffs are scanned in
"block bands", each band at a time, all coeffs in one band before
moving on to the next band. This brings down the amount of 4x4 coeff
blocks that need to be buffered while scanning, from 15 blocks to 8 blocks.
Adrian Grange [Thu, 30 May 2013 00:16:00 +0000 (17:16 -0700)]
Add intra_only and reset_frame_context flags
Added two flags to the frame header:
intra_only:
Signals that the frame is encoded using only INTRA
coding modes.
reset_frame_context:
Indicates that the coding context specified
in the frame header should be reset to default values before the
frame is encoded/decoded.
Deb Mukherjee [Wed, 8 May 2013 17:04:14 +0000 (10:04 -0700)]
Balancing coef-tree to reduce bool decodes
This patch changes the coefficient tree to move the EOB to below
the ZERO node in order to save number of bool decodes.
The advantages of moving EOB one step down as opposed to two steps down
in the other parallel patch are: 1. The coef modeling based on
the One-node becomes independent of the tree structure above it, and
2. Fewer conext/counter increases are needed.
The drawback is that the potential savings in bool decodes will be
less, but assuming that 0s are much more predominant than 1's the
potential savings is still likely to be substantial.
Scott LaVarnway [Wed, 29 May 2013 20:42:23 +0000 (16:42 -0400)]
Moved use_prev_in_find_mv_refs check to frame level
This patch checks at the frame level to see if the previous
mode info context can be used. This patch eliminates the
flag check that was done for every mode and removes another
check that was done prior to every vp9_find_mv_refs().
Sami Pietila [Thu, 23 May 2013 10:08:00 +0000 (13:08 +0300)]
Residual coding to cache energy class of tokens.
Proposal for tuning the residual coding by changing how the context
from previous tokens is calculated. Storing the energy class of previous
tokens instead of the token itself eases the critical path of
HW implementations.
Dmitry Kovalev [Wed, 29 May 2013 01:07:54 +0000 (18:07 -0700)]
Compressed/uncompressed frame header changes.
Adding API to read/write uncompressed frame header bits (it is not final
yet). Separate functions to read/write uncompressed header. Moving
clr_type, error_resilient_mode, refresh_frame_context,
frame_parallel_decoding_mode, frame_context_idx from compressed partition
to uncompressed frame header.
Jingning Han [Tue, 28 May 2013 21:02:29 +0000 (14:02 -0700)]
Refactor rd loop for inter modes
This commit pulls the iterative motion search for compound inter-
inter out from handle_inter_mode_ as a separate function. Hence,
it is applicable to 4x4/4x8/8x4 level compound inter search to be
enabled later.
Also edit the rd loop for 4x4 inter block sizes for cosmetic
purpose.
Yaowu Xu [Fri, 24 May 2013 23:13:54 +0000 (16:13 -0700)]
a few clean-ups
1. remove prediction mode conversion
2. unified bmode, same for key and non-key frame
3. set I4X4_PRED count for pdf to 0, as I4X4_PRED is no longer
coded ever. It is determined by ref_frame and block partition