Commit Graph

4520 Commits

Author SHA1 Message Date
Yunqing Wang
148eb803bb Optimize the scaling calculation
In decoder, the scaling calculation, such as (mv * x_num / x_den),
is fairly time-consuming. In this patch, we check if the scaling
happens or not at frame level, and then decide which function to
call to skip scaling calculation when no scaling is needed. Tests
showed a 3% decoder performance gain.

Change-Id: I270901dd0331048e50368cfd51ce273dd82b8733
2013-04-16 08:52:40 -07:00
John Koleszar
e9c2bb0816 Merge "Replacing vp9_read, vp9_read_literal, vp9_read_bit macros with functions." into experimental 2013-04-16 07:00:40 -07:00
Scott LaVarnway
6f95d53e37 Removing extra params from x_add_residual() functions
Now that the predictor is the dest, we do not need the
extra parameters.

Change-Id: I31e2c3d2015f4a1cd12e7f04536d8db478582a0a
2013-04-16 09:59:01 -04:00
John Koleszar
4054ff5da5 Merge "Removing TRUE and FALSE macro definitions." into experimental 2013-04-16 06:55:13 -07:00
Scott LaVarnway
5393379c84 Merge "Removing extra params in dequant functions" into experimental 2013-04-16 06:37:00 -07:00
Dmitry Kovalev
a0d9309eab Removing TRUE and FALSE macro definitions.
Using regular 0 and 1 constants now.

Change-Id: Ie763503cbb727847cc8f1d6506cd6f2ee607f056
2013-04-15 15:24:39 -07:00
Dmitry Kovalev
67d060067e Replacing vp9_read, vp9_read_literal, vp9_read_bit macros with functions.
This is the first CL with vp9_reader changes. All another macro
definitions will be replaced after.

Change-Id: I1c6bd9c9a612ec1663d484d6adb4fb720af54063
2013-04-15 14:54:19 -07:00
Ronald S. Bultje
1633685725 Merge "Fix lingering x->skip settings if static_threshold is used." into experimental 2013-04-15 14:20:47 -07:00
Ronald S. Bultje
f7d43d21bd Merge "Add rectangular block size variance/sad functions." into experimental 2013-04-15 14:20:25 -07:00
Ronald S. Bultje
6fa2480897 Merge "Make filter RD code and encode breakout variance size-independent." into experimental 2013-04-15 13:58:01 -07:00
Ronald S. Bultje
33a8df085d Fix lingering x->skip settings if static_threshold is used.
Keyframes don't set this variable, so it would use the last set
values from inter frames.

Change-Id: Ie1ef45ece2c44b21b5d55f6cea9f7d6e7a445692
2013-04-15 13:39:07 -07:00
Jingning Han
aaf33d7df5 Add rectangular block size variance/sad functions.
With this, the RD loop properly supports rectangular blocks.

Change-Id: Iece79048fb4e84741ee1ada982da129a7bf00470
2013-04-15 13:39:07 -07:00
Ronald S. Bultje
15eac18c4e Make filter RD code and encode breakout variance size-independent.
Static threshold results slightly up (+0.1% on derf), probably b/c
we now take the filter (sharp/lowpass) into account for the breakout
decision.

Change-Id: I9f597601da434205142afd05f32690e7ba8fd690
2013-04-15 13:38:35 -07:00
Dmitry Kovalev
fd61b7ea10 Adding mv_joint_vertical and mv_joint_horizontal functions.
Change-Id: Ieaec2c48f3752b8558ba051caaf4ba2ab0e9e84d
2013-04-15 12:07:26 -07:00
Dmitry Kovalev
b800ec1772 Merge "Motion vector decoder cleanup." into experimental 2013-04-15 11:28:52 -07:00
Dmitry Kovalev
64de375e1f Code cleanup inside vp9_reconintra4x4.c file.
Using ROUND_POWER_OF_TWO macro, using array initialization syntax for
less code.

Change-Id: I661453a6b29a9046fcff0a3f18fccb452b5eb39d
2013-04-15 11:15:56 -07:00
Scott LaVarnway
74610b1ae4 Removing extra params in dequant functions
Now that the predictor is the dest, we do not need the
extra parameters.

