Commit 38e6dd71 authored by hui su's avatar hui su

Add a speed feature for intra tx type search

Add a speed feature to seperate prediction mode and tx type search
for intra modes: search for best intra prediction mode with fixed
default tx type first, then choose the best tx type for the
selected mode.

Coding performance drop:
baseline
  lowres 0.10% midres 0.08% hdres 0.14%
with ext-tx
  lowres 0.14% midres 0.25% hdres 0.20%

Speed improvement is 20% for baseline and 17% for ext-tx.

It is turned on for speed >= 1.

Change-Id: Ia5e8d39e8a4e2e42c521bfde938f8b6a98ab24f9
parent e89ca180
......@@ -180,6 +180,9 @@ struct macroblock {
// Strong color activity detection. Used in RTC coding mode to enhance
// the visual quality at the boundary of moving color objects.
uint8_t color_sensitivity[2];
// use default transform and skip transform type search for intra modes
int use_default_intra_tx_type;
};
#ifdef __cplusplus
......
This diff is collapsed.
......@@ -159,7 +159,8 @@ static void set_good_speed_feature(VP10_COMP *cpi, VP10_COMMON *cm,
sf->tx_size_search_breakout = 1;
sf->partition_search_breakout_rate_thr = 80;
sf->tx_type_search = PRUNE_ONE;
sf->tx_type_search.prune_mode = PRUNE_ONE;
sf->tx_type_search.fast_intra_tx_type_search = 1;
// Use transform domain distortion.
// Note var-tx expt always uses pixel domain distortion.
sf->use_transform_domain_distortion = 1;
......@@ -183,7 +184,7 @@ static void set_good_speed_feature(VP10_COMP *cpi, VP10_COMMON *cm,
sf->allow_partition_search_skip = 1;
sf->use_upsampled_references = 0;
#if CONFIG_EXT_TX
sf->tx_type_search = PRUNE_TWO;
sf->tx_type_search.prune_mode = PRUNE_TWO;
#endif
}
......@@ -496,7 +497,8 @@ void vp10_set_speed_features_framesize_independent(VP10_COMP *cpi) {
sf->alt_ref_search_fp = 0;
sf->use_quant_fp = 0;
sf->partition_search_type = SEARCH_PARTITION;
sf->tx_type_search = NO_PRUNE;
sf->tx_type_search.prune_mode = NO_PRUNE;
sf->tx_type_search.fast_intra_tx_type_search = 0;
sf->less_rectangular_check = 0;
sf->use_square_partition_only = 0;
sf->auto_min_max_partition_size = NOT_IN_USE;
......
......@@ -190,6 +190,11 @@ typedef enum {
// eliminates two tx types in each direction
PRUNE_TWO = 2,
#endif
} TX_TYPE_PRUNE_MODE;
typedef struct {
TX_TYPE_PRUNE_MODE prune_mode;
int fast_intra_tx_type_search;
} TX_TYPE_SEARCH;
typedef enum {
......@@ -310,6 +315,7 @@ typedef struct SPEED_FEATURES {
PARTITION_SEARCH_TYPE partition_search_type;
TX_TYPE_SEARCH tx_type_search;
// Used if partition_search_type = FIXED_SIZE_PARTITION
BLOCK_SIZE always_this_block_size;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment