summaryrefslogtreecommitdiff
path: root/vp9/encoder
diff options
context:
space:
mode:
authorJingning Han <jingning@google.com>2013-02-08 16:19:42 -0800
committerJingning Han <jingning@google.com>2013-02-11 10:42:39 -0800
commit57e995ff9c01d8c09af50439c8c88876a234d205 (patch)
tree4da6003fd75c2f416a823eee29b501bc2f49de50 /vp9/encoder
parent5f2e8449b7247bf110dbacc2cacb9ce0a16bbe30 (diff)
downloadlibvpx-57e995ff9c01d8c09af50439c8c88876a234d205.tar
libvpx-57e995ff9c01d8c09af50439c8c88876a234d205.tar.gz
libvpx-57e995ff9c01d8c09af50439c8c88876a234d205.tar.bz2
libvpx-57e995ff9c01d8c09af50439c8c88876a234d205.zip
butterfly inverse 4x4 ADST
fixed format issues. Implement the inverse 4x4 ADST using 9 multiplications. For this particular dimension, the original ADST transform can be factorized into simpler operations, hence is retained. Change-Id: Ie5d9749942468df299ab74e90d92cd899569e960
Diffstat (limited to 'vp9/encoder')
-rw-r--r--vp9/encoder/vp9_encodeintra.c10
-rw-r--r--vp9/encoder/vp9_rdopt.c4
2 files changed, 13 insertions, 1 deletions
diff --git a/vp9/encoder/vp9_encodeintra.c b/vp9/encoder/vp9_encodeintra.c
index fa7229714..1dd30130a 100644
--- a/vp9/encoder/vp9_encodeintra.c
+++ b/vp9/encoder/vp9_encodeintra.c
@@ -56,7 +56,11 @@ void vp9_encode_intra4x4block(MACROBLOCK *x, int ib) {
if (tx_type != DCT_DCT) {
vp9_fht(be->src_diff, 32, be->coeff, tx_type, 4);
vp9_ht_quantize_b_4x4(be, b, tx_type);
+#if CONFIG_INTHT4X4
+ vp9_short_iht4x4(b->dqcoeff, b->diff, 32, tx_type);
+#else
vp9_ihtllm(b->dqcoeff, b->diff, 32, tx_type, 4, b->eob);
+#endif
} else {
x->vp9_short_fdct4x4(be->src_diff, be->coeff, 32);
x->quantize_b_4x4(be, b) ;
@@ -155,7 +159,7 @@ void vp9_encode_intra8x8(MACROBLOCK *x, int ib) {
#if CONFIG_INTHT
vp9_short_iht8x8(xd->block[idx].dqcoeff, xd->block[ib].diff,
- tx_type, 32);
+ 32, tx_type);
#else
vp9_ihtllm(xd->block[idx].dqcoeff, xd->block[ib].diff, 32,
tx_type, 8, xd->block[idx].eob);
@@ -173,7 +177,11 @@ void vp9_encode_intra8x8(MACROBLOCK *x, int ib) {
if (tx_type != DCT_DCT) {
vp9_fht_c(be->src_diff, 32, be->coeff, tx_type, 4);
vp9_ht_quantize_b_4x4(be, b, tx_type);
+#if CONFIG_INTHT4X4
+ vp9_short_iht4x4(b->dqcoeff, b->diff, 32, tx_type);
+#else
vp9_ihtllm(b->dqcoeff, b->diff, 32, tx_type, 4, b->eob);
+#endif
} else if (!(i & 1) && get_tx_type_4x4(xd, b + 1) == DCT_DCT) {
x->vp9_short_fdct8x4(be->src_diff, be->coeff, 32);
x->quantize_b_4x4_pair(be, be + 1, b, b + 1);
diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c
index 317209be7..29893b819 100644
--- a/vp9/encoder/vp9_rdopt.c
+++ b/vp9/encoder/vp9_rdopt.c
@@ -1170,7 +1170,11 @@ static int64_t rd_pick_intra4x4block(VP9_COMP *cpi, MACROBLOCK *x, BLOCK *be,
// inverse transform
if (best_tx_type != DCT_DCT)
+#if CONFIG_INTHT4X4
+ vp9_short_iht4x4(best_dqcoeff, b->diff, 32, best_tx_type);
+#else
vp9_ihtllm(best_dqcoeff, b->diff, 32, best_tx_type, 4, b->eob);
+#endif
else
xd->inv_xform4x4_x8(best_dqcoeff, b->diff, 32);