if (!is_inter && x->use_default_intra_tx_type &&
tx_type != get_default_tx_type(0, xd, 0, n))
continue;
+ if (is_inter && x->use_default_inter_tx_type &&
+ tx_type != get_default_tx_type(0, xd, 0, n))
+ continue;
if (max_tx_size == TX_32X32 && n == TX_4X4)
continue;
#if CONFIG_EXT_TX
!xd->lossless[mbmi->segment_id]) {
for (tx_type = 0; tx_type < TX_TYPES; ++tx_type) {
if (is_inter) {
+ if (x->use_default_inter_tx_type &&
+ tx_type != get_default_tx_type(0, xd, 0, mbmi->tx_size))
+ continue;
if (!ext_tx_used_inter[ext_tx_set][tx_type])
continue;
if (cpi->sf.tx_type_search.prune_mode > NO_PRUNE) {
if (!is_inter && x->use_default_intra_tx_type &&
tx_type != get_default_tx_type(0, xd, 0, mbmi->tx_size))
continue;
+ if (is_inter && x->use_default_inter_tx_type &&
+ tx_type != get_default_tx_type(0, xd, 0, mbmi->tx_size))
+ continue;
mbmi->tx_type = tx_type;
txfm_rd_in_plane(x,
cpi,
x->use_default_intra_tx_type = 1;
else
x->use_default_intra_tx_type = 0;
+ if (cpi->sf.tx_type_search.fast_inter_tx_type_search)
+ x->use_default_inter_tx_type = 1;
+ else
+ x->use_default_inter_tx_type = 0;
for (midx = 0; midx <= FINAL_MODE_SEARCH; ++midx) {
int mode_index;
#endif
if (midx == FINAL_MODE_SEARCH) {
- if (!is_inter_mode(best_mbmode.mode) && best_mode_index >= 0 &&
+ if (best_mode_index < 0)
+ break;
+ mode_index = best_mode_index;
+ if (!is_inter_mode(best_mbmode.mode) &&
x->use_default_intra_tx_type == 1) {
- mode_index = best_mode_index;
x->use_default_intra_tx_type = 0;
+ } else if (is_inter_mode(best_mbmode.mode) &&
+ x->use_default_inter_tx_type == 1) {
+ x->use_default_inter_tx_type = 0;
} else {
break;
}
sf->partition_search_breakout_rate_thr = 80;
sf->tx_type_search.prune_mode = PRUNE_ONE;
sf->tx_type_search.fast_intra_tx_type_search = 1;
+ sf->tx_type_search.fast_inter_tx_type_search = 1;
// Use transform domain distortion.
// Note var-tx expt always uses pixel domain distortion.
sf->use_transform_domain_distortion = 1;
sf->partition_search_type = SEARCH_PARTITION;
sf->tx_type_search.prune_mode = NO_PRUNE;
sf->tx_type_search.fast_intra_tx_type_search = 0;
+ sf->tx_type_search.fast_inter_tx_type_search = 0;
sf->less_rectangular_check = 0;
sf->use_square_partition_only = 0;
sf->auto_min_max_partition_size = NOT_IN_USE;