Commit Graph

4653 Commits

Author SHA1 Message Date
Jingning Han
ce3a8a6e37 Migrating SPLITMV_4X4 decoding into decode_atom
Separate the decoding process of 4x4 block based coding (both intra
and inter) from decode_mb and move it into decode_atom_. This allows
to further move the rest per 16x16 block decoding of decode_mb into
decode_sb, and hence eventually deprecating decode_mb when SB8X8 is
enabled.

Change-Id: I678cb8007d8a57b792d7a23020edb0c74fbf4237
2013-04-30 10:42:03 -07:00
Dmitry Kovalev
70d12c3a75 Merge "Renaming refresh_entropy_probs to refresh_frame_context." into experimental 2013-04-30 10:21:24 -07:00
Dmitry Kovalev
51a73fbba2 Merge "Consistent names for quant-related functions and variables." into experimental 2013-04-30 10:19:48 -07:00
John Koleszar
e8315aeea0 Merge "Fix incorrect 32x64, 16x32 subpel variance" into experimental 2013-04-30 08:43:08 -07:00
Jingning Han
7492edac93 Merge "Separate I4X4_PRED coding from macroblock modules" into experimental 2013-04-29 21:51:59 -07:00
Jingning Han
94191b5c82 Separate I4X4_PRED coding from macroblock modules
Separate the functionality of I4X4_PRED from decode_mb. Use
decode_atom_intra instead, to enable recursive partition of superblock
down to 8x8.

Change-Id: Ifc89a3be82225398954169d0a839abdbbfd8ca3b
2013-04-29 18:59:36 -07:00
Ronald S. Bultje
ee0f3a9d31 Make sure 32x32 coefficients fit in int16_t.
Fixes mismatches on yt.

Change-Id: I65444137578b29a4984af5c01b2874c5ab086acc
2013-04-29 17:59:00 -07:00
John Koleszar
9f5fd31d7f Expand UMV border to 96 pixels
Ensures that the full 64 pixel border is available for prediction (need a minimum of
64+INTERP_EXTEND on all sides, and 32+INTERP_EXTEND on UV). Value also must be a
multiple of 32 to keep UV stride alignment. The smaller border was causing the prediction
to read outside the frame, which can cause a mismatch.

TODO: Get rid of this explicit border and use edge emulation instead.

Change-Id: I3f68453a088ec0ab4349d0f5cc02b573be06d7c4
2013-04-29 17:35:51 -07:00
Yaowu Xu
0b48548eeb Merge "fixed new intra code for rectanglar blocks" into experimental 2013-04-29 16:16:27 -07:00
Dmitry Kovalev
ee97da2c03 Cleaning up encoder segmentation code.
Moving code from vp9_pack_bitstream to new function encode_segmentation.

Change-Id: I1f1e59a1f038618ad95162b7db4b6f8164850ea8
2013-04-29 16:07:17 -07:00
Yaowu Xu
caea860a0f Merge "Enabled i4x4 to use right above pixels" into experimental 2013-04-29 16:05:19 -07:00
Yaowu Xu
7ea12f2c5f Merge "Use same intra prediction for all block size" into experimental 2013-04-29 16:02:35 -07:00
Yaowu Xu
4747c6ed90 fixed new intra code for rectanglar blocks
Also fixed two minor subtle boundary conditions in intra prediction
code, and replaced memcpy/memset with vpx_ prefixed version.

Change-Id: I9cddff3be831228b628f1f2f065a61feacbcbee6
2013-04-29 16:02:00 -07:00
Yaowu Xu
e388251d5d Enabled i4x4 to use right above pixels
Change-Id: I7442b4600b6812bed13e655ccf68f9ea56cc83a2
2013-04-29 15:16:59 -07:00
Yaowu Xu
3d655805f2 Use same intra prediction for all block size
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.

Change-Id: I01ceb31fbc73d49776262e6bdc06853b03bbd1d1
2013-04-29 15:15:30 -07:00
John Koleszar
907541ee18 Fix incorrect 32x64, 16x32 subpel variance
Incorrect strides caused use of uninitialized stack data.