Change-Id: I78db73d39b5aff62f15303f3d51ad2797eae74b6
2013-04-15 13:43:11 -04:00
Yaowu Xu
757e138a3b Merge "Reorder enum i4X4 predcition modes" into experimental 2013-04-15 10:37:37 -07:00
Ronald S. Bultje
fed62e047b Merge "Fix width/height switch-up in U/V SB quantize code." into experimental 2013-04-15 10:27:22 -07:00
Ronald S. Bultje
04956a6113 Merge "Removed unused structs in vp9_onyx_int.h." into experimental 2013-04-15 10:27:10 -07:00
Ronald S. Bultje
f551c2d1c0 Fix width/height switch-up in U/V SB quantize code.
Change-Id: I697514efd6024e1b4153bbde58ae5e323b030981
2013-04-15 09:58:27 -07:00
Ronald S. Bultje
aa53ae0591 Removed unused structs in vp9_onyx_int.h.
Change-Id: I1f2dbf04a0140a7cc2060b0a9efb4ed8e5270d3d
2013-04-15 09:58:27 -07:00
Adrian Grange
4ee671a15c Merge "Initial addition of multiple ARF frames" into experimental 2013-04-15 09:46:16 -07:00
Adrian Grange
c2876cf0fd Initial addition of multiple ARF frames
This is work-in-progress, it implements multiple ARF
encoding behind an experimental flag.

It adds the ability to insert multiple ARF frames into a
single ARF group. This patch implements the reordering
of the coded frames, and implements a fixed-length coding
pattern. It applies a fixed quantizer strategy based on
where the frame is in the coding sequence.

Further work to modify the rate control strategy is
ongoing and will be submitted via a set of future patches.

In this first step, each ARF group is recursively
bisected and an ARF frame added at that position in the
sequence. The recursion continues until ARF frames are
within MIN_GF_INTERVAL frames.

The code sits behind the "multiple-arf" experimental
flag ("CONFIG_MULTIPLE_ARF"). The experimental flag
"oneshotq" ("CONFIG_ONESHOTQ") also needs to be enabled
for this patch to work correctly.

Change-Id: Ie473b05ebb43ac473c0cfb659b2b8042823085e2
2013-04-15 09:11:39 -07:00
Dmitry Kovalev
8ae091823d Merge "Encoder code cleanup." into experimental 2013-04-14 10:58:44 -07:00
Dmitry Kovalev
ab96e9cdaf Merge "Adding vp9_read_and_apply_sign function." into experimental 2013-04-14 04:37:39 -07:00
Dmitry Kovalev
ee9ce0e7d7 Merge "Intra code cleanup." into experimental 2013-04-14 04:34:16 -07:00
Dmitry Kovalev
399a6cbcde Merge "Renaming vp9_token_struct to vp9_token and removing previous typedef." into experimental 2013-04-14 04:31:39 -07:00
Dmitry Kovalev
78ddf964cd Intra code cleanup.
Removing redundant code.

Change-Id: I71bfc40a1fb06d8e3149ed5400aa4dfd87a51aac
2013-04-12 16:53:04 -07:00
Dmitry Kovalev
50a85d1428 Motion vector decoder cleanup.
Change-Id: I7d3b2ef26aba3dfb1d5c83309aab2024e04ee819
2013-04-12 12:31:23 -07:00
John Koleszar
626d06502f Merge "Enable inter predictor for rectangular block size" into experimental 2013-04-12 12:21:13 -07:00
Jingning Han
3ba9dd4165 Enable inter predictor for rectangular block size
Combine superblock inter predictors into a unified function that
allows configurable block width and height. The inter predictions
of block sizes smaller than 16x16 are handled differently. To be
continued on merging them later.

Change-Id: I14075959dd5e221f00c205c99ca35c1c31ef728e
2013-04-12 11:51:58 -07:00
Scott LaVarnway
d7b7d625b1 Removed unnecessary copy from vp9_dequant_iht_add_8x8_c
Change-Id: I8fff2216c169c872f7073e66357e400f78a3445d
2013-04-12 14:33:39 -04:00
Jingning Han
840a910b65 Merge changes I196814c0,I896fdfa0 into experimental
* changes:
  Move prediction hit counting to update_state().
  Merge loop over all macroblock modes into encode_sb_row().
