diff options
author | Jingning Han <jingning@google.com> | 2013-05-15 22:28:36 -0700 |
---|---|---|
committer | Jingning Han <jingning@google.com> | 2013-05-19 14:59:04 -0700 |
commit | 810b612c233e82addc09412815ce06dfdaa589c9 (patch) | |
tree | 7d38472e746576a62caa3d39a8b4d8343d75904a /vp9/decoder/vp9_decodframe.c | |
parent | 5f3612c35e1cadb024317f6223ceabeebac1235a (diff) | |
download | libvpx-810b612c233e82addc09412815ce06dfdaa589c9.tar libvpx-810b612c233e82addc09412815ce06dfdaa589c9.tar.gz libvpx-810b612c233e82addc09412815ce06dfdaa589c9.tar.bz2 libvpx-810b612c233e82addc09412815ce06dfdaa589c9.zip |
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
Diffstat (limited to 'vp9/decoder/vp9_decodframe.c')
-rw-r--r-- | vp9/decoder/vp9_decodframe.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index b200e6ccc..e58c57979 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -413,6 +413,11 @@ static void decode_modes_b(VP9D_COMP *pbi, int mi_row, int mi_col, vp9_reader *r, BLOCK_SIZE_TYPE bsize) { MACROBLOCKD *const xd = &pbi->mb; +#if CONFIG_AB4X4 + if (bsize < BLOCK_SIZE_SB8X8) + if (xd->ab_index > 0) + return; +#endif set_offsets(pbi, bsize, mi_row, mi_col); vp9_decode_mb_mode_mv(pbi, xd, mi_row, mi_col, r); set_refs(pbi, mi_row, mi_col); @@ -465,6 +470,7 @@ static void decode_modes_sb(VP9D_COMP *pbi, int mi_row, int mi_col, } subsize = get_subsize(bsize, partition); + *(get_sb_index(xd, subsize)) = 0; switch (partition) { case PARTITION_NONE: @@ -472,11 +478,13 @@ static void decode_modes_sb(VP9D_COMP *pbi, int mi_row, int mi_col, break; case PARTITION_HORZ: decode_modes_b(pbi, mi_row, mi_col, r, subsize); + *(get_sb_index(xd, subsize)) = 1; if (mi_row + bs < pc->mi_rows) decode_modes_b(pbi, mi_row + bs, mi_col, r, subsize); break; case PARTITION_VERT: decode_modes_b(pbi, mi_row, mi_col, r, subsize); + *(get_sb_index(xd, subsize)) = 1; if (mi_col + bs < pc->mi_cols) decode_modes_b(pbi, mi_row, mi_col + bs, r, subsize); break; |