summaryrefslogtreecommitdiff
path: root/vp8/encoder/encodeintra.c
diff options
context:
space:
mode:
authorDaniel Kang <ddkang@google.com>2012-08-03 10:22:04 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2012-08-03 10:22:04 -0700
commite6de9c2e5ddfe36324fbbb4f57971245066a32cf (patch)
tree2b0823f1626d464a1dbcda1e958dd6a556889f57 /vp8/encoder/encodeintra.c
parent4aabfaa5d03501ff6887039425d578a08ab3a010 (diff)
parentfed8a1837fd6b1e4e36495be8210bd63bfb2bb8f (diff)
downloadlibvpx-e6de9c2e5ddfe36324fbbb4f57971245066a32cf.tar
libvpx-e6de9c2e5ddfe36324fbbb4f57971245066a32cf.tar.gz
libvpx-e6de9c2e5ddfe36324fbbb4f57971245066a32cf.tar.bz2
libvpx-e6de9c2e5ddfe36324fbbb4f57971245066a32cf.zip
Merge "16x16 DCT blocks." into experimental
Diffstat (limited to 'vp8/encoder/encodeintra.c')
-rw-r--r--vp8/encoder/encodeintra.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/vp8/encoder/encodeintra.c b/vp8/encoder/encodeintra.c
index 01ae03a23..325efeb6b 100644
--- a/vp8/encoder/encodeintra.c
+++ b/vp8/encoder/encodeintra.c
@@ -160,23 +160,43 @@ void vp8_encode_intra16x16mby(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) {
ENCODEMB_INVOKE(&rtcd->encodemb, submby)(x->src_diff, *(b->base_src), x->e_mbd.predictor, b->src_stride);
+#if CONFIG_TX16X16
+ if (tx_type == TX_16X16)
+ vp8_transform_intra_mby_16x16(x);
+ else
+#endif
if (tx_type == TX_8X8)
vp8_transform_intra_mby_8x8(x);
else
vp8_transform_intra_mby(x);
+#if CONFIG_TX16X16
+ if (tx_type == TX_16X16)
+ vp8_quantize_mby_16x16(x);
+ else
+#endif
if (tx_type == TX_8X8)
vp8_quantize_mby_8x8(x);
else
vp8_quantize_mby(x);
if (x->optimize) {
+#if CONFIG_TX16X16
+ if (tx_type == TX_16X16)
+ vp8_optimize_mby_16x16(x, rtcd);
+ else
+#endif
if (tx_type == TX_8X8)
vp8_optimize_mby_8x8(x, rtcd);
else
vp8_optimize_mby(x, rtcd);
}
+#if CONFIG_TX16X16
+ if (tx_type == TX_16X16)
+ vp8_inverse_transform_mby_16x16(IF_RTCD(&rtcd->common->idct), &x->e_mbd);
+ else
+#endif
if (tx_type == TX_8X8)
vp8_inverse_transform_mby_8x8(IF_RTCD(&rtcd->common->idct), &x->e_mbd);
else
@@ -220,6 +240,9 @@ void vp8_encode_intra16x16mby(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) {
void vp8_encode_intra16x16mbuv(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x) {
int tx_type = x->e_mbd.mode_info_context->mbmi.txfm_size;
+#if CONFIG_TX16X16
+ if (tx_type == TX_16X16) tx_type = TX_8X8; // 16x16 for U and V should default to 8x8 behavior.
+#endif
#if CONFIG_COMP_INTRA_PRED
if (x->e_mbd.mode_info_context->mbmi.second_uv_mode == (MB_PREDICTION_MODE)(DC_PRED - 1)) {
#endif