ref: f28ea3e830a2447bc9a3813c302f36594d1376d3
parent: 2a3f9947233529129cb24c43ab9fcb00b2be8a87
author: Debargha Mukherjee <debargha@google.com>
date: Mon Feb 8 10:59:17 EST 2016
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
--- a/vp10/encoder/rdopt.c
+++ b/vp10/encoder/rdopt.c
@@ -1073,6 +1073,12 @@
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) {
@@ -3939,6 +3945,10 @@
rd_opt->threshes[segment_id][bsize][THR_GOLD] : this_rd_thresh;
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;
--
⑨