summaryrefslogtreecommitdiff
path: root/vp8/common/findnearmv.h
diff options
context:
space:
mode:
authorYaowu Xu <yaowu@google.com>2011-08-04 16:30:27 -0700
committerYaowu Xu <yaowu@google.com>2011-09-16 15:55:19 -0700
commitca6b85aa4eae6047315ac01eef44b0ebaef58da3 (patch)
tree3113a87f1b48378a940223b43bf4d6cb86c4de92 /vp8/common/findnearmv.h
parent62371d382a4fb2570c60e0a0948bd32e91790f2a (diff)
downloadlibvpx-ca6b85aa4eae6047315ac01eef44b0ebaef58da3.tar
libvpx-ca6b85aa4eae6047315ac01eef44b0ebaef58da3.tar.gz
libvpx-ca6b85aa4eae6047315ac01eef44b0ebaef58da3.tar.bz2
libvpx-ca6b85aa4eae6047315ac01eef44b0ebaef58da3.zip
add 8x8 intra prediction modes
Patch 1 to Patch 3 is an initial implementation of 8x8 intra prediction modes, here are with the following assumptions: a. 8x8 has 4 prediction modes DC, H, V and TM b. UV 4x4 block use the same mode as corresponding 8x8 area c. i8x8 modes are enabled for key frame only for now Patch 4: d. removed debug code from previous patches Patch 5: e. added stats code to collect entropy stats and further cleaned up Patch 6: f. changed mode stats code to collect finer stats of modes Patch 7: g. normalized i8x8 modes distribution to total at 256 (8bits). Patch 8: h. fixed a bug in decoder and removed debug printf output. Patch 9: i. more cleanups to address paul's comment Patch 10: j. messy rebase/merges to bring the commit up to date. Tests on HD clips encoded with all key frame showing consistent gain on all clips and all metrics:~0.5%(psnr) and 0.6%(ssim): http://www.corp.google.com/~yaowu/no_crawl/i8x8hd_allkey_fixedq.html To build and test, configure with: --enable-experimental --enable-i8x8 Change-Id: I9813fe07ae48cab5fdb5d904bca022514ad01e7f
Diffstat (limited to 'vp8/common/findnearmv.h')
-rw-r--r--vp8/common/findnearmv.h17
1 files changed, 12 insertions, 5 deletions
diff --git a/vp8/common/findnearmv.h b/vp8/common/findnearmv.h
index c142a0415..ffc02ed6c 100644
--- a/vp8/common/findnearmv.h
+++ b/vp8/common/findnearmv.h
@@ -125,8 +125,6 @@ static B_PREDICTION_MODE left_block_mode(const MODE_INFO *cur_mb, int b)
--cur_mb;
switch (cur_mb->mbmi.mode)
{
- case B_PRED:
- return (cur_mb->bmi + b + 3)->as_mode;
case DC_PRED:
return B_DC_PRED;
case V_PRED:
@@ -135,6 +133,11 @@ static B_PREDICTION_MODE left_block_mode(const MODE_INFO *cur_mb, int b)
return B_HE_PRED;
case TM_PRED:
return B_TM_PRED;
+#if CONFIG_I8X8
+ case I8X8_PRED:
+#endif
+ case B_PRED:
+ return (cur_mb->bmi + b + 3)->as_mode;
default:
return B_DC_PRED;
}
@@ -143,7 +146,8 @@ static B_PREDICTION_MODE left_block_mode(const MODE_INFO *cur_mb, int b)
return (cur_mb->bmi + b - 1)->as_mode;
}
-static B_PREDICTION_MODE above_block_mode(const MODE_INFO *cur_mb, int b, int mi_stride)
+static B_PREDICTION_MODE above_block_mode(const MODE_INFO
+ *cur_mb, int b, int mi_stride)
{
if (!(b >> 2))
{
@@ -152,8 +156,6 @@ static B_PREDICTION_MODE above_block_mode(const MODE_INFO *cur_mb, int b, int mi
switch (cur_mb->mbmi.mode)
{
- case B_PRED:
- return (cur_mb->bmi + b + 12)->as_mode;
case DC_PRED:
return B_DC_PRED;
case V_PRED:
@@ -162,6 +164,11 @@ static B_PREDICTION_MODE above_block_mode(const MODE_INFO *cur_mb, int b, int mi
return B_HE_PRED;
case TM_PRED:
return B_TM_PRED;
+#if CONFIG_I8X8
+ case I8X8_PRED:
+#endif
+ case B_PRED:
+ return (cur_mb->bmi + b + 12)->as_mode;
default:
return B_DC_PRED;
}