Commit Graph

2016 Commits

Author SHA1 Message Date
Scott LaVarnway
a81bd12a2e Quick modifications to mb loopfilter intrinsic functions
Modified to work with 8x8 blocks of memory.  Will revisit
later for further optimizations.  For the HD clip used, the
decoder improved by almost 20%.

Change-Id: Iaa4785be293a32a42e8db07141bd699f504b8c67
2013-06-12 19:23:03 -04:00
Yaowu Xu
d682243012 Merge "Quick modifications to wide loopfilter intrinsic functions" 2013-06-12 15:16:11 -07:00
Ronald S. Bultje
fa96eeb835 Implement SSE version for sad4x8x4d and SSE2 version for sad8x4x4d.
Encoding time of crew (CIF, first 50 frames) @ 1500kbps goes from 4min56
to 4min42.

Change-Id: I92c0c8b32980d2ae7c6dafc8b883a2c7fcd14a9f
2013-06-12 17:40:01 -04:00
Scott LaVarnway
26496c52bf Quick modifications to wide loopfilter intrinsic functions
Modified to work with 8x8 blocks of memory.  Will revisit
later for further optimizations.  For the HD clip used, the
decoder improved my 20%.

Change-Id: Ia0057f55d66d1445882351ea6c43b595a5a980e5
2013-06-12 16:49:08 -04:00
John Koleszar
1fa04e1a03 Merge changes I86fe51b0,I4c9a9e0f
* changes:
  Remove unused vp9_idct_add_{y,uv}_block
  Remove some unused loopfilter code
2013-06-12 13:43:30 -07:00
Johann
bbd5cb2bd4 Merge "Fix compile warnings on windows." 2013-06-12 13:36:50 -07:00
John Koleszar
495ff8e0c7 Merge "Enable mmx loop filter routines" 2013-06-12 12:52:04 -07:00
Ronald S. Bultje
b55f8b696a Merge "Fix row tiling." 2013-06-12 12:41:57 -07:00
John Koleszar
ad3b12f857 Merge "Fix chroma output when scaling" 2013-06-12 12:39:10 -07:00
John Koleszar
ceee4563d6 Remove unused vp9_idct_add_{y,uv}_block
These functions are not used, and appear to have been superceded.

Change-Id: I86fe51b088264f6b1b8d4d232bba97b371b98120
2013-06-12 12:24:22 -07:00
Jingning Han
1a5bb3cc76 Fix the comments in boundary block partition check
Change-Id: Ic6b2881d8d495269edbc514b33376ca963798b45
2013-06-12 12:05:06 -07:00
John Koleszar
8933a652fc Remove some unused loopfilter code
This code is unreachable, and not useful for later reference.

Change-Id: I4c9a9e0fbf859c1081bbcfbcda9710afb4b4741f
2013-06-12 11:36:00 -07:00
Frank Galligan
4524548f80 Fix compile warnings on windows.
Change-Id: If74bc6110016bc75ea3883ab136fbbac88f6a913
2013-06-12 11:34:15 -07:00
Yaowu Xu
16b876fb63 Merge "Quick fix to stop vpxdec infinite loop" 2013-06-12 11:28:46 -07:00
John Koleszar
0e1e16db90 Enable mmx loop filter routines
The mmx routines work as expected for the loop filter, so enable them.

Change-Id: I2bbd9b99a4445fcba17bb95002f1fb6e01fe8f85
2013-06-12 11:28:21 -07:00
Scott LaVarnway
9dead02b09 Quick fix to stop vpxdec infinite loop
vpxdec stays in a loop when decoding vp9.  This patch is a
quick fix to stop the loop when all data has been decoded.
Eventually we should move the vp9_get_raw_frame() call into
vp8_get_frame().

Change-Id: I3f97b6b4e1fe9ba69f746a29fc54c3304956f661
2013-06-12 13:46:47 -04:00
Ronald S. Bultje
8a0808a145 Fix row tiling.
Change-Id: I57be4eeaea6e4402f6a0cc04f5c6b7a5d9aedf9b
2013-06-12 13:42:59 -04:00
Yaowu Xu
efe05b7437 fix a mis use of ref_frame
Change-Id: I9aac140d775b7b4a8727494d15b185b75501a546
2013-06-12 10:32:38 -07:00
John Koleszar
01016ff9a6 Fix chroma output when scaling
The encode-side scaling was not indexing through the image correctly
for the chroma planes, causing a green checkerboard-like output in
the unit test.

Change-Id: I9abbd73615404cd6699588be3e64dcf59005bc14
2013-06-12 10:11:53 -07:00
Frank Galligan
15f9077ee2 Fix duplicate const.
Change-Id: I86be1f7421ed49d577cacf405f6e4b0daa85cfdc
2013-06-12 08:52:34 -07:00
John Koleszar
d0ed677a34 Merge branch 'master' into experimental
Change-Id: Ie648398b82f7311143709f55c0e30ba452f50eff
2013-06-11 16:29:28 -07:00
John Koleszar
76e0c95dd9 Trap reference frames of invalid size
A corrupt bitstream could refer to a reference frame that has no size.

Change-Id: I56c3b71a9dbb58b498e9969403e289c0e574f948
2013-06-11 15:16:38 -07:00
John Koleszar
2bcc473602 decode_tiles(): validate buffer reads
Previous code indexed using the tile length coded in the bitstream
without checking that the read would be valid.

Change-Id: Ia5047762223a4f80d75016dd546dc2ef18b6887d
2013-06-11 14:52:32 -07:00
Deb Mukherjee
e3d3ace314 Merge "Minor change in forward updates" into experimental 2013-06-11 12:48:41 -07:00
John Koleszar
0b792cf97f Merge "Disallow wide loopfilter on some chroma borders" into experimental 2013-06-11 12:29:03 -07:00
John Koleszar
9831f20594 Disallow wide loopfilter on some chroma borders
Don't do the 15 tap filter if there aren't 8 pixels below/right of the
edge.

Change-Id: I62f16437c1d9ba59b6901a5fe71ddb2f472da344
2013-06-11 11:28:38 -07:00
Deb Mukherjee
a4d906c132 Minor change in forward updates
Removes the case of coding prob = 0 for forward updates, since that
is not an allowed probability to code.
Slightly improves efficiency but may not matter in practice.

Change-Id: I3b4caf82e8f0891992f0706d4089cc5a27568dba
2013-06-11 10:33:07 -07:00
Jim Bankoski
fca6c82b29 Fix rd partition search for corner blocks
This commit enables proper partition type search for the bottom-
right corner blocks.

Change-Id: Id1123d0e4e81eba648ed4f3c0c7ab587e174f650
2013-06-11 09:29:21 -07:00
Jingning Han
551f37d63d Fix partition coding of corner block
This commit fixed the allowable partition types for bottom-right
corner blocks.

When a block has over half of its pixels as valid content in both
vertical and horizontal directions, allow all the four partition
types in the bit-stream. Otherwise, apply partition type constraints.

Change-Id: I2252e2de7125a8bfb1c824bf34299a13c81102e3
2013-06-10 21:43:17 -07:00
Deb Mukherjee
f18328cbf1 Adds a zero check in model_rd function
Avoids divide-by-zero when variance is 0.

Change-Id: I3c7f526979046ff7d17714ce960fe81d6e1442a0
2013-06-10 17:04:47 -07:00
John Koleszar
9b78ed8229 Merge "Using network byte order (big-endian) to encode tile size." into experimental 2013-06-10 16:48:11 -07:00
Deb Mukherjee
51a7c7631d Merge "New probs for filters/tx_size and a few others" into experimental 2013-06-10 16:39:43 -07:00
Deb Mukherjee
a43ff15399 New probs for filters/tx_size and a few others
* New probs for subpel filters/tx_count
* Makes a change to not reset to defaults for the tx_size
probs if an intermediate frame reverts to using a fixed tx_size.
* A few updates to the parameters for backward adaptation for mode/mv
* some cosmetic cleanups

derf300: +0.06%

Change-Id: I22994d659bc31ca7a4fc8820fde24001e64a2920
2013-06-10 16:38:47 -07:00
John Koleszar
091e23c3e6 Merge "Remove remnants of VP8 profiles/versions" into experimental 2013-06-10 16:16:17 -07:00
Dmitry Kovalev
85381e3416 Using network byte order (big-endian) to encode tile size.
This is consistent with uncompressed header encoding.

Change-Id: Iccf40a44b493ed36ee085b81ed56f7952cde70a9
2013-06-10 16:13:08 -07:00
John Koleszar
0fcb625e35 Remove remnants of VP8 profiles/versions
Remove the bilinear filter mode, and the no-loopfilter mode, and the
related vp9_setup_version() function.

Change-Id: I32311367812faf37863131df3af37d63d03973d7
2013-06-10 15:55:03 -07:00
Jim Bankoski
ba2af976cb print debugging info from mode info struct
This commit has no impact but to help us debug issues.   To Use call like
this:

  vp9_print_modes_and_motion_vectors(cpi->common.mi, cpi->common.mi_rows,
                                     cpi->common.mi_cols,
                                     cpi->common.current_video_frame,
                                     "decode_mi.stt");

Change-Id: I89e27725dae351370eb7f311a20a145ed4f1d041
2013-06-10 14:03:17 -07:00
John Koleszar
44db42c114 Merge the new loopfilter experiment
Change-Id: I524ba98841f2e1850e3276ac365c501cea31546d
2013-06-10 12:30:12 -07:00
John Koleszar
c37a1e5ef2 Merge "Loopfilter: Fix chroma edge selection" into experimental 2013-06-10 12:17:24 -07:00
John Koleszar
2f3cbfdde1 Merge "Fix use of get_uv_tx_size in loopfilter" into experimental 2013-06-10 12:17:11 -07:00
Adrian Grange
c4e5b77d74 Merge "Implement intra-coded frames" into experimental 2013-06-10 12:08:09 -07:00
Deb Mukherjee
995ce523eb Cosmetic cleanups of filters
No bitstream change.

Removes unused filters and the code for the case of 2 switchable filters;
also changes the 8tap-smooth filter coefficients for integer shifts to be
interpolating to be consistent with the way it is implemented currently.

Change-Id: I96c542fd8c06f4e0df507a645976f58e6de92aae
2013-06-10 12:06:36 -07:00
Adrian Grange
eac344ef10 Implement intra-coded frames
Implements ability to signal and decode frames that are
encoded using only intra coding modes. Only the decode
side has been implemented here.

Change-Id: I53ac6a8d90422cd08ba389e5236e15b45f9e93de
2013-06-10 11:43:16 -07:00
John Koleszar
48b7cbcac5 Loopfilter: Fix chroma edge selection
A 32x32 transform should have no internal filtering (check c==4)

Change-Id: I7414cf4748ed053208217692ef00cd8b20d49a91
2013-06-10 11:40:57 -07:00
John Koleszar
717d744a01 Fix use of get_uv_tx_size in loopfilter
Change the argument of get_uv_tx_size() to be an MBMI pointer, so that the
correct column's MBMI can be passed to the function.

Change-Id: Ied6b8ec33b77cdd353119e8fd2d157811815fc98
2013-06-10 11:40:57 -07:00
Paul Wilkins
de6ec27d1a Rd check on segment level reference mode.
Do not allow the rd code to check compound modes if
a segment level reference frame is selected.

Change-Id: I95f0c57789e0eaceed7caf227e94b4ba3130a06c
2013-06-10 11:03:15 -07:00
Ronald S. Bultje
b12a8dac98 Allow non-zeromv if ref_frame=intra with segmentation skip/ref enabled.
Change-Id: Ib5a95bb6ab643b276df3faa9bf99595e4a69ff18
2013-06-10 10:55:10 -07:00
Ronald S. Bultje
eedd98ac0a Fix crash on RD iterations with segmentation enabled.
Change-Id: I3baf93c2fa5c2f7f45c6bc5514d317040975da71
2013-06-10 10:42:09 -07:00
John Koleszar
ec38b6150d Merge "Fixed point reference picture scaling" into experimental 2013-06-10 09:45:34 -07:00
Ronald S. Bultje
549258b1c2 Merge "border mvref issue" into experimental 2013-06-10 09:22:49 -07:00
Jim Bankoski
75459d65df border mvref issue
Fixes mvref issue.

Change-Id: I07dc1b0682845bc18fe0efa6af5e4f4da3abfa3a
2013-06-10 09:21:11 -07:00
Yaowu Xu
7f99844e91 Merge "Loopfilter: bug fix in sb_type usage" into experimental 2013-06-10 08:56:38 -07:00
Tero Rintaluoma
86bb6df005 Fixed point reference picture scaling
Fixed point scaling factors are calculated once for each
reference frame by using integer division. Otherwise fixed point
scaling routines are used in all scaling calculations. This makes it
possible to calculate fixed point scaling factors on device driver
software and pass them to hardware and thus avoid division on hardware.

TODO:
 - Missing check for maximum frame dimensions
   (currently scaling uses 14 bits)
 - Missing check for maximum scaling ratio
   (upscaling 16:1, downscaling 2:1)

Problems:
 - Straightforward fixed point implementation can cause error +-1
   compared to integer division (i.e. in x_step_q4). Should only
   be an issue for frames larger than 16k.

Change-Id: I3cf4dabd610a4dc18da3bdb31ae244ebaf5d579c
2013-06-10 08:07:55 -07:00
Janne Salonen
548f90d2ce Loopfilter: bug fix in sb_type usage
Was always using sb_type of first column in a row of 8x8 units when
determining decoded block edges as a subcondition for loop filter
skipping.

