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
Jingning Han [Mon, 27 May 2013 14:55:25 +0000 (07:55 -0700)]
Reduce bmi buffer length from 16 to 4
This commit removes the use of bmi_ in the first-pass encoding by
forcing encode_intra4x4block_ to use DC_PRED, followed by DCT_DCT
only, as John suggested. This makes the need for bmi buffer only
up to 4 entries, instead of 16.
Sami Pietila [Mon, 27 May 2013 07:14:53 +0000 (10:14 +0300)]
Moving txfm_size bits before prediction mode bits.
Hardware implementation needs to load coeff probs based on the
transform size. For selectable transform size, moving these bits
earlier in the bitstream adds some delay giving time to preload
the probs and speeds up the decoding process.