Change-Id: Ifc12174285311bcf0453987d4283e91141f979ef
2013-04-29 12:59:30 -07:00
John Koleszar
bbac4094e4 Merge "Use foreach_transformed_block with tokenize_b" into experimental 2013-04-29 12:53:04 -07:00
Ronald S. Bultje
767dd469b3 Merge "Merge encode_sb and encode_sb64 in a recursive encode_sb/b function." into experimental 2013-04-29 12:41:55 -07:00
Ronald S. Bultje
02d8cbaa15 Merge "Fix mi_row argument to update_stats()." into experimental 2013-04-29 12:41:53 -07:00
Ronald S. Bultje
b2d8d58cf0 Merge "Factor out assigning correct partitioning seg_context pointers." into experimental 2013-04-29 12:41:50 -07:00
Ronald S. Bultje
846a67e047 Merge "Use recursive function in resetting txfm_size for skip-blocks." into experimental 2013-04-29 12:41:47 -07:00
Ronald S. Bultje
56d61f8b07 Merge "Use recursive function in choosing segmentation map coding method." into experimental 2013-04-29 12:33:18 -07:00
John Koleszar
5c24469c2c Use foreach_transformed_block with tokenize_b
Updates the tokenizer to use the common block walker used by the
detokenizer, to support non-4:2:0 and more than 3 planes.

Change-Id: If1854117a9c7c1427349209fa2b3051ce6459dcb
2013-04-29 12:07:39 -07:00
Ronald S. Bultje
e4f0c541dd Merge encode_sb and encode_sb64 in a recursive encode_sb/b function.
Change-Id: Ifd1f7319e398381ca7d55aaacc68c39a1319d651
2013-04-29 12:05:20 -07:00
Ronald S. Bultje
7c5eb6d5da Fix mi_row argument to update_stats().
This doesn't change output, because the argument isn't actually used
ATM. However, we should fix it for consistency.

Change-Id: I7b7326a8e92c0d411c999ec2c781204b516ed53d
2013-04-29 12:05:20 -07:00
Ronald S. Bultje
247c4f769c Factor out assigning correct partitioning seg_context pointers.
Change-Id: I6e787915a92e0abdea86adaa3e1106aa9c165034
2013-04-29 12:05:19 -07:00
Ronald S. Bultje
50e0f5f825 Use recursive function in resetting txfm_size for skip-blocks.
This is shorter than fully writing out all cases (52 vs. 84 LOC), and
is easier to extend.

Change-Id: Ic75f86f15cf037543c3dc6234d9ac088205a0ed1
2013-04-29 12:04:52 -07:00
Ronald S. Bultje
8bbcbdedcb Use recursive function in choosing segmentation map coding method.
This is shorter than fully writing out all cases (55 vs. 84 LOC), and
is easier to extend.

Change-Id: Ibad1bf6463198cad9188c5507181d4b03d393e6d
2013-04-29 12:04:51 -07:00
Jingning Han
c8bed9d4f9 Merge "Immigrate tokenize_mb into tokenize_sb" into experimental 2013-04-29 11:28:56 -07:00
Ronald S. Bultje
f5ad774814 Merge "Change above/left_context to use an 8x8 basis." into experimental 2013-04-29 11:28:25 -07:00
Jingning Han
3ac3c4695c Immigrate tokenize_mb into tokenize_sb
Unify the tokenize_ function and enable configurable block size for
superblock 8x8. We are immigrating the functionalities of
macroblock handles into superblock ones, and eventually will remove
encode_mb and decode_mb. To be continued on detokenize_ module.

Change-Id: I9f81e8c2291082535cf5e0c4b662eb24fb7c8a7f
2013-04-29 11:19:36 -07:00
Ronald S. Bultje
2dbaa4f4f4 Change above/left_context to use an 8x8 basis.
Output changes slightly because of a minor bug in (at least) the sb32x16
block2above tx16x16 tables that previously existed in vp9_blockd.c.

Change-Id: I624af28ac200a8322d64454cf05c79e9502968cc
2013-04-29 10:37:25 -07:00
Deb Mukherjee
9dcbbe3d48 Merge "Turning model based reverse update on for coefs" into experimental 2013-04-29 10:13:06 -07:00
Deb Mukherjee
040eeed9d0 Turning model based reverse update on for coefs
Turns model based reverse updates on for coefficients in an
effort to reduce the memory requirement for counters.