Change-Id: Ib17554633a63a90b70cdaa7bed65db035a8ad9d8
2013-06-10 06:40:05 -07:00
Yaowu Xu
4852a8023d Merge "Loopfilter: Always filter intra edges" into experimental 2013-06-09 21:18:00 -07:00
Yaowu Xu
9c44ce9f4b Merge "Loopfilter: use the current block only for skip" into experimental 2013-06-09 21:17:54 -07:00
Yaowu Xu
2e1fd0a497 Merge "Modified loop filter edge skipping" into experimental 2013-06-09 21:17:47 -07:00
John Koleszar
140ac34e57 Loopfilter: Always filter intra edges
Change-Id: Ifb1ce2bd52147981ca1aec9ec6cfea8738a23e45
2013-06-09 09:02:47 -07:00
Ronald S. Bultje
c3f9b070ca Merge "New comp_inter defaults." into experimental 2013-06-09 06:40:02 -07:00
Ronald S. Bultje
3993d30922 Merge "Fix firstpass if framesize is not a multiple of 16." into experimental 2013-06-08 17:40:17 -07:00
Ronald S. Bultje
d30968c32a Merge "New default tables" into experimental 2013-06-08 17:39:50 -07:00
Ronald S. Bultje
20760254f6 Merge "Align frame size to 8 instead of 16." into experimental 2013-06-08 17:39:41 -07:00
Ronald S. Bultje
99e10253b0 New comp_inter defaults.
It seems like I inverted the meaning of the contexts by accident?

Change-Id: Iafb2346d9933930949578342b84519b719dd5dd3
2013-06-08 15:13:57 -07:00
Ronald S. Bultje
073c7d5eec Fix firstpass if framesize is not a multiple of 16.
Change-Id: Iec41736c2b6140715f90f40de5ae6cf52497a9b8
2013-06-08 13:32:05 -07:00
Yaowu Xu
c08317e4f2 Merge "Fix the rd loop over partition types" into experimental 2013-06-08 13:30:27 -07:00
Ronald S. Bultje
b64be43998 New default tables
Change-Id: Ice8c73a2a843113877b8f8ed78737a1442c25ced
2013-06-08 13:29:14 -07:00
Deb Mukherjee
17da2cab78 TX_SIZE contexts simplification.
Reduces TX_SIZE contexts to 2 for each kind. The code is
cleaner and there is hardly any performance difference with
more than two contexts.

Results: almost neutral

Change-Id: I17656bd6db76224ae2856adf882504560e7dbaa4
2013-06-08 12:32:26 -07:00
Deb Mukherjee
67cb1f093c Minor fix in TX_SIZE contexts
Change-Id: I9e81f84877e18ba7e55d66389ed60e64a5b7abcc
2013-06-08 07:14:58 -07:00
Jingning Han
e1d63c010e Fix the rd loop over partition types
This commit enables boundary blocks properly tested over allowable
partition types.

Change-Id: I405a9a46ddcfa0c7af2b63e3644cabfa3b6a951d
2013-06-07 23:36:35 -07:00
Jingning Han
b0003e4972 Merge "Fix mv range border in pixels" into experimental 2013-06-07 23:20:36 -07:00
Dmitry Kovalev
f576e79272 Merge "Uncompressed header: new encoding for frame size" into experimental 2013-06-07 18:22:53 -07:00
Yaowu Xu
b7da6d0c5a Merge "Handle partition type coding of boundary blocks" into experimental 2013-06-07 18:16:16 -07:00
Dmitry Kovalev
4053fde7ee Uncompressed header: new encoding for frame size
For key frames everything is the same as before. For inter frames we try
to reference last/golden/altref frame size. If there is no match then the
actual size is encoded. Also we don't allow zero width and height anymore.

Change-Id: I49d791fd94af749c823579b0c5ef17c961372678
2013-06-07 18:09:29 -07:00
John Koleszar
f7e4b72df8 Loopfilter: use the current block only for skip
Use the current block's skip flag to determine edge skipping.

Change-Id: I4ba81f899286afbc3f6bb83eba2ef146a01b6fa4
2013-06-07 17:48:57 -07:00
Ronald S. Bultje
71701f3d40 Align frame size to 8 instead of 16.
Change-Id: Ic606ef1b31e49963a779455a1e010a9ebb0f3f1f
2013-06-07 17:20:50 -07:00
Adrian Grange
07a5777bde Frame header changes to support intra_only frames
Made changes to the frame header to write the sync
code in the frame header for a non-displayable,
intra-only frame.

Extended reset_frame_context to 2-bits.

(Submitting on behalf of Dmitri)

Change-Id: Ie836ae0df9ed572fb4f08aabe9351a555c4f3b96
2013-06-07 16:19:34 -07:00
Deb Mukherjee
21401942b0 Coding tx-size selection by use of spatial context
Adds coding of transform size within a frame by use of context
of transform sizes selected in left and above blocks.

Also incorporates code for generating stats.

TODO: generate and incorporate new default stats

Change-Id: I6a7af099f6ad61d448521d9a51167aedaf638ed6
2013-06-07 16:07:58 -07:00
Deb Mukherjee
869a39ba60 Cleans up mbskip encoding
Refactors mbskip coding to be compatible with coding of the rest of
the symbols. Adds forward/backward adaptation and removes a lot of
the legacy code.

Results:
fast50: +1.6%
derfraw300: +0.317%

Change-Id: I395a2976d15af044d3b8ded5acfa45f6f065f980
2013-06-07 16:00:26 -07:00
Jingning Han
c0167cbbc2 Fix mv range border in pixels
WIP: trying to resolve the mismatch issue in extending frame
dimension into multiples of 8.

Change-Id: I24e7638ab3c50e21e6969c1eeed4f607d6f11f65
2013-06-07 15:49:30 -07:00
Ronald S. Bultje
36f02bf3c1 Add slightly more colorspace variations.
Change-Id: Ib44541fbbdcf71ec881814bd6715ea1c6bd82cf4
2013-06-07 14:45:49 -07:00
Dmitry Kovalev
6533ac7352 Merge "Preparation to new frame size encoding." into experimental 2013-06-07 14:42:49 -07:00
Jingning Han
78b8190cc7 Handle partition type coding of boundary blocks
The partition types of blocks sitting on the frame boundary are
constrained by the block size and the position of each sub-block
relative to the frame. Hence we use truncated probability models
to handle the coding of such information.

100 frames run:
yt 0.138%

Change-Id: I85d9b45665c15280069c0234ea6f778af586d87d
2013-06-07 14:19:40 -07:00
Ronald S. Bultje
6462afe088 Fix ref_frame segment feature when it is intra.
Change-Id: Ifbf790c14cee0c08a27f6728e3c637404e1f8477
2013-06-07 13:57:55 -07:00
Ronald S. Bultje
28164eb962 Fix segment feature data size.
Change-Id: I4331cfd99a717938f4f970cad81c468cbf287b00
2013-06-07 13:57:28 -07:00
Ronald S. Bultje
d5c2d2dc94 Fix line that disables the line above it.
Change-Id: I19d5cb60a00a001f6e5b3d90ce2db6e49d6209ad
2013-06-07 13:57:28 -07:00
Ronald S. Bultje
fb1f6f1db4 Fix segment feature data type.
It has a range of -255,255, so should be int16_t, not int8_t.

Change-Id: I5ef4b6aefb6212b0f35f4754f3c4d73fddbc52a0
2013-06-07 13:57:27 -07:00
Ronald S. Bultje
363dc6ceda Don't crash if motion vector ref points to out-of-bounds area.
This can only happen if partition is partly out-of-frame, in which
case the referenced mv is either out-of-frame also (and thus has the
same value as an already-read one), or it is actually uninitialized,
in which case we don't want to use it.

Change-Id: Icf39fa4d987c7abcbebb9bbdcdd6311e8fb9d3c9
2013-06-07 13:57:27 -07:00
Ronald S. Bultje
7dbd8a5d2b Fix static segmentation feature.
Change-Id: Ia36f626b9b3c2fe7eb89bb9acddf4701db1baef2
2013-06-07 13:57:27 -07:00
Paul Wilkins
340c7a48e6 Change to segment ref frame feature.
Simplify feature to only support a single reference frame
instead of a mask.

Change-Id: I5dd3a98c7a224aafb35708850ab82e2f220e68fb
2013-06-07 21:42:22 +01:00
Dmitry Kovalev
514b8adacd Preparation to new frame size encoding.
Just an intermediate change set to simplify merges. Reordering several
uncompressed header bits, code restructuring + minor cleanups.

Change-Id: I28272f520762f8c4e3ad230ae39fff5102ba5c0d
2013-06-07 13:41:44 -07:00
John Koleszar
fd935f309c Merge "Add cheap show-buffer operation" into experimental 2013-06-07 11:41:08 -07:00
John Koleszar
229f9a5f09 Merge "Add bits for colorspace, profile" into experimental 2013-06-07 11:41:02 -07:00
John Koleszar
8c6bff6c0c Merge "Add marker bit to bool-coded partition start" into experimental 2013-06-07 11:40:58 -07:00
Yaowu Xu
0bb6da3668 Merge "Remove two un-used entries in mode_lf_delta[]" into experimental 2013-06-07 10:10:45 -07:00
Yaowu Xu
254f46bc5b Merge "Specify mv neighborhood for block larger than 8x8" into experimental 2013-06-07 10:09:35 -07:00
Yaowu Xu
b097a3ba82 Remove two un-used entries in mode_lf_delta[]
With the removal of i4X4 and SPLIT_MV modes, the two entries for the
modes are no longer used. This patch remove the coding of the deltas.

Change-Id: Iea4eb500404ebe9706159380a03b8eca542fb4c3
2013-06-07 09:24:09 -07:00
Deb Mukherjee
78fbaf4d84 Merge "Coding updates for tx-size selection" into experimental 2013-06-07 09:19:36 -07:00
Ronald S. Bultje
def6bc765c Merge "Revert "Align frame size to 8 instead of 16."" into experimental 2013-06-07 09:01:33 -07:00
Yaowu Xu
8b3ad75266 Specify mv neighborhood for block larger than 8x8
The new neighorbhood adapts to the shape and size of the block type
cif +.16%
stdhd +.13%

Change-Id: I978db58278e9ae3fbd6726ef831bdfc5f5f37d02
2013-06-07 08:59:48 -07:00
Ronald S. Bultje
e7d306aae6 Revert "Align frame size to 8 instead of 16."
This reverts commit c2574414d4

Change-Id: Ie9013cb0bb43e639e01b4588f630b1da59295d38
2013-06-07 08:59:27 -07:00
Deb Mukherjee
3ee1a21a42 Coding updates for tx-size selection
Changes to the coding of transform sizes, along with forward
and backward probability updates.

Results:
derf300: +0.241%

Context based coding of transform sizes will be in a separate
patch.

Change-Id: I97241d60a926f014fee2de21fa4446ca56495756
2013-06-07 08:54:00 -07:00
Janne Salonen
5c5223860a Modified loop filter edge skipping
Added condition to not to skip filtering of transform block edges when
the edge is also a decoding block edge.

Change-Id: Iaccb6206c4202b78e5dca3b89379556e0f4aba0c
2013-06-07 06:36:22 -07:00
Paul Wilkins
576c2bb021 Fix bug in segment skip.
Wrong max data size (skip has no data) and use of vp9_get_segdata()
when it should be vp9_segfeature_active().

Change-Id: I1eb97d33df6e2a42cc589049f704266fe3639902
2013-06-07 13:27:08 +01:00
Paul Wilkins
653a25569b Compound inter encoder bug fix.
In the longer term the encoder should allow compound as long
as one of the buffers has opposite sign bias and as per the decoder
this buffer is then set as the fixed reference. However at the moment
the encoder and RD loop only supports the case where the ALTREF_FRAME
buffer (or third of the 3 allowed in any given frame) is the odd one out.

This patch fixes a bug that would allow compound inter and set
fixed ref to ALTREF_FRAME when it is not the odd one out.

Change-Id: Ic83a69486e088a147ba83a4aedc2a0042f6b3721
2013-06-07 12:31:54 +01:00
John Koleszar
2584a5e5e5 Add cheap show-buffer operation
Adds the ability to have the decoder show one of the existing reference
frames directly, without having to code it indirectly as a series of
skip blocks.

Change-Id: Ib6c26c5f6a8709863cf304ab890db8559687d25e
2013-06-07 00:48:03 -07:00
John Koleszar
e5b956f620 Add bits for colorspace, profile
Adds 3 bits for colorspace (sent on keyframes), 2 bits for version.

Change-Id: Iaa0cf1dcdd085cebb46e2bc4a7c78cd33cf24325
2013-06-07 00:00:16 -07:00
John Koleszar
a425e2cc06 Add marker bit to bool-coded partition start
Adds a marker bit to allow distinguishing the frame header from its residual
data.

Change-Id: Id75d47acc9e5a97007e4690c4f8748a4ce63e641
2013-06-06 23:06:26 -07:00
Yaowu Xu
4df9e7883c Merge "Removed rectangular intra prediction code" into experimental 2013-06-06 22:58:07 -07:00
Yaowu Xu
e127bdc04c fix a typo
Change-Id: I8fd21e3a8435b873c5687d8b273922fc60988295
2013-06-06 22:25:13 -07:00
Yaowu Xu
472669befb Fix a merge conflict
ref_frame in MB_Mode_Info was changed in the ref frame coding patch
to be an array to handle first and second reference frame, this patch
fix the loop filter code that use the pointer directly as reference
frame.

