Merge "Cleaning up select_tx_mode() function."
This commit is contained in:
		@@ -2229,7 +2229,7 @@ static void reset_skip_txfm_size(VP9_COMMON *cm, TX_SIZE txfm_max) {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static MV_REFERENCE_FRAME get_frame_type(VP9_COMP *cpi) {
 | 
					static MV_REFERENCE_FRAME get_frame_type(const VP9_COMP *cpi) {
 | 
				
			||||||
  if (frame_is_intra_only(&cpi->common))
 | 
					  if (frame_is_intra_only(&cpi->common))
 | 
				
			||||||
    return INTRA_FRAME;
 | 
					    return INTRA_FRAME;
 | 
				
			||||||
  else if (cpi->rc.is_src_frame_alt_ref && cpi->refresh_golden_frame)
 | 
					  else if (cpi->rc.is_src_frame_alt_ref && cpi->refresh_golden_frame)
 | 
				
			||||||
@@ -2240,30 +2240,31 @@ static MV_REFERENCE_FRAME get_frame_type(VP9_COMP *cpi) {
 | 
				
			|||||||
    return GOLDEN_FRAME;
 | 
					    return GOLDEN_FRAME;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void select_tx_mode(VP9_COMP *cpi) {
 | 
					static TX_MODE select_tx_mode(const VP9_COMP *cpi) {
 | 
				
			||||||
  if (cpi->oxcf.lossless) {
 | 
					  if (cpi->oxcf.lossless) {
 | 
				
			||||||
    cpi->common.tx_mode = ONLY_4X4;
 | 
					    return ONLY_4X4;
 | 
				
			||||||
  } else if (cpi->common.current_video_frame == 0) {
 | 
					  } else if (cpi->common.current_video_frame == 0) {
 | 
				
			||||||
    cpi->common.tx_mode = TX_MODE_SELECT;
 | 
					    return TX_MODE_SELECT;
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    if (cpi->sf.tx_size_search_method == USE_LARGESTALL) {
 | 
					    if (cpi->sf.tx_size_search_method == USE_LARGESTALL) {
 | 
				
			||||||
      cpi->common.tx_mode = ALLOW_32X32;
 | 
					      return ALLOW_32X32;
 | 
				
			||||||
    } else if (cpi->sf.tx_size_search_method == USE_FULL_RD) {
 | 
					    } else if (cpi->sf.tx_size_search_method == USE_FULL_RD) {
 | 
				
			||||||
      int frame_type = get_frame_type(cpi);
 | 
					      const int frame_type = get_frame_type(cpi);
 | 
				
			||||||
      cpi->common.tx_mode =
 | 
					      return cpi->rd_tx_select_threshes[frame_type][ALLOW_32X32] >
 | 
				
			||||||
          cpi->rd_tx_select_threshes[frame_type][ALLOW_32X32]
 | 
					                 cpi->rd_tx_select_threshes[frame_type][TX_MODE_SELECT] ?
 | 
				
			||||||
          > cpi->rd_tx_select_threshes[frame_type][TX_MODE_SELECT] ?
 | 
					                     ALLOW_32X32 : TX_MODE_SELECT;
 | 
				
			||||||
          ALLOW_32X32 : TX_MODE_SELECT;
 | 
					 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      unsigned int total = 0;
 | 
					      unsigned int total = 0;
 | 
				
			||||||
      int i;
 | 
					      int i;
 | 
				
			||||||
      for (i = 0; i < TX_SIZES; ++i)
 | 
					      for (i = 0; i < TX_SIZES; ++i)
 | 
				
			||||||
        total += cpi->tx_stepdown_count[i];
 | 
					        total += cpi->tx_stepdown_count[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (total) {
 | 
					      if (total) {
 | 
				
			||||||
        double fraction = (double)cpi->tx_stepdown_count[0] / total;
 | 
					        const double fraction = (double)cpi->tx_stepdown_count[0] / total;
 | 
				
			||||||
        cpi->common.tx_mode = fraction > 0.90 ? ALLOW_32X32 : TX_MODE_SELECT;
 | 
					        return fraction > 0.90 ? ALLOW_32X32 : TX_MODE_SELECT;
 | 
				
			||||||
        // printf("fraction = %f\n", fraction);
 | 
					      } else {
 | 
				
			||||||
      }  // else keep unchanged
 | 
					        return cpi->common.tx_mode;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -2402,7 +2403,7 @@ static void encode_frame_internal(VP9_COMP *cpi) {
 | 
				
			|||||||
  vp9_zero(cm->counts.eob_branch);
 | 
					  vp9_zero(cm->counts.eob_branch);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Set frame level transform size use case
 | 
					  // Set frame level transform size use case
 | 
				
			||||||
  select_tx_mode(cpi);
 | 
					  cm->tx_mode = select_tx_mode(cpi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  cpi->mb.e_mbd.lossless = cm->base_qindex == 0 && cm->y_dc_delta_q == 0
 | 
					  cpi->mb.e_mbd.lossless = cm->base_qindex == 0 && cm->y_dc_delta_q == 0
 | 
				
			||||||
      && cm->uv_dc_delta_q == 0 && cm->uv_ac_delta_q == 0;
 | 
					      && cm->uv_dc_delta_q == 0 && cm->uv_ac_delta_q == 0;
 | 
				
			||||||
@@ -2570,7 +2571,6 @@ void vp9_encode_frame(VP9_COMP *cpi) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cpi->mb.e_mbd.lossless = cpi->oxcf.lossless;
 | 
					    cpi->mb.e_mbd.lossless = cpi->oxcf.lossless;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    cm->reference_mode = reference_mode;
 | 
					    cm->reference_mode = reference_mode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    encode_frame_internal(cpi);
 | 
					    encode_frame_internal(cpi);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user