int eobtotal = 0;
MB_PREDICTION_MODE mode;
int i;
-
int tx_type;
- if( pbi->common.txfm_mode==ONLY_4X4 )
+
+ if(pbi->common.frame_type == KEY_FRAME)
{
- xd->mode_info_context->mbmi.txfm_size = TX_4X4;
+ if( pbi->common.txfm_mode==ALLOW_8X8 &&
+ (xd->mode_info_context->mbmi.mode == DC_PRED
+ ||xd->mode_info_context->mbmi.mode == TM_PRED))
+ xd->mode_info_context->mbmi.txfm_size = TX_8X8;
+ else
+ xd->mode_info_context->mbmi.txfm_size = TX_4X4;
}
- else if( pbi->common.txfm_mode == ALLOW_8X8 )
+ else
{
- if( xd->mode_info_context->mbmi.mode ==B_PRED
- ||xd->mode_info_context->mbmi.mode ==I8X8_PRED
- ||xd->mode_info_context->mbmi.mode ==SPLITMV)
+ if( pbi->common.txfm_mode==ONLY_4X4 )
+ {
xd->mode_info_context->mbmi.txfm_size = TX_4X4;
- else
- xd->mode_info_context->mbmi.txfm_size = TX_8X8;
+ }
+ else if( pbi->common.txfm_mode == ALLOW_8X8 )
+ {
+ if( xd->mode_info_context->mbmi.mode ==B_PRED
+ ||xd->mode_info_context->mbmi.mode ==I8X8_PRED
+ ||xd->mode_info_context->mbmi.mode ==SPLITMV)
+ xd->mode_info_context->mbmi.txfm_size = TX_4X4;
+ else
+ xd->mode_info_context->mbmi.txfm_size = TX_8X8;
+ }
}
-
tx_type = xd->mode_info_context->mbmi.txfm_size;
if (xd->mode_info_context->mbmi.mb_skip_coeff)
/* test code: set transform size based on mode selection */
if(cpi->common.txfm_mode == ALLOW_8X8
- && x->e_mbd.mode_info_context->mbmi.mode != I8X8_PRED
- && x->e_mbd.mode_info_context->mbmi.mode != B_PRED)
+ && ( x->e_mbd.mode_info_context->mbmi.mode == DC_PRED
+ || x->e_mbd.mode_info_context->mbmi.mode == TM_PRED))
{
x->e_mbd.mode_info_context->mbmi.txfm_size = TX_8X8;
cpi->t8x8_count++;
vpx_memset(cpi->common.fc.pre_mvc_hp, 0, sizeof(cpi->common.fc.pre_mvc_hp)); //initialize pre_mvc to all zero.
#endif
-
cpi->common.txfm_mode = ONLY_4X4;
+ if( cpi->common.Width * cpi->common.Height > 640*360
+ && vp8_ac_yquant(cpi->common.base_qindex) > 171)
+ cpi->common.txfm_mode = ALLOW_8X8;
+ else
+ cpi->common.txfm_mode = ONLY_4X4;
+
+
//cpi->common.filter_level = 0; // Reset every key frame.
cpi->common.filter_level = cpi->common.base_qindex * 3 / 8 ;
{
if(cpi->common.Width * cpi->common.Height > 640*360)
- //||cpi->this_frame_target < 7 * cpi->common.MBs)
cpi->common.txfm_mode = ALLOW_8X8;
else
cpi->common.txfm_mode = ONLY_4X4;