Change-Id: I71afa5a49deb50c1bc38029fd07470b984c6dfe9
2013-06-06 22:10:07 -07:00
Yaowu Xu
9470c1a2a1 Removed rectangular intra prediction code
As all intra predictions happen on squared transform block now.

Change-Id: I7ec91e3f0ad01383a03d2bd3099bbf32e87e3466
2013-06-06 21:35:10 -07:00
Jim Bankoski
fa9db8da15 Merge "Fix FIXME." into experimental 2013-06-06 20:50:51 -07:00
Jim Bankoski
686f437264 Merge "Align frame size to 8 instead of 16." into experimental 2013-06-06 20:49:59 -07:00
John Koleszar
736c7b804a Merge "Reimplementation of loop filter" into experimental 2013-06-06 17:34:26 -07:00
Ronald S. Bultje
c2574414d4 Align frame size to 8 instead of 16.
Change-Id: Ic22f416a33de558519d5c30a929f6a954546ade9
2013-06-06 17:28:11 -07:00
Ronald S. Bultje
bc41af00cf Fix FIXME.
Change-Id: I47a9857d35da1bff6153f8090c6b98b689b31a61
2013-06-06 17:28:11 -07:00
Ronald S. Bultje
6ef805eb9d Change ref frame coding.
Code intra/inter, then comp/single, then the ref frame selection.
Use contextualization for all steps. Don't code two past frames
in comp pred mode.

Change-Id: I4639a78cd5cccb283023265dbcc07898c3e7cf95
2013-06-06 17:28:09 -07:00
Jim Bankoski
9062b92b0f Merge "fix vp9_wb_write_bit uninitialized variable" into experimental 2013-06-06 17:13:57 -07:00
Jim Bankoski
c003b97d11 fix vp9_wb_write_bit uninitialized variable
This fixes a valgrind error.

Change-Id: I0e1ef212ba09d65e3d71dd209f0786ae6530d2c8
2013-06-06 16:48:34 -07:00
Dmitry Kovalev
395ae7abed Merge "Moving segmentation and tile info to uncompressed header." into experimental 2013-06-06 15:34:00 -07:00
Dmitry Kovalev
a23757633d Moving segmentation and tile info to uncompressed header.
Change-Id: I0ca77329d882a2026f6c1941b8e447d86bc87bda
2013-06-06 12:33:12 -07:00
Ronald S. Bultje
ad34368786 New intra mode and partitioning probabilities.
Split partition probabilities between keyframes and non-keyframes,
since they are fairly different. Also have per-blocksize interframe
y intramode probabilities, since these vary heavily between different
blocksizes.

Lastly, replace default probabilities for partitioning and intra modes
with new ones generated from current codec. Replace counts with actual
probabilities also.

Change-Id: I77ca996e25e4a28e03bdbc542f27a3e64ca1234f
2013-06-06 10:45:30 -07:00
Jingning Han
d03e974fbd Bug fix in rd_pick_inter_mode_sb_
Fix the calculation of step size in height.

Change-Id: I0e0c0175f141f5a41214ae51cef233d13942d3c5
2013-06-06 10:04:26 -07:00
Paul Wilkins
26e24b1dd7 Merge "Rd thresholds change with block size." into experimental 2013-06-06 09:27:44 -07:00
Paul Wilkins
02590a5b1b Merge "Turn off compound inter search refinement for good quality." into experimental 2013-06-06 09:27:31 -07:00
Jim Bankoski
b4c4f64862 signs reverted
Change-Id: Ieface458c83eb6e7ee95595d9fc662f372117c9a
2013-06-06 08:59:22 -07:00
John Koleszar
043d348aae Reimplementation of loop filter
This version of the loop filter supports non-4:2:0 subsampling and
a fourth plane, as well as changing the filtering order to be more
friendly to hardware implementations.

The filters are applied first to all vertical edges within the
64x64 SB, followed by the top horizontal edge and any internal
horizontal edges. Since filtering is applied on each 4x4 edge
serially, a dependency is created from filtering one block edge
to the next. It would be possible to remove this depencnecy by
building all filtering decisions from the unfiltered
reconstruction data.

Change-Id: I08f3e9683eb7bded8a76651cbc50fc0dfdd05fa7
2013-06-06 08:45:45 -07:00
Paul Wilkins
c3316c2bc5 Rd thresholds change with block size.
Added structures to support independent rd thresholds
for different block sizes (and set experimental block
size correction factors).

Added structure to to allow dynamic adaptation of thresholds
per mode and per block size basis depending on how often
the mode/block size combination is seen (currently fixed factor).

Removed some unused variables.

TODO
- Adaptation of thresholds based on how often each mode chosen.
- The baseline mode values could also be adjusted based on
  the block size (e.g. for a particular intra mode use a low threshold
  for 4x4 prediction blocks but a relatively high value for 64x64.

Change-Id: Iddee65ff3324ee309815ae7c1c5a8584720e7568
2013-06-06 15:45:53 +01:00
Paul Wilkins
c880e02f97 Turn off compound inter search refinement for good quality.
Turn this feature off for some modes in  "good" quality.

Change-Id: I3f262d62cca8f01736b977af1465291e8be29f0a
2013-06-06 15:44:25 +01:00
Jim Bankoski
5a88271b09 don't tokenize & encode tokens for blocks in UMV
This avoids encoding tokens for blocks that are entirely
in the UMV border. This changes the bitstream.

Change-Id: I32b4df46ac8a990d0c37cee92fd34f8ddd4fb6c9
2013-06-06 06:10:25 -07:00
Dmitry Kovalev
28d31aed7f Merge "Moving bits from compressed header to uncompressed one." into experimental 2013-06-06 01:15:44 -07:00
Deb Mukherjee
9504f5fac7 Merge "Fix in forward updates for INTRA modes/partitions" into experimental 2013-06-06 00:07:06 -07:00
Jingning Han
61e6586230 Merge "Fix UV intra coding rd loop" into experimental 2013-06-05 21:47:00 -07:00
Jingning Han
f04b15486a 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.

key frame coding gains:
derf:   0.11%
stdhd:  0.42%

Change-Id: I8d49f83924a320e3689ef2d60096c49d7f0c7a40
2013-06-05 21:18:02 -07:00
Dmitry Kovalev
12345cb391 Moving bits from compressed header to uncompressed one.
Bits moved: refresh_frame_flags, active_ref_idx[], ref_frame_sign_bias[],
allow_high_precision_mv, mcomp_filter_type, ref_pred_probs[].

Derf results: +0.040%

Change-Id: I011f43c7eac0371d533b255fd99aee5ed75b85a5
2013-06-05 20:56:37 -07:00
Deb Mukherjee
2693704621 Fix in forward updates for INTRA modes/partitions
Results:
derfraw300: +0.2

Change-Id: Ie40dc3b31e877ee705f936066d7fa5702bd01ecd
2013-06-05 15:43:44 -07:00
Deb Mukherjee
30226a658f Cosmetic renaming VP9_MVREFS to VP9_INTER_MODES
NO bitstream change

Change-Id: I79f6146dac5fdd157051b6f8dc611c0b7b5e5f7f
2013-06-05 11:24:01 -07:00
Deb Mukherjee
83885235a7 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)

Change-Id: Ie2718be73528c945fd0d80cfd63ca2d9cb3032de
2013-06-05 10:11:52 -07:00
Jingning Han
513d326d75 Merge "Make sb intra rd search consistent with encoding" into experimental 2013-06-04 14:59:05 -07:00
Jingning Han
51b6e73a68 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%

Change-Id: I0da2eb7a71361dfb8c1384927fc536b0c2790d07
2013-06-04 13:54:48 -07:00
Yaowu Xu
6ad061de58 Merge "Fix a off-by-one bug" into experimental 2013-06-03 14:56:38 -07:00
Dmitry Kovalev
6a961e7dc8 Merge "Replacing memcpy with struct assignment." into experimental 2013-06-03 14:32:05 -07:00
Dmitry Kovalev
87ab7b0fdd Merge "Moving quantization and loopfilter data to uncompressed header." into experimental 2013-06-03 14:29:34 -07:00
Yaowu Xu
0449ee0fec Fix a off-by-one bug
in the calculation of maximum number of tiles in log2 scale.

Change-Id: Id283d6e51a8b926015fd3fc631cdbfb4b8268d4a
2013-06-03 14:25:28 -07:00
Dmitry Kovalev
b8b91b2f91 Moving quantization and loopfilter data to uncompressed header.
Overall PSNR drop on derf set is -0.024.

Change-Id: I1c05d2ace83488205ca16e3b06cd5f0ebceec8d6
2013-06-03 10:50:57 -07:00
Jingning Han
9068bce4e7 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.

Change-Id: Idc03e7f827e51f1bb8d269bc3752ee297a6bbfe5
2013-06-03 09:18:57 -07:00
Paul Wilkins
6dd3a6320e Merge "Replace scatter scan 32x32 with HW friendly scan." into experimental 2013-06-03 02:42:37 -07:00
Paul Wilkins
3f380d5252 Merge "vp9_find_mv_refs_idx change for last frame." into experimental 2013-06-03 02:34:46 -07:00
Dmitry Kovalev
3b9ec31eaf Replacing memcpy with struct assignment.
Change-Id: Ib557cc6351404b9e178e95a545883eb3666f11f0
2013-05-31 16:00:32 -07:00
Dmitry Kovalev
317d832d38 Merge "Adding plane_block_width and plane_block_height functions." into experimental 2013-05-31 15:28:45 -07:00
Dmitry Kovalev
127932e699 Merge "Adding new encode_txfm function." into experimental 2013-05-31 14:13:58 -07:00
Deb Mukherjee
0048ec2329 Costing fixes related to trellis optimization
Migrates costing changes/fixes from the rebalance expt to the head
without the expt on.

Rebased.

Change-Id: I51677d62f77ed08aca8d21a4c9a13103eb8de93f
Results:
derfraw300: +0.126%
2013-05-31 13:56:32 -07:00
Dmitry Kovalev
75cf80ee8e Adding new encode_txfm function.
Moving some code from vp9_pack_bitstream to encode_txfm function.

Change-Id: Icc25d6083e54f09886216fea632ceac002042d7f
2013-05-31 12:33:44 -07:00
Dmitry Kovalev
d771bba27e Renaming 'motion_vector' to 'mv' for consistency.
Change-Id: Ie869ea4992e26867caec46cb878fc86a646aeb9f
2013-05-31 12:32:53 -07:00
Dmitry Kovalev
120a878199 Adding plane_block_width and plane_block_height functions.
Change-Id: I02c17fb733c0f3c22dc3167c3d3182797415f1ae
2013-05-31 12:31:49 -07:00
Ronald S. Bultje
d404e820d4 Merge "Fix silly bug with ENTROPY_STATS enabled." into experimental 2013-05-31 10:33:29 -07:00
Ronald S. Bultje
c78f61dcd8 Fix silly bug with ENTROPY_STATS enabled.
Change-Id: I615125483da71a623a930d6e20c42df82ea0e6ee
2013-05-31 10:05:37 -07:00
Ronald S. Bultje
a288cb3b10 Merge "Merge all various transform size data trackers into single variables." into experimental 2013-05-31 09:59:24 -07:00
Scott LaVarnway
1e025dbfd1 Merge "Moved use_prev_in_find_mv_refs check to frame level" into experimental 2013-05-31 09:35:51 -07:00
Ronald S. Bultje
e9d68a5e36 Merge all various transform size data trackers into single variables.
Change-Id: I2dfc569106b29fbe4da20585a0e85e5e9ea6a4db
2013-05-31 09:18:59 -07:00
Paul Wilkins
cf61fae8ee vp9_find_mv_refs_idx change for last frame.
Restrict get_matching_candidate() to considering
mvs at 8x8 and larger sizes for last frame case.

This is to reduce the HW load of using vectors down
to the 4x4 level from the previous frame.

Change-Id: I6505e610fd63a4e22d67f136aec7905a01b893ba
2013-05-31 15:37:27 +01:00
Jim Bankoski
5da753bef9 Merge "put back in lost speedups" into experimental 2013-05-31 07:12:43 -07:00
Jim Bankoski
9e176494c2 put back in lost speedups
speed >1 can be spead up by turning these on - lost in a prior commit

Change-Id: Iaef85e10ecfeec3aea5ab0e691edf02bb7f5190d
2013-05-31 06:47:40 -07:00
Sami Pietila
0835a35347 Fix inter mode context adaptation.
Change-Id: Ibaa47be878c1cd84d88d7518418d2d8d38224e70
2013-05-31 12:58:31 +03:00
Paul Wilkins
aaf61dfbca Merge "Patch to remove implicit segmentation." into experimental 2013-05-31 02:56:20 -07:00
Yaowu Xu
7ca651a383 Merge "Changed to use a new variant of WHT" into experimental 2013-05-30 21:53:12 -07:00
Yaowu Xu
c971855697 Merge "Changed to use new intra coding calls for 1st pass" into experimental 2013-05-30 21:52:41 -07:00
Yaowu Xu
1e733747ee Changed to use new intra coding calls for 1st pass
And removed 1st pass specific version of intra coding funcitons

Change-Id: Ia54e67c71d750957cb2efda8360bf2133468498a
2013-05-30 21:21:14 -07:00
Ronald S. Bultje
b480d413e7 Minor cosmetic changes.
Change-Id: Ieb4a8c97bf1b1dfb993f40a9a3ef3bed5ae7d948
2013-05-30 20:58:53 -07:00
Ronald S. Bultje
a4e7c6bd4d Merge "Remove unused define." into experimental 2013-05-30 20:58:22 -07:00
Ronald S. Bultje
310bc1030a Merge "Merge VP9_YMODES, VP9_UV_MODES, INTRA_MODE_COUNT and cousins." into experimental 2013-05-30 20:58:19 -07:00
Ronald S. Bultje
7d549870f7 Merge "Remove TX_SIZE_MAX_MB." into experimental 2013-05-30 20:58:16 -07:00
Ronald S. Bultje
6ea6f4d253 Merge "Remove one (unused) entry from mvref tables." into experimental 2013-05-30 20:58:13 -07:00
Jim Bankoski
21595f8e38 Merge "Creates a new speed 1:" into experimental 2013-05-30 20:36:05 -07:00
Jim Bankoski
ced21bd6a6 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.

Change-Id: If7a2858ee70f96d1eb989c04fd87a332b147abef
2013-05-30 19:53:00 -07:00
Ronald S. Bultje
16482bddf7 Merge "Remove splitmv." into experimental 2013-05-30 19:07:12 -07:00
Ronald S. Bultje
d2205f92c3 Merge changes I98c18fe5,I80c37cff into experimental
* changes:
  Remove i4x4_pred.
  Remove unused table.
2013-05-30 19:06:44 -07:00
Ronald S. Bultje
117282a690 Remove unused define.
Change-Id: Ic6555128206d61f47a46c550cb3dcaf3b4ec6374
2013-05-30 17:21:06 -07:00
Ronald S. Bultje
a433abbcad Merge VP9_YMODES, VP9_UV_MODES, INTRA_MODE_COUNT and cousins.
These are now merged in a new define called VP9_INTRA_MODES.

Change-Id: I0890f895756a7395d84c92f98f43e43f4cf9050d
2013-05-30 17:21:06 -07:00
Ronald S. Bultje
4d3d00b195 Remove TX_SIZE_MAX_MB.
Change-Id: I715870513d1fef8471bfd0f5218a79360a1ef126
2013-05-30 17:21:06 -07:00
Ronald S. Bultje
580d29bdbb Remove one (unused) entry from mvref tables.
Change-Id: Ieb4669ae564bec9f3051485ecdf186cb4e00decb
2013-05-30 17:21:06 -07:00
Ronald S. Bultje
e6485581fe 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.

Change-Id: Ic2a9beb97a4eda0b086f62c039d994b192f99ca5
2013-05-30 17:21:01 -07:00
Ronald S. Bultje
1efa79d32f 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.

Change-Id: I98c18fe5ab7e4fbd1d6620ec5695e2ea20513ce9
2013-05-30 16:44:58 -07:00
Ronald S. Bultje
9175082c4e Remove unused table.
Change-Id: I80c37cffa176bac942ab3051abdfd585ed5555e1
2013-05-30 16:44:56 -07:00
Yaowu Xu
042e70e45e 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.

Change-Id: Icb3a88515463cfc644b17ca046fcd139db2557e9
2013-05-30 15:37:52 -07:00
Yunqing Wang
1badebc821 Merge "Remove set_scale_factors call" into experimental 2013-05-30 15:25:01 -07:00
Deb Mukherjee
0807e1b8f6 Merge "Bugfix in forward update with modeling on." into experimental 2013-05-30 13:33:51 -07:00
Deb Mukherjee
84c5ed0e98 Bugfix in forward update with modeling on.
Fixes an issue with reducing branch cts in the encoder causing
a drop in performance. The bug was introduced in a previous
clean up patch.

Test: Went back to the offending patch, applied this same fix
to it, and checked that results are identical to the parent
of that patch.

Change-Id: I0bad8e2d930235d0284300fcebf836ceb56f2498
2013-05-30 12:58:11 -07:00
Ronald S. Bultje
f5827699bf Merge "Merge all intra mode coding trees into a single one." into experimental 2013-05-30 11:27:51 -07:00
Jingning Han
5e97862a71 Merge "Enable iterative motion search for 4x4 inter pred" into experimental 2013-05-30 11:02:10 -07:00
Adrian Grange
6f361f5841 Merge "Add intra_only and reset_frame_context flags" into experimental 2013-05-30 10:56:25 -07:00
Dmitry Kovalev
4c021c1d54 Merge "Using vp9 function prefix instead of vp8 inside vp9_cx_iface.c." into experimental 2013-05-30 10:41:55 -07:00
Ronald S. Bultje
98c192ae83 Merge all intra mode coding trees into a single one.
Also merge all counters. This removes a few unused probability updates
from the bitstream.

Change-Id: I20f58853e9dac84d8c0d9703ae012c55917516eb
2013-05-30 09:58:53 -07:00
Jim Bankoski
e987f03acd Merge "valgrind - txfm_thresh not set" into experimental 2013-05-30 09:34:48 -07:00
Deb Mukherjee
c98bfcfbbb Merge "Balancing coef-tree to reduce bool decodes" into experimental 2013-05-30 08:10:47 -07:00
Jim Bankoski
ecf023f6e4 Merge "fix valgrind warning" into experimental 2013-05-30 08:04:49 -07:00
Sami Pietila
5700b4ea42 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.

Change-Id: I478a991d63c48bd5e64d36e59fed7a00c9a651ba
2013-05-30 15:32:46 +03:00
Paul Wilkins
1b103f250f Patch to remove implicit segmentation.
This patch removes the implicit segmentation
experiment from the code base as the benefits
were still unproven as of the bitstream deadline.

Change-Id: I273b99d8d621d1853eac4182f97982cb5957247e
2013-05-30 11:06:29 +01:00
Jingning Han
87626a8f6e Enable iterative motion search for 4x4 inter pred
This commit enables iterative motion search for 4x4/4x8/8x4 block
size compound inter-inter prediction.

WIP: borg run testing

Change-Id: I2b318db4a03cdca5a8002b3fa6c0fa89b129288b
2013-05-30 10:49:35 +01:00
Ronald S. Bultje
17544d1478 Merge "Remove some unused code related to macroblock/splitmv coding." into experimental 2013-05-29 17:35:05 -07:00
Ronald S. Bultje
7873de1481 Merge "Remove unused and outdated debug code." into experimental 2013-05-29 17:33:32 -07:00
Adrian Grange
9e5bb9598c 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.

Change-Id: I182d46f1f84fb67a13c46ad767f246a38d7861a2
2013-05-29 17:16:00 -07:00
Yunqing Wang
c725ad3756 Remove set_scale_factors call
We could remove calling set_scale_factors() since it is also
done in set_refs() right after vp9_decode_mb_mode_mv() call in
decode_modes_b().

Change-Id: I9e62c90ffb770240987cd42815786567261b5d97
2013-05-29 17:07:53 -07:00
Deb Mukherjee
407eb03ad7 Merge "Build fix when ENTROPY_STATS is defined" into experimental 2013-05-29 17:01:43 -07:00
Jingning Han
5c05fbf6bb Merge "Refactor 4x4 block level rd loop" into experimental 2013-05-29 16:35:02 -07:00
Deb Mukherjee
b8b3f1a46d 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.

Results on derf300: -0.237%

Change-Id: Ie784be13dc98291306b338e8228703a4c2ea2242
2013-05-29 16:25:52 -07:00
Dmitry Kovalev
38cb616fbf Merge "Compressed/uncompressed frame header changes." into experimental 2013-05-29 15:29:44 -07:00
Jim Bankoski
aae78c8ac7 valgrind - txfm_thresh not set
For 4x4 blocks valgrind points out the cache was uninitalized.
This resolves the issue by setting it.

Change-Id: I22733000da048643762813a84fbda66d8e4040d2
2013-05-29 13:56:08 -07:00
Jingning Han
d0a3872019 Refactor 4x4 block level rd loop
This commit makes clean-ups in the rate-distortion loop for 4x4,
4x8, and 8x4 block sizes for the use of iterative motion search.

Removed unnecessary use of bmi in handle_inter_mode.

Deprecated loop over labels in the 4x4/4x8/8x4 block rd search.

Change-Id: I71203dbb68b65e66f073b37abd90d82ef5ae6826
2013-05-29 13:44:52 -07:00
Scott LaVarnway
353642bc53 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().

Change-Id: I9da5e18b7e7e28f8b1f90d527cad087073df2d73
2013-05-29 16:42:23 -04:00
Jim Bankoski
5e5470b254 fix valgrind warning
scales for second reference frame vars are unitialized if the
second ref frame is one of of those disallowed by refframeflags

Change-Id: I4ce42de391178c1699dcaede18c5f12c84993c61
2013-05-29 12:34:10 -07:00
Jingning Han
84deeddbaf Merge "Refactor rd loop for inter modes" into experimental 2013-05-29 10:55:23 -07:00
Jingning Han
6c97bba403 Merge "further clean-ups on intra4x4 coding" into experimental 2013-05-29 10:55:14 -07:00
Sami Pietila
88a4d4c510 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.

Change-Id: I6d71d856b84518f6c88de771ddd818436f794bab
2013-05-29 15:21:01 +01:00
Ronald S. Bultje
4487f5a690 Remove some unused code related to macroblock/splitmv coding.
Change-Id: Ic40d56fb162f4e201547dfae33e62ccd9e865889
2013-05-29 06:29:56 -07:00
Ronald S. Bultje
2afc3422c6 Remove unused and outdated debug code.
Change-Id: I0e789bdeaed60f920f7a470e56a8d4ea374233fc
2013-05-28 19:15:57 -07:00
Dmitry Kovalev
18c83b3714 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.

Change-Id: Id3ed8a387980c652ae147549412f4ec24a0a5bd0
2013-05-28 18:07:54 -07:00
Deb Mukherjee
a09707b7be Build fix when ENTROPY_STATS is defined
Fixes a build issue due to removal of VP9_KF_BINTRAMODES macro,
when ENTROPY_STATS is on.

Change-Id: I75c61702bf626376c942ab49ab887714b43284f0
2013-05-28 17:07:27 -07:00
Deb Mukherjee
3d4e032e16 Merge "Clean up related to coefficient modeling" into experimental 2013-05-28 16:55:02 -07:00
Deb Mukherjee
d8c0989d56 Clean up related to coefficient modeling
Uses reduced arrays for probabilities and branch counts in the
encoder. No change in bitstream.

Change-Id: Iec605446f44db4cd325eb45fa12a3003a6ee29db
2013-05-28 16:32:03 -07:00
Jingning Han
94d700e763 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.

Change-Id: Ibc71a11cbe5a26cd52faba01026cf8446cf4d2b4
2013-05-28 16:31:33 -07:00
Jingning Han
4729a6f389 further clean-ups on intra4x4 coding
Removed one 4x4 prediction step that was unnessary in the rd loop.
Removed a unused modecosts estimate from encoder side.

Change-Id: I65221a52719d6876492996955ef04142d2752d86
2013-05-28 11:19:05 -07:00
Ronald S. Bultje
a4dd99b34d Merge "Moving txfm_size bits before prediction mode bits." into experimental 2013-05-28 09:40:42 -07:00
Scott LaVarnway
9a27b627b8 Merge "Removed setup_pre_planes() call in read_mb_modes_mv()" into experimental 2013-05-28 09:07:51 -07:00
Paul Wilkins
245a11553a Merge "Remove loop dering experiment." into experimental 2013-05-28 05:34:14 -07:00
Dmitry Kovalev
1a24011469 Revert "Adding API to read/write uncompressed frame header bits." because of bitstream mismatches.
This reverts commit df037b615f

Change-Id: I1a529f2590df7bc912f5035d22311268933e3dd6
2013-05-28 02:24:52 -07:00
Yaowu Xu
601bab4fde Merge "a few clean-ups" into experimental 2013-05-27 15:16:21 -07:00
Ronald S. Bultje
d27ae7b6a5 Merge "Decrease scope of frame_mv argument to handle_inter_mode()." into experimental 2013-05-27 14:42:38 -07:00
Ronald S. Bultje
cba8e16e93 Decrease scope of frame_mv argument to handle_inter_mode().
Change-Id: I81c637c61ecc33cb66beb59a2a33166d66b9a0a2
2013-05-27 14:16:45 -07:00
Yaowu Xu
2b96ffe025 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

Change-Id: If5b282957c24339b241acdb9f2afef85658fe47d
2013-05-27 13:53:56 -07:00
Timothy B. Terriberry
95339d6825 Reduce WHT complexity.
Saves 1 add, 3 shifts (and a shift bias) per 1-D transform.

Change-Id: I1104bb1679fe342b2f9677df8a9cdc0cb9699e7d
2013-05-27 13:23:52 -07:00
Jingning Han
75fca6fff0 Merge "Reduce bmi buffer length from 16 to 4" into experimental 2013-05-27 09:18:50 -07:00
Jingning Han
de735929cf 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.

Change-Id: I3410007dfae789ee46a09ae20c39d3ce3c7954aa
2013-05-27 08:59:15 -07:00
Ronald S. Bultje
f188bf1c3d Remove unused mode_index argument from handle_inter_mode().
Change-Id: I07b8c15f33e6e7c63dd0033c18c4ac5c0303cf32
2013-05-27 08:49:17 -07:00
Ronald S. Bultje
01b7f72aab Fix coding statistics compilation.
Change-Id: I21e7c4ef6bc80f4b9281fc94c88fb710b1595c23
2013-05-27 08:29:07 -07:00
Sami Pietila
80812829c2 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.

Change-Id: I3bfc1f662ae6f219c9286fe9ae6310c7d8a63ea7
2013-05-27 10:32:05 +03:00
Ronald S. Bultje
5cac66078e Remove splitmv.
Also do per-partition motion vector referencing in <sb8x8 partitions,
and adjust mvref finding for sub8x8 partitions.

Change-Id: Id3ed1ed4d2a8910d11d327db6cc63b8eb79f941f
2013-05-26 14:40:49 -07:00
Paul Wilkins
845bc13ba9 Remove loop dering experiment.
Change-Id: I1a979bf74c286b157c31bab6bdcba0494acb4918
2013-05-25 10:09:23 +01:00
Dmitry Kovalev
0b2b81249b Merge "Adding API to read/write uncompressed frame header bits." into experimental 2013-05-24 13:43:19 -07:00
Jingning Han
d093027791 Fix transform size coding mismatch
This commit fixes a transform size enc/dec mismatch issue in the
key frame coding.

Change-Id: I0c4f40464a367b33dd91ace84506650b1aec2873
2013-05-24 11:30:58 -07:00
Scott LaVarnway
64b30f41cd Removed setup_pre_planes() call in read_mb_modes_mv()
This code does not seem to be necessary anymore.

For the 1080p clip used, the decoder performance improved by
~2%.

Change-Id: I66bb0496d4998b0d6c6637c746b642b77bdbef88
2013-05-24 13:39:48 -04:00
Yaowu Xu
a2db88fc26 Fix two bugs
1) Added an initialization of rd_tx_select_threshs[].
2) Made updating transform size counts to be consistent

Change-Id: Iaa9d6c6be825b0364c9d61a9802873d01356815c
2013-05-24 09:28:19 -07:00
Yaowu Xu
f116abf774 update txfm size counting
Change-Id: I3a26baf8b2f945fea4f1aea156e60fa79f620f86
2013-05-23 18:27:07 -07:00
Paul Wilkins
e41fd6e3e2 Fix bug in 4x4 band definition.
Also some unused data structures/references removed.

Change-Id: I295809e887173543e794250cb60ddaf1475ffd24
2013-05-23 17:51:02 -07:00
Yaowu Xu
758504991b Removed code not in use
As intra coded blocks are always decoded using decode_sb_intra(), this
commmit removed the code no longer in use.

Change-Id: I09f14fa9cdc875656e8fbe245f72c8fd83b9e31e
2013-05-23 17:46:28 -07:00
Yaowu Xu
22694ca1ad Change txfm_type decision
The changing in intra coding to base on transform block, i.e. pred->
txfm->quant->dequant-itxfm->recon, made all blocks within a prediction
unit behave consistently, there is no longer a need to handle blocks
differently based on the position within a predicitn block. So this
commit simplifies the decision of transform type to be based on
prediction mode only.

Change-Id: If96cb72386f2e9186126ace88afa35ef085b6c96
2013-05-23 17:46:28 -07:00
Jingning Han
826efc838c Fix a bug in intra4x4 level rd loop
This commit fixed a uninitialized value use in the intra 4x4/8x4/4x8
rate-distortion loop.

Change-Id: I5c25b3536b59e4f5fbb23cf85baf93b2ccec7d72
2013-05-23 17:44:33 -07:00
Jingning Han
ae10319520 Make comp_inter_inter support 4x4 partition coding
This commit refactors the iterative motion search for compound
inter-inter mode, to make it support all partition types including
4x4/4x8/8x4 block sizes.

Change-Id: I5f1212b0f307377291763e45c6bdc9693b5f04c8
2013-05-23 13:13:42 +01:00
Paul Wilkins
33ecd6ad54 Merge Scatter Scan experiment.
Removal from under configure flag.
A bit  renaming

Change-Id: I2213229dfe852001dfec16b149f47c52ce88f3aa
2013-05-23 13:09:27 +01:00
Jingning Han
7ac5ac52f9 Merge 4x4 block level partition into codebase
Move 4x4/4x8/8x4 partition coding out of experimental list.

This commit fixed the unit test failure issues. It also resolved
the merge conflicts between 4x4 block level partition and iterative
motion search for comp_inter_inter.

Change-Id: I898671f0631f5ddc4f5cc68d4c62ead7de9c5a58
2013-05-23 11:58:50 +01:00
Dmitry Kovalev
0638bff7af Using vp9 function prefix instead of vp8 inside vp9_cx_iface.c.
Change-Id: Ia74e7cf626db46ab47a74fe003602a55b949244c
2013-05-22 18:04:08 -07:00
Yunqing Wang
0812c121e7 Merge "Optimize variance functions" into experimental 2013-05-22 13:41:04 -07:00
Deb Mukherjee
ddb2309568 Merge "Using 128 entry look up table for coef models" into experimental 2013-05-22 10:38:35 -07:00
Yunqing Wang
f4fcfe3075 Optimize variance functions
Added SSE2 version of variance functions for super blocks.

Change-Id: Ibeaae8771ca21c99d41dd74067574a51e97b412d
2013-05-22 10:29:38 -07:00
Jingning Han
d2cacdc530 Merge "Make the intra rd search support 8x4/4x8" into experimental 2013-05-22 10:00:15 -07:00
Deb Mukherjee
de4d682ca4 Using 128 entry look up table for coef models
Reverts to using 128 bit LUT for the coef models rather than 48
to ease hardware implementation.

Also incorporates some cleanups including removing various
hooks to support different lookup tables based on block_type and
ref_type.

Change-Id: I54100c120cca07a2ebd3a7776bc4630fa6a153f6
2013-05-22 08:44:31 -07:00
Paul Wilkins
4e08fa96f3 Merge "changes intra coding to be based on txfm block" into experimental 2013-05-22 06:53:12 -07:00
Paul Wilkins
22d7f0703a Merge "Generalized intra 4x4 encoding for all sizes" into experimental 2013-05-22 06:52:32 -07:00
Paul Wilkins
18c975e21a Merge "Merge CONFIG_COMP_INTER_JOINT_SEARCH." into experimental 2013-05-22 06:51:43 -07:00
Scott LaVarnway
d679fdf7b0 Merge "Removed unused idct functions" into experimental 2013-05-22 05:36:36 -07:00
Yaowu Xu
8ba92a0bed changes intra coding to be based on txfm block
This commit changed the encoding and decoding of intra blocks to be
based on transform block. In each prediction block, the intra coding
iterates thorough each transform block based on raster scan order.

This commit also fixed a bug in D135 prediction code.

TODO next:
The RD mode/txfm_size selection should take this into account when
computing RD values.

Change-Id: I6d1be2faa4c4948a52e830b6a9a84a6b2b6850f6
2013-05-22 11:53:19 +01:00
Yaowu Xu
232d90d8fd Generalized intra 4x4 encoding for all sizes
Change-Id: I1b86744fa247233c8df031b3f4b87b212c8dd094
2013-05-22 11:44:12 +01:00
Paul Wilkins
0b713f8c18 Merge CONFIG_COMP_INTER_JOINT_SEARCH.
Merge this experiment so that it is under a speed feature
flag not a configuration flag.

Change-Id: I536f7f125a4ff5149bb3a64f791e835c324535fd
2013-05-22 11:23:31 +01:00
Jingning Han
f153a5d063 Make the intra rd search support 8x4/4x8
This commit allows the rate-distortion optimization of intra coding
capable of supporting 8x4 and 4x8 partition settings.

It enables the entropy coding of intra modes in key frame using a
unified contextual probability model conditioned on its above/left
prediction modes.

Coding performance:
derf 0.464%

Change-Id: Ieed055084e11fcb64d5d5faeb0e706d30268ba18
2013-05-21 21:03:00 -07:00
John Koleszar
ddf13be8ef Merge "Initial version of alpha channel support" into experimental 2013-05-21 17:29:51 -07:00
Jingning Han
1f7d810a72 Merge "Deprecate 4x4 intra modes from bit-stream" into experimental 2013-05-21 15:59:58 -07:00
Dmitry Kovalev
df037b615f Adding API to read/write uncompressed frame header bits.
The API is not final yet and can be changed. Actual layout of
uncompressed frame part will be finalized later. Right now moving
clr_type, error_resilient_mode, refresh_frame_context,
frame_parallel_decoding_mode from first compressed partition to
uncompressed frame part.

Change-Id: I3afc5d4ea92c5a114f4c3d88f96858cccc15b76e
2013-05-21 15:31:32 -07:00
Scott LaVarnway
a143152600 Removed unused idct functions
No longer used.

Change-Id: Id28c9247cebba183c6fa786dff96824ae100132c
2013-05-21 17:59:54 -04:00
Deb Mukherjee
7a645e4e12 Merging the model coef prob experiment
Merges the experiment.

Change-Id: I4eb19af6de6df6aa3a96a2e82f231d47ed9b3ae9
2013-05-21 14:44:38 -07:00
Deb Mukherjee
90a7723f8c Merge "Refinements on modelcoef expt to reduce storage" into experimental 2013-05-21 13:41:54 -07:00
Scott LaVarnway
3d0110fd8e Removed diff from macroblockd_plane
No longer used.

Change-Id: I171c5fa33a7600ad45b9466af23a46ccbdfe0480
2013-05-21 14:22:09 -04:00
Scott LaVarnway
0c3f3bf1d5 Removed vp9_recon functions
No longer used.

Change-Id: Ica5166f7117f4693dffdf7633dcfc1b263103d0d
2013-05-21 13:57:50 -04:00
Scott LaVarnway
1db6373267 Merge "WIP: 4x4 idct/recon merge" into experimental 2013-05-21 10:45:53 -07:00
Dmitry Kovalev
a2b9b7448d Merge "Moving exp. coding functions from vp9_boolhuff.c to vp9_bitstream.c." into experimental 2013-05-21 10:35:36 -07:00
Dmitry Kovalev
060d93d704 Merge "Removing clamp_type from the bitstream." into experimental 2013-05-21 10:35:27 -07:00
Dmitry Kovalev
a7b3ed07df Merge "Adding get_ref_frame_idx function." into experimental 2013-05-21 10:35:12 -07:00
Deb Mukherjee
07443f1589 Refinements on modelcoef expt to reduce storage
Uses more aggrerssive interpolation to reduce storage for the
model tables by almost more than half. Only 48 lists of probs are
stored (as opposed to 128 before), corresponding to ONE_NODE
probabilities of:
1,
3, 7, 11, ..., 115, 119,
127, 135, ..., 247, 255.

Besides, only 1 table is used as opposed to 2 before. So the overall
memory needed for the tables is just 48 * 8 = 384 bytes.

The table currently used is based on a new Pareto distribution with
heavier tail than a generalized Gaussian - which improves results on
derf by about 0.1% over a single table Generaized Gaussian.

Results overall on derfraw300 is -0.14%.

Change-Id: I19bd03559cbf5894a9f8594b8023dcc3e546f6bd
2013-05-21 10:06:56 -07:00
Yunqing Wang
e9950b0768 Unnecessary passing of prev_mi
Passing prev_mi is not needed.

Change-Id: I6453bb47514ddafd555864d190ecf6d1a6bdc136
2013-05-21 09:22:49 -07:00
Dmitry Kovalev
9e4902c760 Moving exp. coding functions from vp9_boolhuff.c to vp9_bitstream.c.
Change-Id: Ib07d1e707a87cec98ea3a1779fccca078d8c4310
2013-05-20 16:23:19 -07:00
Dmitry Kovalev
4ac70bd7d3 Adding get_ref_frame_idx function.
Change-Id: I4f1a4eca6794cda78d00512196caacd5567e2dcc
2013-05-20 16:09:00 -07:00
Deb Mukherjee
39a90bc8e8 Updating the model coef experiment
Cleans up the experiment. Actually uses reduced counts for backward
updates, and reduced number of probabilities in the context.

No change in bitstream when the experiment is on.

Between expt on and off:
derfraw300 is down only -0.062% (which is better than when expts
were run previously).

Change-Id: I55285a049a0c22810bdb42914212ab5a4f8521b5
2013-05-20 12:46:36 -07:00
Jingning Han
1e6be7bc75 Deprecate 4x4 intra modes from bit-stream
Replace B_DC_PRED like syntax element writing/reading with sb_ymode
set (e.g., DC_PRED, etc).

Change-Id: I293006a6b3bcd130c08ea9f053e7a79c6819c6f8
2013-05-20 12:14:24 -07:00
Scott LaVarnway
ba48a11130 WIP: 4x4 idct/recon merge
This patch eliminates the intermediate diff buffer usage by
combining the short idct and the add residual into one function.
The encoder can use the same code as well.

Change-Id: I296604bf73579c45105de0dd1adbcc91bcc53c22
2013-05-20 13:03:17 -04:00
Jingning Han
da39272f5c Merge "Enable bit-stream support to 8x4 and 4x8 partition" into experimental 2013-05-20 09:25:51 -07:00
Jingning Han
2c93a8ed5c Give VP9 a different sync code from VP8
The new code is 0x49, 0x83, 0x42

There is nothing particularly special about this code bitstream wise.
Its derivation is the word "sync" coded using 4x6bit alphabetic indices.

Change-Id: Ie2430a854af32ddc5a5c25a6c1c90cf6497ba647
2013-05-20 11:41:31 +01:00
Jingning Han
810b612c23 Enable bit-stream support to 8x4 and 4x8 partition
The recursive partition type search is enabled down to 4x4, 4x8 and
8x4, followed by the corresponding rate-distortion optimization for
the per-partition encoding mode decisions.

The bit-stream writing/reading synchronized in supporting the
rectangular partition of 8x8 block.

This provides above 1% coding performance gains on derf.

To do next:
1. re-design the rate-distortion loop for inter prediction below 8x8.
2. re-design the rate-distortion loop for intra prediction below 4x4.
3. make the loop-filter aware of rectangular partition of 8x8 block.
4. clean the unused probability models.
5. update default probability values.

Change-Id: Idd41a315b16879db08f045a322241f46f1d53f20
2013-05-19 14:59:04 -07:00
Jingning Han
5f3612c35e Make nmv_count update 4x8/8x4 aware
This commit modifies the vp9_update_nmv_count_ to support rectangular
partition of 8x8 block.

Change-Id: I3e742f80f18f95b031c1c785d756d9365503c24c
2013-05-17 15:57:42 -07:00
Dmitry Kovalev
498b6460a1 Removing clamp_type from the bitstream.
Change-Id: Ica75bdd4905c4a04b7f92795d0b8ce6836a99ef4
2013-05-17 15:50:26 -07:00
Jingning Han
481a7c5986 Fix parameters in 4x8 variance calc
Correct the stride parameter of 4x8 in vp9_sub_pixel_variance4x8_
and vp9_sub_pixel_avg_variance4x8.

Change-Id: I2ca74d4043817503b21737563994270e3b0619ff
2013-05-17 10:03:52 -07:00
Jim Bankoski
d9705b200f Merge "holds utility debugging functions" into experimental 2013-05-17 09:23:36 -07:00
Jingning Han
49068dd985 Merge "Refactor encode_sb_ for 4x8/8x4 partition" into experimental 2013-05-17 09:19:48 -07:00
Paul Wilkins
6f0c8e82c0 Merge "Replace default counts with default probs." into experimental 2013-05-17 08:58:53 -07:00
Paul Wilkins
61e2eac61d Merge "New inter mode context." into experimental 2013-05-17 06:59:09 -07:00
Paul Wilkins
99c4b1eea1 Replace default counts with default probs.
Replace vp9_kf_default_bmode_counts structure with
direct default probabilities. The probability structure is
smaller and it removes the need to specify in the bitstream
how to convert the counts to probabilities.

Note that I have concerns still about the size and value of
the large intra mode context. This may cause problems for
HW but it also means we rely heavily on reverse update as
forwards update of a structure this size is problematic. I
intend to review this more generally in the next few days to
see if we can come up with a competitive solution that does
not rely on such a large context.

Change-Id: I0a36071079d5d26a57ab0e9fbf91af4199aa7984
2013-05-17 14:54:52 +01:00
Jim Bankoski
b67e46b33c holds utility debugging functions
This one prints out a visual version of the partitioning for human
eyes to follow...

Change-Id: Iba434589a2f55eb069484686d99a382db93b9548
2013-05-17 06:29:28 -07:00
Paul Wilkins
51bc4bf4a0 Remove MODE_STATS flag and code
Change-Id: I6c70a8a8a4633399842ac74792003ae5f7859ffa
2013-05-17 12:34:10 +01:00
John Koleszar
679e4abdd5 Initial version of alpha channel support
This is a mostly-working implementation of an extra channel in the
bitstream. Configure with --enable-alpha to test. Notable TODOs:

 - Add extra channel to all mismatch tests, PSNR, SSIM, etc
 - Configurable subsampling
 - Variable number of planes (currently always uses all 4)
 - Loop filtering
 - Per-plane lossless quantizer
 - ARNR support

This implementation just uses the same contents as the Y channel
for the A channel, due to lack of content and general pain in
playing back 4 channel content. A later patch will use the actual
alpha channel passed in from outside the codec.

Change-Id: Ibf81f023b1c570bd84b3064e9b4b8ae52e087592
2013-05-16 22:21:09 -07:00
Jingning Han
5a1c953310 Refactor encode_sb_ for 4x8/8x4 partition
Deprecate set_block_index. Replace it with get_sb_index_ for
consistency with partition search and bit-stream writing/reading.

Use b_width/height_log2 instead of mi_width/height_log2, to support
4x4 resolution partition types.

Change-Id: Ic1e71981e163c669f7ea6b3c12b831c284c4a494
2013-05-16 16:33:31 -07:00
Jingning Han
f0ab155e0d Merge "Use b_width_log2_ in partition type parse" into experimental 2013-05-16 16:02:35 -07:00
John Koleszar
f07602e403 Merge "Remove vp9_extend_mb_row()" into experimental 2013-05-16 15:22:38 -07:00
Scott LaVarnway
9aa37a51b2 Merge "WIP: 8x8 idct/recon merge" into experimental 2013-05-16 14:28:30 -07:00
Dmitry Kovalev
1e3cdc1dd2 Merge "Combining integer and fractional parts of mvs for entropy coding." into experimental 2013-05-16 14:16:47 -07:00
Jingning Han
3819f11b28 Use b_width_log2_ in partition type parse
Replace mi_width/height_log2 with b_width/height_log2 in partition
type parsing at bit-stream writing stage. This allows parsing
resolution at 4x4 block level and makes the 4x4/4x8/8x4 partition
coding consistent with other superblock types.

Change-Id: I7db3617ea042e0db2dc898999b0c323bff91a22f
2013-05-16 14:01:52 -07:00
Yaowu Xu
e3869e9cfc Removed Q threshold in the usage of ADST
Test on cif set showed small but consistent compression gain for
almost all encodings with overall impact of .08%. The gains average
aournd .12% combined with D63 adst change.

Test encoding on std-hd set is ongoing..

Change-Id: If4d94799cf0486fb9c770b193e5c386d13d99d59
2013-05-16 13:33:07 -07:00
Dmitry Kovalev
b10b887907 Merge "Removing lossless flag from the bitstream." into experimental 2013-05-16 12:08:27 -07:00
John Koleszar
16ac5a5cde Remove vp9_extend_mb_row()
This code is no longer needed for correct intra prediction.

Change-Id: I822d1a8b0ad0a00e7c4c6e7b2931790c39d1267d
2013-05-16 11:56:00 -07:00
Scott LaVarnway
794a7bedbd WIP: 8x8 idct/recon merge
This patch eliminates the intermediate diff buffer usage by
combining the short idct and the add residual into one function.
The encoder can use the same code as well.

Change-Id: Iacfd57324fbe2b7beca5d7f3dcae25c976e67f45
2013-05-16 13:52:15 -04:00
Jingning Han
8e3d0e4d7d Add building blocks for 4x8/8x4 rd search
These building blocks enable rate-distortion optimization search
over block sizes of 8x4 and 4x8. Need to convert them into mmx/sse
forms.

Change-Id: I570ea2d22d14ceec3fe3575128d7dfa172a577de
2013-05-16 10:41:29 -07:00
Jingning Han
c0f70cca40 Merge "Fix the transform type selection in 4x4 partition" into experimental 2013-05-16 10:14:49 -07:00
Paul Wilkins
6ff3eb1647 New inter mode context.
This patch creates a new inter mode contest that avoids
a dependence on the reconstructed motion vectors from
neighboring blocks. This was a change requested by
a hardware vendor to improve decode performance.

As part of this change I have also made some modifications
to stats output code (under a flag) to allow accumulation of
inter mode context flags over multiple clips

Some further changes will be required to accommodate the
deprecation of the split mv mode over the next few days.

Performance as stands is around -0.25% on derf and
std-hd but up on the YT and YT-HD sets. With further tuning
or some adjustment to the context criteria it should be
possible to make this change broadly neutral.

Change-Id: Ia15cb4470969b9e87332a59c546ae0bd40676f6c
2013-05-16 12:09:19 +01:00
Paul Wilkins
18e07420a2 Merge "Further Implicit Segmentation Changes" into experimental 2013-05-16 03:03:44 -07:00
John Koleszar
418564e7d0 Add vp9_extend_frame_borders
Adds a subsampling aware border extension function. This may be reworked
soon to support more than 3 planes.

Change-Id: I76b81901ad10bb1e678dd4f0d22740ca6c76c43b
2013-05-15 20:58:26 -07:00
John Koleszar
7addafb5b1 Merge "Fix vp9_build_intra_predictors_sbuv_s for non-4:2:0" into experimental 2013-05-15 20:58:15 -07:00
Dmitry Kovalev
b0c101e2b4 Removing lossless flag from the bitstream.
Change-Id: If6aee510cbc4910f2f24fcd92dddc65fdf8edeea
2013-05-15 18:20:51 -07:00
John Koleszar
501ae3484c Fix vp9_build_intra_predictors_sbuv_s for non-4:2:0
Remove an assumption about chroma size, and the number of planes.

Change-Id: I286a7fac296ec334c6a8ad847f663f3adbb9f43e
2013-05-15 17:57:08 -07:00
Jingning Han
9bd59ad3ed Merge "Fix first-pass encoding test" into experimental 2013-05-15 17:01:04 -07:00
Dmitry Kovalev
54de084155 Merge "Moving the same code to new function vp9_setup_scale_factors." into experimental 2013-05-15 16:50:33 -07:00
Dmitry Kovalev
3ba985779c Merge "Adding alpha plane to YV12_BUFFER_CONFIG structure." into experimental 2013-05-15 16:49:53 -07:00
Dmitry Kovalev
5c5582242d Moving the same code to new function vp9_setup_scale_factors.
Change-Id: I2408ad22717784a40e23701ccb9d978265440e4f
2013-05-15 16:33:36 -07:00
Dmitry Kovalev
b7a4f8a6db Adding alpha plane to YV12_BUFFER_CONFIG structure.
Change-Id: I8b2687138df636b2b78c8cc5156e3882b0009de0
2013-05-15 16:29:20 -07:00
Jingning Han
8468a5c1a0 Fix the transform type selection in 4x4 partition
This commit allows proper transform type (DCT/ADST) selection in
the settings of partition 4x4 level.

Change-Id: Iec6f922a46480d777e7ca9142a99e8c131f0077b
2013-05-15 16:09:58 -07:00
Dmitry Kovalev
cd16fe9160 Merge "Preparing vp9_deblock and vp9_denoise to alpha support." into experimental 2013-05-15 15:40:52 -07:00
Dmitry Kovalev
80c0715375 Merge "Moving several static functions from vp9_reconinter.h to vp9_reconinter.c." into experimental 2013-05-15 15:39:43 -07:00
Jingning Han
9e49ba05f4 Fix first-pass encoding test
Always initialize the mode_info with sb_type of BLOCK_SIZE_MB16X16
for the first-pass encoding test.

Change-Id: Ic86393eeef981bdd523a5b44cfac3f0b24c068b7
2013-05-15 14:15:21 -07:00
Dmitry Kovalev
18375238e9 Combining integer and fractional parts of mvs for entropy coding.
Combining encode_nmv_component with encode_nmv_component_fp
and read_nmv_component with read_nmv_component_fp. Bitstream is slightly
changed (only the order of bits), here are the results on test sets:
stdhd: +0.047, yt: -0.038, derf: +0.001, hd: -0.011.

Change-Id: I1be312e976796df78ca63368702d0ee19f2b8c50
2013-05-15 12:37:03 -07:00
Scott LaVarnway
a272ff25cd WIP: 16x16 idct/recon merge
This patch eliminates the intermediate diff buffer usage by
combining the short idct and the add residual into one function.
The encoder can use the same code as well.

Change-Id: Iea7976b22b1927d24b8004d2a3fddae7ecca3ba1
2013-05-15 13:16:02 -04:00
Paul Wilkins
7d7e5b5131 Further Implicit Segmentation Changes
Trial use of a combination of reference frame,
prediction block size and mv to define segmentation.

Change-Id: Ie8946a0446dbad777fdcf7626f89e5af0994db50
2013-05-15 16:00:06 +01:00
Dmitry Kovalev
6706e674b1 Moving several static functions from vp9_reconinter.h to vp9_reconinter.c.
Change-Id: I5da9c16bab26f6ff0c9d3a2a29ef6c84f5093161
2013-05-14 17:49:41 -07:00
Scott LaVarnway
2cf0d4be12 WIP: 32x32 idct/recon merge
This patch eliminates the intermediate diff buffer usage by
combining the short idct and the add residual into one function.
The encoder can use the same code as well.

Change-Id: I4ea09df0e162591e420d869b7431c2e7f89a8c1a
2013-05-14 15:54:17 -07:00
Jingning Han
1f26840fbf Enable recursive partition down to 4x4
This commit allows the rate-distortion optimization recursion
at encoder to go down to 4x4 block size. It deprecates the use
of I4X4_PRED and SPLITMV syntax elements from bit-stream
writing/reading. Will remove the unused probability models in
the next patch.

The partition type search and bit-stream are now capable of
supporting the rectangular partition of 8x8 block, i.e., 8x4
and 4x8. Need to revise the rate-distortion parts to get these
two partition tested in the rd loop.

Change-Id: I0dfe3b90a1507ad6138db10cc58e6e237a06a9d6
2013-05-14 12:39:56 -07:00
Dmitry Kovalev
7bbf716f04 Preparing vp9_deblock and vp9_denoise to alpha support.
Change-Id: I299feefa64b93bd62263aea1ff1e41e85faeb6ca
2013-05-14 11:01:57 -07:00
Yunqing Wang
dee12bdf8f Merge "Do joint motion search iteratively" into experimental 2013-05-14 10:18:11 -07:00
Yaowu Xu
8be35347a8 Merge "changed to use adst for D63_PRED" into experimental 2013-05-14 09:30:17 -07:00
John Koleszar
d31a632dcd Merge "Revert "Preparing vp9_deblock and vp9_denoise to alpha support."" into experimental 2013-05-14 06:47:44 -07:00
John Koleszar
56efb73be3 Revert "Preparing vp9_deblock and vp9_denoise to alpha support."
This reverts commit a933311131

Change-Id: I2321f88011178381adbcffeda1bcc6a430ab8f1d
2013-05-14 06:46:11 -07:00
Yaowu Xu
da3aec6c8a changed to use adst for D63_PRED
To be consistent with other prediciton modes

