Explicitly set tx_type for sub8x8 blocks
Fixes an issue where the tx_type was not set correctly for sub8x8 inter and intra blocks. In the current syntax, for sub8x8 blocks, there is still a single tx_type that is transmitted. Ideally, this should be searched for the best rd performance, albeit at the expense of encode speed. For now, we just set it to DCT_DCT. Previously it was left incorrectly as what was used for the previous non sub8x8 block. derflr: BDRATE -0.277% Change-Id: If76ba903bfbfd4d374cf1ac7d1daee50e92f0edd
This commit is contained in:
Родитель
2a3f994723
Коммит
f28ea3e830
|
@ -1073,6 +1073,12 @@ static int64_t rd_pick_intra_sub_8x8_y_mode(VP10_COMP *cpi, MACROBLOCK *mb,
|
|||
memcpy(t_above, xd->plane[0].above_context, sizeof(t_above));
|
||||
memcpy(t_left, xd->plane[0].left_context, sizeof(t_left));
|
||||
|
||||
// TODO(any): Add search of the tx_type to improve rd performance at the
|
||||
// expense of speed.
|
||||
mic->mbmi.tx_type = DCT_DCT;
|
||||
|
||||
// Later we can add search of the tx_type to improve results.
|
||||
// For now just set it to DCT_DCT
|
||||
// Pick modes for each sub-block (of size 4x4, 4x8, or 8x4) in an 8x8 block.
|
||||
for (idy = 0; idy < 2; idy += num_4x4_blocks_high) {
|
||||
for (idx = 0; idx < 2; idx += num_4x4_blocks_wide) {
|
||||
|
@ -3940,6 +3946,10 @@ void vp10_rd_pick_inter_mode_sub8x8(VP10_COMP *cpi,
|
|||
for (i = 0; i < SWITCHABLE_FILTER_CONTEXTS; ++i)
|
||||
filter_cache[i] = INT64_MAX;
|
||||
|
||||
// TODO(any): Add search of the tx_type to improve rd performance at the
|
||||
// expense of speed.
|
||||
mbmi->tx_type = DCT_DCT;
|
||||
|
||||
if (cm->interp_filter != BILINEAR) {
|
||||
tmp_best_filter = EIGHTTAP;
|
||||
if (x->source_variance < sf->disable_filter_search_var_thresh) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче