diff options
author | Marco <marpan@chromium.org> | 2015-06-22 15:20:28 -0700 |
---|---|---|
committer | Marco <marpan@chromium.org> | 2015-06-22 16:57:35 -0700 |
commit | fb2a89b1fb3726b9a761f04eac79c2d4c8d32eef (patch) | |
tree | 838d566db3d4af9448ad7c0be33bcfc1cda8fbab /vp9 | |
parent | c8b9658eccd0ff5538294196e675dd7690d7989f (diff) | |
download | libvpx-fb2a89b1fb3726b9a761f04eac79c2d4c8d32eef.tar libvpx-fb2a89b1fb3726b9a761f04eac79c2d4c8d32eef.tar.gz libvpx-fb2a89b1fb3726b9a761f04eac79c2d4c8d32eef.tar.bz2 libvpx-fb2a89b1fb3726b9a761f04eac79c2d4c8d32eef.zip |
Fixes for key frame coding at speed 5.
Keep the same transform cutoff and partition selection
for speed 5 as in speeds >=6 (non-rd speed settings).
Existing setting for key frame at speed 5 allowed transform size
up to 32x32 on key frames, and did not allow for 4x4 block partition size.
This created more visual artifacts on first few frames.
avgPSNR/overallPSNR/SSIM gains of 0.2/0.7/0.8 for rtc_derf(low-res) set,
and 0/0.7/1.1 gains for rtc set.
Change-Id: I8c139ec6c9bb74e14b4ffbad5f12e94f18a59c0b
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/encoder/vp9_encodeframe.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 7bccc8258..b4059752e 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -2885,8 +2885,7 @@ static TX_MODE select_tx_mode(const VP9_COMP *cpi, MACROBLOCKD *const xd) { if (xd->lossless) return ONLY_4X4; if (cpi->common.frame_type == KEY_FRAME && - cpi->sf.use_nonrd_pick_mode && - cpi->sf.partition_search_type == VAR_BASED_PARTITION) + cpi->sf.use_nonrd_pick_mode) return ALLOW_16X16; if (cpi->sf.tx_size_search_method == USE_LARGESTALL) return ALLOW_32X32; @@ -3583,8 +3582,15 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, INT64_MAX, td->pc_root); } else { choose_partitioning(cpi, tile_info, x, mi_row, mi_col); - nonrd_select_partition(cpi, td, tile_data, mi, tp, mi_row, mi_col, - BLOCK_64X64, 1, &dummy_rdc, td->pc_root); + // TODO(marpan): Seems like nonrd_select_partition does not support + // 4x4 partition. Since 4x4 is used on key frame, use this switch + // for now. + if (cm->frame_type == KEY_FRAME) + nonrd_use_partition(cpi, td, tile_data, mi, tp, mi_row, mi_col, + BLOCK_64X64, 1, &dummy_rdc, td->pc_root); + else + nonrd_select_partition(cpi, td, tile_data, mi, tp, mi_row, mi_col, + BLOCK_64X64, 1, &dummy_rdc, td->pc_root); } break; |