Change-Id: If9e1464e5c807f0b36047a046c4ac59d91b1b868
2013-05-13 22:09:38 -07:00
Dmitry Kovalev
724769d494 Merge "Using loop through all planes inside scale_and_extend_frame function." into experimental 2013-05-13 21:50:39 -07:00
Dmitry Kovalev
571aa44606 Merge "Preparing vp9_deblock and vp9_denoise to alpha support." into experimental 2013-05-13 21:48:37 -07:00
Dmitry Kovalev
9338a5768d Merge "Moving vp9_decode_frame declaration to vp9_decodframe.h." into experimental 2013-05-13 21:47:10 -07:00
Dmitry Kovalev
c4390e8cf0 Merge "Adding encode_quantization function." into experimental 2013-05-13 21:46:54 -07:00
Dmitry Kovalev
ce70ad5967 Merge "Code cleanup inside vp9_firstpass.c." into experimental 2013-05-13 21:46:14 -07:00
Dmitry Kovalev
2149852935 Merge "Removing simple loopfilter and code duplication from loopfilter code." into experimental 2013-05-13 18:25:15 -07:00
Dmitry Kovalev
1c43e643b7 Removing simple loopfilter and code duplication from loopfilter code.
Change-Id: Ib19352e391408507f2237985501406900a355964
2013-05-13 18:09:11 -07:00
Dmitry Kovalev
3f31b297ea Adding encode_quantization function.
Change-Id: Ib7448f7f325ba34a3cba8ab3129028e31e593cf5
2013-05-13 18:05:20 -07:00
Dmitry Kovalev
9f39ab66dd Using loop through all planes inside scale_and_extend_frame function.
Change-Id: I493bcf7bac930e9937a9b57e4b7c803da22728bd
2013-05-13 16:02:29 -07:00
Dmitry Kovalev
4a17238bc9 Moving vp9_decode_frame declaration to vp9_decodframe.h.
Change-Id: Ia7a772718a4b11b413c36d4280df8668e19c9084
2013-05-13 14:42:45 -07:00
Dmitry Kovalev
a933311131 Preparing vp9_deblock and vp9_denoise to alpha support.
Change-Id: Id1cc1c2663b9c2219cb830ffb4b0c6ab3468dc04
2013-05-13 14:03:29 -07:00
Yunqing Wang
60456083e9 Do joint motion search iteratively
Allow motion search multiple times iteratively, and break out
the loop if this search couldn't find better motion vectors.
Limit the maximum number of search to 2.

Tests results:
1. stdhd set: 0.311%(overall psnr); 0.346%(ssim).
positive gain on 10 out of 16 clips(best: 2.746% on sunflower;
worst: -0.434% on old_town_cross).
2. derf set: 0.016%(overall psnr); 0.062%(ssim).
positive gain on half of the clips(best: 0.499% on bowing;
worst: -0.387 on city).

Change-Id: Ibf0a51776d4caf7707be0586346db08128117559
2013-05-13 12:14:09 -07:00
Jingning Han
089ed30d07 Merge "Use consistent partition context setup in enc/dec" into experimental 2013-05-13 10:51:51 -07:00
Jingning Han
e996c9c5f1 Merge "Force bsize for UV in I4X4 and SPLITMV" into experimental 2013-05-13 10:51:39 -07:00
Jingning Han
fc31ae479d Merge "Move get_sb_index to vp9_blockd.h" into experimental 2013-05-13 10:51:29 -07:00
Paul Wilkins
e5f715201a Change to band calculation.
Change band calculation back to simpler model based
on the order in which coefficients are coded in scan order
not the absolute coefficient positions.

With the scatter scan experiment enabled the results were
appear broadly neutral on derf (-0.028) but up a little on std-hd +0.134).

Without the scatterscan experiment on the results were up derf as well.

Change-Id: Ie9ef03ce42a6b24b849a4bebe950d4a5dffa6791
2013-05-13 17:21:49 +01:00
Jingning Han
6910f178f1 Use consistent partition context setup in enc/dec
Move set_partition_seg_context_ to common file. Use consistent
context setup conditions for partition probability model update at
encoder and decoder.

Change-Id: I24b7ed3b1c48e3d2568191a46b70136b99b67b1a
2013-05-11 15:22:13 -07:00
Jingning Han
4c2c350309 Force bsize for UV in I4X4 and SPLITMV
Use 4x4 block coding for UV components arbitrarily in I4X4_PRED and
SPLITMV coding modes. This is a temporary solution to enable
bit-stream support for recursive partition down to 4x4 block size.
Will separate the functionalities of 4x4 block coding rate-distortion
out from those of superblocks.

Change-Id: I03dc15d5897014f175f3f2c91e9b266091d56797
2013-05-11 13:39:16 -07:00
Jingning Han
2117d4ee96 Move get_sb_index to vp9_blockd.h
Use common function to fetch/assign sb_index in rd loop, bit-stream
writing and reading.

Change-Id: I1d8a214a57ed9cbcd026040436ef33e5e39d65b7
2013-05-11 13:26:59 -07:00
John Koleszar
5f221e7ac4 Merge "Fix token allocation for non-4:2:0" into experimental 2013-05-10 16:57:09 -07:00
John Koleszar
998b540fe2 Merge "Fix non-4:2:0 chroma MV calculation for SPLITMV" into experimental 2013-05-10 16:57:03 -07:00
John Koleszar
0e59dad0de Merge "Fix 4:2:0 assumptions in debug plane output" into experimental 2013-05-10 16:56:45 -07:00
John Koleszar
64667d5af7 Merge "Subsampling aware allocs and bitstream" into experimental 2013-05-10 16:55:00 -07:00
Jingning Han
aa706c1530 Merge "Enable recursive partition type search" into experimental 2013-05-10 14:08:02 -07:00
Dmitry Kovalev
4a559d3448 Merge "Removing unused simple loopfilter code." into experimental 2013-05-10 12:14:34 -07:00
Dmitry Kovalev
effaa3263d Removing unused simple loopfilter code.
Change-Id: Ic11dc052fb641687c015e1bbc37181b9babcd43e
2013-05-10 11:04:43 -07:00
Yunqing Wang
9755d9fda2 Remove unused mdcounts
mdcounts seems no longer used.

Change-Id: Idd8162e8acfa3f5be7a18767156cc79ccbc2bdee
2013-05-10 11:02:22 -07:00
Yunqing Wang
9f5811c2da Add joint motion search in comp_inter_inter mode(experiment)
In current code, motion vectors got from single prediction mode are used
in compound prediction mode directly. These motion vectors may not give
accurate prediction since they are searched independently. In this patch,
we took Pascal's suggestion, and did joint motion search in compound
prediction mode to find better motion vectors in this situation.
Test results:
Overall PSNR: 0.570%(derf), 0.918%(stdhd);
SSIM: 0.572%(derf), 1.009%(stdhd);

The encoder is a little slower. This can be improved since some c
code is used in motion search.

Change-Id: Ib30c9240f6c56c9b070867b4ca89412a76d9f3c6
2013-05-10 10:15:43 -07:00
Jingning Han
e44678c061 Enable recursive partition type search
This commit enables the search for the optimal superblock
partition types in the recursion form. The intention is to
make the optimization process more concise and ready to
support partition down to 4x4 block size next.

Change-Id: Iae279a67df3a7cc372553c84c775bc4d2f3e4336
2013-05-10 10:13:10 -07:00
Paul Wilkins
4305dd4778 Avoid calls to get_coef_band().
Use value already computed value to save of calls

Change-Id: I42836698e59c116416ccd75395bebdd11dd609fb
2013-05-10 11:49:54 +01:00
John Koleszar
da5054c5af Fix token allocation for non-4:2:0
Increase the allocated size of the token array to support 4:4:4.

Change-Id: I7766a7bedc74b819dcc1f3622d634f340fd3186d
2013-05-09 20:22:59 -07:00
John Koleszar
a37ee9d2e8 Fix non-4:2:0 chroma MV calculation for SPLITMV
The previous code was somewhat vestigial for 16x16 MI units, but was
incorrect when called with chroma blocks larger than 4x4 because the
block index caused a reference to a non-existent BMI. This patch uses
the same MV for all chroma subblocks in SPLITMV mode, which is
suboptimal for non-4:2:0 subsamplings, but as SPLITMV may be removed
in the near future, will use this as a stop gap.

Change-Id: I3211cee5ccf1cfb426e5eef5353b0ce5bb92b4cd
2013-05-09 20:14:39 -07:00
John Koleszar
6dab4d205e Fix 4:2:0 assumptions in debug plane output
Fixes some debugging code to be able to write out frames with
chroma other than 4:2:0.

Change-Id: I5ee3d29e584db1f52d2de344db249e927eff10b7
2013-05-09 20:14:35 -07:00
John Koleszar
da58436f43 Subsampling aware allocs and bitstream
Make framebuffer allocations according to the chroma subsamping
factors in use. A bit is placed in the raw part of the frame header for
each of the two subsampling factors. This will be moved in a future
commit to make them part of the TBD feature set bits, probably only set
on keyframes, etc.

Change-Id: I59ed38d3a3c0d4af3c7c277617de28d04a001853
2013-05-09 17:50:12 -07:00
John Koleszar
eab6a421ea Merge "Use common get_uv_tx_size()" into experimental 2013-05-09 12:18:10 -07:00
John Koleszar
8525c02e16 Merge "Make firstpass encode Y-only" into experimental 2013-05-09 12:17:50 -07:00
Dmitry Kovalev
eb93893bee Updating comments for prediction modes.
Change-Id: If4063184f7b37dc011ec6a7a3e75260f4251e984
2013-05-09 11:37:51 -07:00
John Koleszar
236ec08cd0 Make firstpass encode Y-only
The chroma planes are not used during the first pass encode,
but the vp9_encode_sb() function was operating on them anyway.
This was causing the use of uninitialized memory.

Change-Id: I5ebafcd3d5e34ed91a8336dad159b573995a939f
2013-05-09 10:46:40 -07:00
John Koleszar
1fec23bef6 Use common get_uv_tx_size()
Use a single method for calculating the transform size of
non-luma planes.

Change-Id: I16ebd10e7944d7b9075ab79d15e6a5b5f9bab775
2013-05-08 20:48:32 -07:00
Dmitry Kovalev
dc5418050a Code cleanup inside vp9_firstpass.c.
Change-Id: Ia2814402e3c2ec97c24c536c05f0f526fe1a431c
2013-05-08 18:13:46 -07:00
Dmitry Kovalev
f66320abff Removing LOOPFILTER_TYPE and corresponding bit in bitstream.
We don't have two loopfilter types anymore.

Change-Id: I53c0137361342c7d00887ad03be3490f0dfa3532
2013-05-08 16:44:08 -07:00
Dmitry Kovalev
267e9331e2 Merge "Using 4-iteration loop for extra_mb_col inside loopfilter function." into experimental 2013-05-08 16:37:34 -07:00
Dmitry Kovalev
c208cd67f4 Merge "Removing unused YV12_BUFFER_CONFIG arguments from motion search functions." into experimental 2013-05-08 16:36:42 -07:00
Dmitry Kovalev
7b602cba65 Merge "Eliminating several YV12_BUFFER_CONFIG usages." into experimental 2013-05-08 16:36:24 -07:00
Dmitry Kovalev
f0911886f3 Merge "Renaming 'Speed' to 'speed' inside VP9_COMP struct." into experimental 2013-05-08 16:35:35 -07:00
Dmitry Kovalev
60dd610ece Merge "Removing y_to_uv_block_size and y_bsizet_to_block_size functions." into experimental 2013-05-08 16:35:28 -07:00
Jingning Han
944ad130b6 Merge "Extend left/above partition context to per mi(8x8)" into experimental 2013-05-08 16:33:25 -07:00
Dmitry Kovalev
8f4e9ac8bc Removing y_to_uv_block_size and y_bsizet_to_block_size functions.
Change-Id: I49527ff8dd8bef1074c18a964fed2a575f0b118a
2013-05-08 15:23:42 -07:00
Dmitry Kovalev
4be190d9d0 Renaming 'Speed' to 'speed' inside VP9_COMP struct.
Change-Id: I4374b5af40ee9082ddf7956a9756a15ad9ad5436
2013-05-08 14:35:42 -07:00
Dmitry Kovalev
965c02c64d Removing unused YV12_BUFFER_CONFIG arguments from motion search functions.
Also doing a little bit of cleanup inside vp9_mbgraph.c.

Change-Id: I9c6711b73810969d2d8fdb19f8edf9ed6e49d1e3
2013-05-08 14:12:37 -07:00
Dmitry Kovalev
81f33bc091 Eliminating several YV12_BUFFER_CONFIG usages.
Change-Id: Ia85b987c935d545920dcae5a6f44136b1a08a008
2013-05-08 14:11:47 -07:00
Dmitry Kovalev
673cc21dfc Using loop to iterate through YV12_BUFFER_CONFIG planes.
Change-Id: I22f1066eb0022c8d75f65a78435ee4ffecdfe0c9
2013-05-08 13:39:16 -07:00
Dmitry Kovalev
80f9963232 Merge "Replacing vp9_{write, write_literal, bit} macros with functions." into experimental 2013-05-08 11:24:10 -07:00
Dmitry Kovalev
a0b6b8a7d4 Merge "Removing unused code + little cleanup." into experimental 2013-05-08 11:23:14 -07:00
Jingning Han
4a88ad89fd Extend left/above partition context to per mi(8x8)
Update and buffer left/above partition information context per 8x8
block. This allows to further enable recursive partition down to
4x4 block size, and hence deprecating I4X4_PRED and SPLITMV.

