diff options
author | Jingning Han <jingning@google.com> | 2013-02-08 16:19:42 -0800 |
---|---|---|
committer | Jingning Han <jingning@google.com> | 2013-02-11 10:42:39 -0800 |
commit | 57e995ff9c01d8c09af50439c8c88876a234d205 (patch) | |
tree | 4da6003fd75c2f416a823eee29b501bc2f49de50 /vp9/encoder | |
parent | 5f2e8449b7247bf110dbacc2cacb9ce0a16bbe30 (diff) | |
download | libvpx-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.c | 10 | ||||
-rw-r--r-- | vp9/encoder/vp9_rdopt.c | 4 |
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); |