diff options
author | Yaowu Xu <yaowu@google.com> | 2011-08-04 16:30:27 -0700 |
---|---|---|
committer | Yaowu Xu <yaowu@google.com> | 2011-09-16 15:55:19 -0700 |
commit | ca6b85aa4eae6047315ac01eef44b0ebaef58da3 (patch) | |
tree | 3113a87f1b48378a940223b43bf4d6cb86c4de92 /vp8/common/findnearmv.h | |
parent | 62371d382a4fb2570c60e0a0948bd32e91790f2a (diff) | |
download | libvpx-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.h | 17 |
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; } |