Commit Graph

707 Commits

Author SHA1 Message Date
Ronald S. Bultje
8d028402d7 Remove implicit assumption that mode_info_stride == mb_cols + 1.
Change-Id: I3030d7adac73109aeaa1ecc0f78ac968c092d9aa
2013-04-25 14:21:01 -07:00
Ronald S. Bultje
c849eaca59 Use b_width/height_log2 instead of mb_ where appropriate.
Basic assumption: when talking about transform units, use b_; when
talking about macroblock indices, use mb_.

Change-Id: Ifd163f595d4924ff892de4eb0401ccd56dc81884
2013-04-25 14:20:59 -07:00
John Koleszar
a99e1aa8ca Remove predictor pointers from BLOCKD
Access these members from MACROBLOCKD instead.

Change-Id: I2574622e577bb9feede47f6b7ccbb11f3e928ca8
2013-04-25 12:04:07 -07:00
John Koleszar
6c0c6b86c1 Remove diff from BLOCKD
The underlying storage for these buffers is in the per-plane MACROBLOCKD
area, so read it from there directly.

Change-Id: Id6bd835117fdd9dea07db95ad06eff9f12afaaf7
2013-04-25 11:57:22 -07:00
John Koleszar
15255eef82 Move dequant from BLOCKD to per-plane MACROBLOCKD
This data can vary per-plane, but not per-block.

Change-Id: I1971b0b2c2e697d2118e38b54ef446e52f63c65a
2013-04-25 11:57:20 -07:00
John Koleszar
4bd0f4f646 Remove BLOCK structure
All members can be referenced from their per-plane counterparts, and
removes assumptions about 24 blocks per macroblock.

Change-Id: I593fb0715e74cd84b48facd1c9b18c3ae1185d4b
2013-04-25 11:33:17 -07:00
Johann
c5b127afea Rename vp9_idct_x86.c
Remove similarly named header file. It is obsolete.

Move file to match naming style.

Adjust make file to include the file correctly and remove extra
unnecessary #if guard.

Change-Id: Ifba07ba9938a5df08a9f4eda54a3ac4d6983f7bf
2013-04-25 11:13:02 -07:00
Dmitry Kovalev
61a47da869 Adding is_inter_mode function.
Change-Id: I2d32d46002cb92c63050c2b8328865c406103621
2013-04-25 10:23:00 -07:00
Dmitry Kovalev
2cf0675a52 Merge "Removing unused mi_mv_pred_row and mi_mv_pred_col functions." into experimental 2013-04-25 10:18:07 -07:00
Dmitry Kovalev
9b081e6807 Merge "Using ROUND_POWER_OF_TWO macro inside vp9_loopfilter_filters.c." into experimental 2013-04-25 10:17:54 -07:00
Dmitry Kovalev
22c6ce03fa Merge "Handling frame references and scale factors in one for loop." into experimental 2013-04-25 10:17:34 -07:00
Jingning Han
b42b41c856 Merge "Move sbsegment out of experimental list" into experimental 2013-04-25 09:18:01 -07:00
Scott LaVarnway
a426c7f343 Merge "Moved dequantization into the token decoder" into experimental 2013-04-25 08:53:42 -07:00
Dmitry Kovalev
994c79cccf Handling frame references and scale factors in one for loop.
Using ALLOWED_REFS_PER_FRAME constants instead of hard coded 3, replacing
memcpy with plain struct assignment.

Change-Id: Ibc86f5d175fcb3f3a3eddacf593525370f1f854c
2013-04-24 17:20:53 -07:00
Yaowu Xu
bcf82cf503 Merge two similar functions into one
Function set_mb_row() and set_mb_col() do similar work and are always
called together, this commit merged them into a single function for
clarity and easy maintainence.  This was a TODO item.

Change-Id: I956bd9ed6afb8b2b0469b20fd8bc893b26f8a0f3
2013-04-24 15:58:03 -07:00
Dmitry Kovalev
a2d46434b5 Merge "Fixing PRED_SWITCHABLE_INTERP case in vp9_get_pred_context function." into experimental 2013-04-24 15:44:39 -07:00
Jingning Han
b0e3b3df18 Move sbsegment out of experimental list
Move rectangular superblock coding out of experimental list.

Change-Id: I96c37547d122330d666a67b4bf577ae54547857f
2013-04-24 15:19:17 -07:00
Jingning Han
ff2b8aa2c9 Contextual entropy coding of partition syntax
This commit enables selecting probability models for recursive block
partition information syntax, depending on its above/left partition
information, as well as the current block size. These conditional
probability models are reasonably stationary and consistent across
frames, hence the backward adaptive approach is used to maintain and
update the contextual models.

It achieves coding performance gains (on top of enabling rectangular
block sizes):
derf:   0.242%
yt:     0.391%
hd:     0.376%
stdhd:  0.645%

Change-Id: Ie513d9673337f0d27abd65fb566b711d0844ec2e
2013-04-24 14:23:14 -07:00
Dmitry Kovalev
2e3f3e4fbb Using ROUND_POWER_OF_TWO macro inside vp9_loopfilter_filters.c.
Change-Id: Icb671cd011f645a3361684207840d14330ca7488
2013-04-24 11:50:49 -07:00
Ronald S. Bultje
41a8a95bd1 Merge "Change chroma loopfilter to skip inner SB edges for tx16x16 also." into experimental 2013-04-24 11:45:26 -07:00
Ronald S. Bultje
4149ba1cbf Merge "Minor indent changes in loopfilter code." into experimental 2013-04-24 11:45:19 -07:00
Ronald S. Bultje
cc7ce53140 Merge "Add basic building blocks for 8x8 superblocks experiment." into experimental 2013-04-24 11:45:13 -07:00
Dmitry Kovalev
bd994ed42d Fixing PRED_SWITCHABLE_INTERP case in vp9_get_pred_context function.
Adding xd->up_available as additional check for above context.

Change-Id: If5654e4cae184b9c369b7b2e08076cb2951d00ed
2013-04-24 10:45:32 -07:00
Ronald S. Bultje
5b57580cd9 Change chroma loopfilter to skip inner SB edges for tx16x16 also.
Change-Id: I6ea9e110b5c5b07ab7d092886dbd51a6eccc0217
2013-04-24 09:45:43 -07:00
Paul Wilkins
6579720e6a Merge "Extension of segmentation to 8 segments." into experimental 2013-04-24 09:44:48 -07:00
Paul Wilkins
e307e924b5 Merge "Simplify Segment Coding" into experimental 2013-04-24 09:43:01 -07:00
Deb Mukherjee
0e905e03f2 Merge "Fix in token allocation with zerogroup expt" into experimental 2013-04-24 08:57:25 -07:00
Paul Wilkins
da04312f79 Minor tweak to implicit segmentation experiment.
This minor tweak makes segment 0 neutral and used by
key frames and also extends beyond 4 segments.

Change-Id: Ife4744602aba66ac9432746db3113cc5cd88a482
2013-04-24 16:43:01 +01:00
Paul Wilkins
31ee193a9c Extension of segmentation to 8 segments.
Also some further simplification following removal
of top node code.

There is an issue in regards to the shared file vp8cx.h
in regard to the roi_map as this interface assumes that
there are only 4 segments. I have left the value here as
4 for now meaning that the roi_map interface is broken
for VP9.

Note that this change would have been easier if I hadn't
had to search for hard wire instances of the number 4
and <= 3.

Change-Id: Ia8b6deea4be4dbd20deb1656e689dd43a5f190e8
2013-04-24 16:36:47 +01:00
Paul Wilkins
c77aff1286 Simplify Segment Coding
Remove top node optimization.
The improvement this gives is not sufficient to justify
the extra complexity.

Change-Id: I2bb4a12a50ffd52cacfa4a3e8acbb2e522066905
2013-04-24 10:47:12 +01:00
Paul Wilkins
27bb4777cd Simple implicit segmentation experiment.
Change-Id: Iaef16122732c2a81e0927f9862b51b68dc788712
2013-04-24 10:04:27 +01:00
Dmitry Kovalev
156d912025 Merge "Code cleanup inside vp9_get_pred_context function." into experimental 2013-04-23 18:03:29 -07:00
Dmitry Kovalev
97ac785e65 Merge "Simple cleanup inside vp9_decodframe.c and vp9_entropymode.c." into experimental 2013-04-23 18:02:46 -07:00
Dmitry Kovalev
afeff1acd1 Merge "Removing redundant code in vp9_entropymode.c." into experimental 2013-04-23 18:01:37 -07:00
Jingning Han
adbbd26517 Merge "Enable rectangular support for comp inter-intra" into experimental 2013-04-23 17:16:16 -07:00
Dmitry Kovalev
9828a33ebb Removing unused mi_mv_pred_row and mi_mv_pred_col functions.
Change-Id: If8ba37bf0b86e8dea88c27d911e8ddb0f6d5a3c5
2013-04-23 16:34:22 -07:00
John Koleszar
4f35e3e1c1 Merge "Move src_diff to per-plane MACROBLOCK data" into experimental 2013-04-23 16:24:08 -07:00
Dmitry Kovalev
de7c25c9f0 Code cleanup inside vp9_get_pred_context function.
Change-Id: Id06b7a299a26ed944a401faae51907537f722a7e
2013-04-23 16:18:09 -07:00
Dmitry Kovalev
d811558f63 Removing redundant code in vp9_entropymode.c.
Change-Id: Ia7266b8d3aa3d5cff2db0c3b2f014def045759af
2013-04-23 15:56:27 -07:00
Dmitry Kovalev
144f49c6aa Simple cleanup inside vp9_decodframe.c and vp9_entropymode.c.
Change-Id: I62dde981f5201c5fbc22001609ee4b5fd0a9bdf5
2013-04-23 15:50:56 -07:00
Jingning Han
a26c1edbb4 Enable rectangular support for comp inter-intra
This commit enables rectangular block prediction of compound
inter-intra mode. It combines the mb/sb32/sb64 prediction functions
into a unified version with configurable block width and height.
This fixes the enc/dec mismatch of the codebase when
comp-interintra-pred is enabled.

