Use small transform size in non-rd real-time mode
In non-rd real-time mode, choosing smaller transform size in encoding gives better video quality and good speed gain than choosing larger transform size. This patch set tx size search method to ALLOW_8X8, which is better than using 4x4 or other larger sizes. Borg tests on rtc set at speed 6 showed significant gain on quality. PSNR gain: 11.034% and SSIM gain: 15.466%. The speed gain is 5% - 12% for <720p clips, and 2% - 7% for 720p clips. Change-Id: If4dc74ed2df359346b059f47fb73b4a0193ec548
This commit is contained in:
		@@ -2418,6 +2418,8 @@ static TX_MODE select_tx_mode(const VP9_COMP *cpi) {
 | 
				
			|||||||
      return rd_opt->tx_select_threshes[frame_type][ALLOW_32X32] >
 | 
					      return rd_opt->tx_select_threshes[frame_type][ALLOW_32X32] >
 | 
				
			||||||
                 rd_opt->tx_select_threshes[frame_type][TX_MODE_SELECT] ?
 | 
					                 rd_opt->tx_select_threshes[frame_type][TX_MODE_SELECT] ?
 | 
				
			||||||
                     ALLOW_32X32 : TX_MODE_SELECT;
 | 
					                     ALLOW_32X32 : TX_MODE_SELECT;
 | 
				
			||||||
 | 
					    } else if (cpi->sf.tx_size_search_method == USE_TX_8X8) {
 | 
				
			||||||
 | 
					      return ALLOW_8X8;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      unsigned int total = 0;
 | 
					      unsigned int total = 0;
 | 
				
			||||||
      int i;
 | 
					      int i;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -269,6 +269,8 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf,
 | 
				
			|||||||
    sf->partition_search_type = SOURCE_VAR_BASED_PARTITION;
 | 
					    sf->partition_search_type = SOURCE_VAR_BASED_PARTITION;
 | 
				
			||||||
    sf->search_type_check_frequency = 50;
 | 
					    sf->search_type_check_frequency = 50;
 | 
				
			||||||
    sf->source_var_thresh = 360;
 | 
					    sf->source_var_thresh = 360;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sf->tx_size_search_method = USE_TX_8X8;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (speed >= 7) {
 | 
					  if (speed >= 7) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,7 +58,8 @@ typedef enum {
 | 
				
			|||||||
  USE_FULL_RD = 0,
 | 
					  USE_FULL_RD = 0,
 | 
				
			||||||
  USE_LARGESTINTRA,
 | 
					  USE_LARGESTINTRA,
 | 
				
			||||||
  USE_LARGESTINTRA_MODELINTER,
 | 
					  USE_LARGESTINTRA_MODELINTER,
 | 
				
			||||||
  USE_LARGESTALL
 | 
					  USE_LARGESTALL,
 | 
				
			||||||
 | 
					  USE_TX_8X8
 | 
				
			||||||
} TX_SIZE_SEARCH_METHOD;
 | 
					} TX_SIZE_SEARCH_METHOD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef enum {
 | 
					typedef enum {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user