This commit also fixes a context buffer swap/restore issue in 32x32
partition type search. This gives 0.1% performance gain for derf/yt.
Will refactor the superblock partition type search into recursion
form.

Change-Id: Ib61975aca5f12b78d8018481d7fa1393d085689b
2013-05-08 10:20:34 -07:00
John Koleszar
14a5c7285b Make switchable filter search subsampling-aware
Makes the temporary storage of the filtered data agnostic to
the number of planes and how they're subsampled.

Change-Id: I12f352cd69a47ebe1ac622af30db29b49becb7f4
2013-05-07 21:57:00 -07:00
John Koleszar
7465f52f81 Merge "Make setup_pred_block subsampling-aware." into experimental 2013-05-07 21:53:31 -07:00
Dmitry Kovalev
cd5113ceec Replacing vp9_{write, write_literal, bit} macros with functions.
Also removing BOOL_CODER and using vp9_writer instead.

Change-Id: I31d1ec661872f7eb1fe869607b6ed0ebfbb03e01
2013-05-07 18:19:50 -07:00
Dmitry Kovalev
8e39295934 Using 4-iteration loop for extra_mb_col inside loopfilter function.
Change-Id: I3a4f456035628a9397bdc57c19cdb03439ab1ed3
2013-05-07 17:18:57 -07:00
Dmitry Kovalev
e8747866dc Merge "Renaming Y1 and UV quant prefixes to y_ and uv_." into experimental 2013-05-07 17:16:41 -07:00
Dmitry Kovalev
80997b3aa2 Merge "Adding get_switchable_rate function." into experimental 2013-05-07 17:10:48 -07:00
John Koleszar
d6c490cb15 Merge "Deprecate code_zerogroup experiment." into experimental 2013-05-07 17:09:38 -07:00
Dmitry Kovalev
9cd5406c32 Merge "Removing vp9_swap_yv12_buffer function and corresponding files." into experimental 2013-05-07 17:02:38 -07:00
Dmitry Kovalev
1e7cf5d174 Renaming Y1 and UV quant prefixes to y_ and uv_.
Change-Id: If57e360c187a475fc90edb8c7170f498efcb31a5
2013-05-07 16:59:15 -07:00
Dmitry Kovalev
cba0a5db2b Removing unused code + little cleanup.
Change-Id: I81c19a8f19cfb5c7183609656ade833d72feb500
2013-05-07 16:56:22 -07:00
Paul Wilkins
a14ae84749 Deprecate code_zerogroup experiment.
Delete code under the CONFIG_CODE_ZEROGROUP flag.

Change-Id: I5fe6c7b42a5da9b73118e33594301da4129f320a
2013-05-07 16:52:55 -07:00
Dmitry Kovalev
455816231e Adding get_switchable_rate function.
Change-Id: I71311a14f8d7f48508b250f25d1d0914c6a1ac72
2013-05-07 16:52:04 -07:00
Dmitry Kovalev
b05247df95 Removing vp9_swap_yv12_buffer function and corresponding files.
Adding static swap_yv12 function to vp9_firstpass.c.

Change-Id: I7da9caab9720498db4a74c627901bf37816ed06c
2013-05-07 16:49:22 -07:00
Paul Wilkins
1ed57a6a62 Deprecate comp_interintra_pred experiment.
Delete code under the CONFIG_COMP_INTERINTRA_PRED
flag.

Change-Id: I3d1079cf46305c08f7e11d738596ea112e7b547f
2013-05-07 16:24:08 -07:00
Paul Wilkins
0bfcd30768 Remove enable_6tap filter experiment.
Clean out code under CONFIG_ENABLE_6TAP flag.

Change-Id: Ic45b624081181027d6ba24d55dd644c3197f9830
2013-05-07 16:13:02 -07:00
Paul Wilkins
8c1b516d10 Deprecate the newbintramode experiment.
Clean out code relating to newbintramode.

Change-Id: Ie91f4f156cdf60ce0da8ca407c1c9cb00c7d0705
2013-05-07 16:00:59 -07:00
Paul Wilkins
9afb6700c2 Adjust q range
Skip Q values between the q.0 mode and a real q of
2.0 as these are not valuable from an RD perspective.

Change-Id: I110c4858c57f97315953f4d88a2596d4764360df
2013-05-07 15:34:17 -07:00
Jingning Han
b0cd64f189 Merge "Add building blocks for partition down to 4x4" into experimental 2013-05-07 15:33:20 -07:00
Jingning Han
c0102fd88b Merge "Cosmetic changes in handle_inter_mode_" into experimental 2013-05-07 15:33:12 -07:00
Dmitry Kovalev
847e184011 Merge "General code cleanup inside treewriter-related files." into experimental 2013-05-07 15:04:28 -07:00
Dmitry Kovalev
3cd8897623 Merge "Adding encode_loopfilter function." into experimental 2013-05-07 12:59:12 -07:00
Jingning Han
cf8b5a09ed Add building blocks for partition down to 4x4
Macro ab4x4 contains experiments for recursive partition down to
4x4 block size.

Change-Id: Ic727842fa98a4df9fd51e0025a545dc76a5c76c1
2013-05-07 12:11:51 -07:00
Jingning Han
cfea74bcf4 Cosmetic changes in handle_inter_mode_
Use unified function pointers to variance_.

Change-Id: I78891bede56e73306851808d96f09dc0d3d8074e
2013-05-07 12:06:16 -07:00
John Koleszar
e559e14fa6 Make setup_pred_block subsampling-aware.
Code previously set up the pointers by scaling by MI_UV_SIZE, which
is 4:2:0 only.

Change-Id: Ic13a92895cff018ec1345736746ed84cb31e6e31
2013-05-07 11:47:45 -07:00
John Koleszar
64c0b3075e Use common setup_dst_planes function
Previous code assumed 4:2:0 subsampling.

Change-Id: Ie0814e45d099e84d0ded880b62e7bc98f85b7f0c
2013-05-07 10:25:54 -07:00
Jingning Han
c0504a9b24 Merge "Merge SB8X8 into the codebase" into experimental 2013-05-07 09:23:47 -07:00
Jingning Han
776c1482a3 Merge SB8X8 into the codebase
Pull sb8x8 out of experimental list. verified via borg run tests.
Fixed unit test failures.

Change-Id: I12a4bbd17395930580c048ab68becad1ffe46e76
2013-05-07 09:08:25 -07:00
Scott LaVarnway
9c7d06e6f3 Merge "Removed vp9_setup_intra_recon()" into experimental 2013-05-07 08:24:26 -07:00
Jingning Han
8c70a0fcab Merge "Fix tile independency issue in sb8x8" into experimental 2013-05-06 22:28:04 -07:00
John Koleszar
aede2a1a00 Merge "Remove heap alloc of FIRSTPASS_STATS" into experimental 2013-05-06 22:20:11 -07:00
Jingning Han
35e8072613 Fix tile independency issue in sb8x8
Resolved the unit test failure on tile independence when sb8x8
enabled.

Change-Id: I23ca86c88170e49ca160e8e897d913905e6080ce
2013-05-06 21:56:45 -07:00
Dmitry Kovalev
e536e17881 Merge "Adding model_rd_for_sb function." into experimental 2013-05-06 17:17:18 -07:00
John Koleszar
6462eebbdd Remove heap alloc of FIRSTPASS_STATS
There is only one instance of these structures, no need for them
to be allocated separately on the heap.

Change-Id: I1333cc92d06bbe21be643c2b2f0e3936f0264cac
2013-05-06 14:36:08 -07:00
Dmitry Kovalev
f7c81ccff0 Removing 3 unused bits from bitstream.
Change-Id: I9cd21c5c9107d6197caab6949700b29c51658af3
2013-05-06 14:00:58 -07:00
Scott LaVarnway
cb7955d83e Removed vp9_setup_intra_recon()
This setup is now handled by vp9_build_intra_predictors()
when left_available and/or up_available is zero.

Change-Id: I59cec0ab95f8be69ce885fd20727510e4deef8a0
2013-05-06 16:13:06 -04:00
Dmitry Kovalev
2e5f0084f3 Adding model_rd_for_sb function.
Iterating over all planes in the loop instead of custom y,uv code inside
handle_inter_mode function.

Change-Id: I301f9276d6d544c2fd7203d84f1318ac80ea625d
2013-05-06 12:42:53 -07:00
Johann
231faf91c3 Merge "Automatically flag intrinsic files" into experimental 2013-05-06 11:04:04 -07:00
Jingning Han
8e1c97cf73 Fix a unit test failure of sb8x8 on scaling ref
Disable the use of scaled reference frame for motion search in
SPLITMV mode. This fixes the unit test failure issue triggered
when merging sb8x8 from experimental list.

Change-Id: I02ac25fd8db8d5762f8fee29513b947189875fa0
2013-05-06 10:28:18 -07:00
Ronald S. Bultje
f7fa367094 Fix first-pass intra4x4 for sb8x8 experiment.
Change-Id: I1df17f45721c690d157800daa6a0b377e3d32bc2
2013-05-04 15:49:41 -07:00
Ronald S. Bultje
842c573e04 Merge "Fix overflow in RD error calculation code." into experimental 2013-05-03 18:03:06 -07:00
John Koleszar
acc9c125dd Remove old_block_idx_4x4
Removes several instances where the old block numbering was
still in use.

Change-Id: Id35130591455a4abe6844613e45c0b70c1220c08
2013-05-03 17:19:13 -07:00
John Koleszar
6c622e2783 Merge "Separate transform and quant from vp9_encode_sb" into experimental 2013-05-03 17:19:01 -07:00
Johann
a62fcbea30 Automatically flag intrinsic files
Change-Id: Iee9894615265d42aa23c43a4183924953aedb0c6
2013-05-03 15:35:13 -07:00
John Koleszar
4529c68b3b Separate transform and quant from vp9_encode_sb
This allows removing a large number of transform size specific functions,
as well as supporting 444/alpha by routing all code through the
subsampling-aware path.

Change-Id: Ieb085cebe9f37f24fc24de179898b22abfda08a4
2013-05-03 12:14:50 -07:00
James Zern
15879fb457 Merge "vp9/count_segs: fix out of bounds read" into experimental 2013-05-03 11:27:45 -07:00
Ronald S. Bultje
ee808e52bd Fix overflow in RD error calculation code.
Change-Id: I61ef1f198c876f9f79787ea7d7385a862cfbae19
2013-05-03 10:33:07 -07:00
John Koleszar
f07733010b Merge "Create common vp9_encode_sb{,y}" into experimental 2013-05-03 10:26:53 -07:00
Adrian Grange
7aae782c37 Merge "Extend number of reference buffers to 8." into experimental 2013-05-03 09:59:54 -07:00
Adrian Grange
d7eea782f2 Extend number of reference buffers to 8.
The number of reference buffers is extended to 8 and
a reference sign-bias added for the LAST_FRAME.

Whilst the number of reference buffers used by an
individual frame remains unchanged at 3, these may
now be selected from 8 possible buffers.

Change-Id: I2d247b9c1c2b3a339d6c9fac125e81ba373f75a7
2013-05-03 09:17:18 -07:00
Scott LaVarnway
be7d4f96a2 Merge "Removed is_inter_mode() check" into experimental 2013-05-03 07:34:29 -07:00
Scott LaVarnway
3041cf8c8b Merge "Reduced y_dequant, uv_dequant size" into experimental 2013-05-03 07:30:31 -07:00
Ronald S. Bultje
034928843f Fix use of wrong rate/distortion variables in 16x8 r/d check.
Change-Id: Ib5961b4c8ca84d54c84b2651a4e0317c72fe7da4
2013-05-02 21:03:38 -07:00
Dmitry Kovalev
183aeecd74 Merge "Removing MAXF macro and using MAX instead." into experimental 2013-05-02 20:48:36 -07:00
James Zern
bc3c6d0a15 vp9/count_segs: fix out of bounds read
don't access mi until mi_{row,col} validation has been done

Change-Id: Ie1be052612cfccb2730dff9281c222bca28bf2c6
2013-05-02 19:11:28 -07:00
Ronald S. Bultje
1069c12cf4 Fix 16x16-iteration indexing bug in main encode_sb_row loop.
With this, encoder/decoder appear to match with sb8x8 experiment.
Needs some larger-scale testing.

Change-Id: I44d3cac37b3c98264985ed0a0fc763c30089aa64
2013-05-02 16:41:08 -07:00
Jingning Han
879a2f053d Fix state update in sb8x8 rate-distortion loop
Update mode_info of 8x8 blocks within the scope of current block.

Change-Id: I110c599e60664a5acde6afd919b107cea8419a0d
2013-05-02 14:41:51 -07:00
Jingning Han
1e26cdc178 Merge "Cache splitmv motion vectors appropriately in decoder." into experimental 2013-05-02 14:32:57 -07:00
Dmitry Kovalev
20eef67573 Adding encode_loopfilter function.
Moving code from huge vp9_pack_bitstream to encode_loopfilter function.

Change-Id: Idceb836da5b346cd54fc33402283e7cfb6d9097d
2013-05-02 14:23:56 -07:00
John Koleszar
3f4e80634b Create common vp9_encode_sb{,y}
Creates a common encode (subtract, transform, quantize, optimize,
inverse transform, reconstruct) function for all sb sizes, including
the old 16x16 path.

Change-Id: I964dff1ea7a0a5c378046a069ad83495f54df007
2013-05-02 14:02:03 -07:00