Change-Id: I1d0db2f1f184007802df04fcd12b9dadb3189ff0
2013-04-23 15:39:19 -07:00
Ronald S. Bultje
276a1106e6 Merge changes I54acef34,I72d42971 into experimental
* changes:
  Make some sb_type comparisons independent of literal enum values.
  Make loopfilter aware of rectangular blocks.
2013-04-23 15:29:19 -07:00
Dmitry Kovalev
d0d1094a05 Merge "Adding get_scan_{4x4, 8x8, 16x16} functions." into experimental 2013-04-23 12:44:51 -07:00
Johann
7af58d4338 Resolve declaration and implementation.
Clean Windows build warnings:
warning C4028: formal parameter <N> different from declaration

This was fixed independently in master and experimental but the fixes
were in opposite directions. One added const to the declaration and the
other removed it from the implementation.

Also update the variable names. This doesn't modify the data so call it
ref, matching the functions in the vicinity, rather than dst.

Change-Id: I2ffc6b4a874cb98c26487b909d20a5e099b5582c
2013-04-23 12:42:31 -07:00
Ronald S. Bultje
e0fc9201fe Minor indent changes in loopfilter code.
Change-Id: I0cdc951558e4d7748f63df8c03b1c9dce086acb0
2013-04-23 12:37:05 -07:00
Ronald S. Bultje
94297863bf Add basic building blocks for 8x8 superblocks experiment.
Change-Id: I274a1d2e461e6ffdb106bac4ad6951692ace314e
2013-04-23 12:34:37 -07:00
Ronald S. Bultje
5ba98ebcf1 Make some sb_type comparisons independent of literal enum values.
Change-Id: I54acef342b8e787e05af0febd7cf0d7d10288383
2013-04-23 12:34:32 -07:00
Ronald S. Bultje
0db636619f Make loopfilter aware of rectangular blocks.
Also use explicitely named enum values in sb_type comparisons, rather
than relying on absolute integer values, because enum values may
change in the future.

Change-Id: I72d42971a98157af93413a25ac2c7e6f9b369cec
2013-04-23 12:34:32 -07:00
John Koleszar
cbd1315ac4 Move src_diff to per-plane MACROBLOCK data
First in a series of commits making certain MACROBLOCK members
addressable per-plane. This commit also refactors the block subtraction
functions vp9_subtract_b, vp9_subtract_sby_c, etc to be
loops-over-planes and variable subsampling aware.

Change-Id: I371d092b914ae0a495dfd852ea1a3d2467be6ec3
2013-04-23 12:18:51 -07:00
Ronald S. Bultje
c4cae4cd5d Remove unused corner_predictor and log2_minus_1 functions.
Change-Id: Ic659544ca12b1bc191b93ddfa378964bd133bfc9
2013-04-23 11:19:39 -07:00
Scott LaVarnway
e3167b8c23 Merge "Eliminated prev_mip memsets/memcpys" into experimental 2013-04-23 10:22:13 -07:00
Deb Mukherjee
64e7f017ce Fix in token allocation with zerogroup expt
Fix to increase allocation of tokens at very high rates.

Change-Id: Ia27aa0316b0fab664230800f9c9947b5c68ecd58
2013-04-23 08:51:31 -07:00
Deb Mukherjee
735febf1ce Removing the implicit compound inter experiment
Removing this experiment for now, since it has been broken with
the latest code changes.

Change-Id: I1be2181b56de490fcb577f5905b5e147a8ed82d8
2013-04-22 16:46:54 -07:00
Scott LaVarnway
e732bc298c Moved dequantization into the token decoder
Mostly for cleanup purposes.  Now we should be able to rework
the encoder/decoder to use a common idct/add function.

Change-Id: I1597cc59812f362ecec0a3493b6101a6cc6fa7ff
2013-04-22 17:53:07 -04:00
Dmitry Kovalev
5de7e16ca2 Adding get_scan_{4x4, 8x8, 16x16} functions.
Change-Id: Id4306ef6d65d4a3984aed50b775bdf48d4f6c438
2013-04-22 14:08:41 -07:00
John Koleszar
01e41a531b Remove vp9_recon_intra_mbuv
Use common vp9_recon_sbuv instead.

Change-Id: I146f79adfdfda2b52257a52fa783727f12afa246
2013-04-22 12:05:24 -07:00
John Koleszar
c2c15e8eb3 Rewrite vp9_recon_sb*
Rewrite vp9_recon_sb{,y,uv} to be a loop over planes.

Change-Id: Ica2bbbb3105a1d29b2ff2ead07b76cde9683154c
2013-04-22 12:05:24 -07:00
John Koleszar
a443447b8b Move pre, second_pre to per-plane MACROBLOCKD data
Continue moving framebuffers to per-plane data.

