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:
@@ -1702,6 +1702,10 @@ static int64_t rd_pick_intra_sub_8x8_y_mode(VP10_COMP *cpi, MACROBLOCK *mb,
|
|||||||
mic->mbmi.intra_filter = INTRA_FILTER_LINEAR;
|
mic->mbmi.intra_filter = INTRA_FILTER_LINEAR;
|
||||||
#endif // CONFIG_EXT_INTRA
|
#endif // CONFIG_EXT_INTRA
|
||||||
|
|
||||||
|
// TODO(any): Add search of the tx_type to improve rd performance at the
|
||||||
|
// expense of speed.
|
||||||
|
mic->mbmi.tx_type = DCT_DCT;
|
||||||
|
|
||||||
// Pick modes for each sub-block (of size 4x4, 4x8, or 8x4) in an 8x8 block.
|
// 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 (idy = 0; idy < 2; idy += num_4x4_blocks_high) {
|
||||||
for (idx = 0; idx < 2; idx += num_4x4_blocks_wide) {
|
for (idx = 0; idx < 2; idx += num_4x4_blocks_wide) {
|
||||||
@@ -7365,6 +7369,10 @@ void vp10_rd_pick_inter_mode_sub8x8(struct VP10_COMP *cpi,
|
|||||||
for (i = 0; i < SWITCHABLE_FILTER_CONTEXTS; ++i)
|
for (i = 0; i < SWITCHABLE_FILTER_CONTEXTS; ++i)
|
||||||
filter_cache[i] = INT64_MAX;
|
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) {
|
if (cm->interp_filter != BILINEAR) {
|
||||||
tmp_best_filter = EIGHTTAP;
|
tmp_best_filter = EIGHTTAP;
|
||||||
if (x->source_variance < sf->disable_filter_search_var_thresh) {
|
if (x->source_variance < sf->disable_filter_search_var_thresh) {
|
||||||
|
Reference in New Issue
Block a user