2013-04-12 10:51:06 -07:00
Yaowu Xu
c2ad69bcf4 Reorder enum i4X4 predcition modes
To match the order of  directional intra prediction modes for larger
blocks, also renamed the i4x4 prediction modes to mirror the larger
variants.

Change-Id: I77cea4d0add6c7758460bf9c7a2fe59aca601f0b
2013-04-12 10:13:23 -07:00
Yaowu Xu
7de5edd14a Rename B_PRED to I4X4_PRED
So it is consistent with I8x8_PRED.

Change-Id: Iefa65124b2419690d83e526c611129c0ede29d11
2013-04-12 09:23:58 -07:00
Scott LaVarnway
aa25f6a3df Merge "Remove unnecessary vp9_copy_memNxN() calls" into experimental 2013-04-12 05:24:30 -07:00
Ronald S. Bultje
79fd8c29d6 Move prediction hit counting to update_state().
The probabilities derived from these statistics are used in bitstream
writing; therefore, we should only do this when we actually decide to
use macroblock coding (over superblock coding). Derf gains +0.15%.

Change-Id: I196814c070a7c79889590658ce10a6eb07454389
2013-04-11 17:13:02 -07:00
Scott LaVarnway
02162f1be5 Remove unnecessary vp9_copy_memNxN() calls
The build predictors now output directly to the dest.  These
copies are no longer required.

Change-Id: I8e91eda6b49993e6c16cfadc705d82a7e80f19b2
2013-04-11 20:03:48 -04:00
Jingning Han
815e95fbeb Make intra predictor support rectangular blocks
The intra predictor supports configurable block sizes. It can handle
intra prediction down to 4x4 sizes, when enabled in BLOCK_SIZE_TYPE.

Change-Id: I7399ec2512393aa98aadda9813ca0c83e19af854
2013-04-11 16:45:57 -07:00
Ronald S. Bultje
d415d28717 Merge loop over all macroblock modes into encode_sb_row().
Rename pick_mb_modes to pick_mb_mode, since it now handles only a
single macroblock. This is consistent with pick_sb_mode handling a
single non-macroblock.

Change-Id: I896fdfa06436b2d8c24d6474718cc74420df6b3b
2013-04-11 15:56:39 -07:00
John Koleszar
2f19cd03aa Merge "Remove unused vp9_recon_mb{y,uv}_s" into experimental 2013-04-11 15:51:20 -07:00
Ronald S. Bultje
deeef42b77 Merge "Remove subtract_mb* functions." into experimental 2013-04-11 15:50:40 -07:00
Dmitry Kovalev
4fdf8ccca2 Adding vp9_read_and_apply_sign function.
Change-Id: I9951a06dbe4514cc1cf69ff4349c4e12cb4a318c
2013-04-11 15:36:43 -07:00
Scott LaVarnway
cff266bbef Merge "WIP: removing predictor buffer usage from decoder" into experimental 2013-04-11 15:24:33 -07:00
Ronald S. Bultje
56d01ee0a6 Merge "Remove unused macroblock versions of reconstruction functions." into experimental 2013-04-11 15:19:08 -07:00
Ronald S. Bultje
44dc18064e Merge "Remove "tplist" from VP9_COMP." into experimental 2013-04-11 15:17:03 -07:00
Ronald S. Bultje
69902c6bf0 Merge "Merge pick_sb_modes and pick_sb64_modes." into experimental 2013-04-11 15:06:37 -07:00
Deb Mukherjee
7a97959f13 Merge "Turning model-based updates on with modelcoefprob" into experimental 2013-04-11 14:54:53 -07:00
Deb Mukherjee
66f413af4f Turning model-based updates on with modelcoefprob
This patch changes the default with the modecoefprob expt
to use mode-based forward updates with one-node pegged
modeling.

The maximum difference with fully trained tables is now
less that 0.1%.

Change-Id: I06b44322e10c6703f93f3c1d48d973b1136a0618
2013-04-11 14:45:26 -07:00