Change-Id: I237e5a998b364c4ec20316e7249206c0bff8631a
2013-04-22 12:05:24 -07:00
Deb Mukherjee
f12509f640 Merge "Removes the code_nonzerocount experiment" into experimental 2013-04-22 11:53:14 -07:00
Deb Mukherjee
0aa79be7d5 Removes the code_nonzerocount experiment
This patch does not seem to give any benefits.

Change-Id: I9d2b4091d6af3dfc0875f24db86c01e2de57f8db
2013-04-22 10:58:49 -07:00
Deb Mukherjee
6ce718eb18 Merge "End of orientation zero group experiment" into experimental 2013-04-22 10:33:12 -07:00
Deb Mukherjee
70d9f116fd End of orientation zero group experiment
Adds an experiment that codes an end-of-orientation symbol
for every eligible zero encountered in scan order.

This cleans out various other sub-experiments that were part
of the origiinal patch, which will be later included if found
useful.

Results are slightly positive on all sets (0.1 - 0.2% range).

Change-Id: I57765c605fefc7fb9d1b57f1b356843602abefaf
2013-04-22 09:27:59 -07:00
John Koleszar
6d5ac8f2e1 reconinter: remove unnecessary functions, params
Removes the redundant dst pointers from vp9_build_inter_predictors_sb{y,uv}
and the remaining mb specific functions.

Change-Id: I7b6bf439d9394b85ea79b4fe61a3ffc1025720da
2013-04-22 08:20:54 -07:00
Paul Wilkins
f82c61b886 Merge "make DC_PRED for i4x4 to use real pixels only" into experimental 2013-04-22 05:10:36 -07:00
Dmitry Kovalev
c7a38f77ef Merge "Removing get_segment_id function and using existing vp9_get_pred_mb_segid." into experimental 2013-04-20 11:05:50 -07:00
Dmitry Kovalev
5c632dbb19 Merge "Renaming vp9_extra_bit_struct to vp9_extra_bit." into experimental 2013-04-20 11:03:25 -07:00
John Koleszar
fa8ddbd2a6 Merge "Move dst to per-plane MACROBLOCKD data" into experimental 2013-04-19 16:33:45 -07:00
John Koleszar
588c3cb02e Merge "Remove vp9_recon_mb{,y}" into experimental 2013-04-19 16:33:09 -07:00
Yaowu Xu
e3465a63d7 make DC_PRED for i4x4 to use real pixels only
Wherever there are real pixels available before falling back to use
assumed values 127 and 129.

This also make DC_PRED for i4x4 consistent with DC_PRED for larger
blocks.

Change-Id: I54372924826118da023f402c802ac6ce0caa70c3
2013-04-19 16:22:07 -07:00
John Koleszar
95c6c13ce6 Merge "Remove redundant pointers from void vp9_recon_sb{y,uv}" into experimental 2013-04-19 16:17:42 -07:00
John Koleszar
d12376aa2c Move dst to per-plane MACROBLOCKD data
First in a series of commits moving the framebuffers pointers to
per-plane data, so that they can be indexed numerically rather than
by name.

Change-Id: I6e0d60fd4d51e6375c384eb7321776564df21775
2013-04-19 16:16:10 -07:00
Scott LaVarnway
9662531d77 Eliminated prev_mip memsets/memcpys
For 1080 material, this buffer is currently 2,270,928 bytes.  This patch swaps
ptrs instead of copying and uses the last show_frame flag instead of setting
the entire buffer to zero.  For the test clip used, the decoder improved by up
to 1%.


Change-Id: I686825712ad56043e09ada9808dc489f875a6ce0
2013-04-19 18:38:10 -04:00
Dmitry Kovalev
c09f652590 Removing get_segment_id function and using existing vp9_get_pred_mb_segid.
Change-Id: Iff35d4b2f8f65511f80c594958c01fb4673fa033
2013-04-19 14:25:32 -07:00
Paul Wilkins
fb754fd37e Merge "Mv ref candidates cut to 2." into experimental 2013-04-19 14:09:44 -07:00
John Koleszar
9ec0f658a1 Remove vp9_recon_mb{,y}
Use the common sb functions instead.

Change-Id: I4fa0a8ee3c6ada56271dd09bf895b97642f55858
2013-04-19 12:12:00 -07:00
John Koleszar
d747986d29 Remove redundant pointers from void vp9_recon_sb{y,uv}
Remove the unnecessary _s_ from their names, and add a new
vp9_recon_sb() that calls the y and uv variants.

Change-Id: I7ffaa5ff5605a8472cac2a53de8cf889353039a6
2013-04-19 12:06:07 -07:00
Dmitry Kovalev
684ddc61ea Renaming vp9_extra_bit_struct to vp9_extra_bit.
Change-Id: Ie4713da125e954c1d30e1d4cbeb38666fce90ccc
2013-04-19 11:14:33 -07:00
John Koleszar
17313c408f Move diff to MACROBLOCKD per-plane data.
Change-Id: Ic27af09e38af8317ac4743241883d577a44f1490
2013-04-19 11:11:54 -07:00
John Koleszar
0053b46d51 make build_inter_predictors block size agnostic (split)
All build_inter_predictors can now be serviced by the same inner
function.