With this patch the counters needed will be reduced by about
75% since only 3 counts are needed instead of 12.

The impact in performance is:
derf300: -0.252%
stdhd250: -0.046%

However retraining should alleviate some of the drop in
performance.

Change-Id: I6f2b3e13f6d5520aa3400b0b228fb5e8b4a43caa
2013-04-29 10:09:57 -07:00
John Koleszar
d8a120c196 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.

Change-Id: I26123416a7a87e096bbdb5eb944ce5bb198384f8
2013-04-29 09:43:22 -07:00
Paul Wilkins
fb3e4ed9eb Merge "Minor tweak to implicit segmentation experiment." into experimental 2013-04-27 11:58:13 -07:00
Jingning Han
9b935f9992 Add forward probability model update for partition
Enable forward model update for partition syntax coding.

Change-Id: If47b423b6d12f34614c57f25d235dc9ba688efc5
2013-04-27 16:47:04 +01:00
Dmitry Kovalev
f66cc1644e General cleanup inside vp9_bitstream.c.
Change-Id: I0c57b90055a018d53c32b5e39d8e899a9a4d1c1b
2013-04-26 16:46:17 -07:00
Ronald S. Bultje
7f8cbda333 Merge "Grow MODE_INFO array to use an 8x8 basis." into experimental 2013-04-26 14:46:50 -07:00
Dmitry Kovalev
9713a68719 Renaming refresh_entropy_probs to refresh_frame_context.
Change-Id: I5429c02246d198eb1b6aadbc3313b26bf3436062
2013-04-26 14:39:58 -07:00
Johann
9e23bd5df5 Merge "Merge branch 'master' into experimental" into experimental 2013-04-26 13:35:28 -07:00
Johann
32a5c52856 Merge branch 'master' into experimental
Conflicts:
	vp9/common/vp9_findnearmv.c
	vp9/common/vp9_rtcd_defs.sh
	vp9/decoder/vp9_decodframe.c
	vp9/decoder/x86/vp9_dequantize_sse2.c
	vp9/encoder/vp9_rdopt.c
	vp9/vp9_common.mk

Resolve file name changes in favor of master. Resolve rdopt changes in
favor of experimental, preserving the newer experiments.

Change-Id: If51ed8f457470281c7b20a5c1a2f4ce2cf76c20f
2013-04-26 12:57:10 -07:00
Dmitry Kovalev
5a5a1f25a8 Consistent names for quant-related functions and variables.
Change-Id: I3a6d601e90e8740b9c26dd0afbfe9d467b75d367
2013-04-26 12:30:20 -07:00
Ronald S. Bultje
1a46b30ebe Grow MODE_INFO array to use an 8x8 basis.
Change-Id: I087e08e7909a406b71715b8525c104208daa6889
2013-04-26 11:57:17 -07:00
Dmitry Kovalev
eea1fecd06 Merge "Code cleanup inside vp9_decodframe.c." into experimental 2013-04-26 11:35:25 -07:00
John Koleszar
ac22bb6fde Merge changes I7ff2fa72,I7907230d into experimental
* changes:
  Remove BLOCKD structure
  Remove destination pointers from BLOCKD
2013-04-26 11:26:18 -07:00
John Koleszar
80fadb261e Merge "Restore vp9_asm_enc_offsets.c" into experimental 2013-04-26 10:49:45 -07:00
John Koleszar
bb41ab4a0c Remove BLOCKD structure
All members can be referenced from their per-plane counterparts, and
removes assumptions about 24 blocks per macroblock.

Change-Id: I7ff2fa72d22c29163eb558981c8193765a8113d9
2013-04-26 10:35:54 -07:00
John Koleszar
4f55c5618a Remove destination pointers from BLOCKD
Access these members from MACROBLOCKD instead.

Change-Id: I7907230dd473ff12ebe182b9280d8b7f12a888c4
2013-04-26 10:14:07 -07:00
John Koleszar
34324a98e7 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.

Change-Id: I24b78db3fb874d5fbd226548b7366a05ed98e536
2013-04-26 10:01:49 -07:00