Superblock encoding order
authorAdrian Grange <agrange@google.com>
Fri, 6 Apr 2012 23:38:34 +0000 (16:38 -0700)
committerPaul Wilkins <paulwilkins@google.com>
Wed, 11 Apr 2012 09:40:57 +0000 (10:40 +0100)
commit9daf3154db8e5225ebc69fb120389ff9b2a9dd3f
tree0aaee32bbe484e90274a36ec44d7435f4df2c536
parent78ecbc98e4df70e94e8f2029c8d2d65f643e6f74
Superblock encoding order

This is the first patch to add superblock (32x32) coding
order capabilities. It does not yet do any mode selection
at the SB level, that will follow in a further patch.

This patch encodes rows of SBs rather than
MBs, each SB contains 2x2 MBs.

Two intra prediction modes have been disabled since they
require reconstructed data for the above-right MB which
may not have been encoded yet (e.g. for the bottom right
MB in each SB).

Results on the one test clip I have tried (720p GIPS clip)
suggest that it is somewhere around 0.2dB worse than the
baseline version, so there may be bugs.

It has been tested with no experiments enabled and with
the following 3 experiments enabled:
  --enable-enhanced_interp
  --enable-high_precision_mv
  --enable-sixteenth_subpel_uv
in each case the decode buffer matches the recon buffer
(using "cmp" to compare the dumped/decoded frames).
Note: Testing these experiments individually created
errors.

Some problems were found with other experiments but it
is unclear what state these experiments are in:
  --enable-comp_intra_pred
  --enable-newentropy
  --enable-uvintra

This code has not been extensively tested yet, so there
is every likelihood that further bugs remain. I also
intend to do some code cleanup & refactoring in tandem
with the next patch that adds the 32x32 modes.

Change-Id: I1eba7f740a70b3510df58db53464535ef881b4d9
18 files changed:
configure
vp8/common/blockd.h
vp8/common/findnearmv.c
vp8/decoder/decodemv.c
vp8/decoder/decodframe.c
vp8/decoder/onyxd_if.c
vp8/encoder/bitstream.c
vp8/encoder/block.h
vp8/encoder/encodeframe.c
vp8/encoder/encodeintra.c
vp8/encoder/firstpass.c
vp8/encoder/mbgraph.c
vp8/encoder/mcomp.c
vp8/encoder/onyx_if.c
vp8/encoder/onyx_int.h
vp8/encoder/rdopt.c
vp8/encoder/rdopt.h
vpxenc.c