Change-Id: I40b08bee8f047286db4b1aad9dcae37b879c3f2a
2013-04-19 10:29:42 -07:00
John Koleszar
e0df9b213d Removing rounding from UV MV calculation for SPLITMV
Similar to the prior change that removed the rounding from non-SPLITMV
modes. Improves quality by a similar amount (Additional +0.087% on derf)

Change-Id: I39d80b4a3037a3aa7e285eb2320346ddaf646f52
2013-04-19 10:23:26 -07:00
John Koleszar
48b2e43470 Merge "make buid_inter_predictors block size agnostic (chroma)" into experimental 2013-04-19 10:23:04 -07:00
John Koleszar
6e5d2ac54c Merge "Use SSSE3 for 2d filters larger than 16" into experimental 2013-04-19 10:22:54 -07:00
John Koleszar
5b8a7d6e25 Use SSSE3 for 2d filters larger than 16
The C code was being used as a fallback for the >16 case, but only for 2D.

Change-Id: I1e2e6da9e4b28bd88bde9ba4dd32724ce466cf6f
2013-04-19 09:51:16 -07:00
Paul Wilkins
de80da39dc Mv ref candidates cut to 2.
Further simplification of mvref search to return
only the top two candidates. Distance weights removed
as the test order reflects distance anyway.

Change-Id: I0518cab7280258fec2058670add4f853fab7b855
2013-04-19 16:13:53 +01:00
Paul Wilkins
aa76bf3d28 Removal of CONFIG_NEW_MVREF experiment.
This experiment has failed to give much benefit but
does add complexity so deprecated.

Change-Id: Ic7b929ba706390b9907ef0b4f965bd401ca799a4
2013-04-19 11:54:02 +01:00
Paul Wilkins
92e8a3f514 Simplification of MVref search.
As we are no longer able to sort the candidate
mvrefs in both encoder and decode and given
that the cost of explicit signalling has proved
prohibitive, it no longer makes sense to find more
than 2 candidates.

This patch:

Modifies and simplifies add_candidate_mv()

Removes the forced addition of a 0 vector in the
MAX_MV_REF_CANDIDATES-1 position (in preparation
to reducing MAX_MV_REF_CANDIDATES to 2).

Re-orders the addition of candidates slightly.

This actually gives small gains (circa 0.2% on std-hd)

A subsequent patch will remove NEW_MVREF experiment,
reduce MAX_MV_REF_CANDIDATES to 2 and remove distance
weights as these are implicit now in the order.

Change-Id: I3dbe1a6f8a1a18b3c108257069c22a1141a207a4
2013-04-19 11:19:59 +01:00
John Koleszar
fc49a377d7 make buid_inter_predictors block size agnostic (chroma)
Updates to make non-SPLITMV inter predictors work for all
plane types.

Change-Id: I25dbef40b7ffcac30254b43eed1e22fc732378ae
2013-04-18 17:50:22 -07:00
John Koleszar
2987fa1dc1 Removing rounding from UV MV calculation
Consider the previous behavior for the MV 1 3/8 (11/8 pel). In the
existing code, the fractional part of the MV is considered separately,
and rounded is applied, giving a result of 6/8. Rounding is not required
in this case, as we're increasing the precision from a q3 to a q4, and
the correct value 11/16 can be represented exactly.

Slight gain observed (+.033 average on derf)

Change-Id: I320e160e8b12f1dd66aa0ce7966b5088870fe9f8
2013-04-18 17:47:17 -07:00
John Koleszar
4924934d2b make buid_inter_predictors block size agnostic (luma)
This commit converts the luma versions of vp9_build_inter_predictors_sb
to use a common function. Update the convolution functions to support
block sizes larger than 16x16, and add a foreach_predicted_block walker.

Next step will be to calculate the UV motion vector and implement SBUV,
then fold in vp9_build_inter16x16_predictors_mb and SPLITMV.

At the 16x16, 32x32, and 64x64 levels implemented in this commit, each
plane is predicted with only a single call to vp9_build_inter_predictor.
This is not yet called for SPLITMV. If the notion of SPLITMV/I8X8/I4X4
goes away, then the prediction block walker can go away, since we'll
always predict the whole bsize in a single step. Implemented using a
block walker at this stage for SPLITMV, as a 4x4 "prediction block size"
within the BLOCK_SIZE_MB16X16 macroblock. It would also support other
rectangular sizes too, if the blocks smaller than 16x16 remain
implemented as a SPLITMV-like thing. Just using 4x4 for now.

There's also a potential to combine with the foreach_transformed_block
walker if the logic for calculating the size of the subsampled
transform is made more straightforward, perhaps as a consequence of
supporing smaller macroblocks than 16x16. Will watch what happens there.

Change-Id: Iddd9973398542216601b630c628b9b7fdee33fe2
2013-04-18 17:42:55 -07:00
Dmitry Kovalev
b27edc67d2 Merge "Code cleanup inside findnearmv code." into experimental 2013-04-18 15:29:44 -07:00
Jingning Han
f0b065e946 Merge "Make the use of pred buffers consistent in MB/SB" into experimental 2013-04-18 15:24:55 -07:00
Dmitry Kovalev
19e9714572 Code cleanup inside findnearmv code.
Using predefined clamp function, removing redundant variables, declare and
init on the same line.

Change-Id: I14636eb242194bac33f8a9d4a273a416d32856fc
2013-04-18 15:07:36 -07:00
Jingning Han
6f43ff5824 Make the use of pred buffers consistent in MB/SB
Use in-place buffers (dst of MACROBLOCKD) for  macroblock prediction.
This makes the macroblock buffer handling consistent with those of
superblock. Remove predictor buffer MACROBLOCKD.

Change-Id: Id1bcd898961097b1e6230c10f0130753a59fc6df
2013-04-18 14:59:36 -07:00
Dmitry Kovalev
8726752cb6 Merge "Adding DEFAULT_PRED_PROB_{0, 1, 2} constants." into experimental 2013-04-18 14:39:14 -07:00
Dmitry Kovalev
3fe7b64722 Merge "Motion vector decoding code cleanup." into experimental 2013-04-18 14:38:38 -07:00
Dmitry Kovalev
bef4e474e7 Merge "Changing argument type of vp9_get_mv_joint from MV to MV*." into experimental 2013-04-18 14:27:44 -07:00
John Koleszar
66c0d1100b Merge "convolve: support larger blocks, fix asm saturation bug" into experimental 2013-04-18 14:27:16 -07:00
Dmitry Kovalev
a8d903e539 Merge "Replacing VP9_COMBINEENTROPYCONTEXTS macro with function." into experimental 2013-04-18 14:26:34 -07:00
Dmitry Kovalev
8b20aa2337 Merge "Renaming y1dc_delta_q, uvdc_delta_q, uvac_delta_q fields from VP9Common." into experimental 2013-04-18 14:26:06 -07:00
John Koleszar
a9ebbcc338 convolve: support larger blocks, fix asm saturation bug
Updates the common convoloution code to support blocks larger than
16x16, and rectangular blocks. This uncovered a bug in the SSSE3
filtering routines due to the order of application of saturation.
This commit fixes that bug, adjusts the unit test to bias its
random values towards the extremes, and adds a test to ensure that
all filters conform to the expected pairwise addition structure.

Change-Id: I81f69668b1de0de5a8ed43f0643845641525c8f0
2013-04-18 13:57:59 -07:00
Dmitry Kovalev
eae38910ce Motion vector decoding code cleanup.
Change-Id: I9790baedbd4acb7113575efc6f228b2656c42ff7
2013-04-18 11:05:34 -07:00
John Koleszar
38f6232118 Merge "Use BLOCK_SIZE_TYPE in foreach_ walker" into experimental 2013-04-17 21:02:58 -07:00
Ronald S. Bultje
d49df319ab Merge "Fix edge bug in recent merge of 64x64 and 32x32 inter predictors." into experimental 2013-04-17 16:30:42 -07:00
Ronald S. Bultje
d63826ac12 Fix edge bug in recent merge of 64x64 and 32x32 inter predictors.
Change-Id: I83aa188d414922db19cccb210c4001c02d5a404c
2013-04-17 16:12:02 -07:00
John Koleszar
ff3f93639c Use BLOCK_SIZE_TYPE in foreach_ walker
Change-Id: I655305c9e22bdd9abc893d3c40d4bc6616aa1d35
2013-04-17 15:08:37 -07:00
Yaowu Xu
acfc5981c3 Merge "clean out experiments" into experimental 2013-04-17 14:53:00 -07:00
Yaowu Xu
c8606a241f Merge "make lf_deltas dependent on filter_lvl" into experimental 2013-04-17 14:51:55 -07:00
Ronald S. Bultje
1cf31428ff Merge "Remove unused file vp9_context.c." into experimental 2013-04-17 13:49:48 -07:00
Ronald S. Bultje
0a20625bd8 Remove unused file vp9_context.c.
Change-Id: Id268ccaf1aefee6a3ed3e31486d4370f1c25e8cb
2013-04-17 13:40:31 -07:00
Dmitry Kovalev
ecff8d71ab Adding DEFAULT_PRED_PROB_{0, 1, 2} constants.
Also using ALLOWED_REFS_PER_FRAME instead of 3.

Change-Id: I810dd8521d8138edb9dbd78edede49b62f706554
2013-04-17 11:45:35 -07:00
Ronald S. Bultje
88192546cf Merge "Remove BLOCK_SIZE_LG2." into experimental 2013-04-17 11:22:44 -07:00
Ronald S. Bultje
0bb49c4e30 Merge "Add SSE2 versions for rectangular sad and sad4d functions." into experimental 2013-04-17 11:22:32 -07:00
Dmitry Kovalev
0db175ffed Changing argument type of vp9_get_mv_joint from MV to MV*.
Change-Id: I28c3026946fc1bde7074e6e0198da93bb0d75dfe
2013-04-17 11:21:28 -07:00
Yaowu Xu
642ac924ab Merge "replace hev_thr_lut[][] with simpler logic" into experimental 2013-04-17 11:08:36 -07:00
Yaowu Xu
421ad3f1b1 clean out experiments
that are related to using reconstructed pixel for selecting reference
motion vectors.

Change-Id: I048dfae39ca7385e344b57d46347ecc6e753e1bb
2013-04-17 11:00:46 -07:00
Ronald S. Bultje
213fe85da3 Remove BLOCK_SIZE_LG2.
It is unused.

Change-Id: Ied3269ffacf9b6303bc9d85f996384c3575ef812
2013-04-17 11:00:30 -07:00
Yaowu Xu
888d0c82da make lf_deltas dependent on filter_lvl
Change-Id: Idb0d11e3ae9afabe667a9f327bf4d3aa84f63649
2013-04-17 10:59:48 -07:00
Yaowu Xu
0d310de97b replace hev_thr_lut[][] with simpler logic
Using filter_level/16 instead.

Change-Id: I73a7e83a785d6aa6f9b5d22cf66e22f0a39ed078
2013-04-17 10:54:30 -07:00
Ronald S. Bultje
c17c440233 Merge "Fairly basic integration of rectangular blocks in encoding RD loop." into experimental 2013-04-17 10:46:45 -07:00
Ronald S. Bultje
0c481f4d18 Add SSE2 versions for rectangular sad and sad4d functions.
About 11% overall encoder speedup with the sbsegment experiment enabled.

Change-Id: Iffb1bdba6932d9f11a6c791cda8697ccf9327183
2013-04-17 10:31:59 -07:00
Yaowu Xu
cb3192b72c Change to do LPF in SB64 order
Change-Id: I41b3f5932ecd6256e8207369ad19aa81e7987be1
2013-04-17 10:15:02 -07:00
Ronald S. Bultje
e693472236 Fairly basic integration of rectangular blocks in encoding RD loop.
Adds RD integration for 32x16, 16x32, 64x32 and 32x64 rectangular blocks.
Derf almost +0.6%, HD a little over +1.0%, STDHD +1.3%.

Change-Id: Id651fdb6a655fdbb5c47009757e63317acfb88a5
2013-04-17 09:25:06 -07:00
Jingning Han
90a91cc683 Recursive partition syntax coding
Enable recursive partition information coding from SB64X64 down to
MB16X16. The bit-stream syntax is now supporting rectangular block
sizes. It starts from SB64X64 and recursively describes the partition
type of the current block. If the partition type is PARTITION_NONE,
the block is coded as a single unit; if it is PARTITION_HORZ or
PARTITION_VERT, the block is segmented into two independently coded
rectangular units, with no further partition needed; otherwise, the
block is segmented into 4 square blocks. i.e., PARTITION_SPLIT case,
each can be potentially further partitioned.

Forward adaptive probability modeling is used for the partition
information coding, conditioned on the current block size.

Change-Id: I499365fb547839d555498e3bcc0387d8a3587d87
2013-04-16 18:41:26 -07:00
Ronald S. Bultje
c0a1b5bc7e Merge "Slightly hackish workaround to support rectangles in directional intra predictors." into experimental 2013-04-16 17:05:20 -07:00
Christian Duvivier
5b6d33f9af Faster vp9_short_fdct4x4 and vp9_short_fdct8x4.
Scalar path is about 1.3x faster (2.1% overall encoder speedup).
SSE2 path is about 5.0x faster (8.4% overall encoder speedup).

Change-Id: I360d167b5ad6f387bba00406129323e2fe6e7dda
2013-04-16 16:38:30 -07:00
Christian Duvivier
f13b69d07c Faster vp9_short_fdct4x4 and vp9_short_fdct8x4.
Scalar path is about 1.3x faster (2.1% overall encoder speedup).
SSE2 path is about 5.0x faster (8.4% overall encoder speedup).

Change-Id: I360d167b5ad6f387bba00406129323e2fe6e7dda
2013-04-16 16:11:56 -07:00
Dmitry Kovalev
9087d6d470 Replacing VP9_COMBINEENTROPYCONTEXTS macro with function.
Change-Id: I3bbc31840af69481e1d9bb4427c9ee25abf82946
2013-04-16 15:30:28 -07:00
Dmitry Kovalev
1ad7c1f250 Renaming y1dc_delta_q, uvdc_delta_q, uvac_delta_q fields from VP9Common.
New names are y_dc_delta_q, uv_dc_delta_q, uv_ac_delta_q.

