summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vp8/common/blockd.h3
-rw-r--r--vp8/decoder/decodframe.c5
-rw-r--r--vp8/encoder/encodeintra.c2
-rw-r--r--vp8/encoder/encodemb.c1
-rw-r--r--vp8/encoder/onyx_if.c29
-rw-r--r--vp8/encoder/tokenize.c2
6 files changed, 29 insertions, 13 deletions
diff --git a/vp8/common/blockd.h b/vp8/common/blockd.h
index cef66f02e..d51e881b4 100644
--- a/vp8/common/blockd.h
+++ b/vp8/common/blockd.h
@@ -180,6 +180,9 @@ typedef struct
{
MB_PREDICTION_MODE mode, uv_mode;
MV_REFERENCE_FRAME ref_frame;
+#if CONFIG_T8X8
+ TX_SIZE txfm_size;
+#endif
int_mv mv;
unsigned char partitioning;
unsigned char mb_skip_coeff; /* does this mb has coefficients at all, 1=no coefficients, 0=need decode tokens */
diff --git a/vp8/decoder/decodframe.c b/vp8/decoder/decodframe.c
index 3d2ba2da9..a3421ef89 100644
--- a/vp8/decoder/decodframe.c
+++ b/vp8/decoder/decodframe.c
@@ -210,10 +210,11 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
int i;
#if CONFIG_T8X8
- int tx_type = get_seg_tx_type(xd, xd->mode_info_context->mbmi.segment_id);
+ int tx_type = get_seg_tx_type( xd,
+ xd->mode_info_context->mbmi.segment_id);
+ xd->mode_info_context->mbmi.txfm_size = tx_type;
#endif
-
if (xd->mode_info_context->mbmi.mb_skip_coeff)
{
vp8_reset_mb_tokens_context(xd);
diff --git a/vp8/encoder/encodeintra.c b/vp8/encoder/encodeintra.c
index ee1e87847..3c0456092 100644
--- a/vp8/encoder/encodeintra.c
+++ b/vp8/encoder/encodeintra.c
@@ -100,6 +100,7 @@ void vp8_encode_intra16x16mby(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x)
#if CONFIG_T8X8
int tx_type = get_seg_tx_type(&x->e_mbd,
x->e_mbd.mode_info_context->mbmi.segment_id);
+ x->e_mbd.mode_info_context->mbmi.txfm_size = tx_type;
#endif
RECON_INVOKE(&rtcd->common->recon, build_intra_predictors_mby)(&x->e_mbd);
@@ -178,6 +179,7 @@ void vp8_encode_intra16x16mbuv(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x)
#if CONFIG_T8X8
int tx_type = get_seg_tx_type(&x->e_mbd,
x->e_mbd.mode_info_context->mbmi.segment_id);
+ x->e_mbd.mode_info_context->mbmi.txfm_size = tx_type;
#endif
RECON_INVOKE(&rtcd->common->recon, build_intra_predictors_mbuv)(&x->e_mbd);
diff --git a/vp8/encoder/encodemb.c b/vp8/encoder/encodemb.c
index da727eb56..483ec768f 100644
--- a/vp8/encoder/encodemb.c
+++ b/vp8/encoder/encodemb.c
@@ -1277,6 +1277,7 @@ void vp8_encode_inter16x16(const VP8_ENCODER_RTCD *rtcd, MACROBLOCK *x)
#if CONFIG_T8X8
int tx_type = get_seg_tx_type(&x->e_mbd,
x->e_mbd.mode_info_context->mbmi.segment_id);
+ x->e_mbd.mode_info_context->mbmi.txfm_size = tx_type;
#endif
vp8_build_inter_predictors_mb(&x->e_mbd);
diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c
index 799a656eb..c9d91aeaf 100644
--- a/vp8/encoder/onyx_if.c
+++ b/vp8/encoder/onyx_if.c
@@ -476,18 +476,8 @@ static void init_seg_features(VP8_COMP *cpi)
// Where relevant assume segment data is delta data
xd->mb_segement_abs_delta = SEGMENT_DELTADATA;
-#if CONFIG_T8X8
- // 8x8TX test code.
- // This assignment does not necessarily make sense but is
- // just to test the mechanism for now.
- enable_segfeature(xd, 0, SEG_LVL_TRANSFORM);
- set_segdata( xd, 0, SEG_LVL_TRANSFORM, TX_4X4 );
- enable_segfeature(xd, 1, SEG_LVL_TRANSFORM);
- set_segdata( xd, 1, SEG_LVL_TRANSFORM, TX_8X8 );
-#endif
}
}
-
// All other frames if segmentation has been enabled
else if ( xd->segmentation_enabled )
{
@@ -586,6 +576,25 @@ static void init_seg_features(VP8_COMP *cpi)
// No updeates.. leave things as they are.
xd->update_mb_segmentation_map = 0;
xd->update_mb_segmentation_data = 0;
+
+#if CONFIG_T8X8
+ {
+ vp8_disable_segmentation((VP8_PTR)cpi);
+ clearall_segfeatures(xd);
+ vp8_enable_segmentation((VP8_PTR)cpi);
+ // 8x8TX test code.
+ // This assignment does not necessarily make sense but is
+ // just to test the mechanism for now.
+ enable_segfeature(xd, 0, SEG_LVL_TRANSFORM);
+ set_segdata( xd, 0, SEG_LVL_TRANSFORM, TX_4X4 );
+ enable_segfeature(xd, 1, SEG_LVL_TRANSFORM);
+ set_segdata( xd, 1, SEG_LVL_TRANSFORM, TX_8X8 );
+ /* force every mb to use 8x8 transform for testing*/
+ vpx_memset(cpi->segmentation_map, 1,
+ cpi->common.mb_rows * cpi->common.mb_cols);
+
+ }
+#endif
}
}
}
diff --git a/vp8/encoder/tokenize.c b/vp8/encoder/tokenize.c
index e01093ef7..304bb4f98 100644
--- a/vp8/encoder/tokenize.c
+++ b/vp8/encoder/tokenize.c
@@ -457,7 +457,7 @@ static int mb_is_skippable_8x8(MACROBLOCKD *x)
int has_y2_block;
int skip = 1;
int i = 0;
-
+
has_y2_block = (x->mode_info_context->mbmi.mode != B_PRED
&& x->mode_info_context->mbmi.mode != SPLITMV);
if (has_y2_block)