diff options
author | Deb Mukherjee <debargha@google.com> | 2012-11-30 11:46:20 -0800 |
---|---|---|
committer | Deb Mukherjee <debargha@google.com> | 2012-12-01 15:19:55 -0800 |
commit | 8b92f1e0238a9b35096ca7be273f69456354a031 (patch) | |
tree | 79bce0936771dcfaac920d231e1d665524566f02 /vp9/common/vp9_reconintra.c | |
parent | 66323307029f9e9c9ed3f40aa225019e1f074f20 (diff) | |
download | libvpx-8b92f1e0238a9b35096ca7be273f69456354a031.tar libvpx-8b92f1e0238a9b35096ca7be273f69456354a031.tar.gz libvpx-8b92f1e0238a9b35096ca7be273f69456354a031.tar.bz2 libvpx-8b92f1e0238a9b35096ca7be273f69456354a031.zip |
Supports inter-intra prediction with superblocks
Adds support for compound inter-intra prediction with superblocks.
Also, fixes a bug that disabled intra modes for superblocks.
Change-Id: I4d711317e1bc19df8c2f32dc645429f7fff31036
Diffstat (limited to 'vp9/common/vp9_reconintra.c')
-rw-r--r-- | vp9/common/vp9_reconintra.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/vp9/common/vp9_reconintra.c b/vp9/common/vp9_reconintra.c index 5c8d33960..92492aa5b 100644 --- a/vp9/common/vp9_reconintra.c +++ b/vp9/common/vp9_reconintra.c @@ -655,6 +655,53 @@ void vp9_build_interintra_16x16_predictors_mbuv(MACROBLOCKD *xd, combine_interintra(xd->mode_info_context->mbmi.interintra_uv_mode, vpred, uvstride, vintrapredictor, 8, 8); } + +#if CONFIG_SUPERBLOCKS +void vp9_build_interintra_32x32_predictors_sby(MACROBLOCKD *xd, + unsigned char *ypred, + int ystride) { + unsigned char intrapredictor[1024]; + vp9_build_intra_predictors_internal( + xd->dst.y_buffer, xd->dst.y_stride, + intrapredictor, 32, + xd->mode_info_context->mbmi.interintra_mode, 32, + xd->up_available, xd->left_available); + combine_interintra(xd->mode_info_context->mbmi.interintra_mode, + ypred, ystride, intrapredictor, 32, 32); +} + +void vp9_build_interintra_32x32_predictors_sbuv(MACROBLOCKD *xd, + unsigned char *upred, + unsigned char *vpred, + int uvstride) { + unsigned char uintrapredictor[256]; + unsigned char vintrapredictor[256]; + vp9_build_intra_predictors_internal( + xd->dst.u_buffer, xd->dst.uv_stride, + uintrapredictor, 16, + xd->mode_info_context->mbmi.interintra_uv_mode, 16, + xd->up_available, xd->left_available); + vp9_build_intra_predictors_internal( + xd->dst.v_buffer, xd->dst.uv_stride, + vintrapredictor, 16, + xd->mode_info_context->mbmi.interintra_uv_mode, 16, + xd->up_available, xd->left_available); + combine_interintra(xd->mode_info_context->mbmi.interintra_uv_mode, + upred, uvstride, uintrapredictor, 16, 16); + combine_interintra(xd->mode_info_context->mbmi.interintra_uv_mode, + vpred, uvstride, vintrapredictor, 16, 16); +} + +void vp9_build_interintra_32x32_predictors_sb(MACROBLOCKD *xd, + unsigned char *ypred, + unsigned char *upred, + unsigned char *vpred, + int ystride, + int uvstride) { + vp9_build_interintra_32x32_predictors_sby(xd, ypred, ystride); + vp9_build_interintra_32x32_predictors_sbuv(xd, upred, vpred, uvstride); +} +#endif #endif void vp9_build_intra_predictors_mby(MACROBLOCKD *xd) { |