Change-Id: I4acae1fc23a4697ce2c5a5becb8dc28ef0a4b552
2013-04-16 15:05:52 -07:00
Ronald S. Bultje
94996b9d26 Slightly hackish workaround to support rectangles in directional intra predictors.
Change-Id: I8a4da6925f2d58a426c4d122df8b97bb69452e49
2013-04-16 14:33:03 -07:00
John Koleszar
e3cfe4e89e Remove the mb_no_coeff_skip flag
This flag was added to VP8 to allow a mode where MB-level skipping
was not allowed, saving a bit per mb. It was never used in practice,
and hasn't been tested in VP9, so remove it.

Change-Id: Id450ec6904c6d06c1919508e7efc52d05cde5631
2013-04-16 12:36:16 -07:00
Dmitry Kovalev
5953a98631 Merge "Code cleanup inside vp9_reconintra4x4.c file." into experimental 2013-04-16 10:24:32 -07:00
Dmitry Kovalev
b30182c733 Merge "Adding mv_joint_vertical and mv_joint_horizontal functions." into experimental 2013-04-16 10:24:01 -07:00
Yunqing Wang
e87c7f0930 Merge "Optimize the scaling calculation" into experimental 2013-04-16 09:14:22 -07:00
Scott LaVarnway
466f395148 Merge "Removing extra params from x_add_residual() functions" into experimental 2013-04-16 08:58:28 -07:00
Yunqing Wang
148eb803bb Optimize the scaling calculation
In decoder, the scaling calculation, such as (mv * x_num / x_den),
is fairly time-consuming. In this patch, we check if the scaling
happens or not at frame level, and then decide which function to
call to skip scaling calculation when no scaling is needed. Tests
showed a 3% decoder performance gain.

Change-Id: I270901dd0331048e50368cfd51ce273dd82b8733
2013-04-16 08:52:40 -07:00
Scott LaVarnway
6f95d53e37 Removing extra params from x_add_residual() functions
Now that the predictor is the dest, we do not need the
extra parameters.

Change-Id: I31e2c3d2015f4a1cd12e7f04536d8db478582a0a
2013-04-16 09:59:01 -04:00
John Koleszar
4054ff5da5 Merge "Removing TRUE and FALSE macro definitions." into experimental 2013-04-16 06:55:13 -07:00
John Koleszar
7f7d1357a2 Merge branch 'experimental' into master
VP9 preview bitstream 2, commit '868ecb55a1528ca3f19286e7d1551572bf89b642'

Conflicts:
	vp9/vp9_common.mk

Change-Id: I3f0f6e692c987ff24f98ceafbb86cb9cf64ad8d3
2013-04-16 06:49:46 -07:00
Scott LaVarnway
5393379c84 Merge "Removing extra params in dequant functions" into experimental 2013-04-16 06:37:00 -07:00
Dmitry Kovalev
a0d9309eab Removing TRUE and FALSE macro definitions.
Using regular 0 and 1 constants now.

Change-Id: Ie763503cbb727847cc8f1d6506cd6f2ee607f056
2013-04-15 15:24:39 -07:00
Ronald S. Bultje
f7d43d21bd Merge "Add rectangular block size variance/sad functions." into experimental 2013-04-15 14:20:25 -07:00
Jingning Han
aaf33d7df5 Add rectangular block size variance/sad functions.
With this, the RD loop properly supports rectangular blocks.

Change-Id: Iece79048fb4e84741ee1ada982da129a7bf00470
2013-04-15 13:39:07 -07:00
Dmitry Kovalev
fd61b7ea10 Adding mv_joint_vertical and mv_joint_horizontal functions.
Change-Id: Ieaec2c48f3752b8558ba051caaf4ba2ab0e9e84d
2013-04-15 12:07:26 -07:00
Dmitry Kovalev
64de375e1f Code cleanup inside vp9_reconintra4x4.c file.
Using ROUND_POWER_OF_TWO macro, using array initialization syntax for
less code.

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

Change-Id: I78db73d39b5aff62f15303f3d51ad2797eae74b6
2013-04-15 13:43:11 -04:00
Yaowu Xu
757e138a3b Merge "Reorder enum i4X4 predcition modes" into experimental 2013-04-15 10:37:37 -07:00
Adrian Grange
4ee671a15c Merge "Initial addition of multiple ARF frames" into experimental 2013-04-15 09:46:16 -07:00
Adrian Grange
c2876cf0fd Initial addition of multiple ARF frames
This is work-in-progress, it implements multiple ARF
encoding behind an experimental flag.

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

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

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

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

Change-Id: Ie473b05ebb43ac473c0cfb659b2b8042823085e2
2013-04-15 09:11:39 -07:00
Dmitry Kovalev
8ae091823d Merge "Encoder code cleanup." into experimental 2013-04-14 10:58:44 -07:00
Dmitry Kovalev
ee9ce0e7d7 Merge "Intra code cleanup." into experimental 2013-04-14 04:34:16 -07:00