summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodeframe.c
diff options
context:
space:
mode:
authorJingning Han <jingning@google.com>2014-12-05 11:25:19 -0800
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2014-12-05 11:25:19 -0800
commit62c7356098d7495d8f345865b17456baf22d8173 (patch)
treefd823c10a9d1f0a1595ae0b2ab9fb730e97c4346 /vp9/encoder/vp9_encodeframe.c
parenta3a4a34c60b4ed8e1bccb39495d6f9524028c3a0 (diff)
parent07711e9b2733ef89bb6dd87f4008dc7aea39ba1d (diff)
downloadlibvpx-62c7356098d7495d8f345865b17456baf22d8173.tar
libvpx-62c7356098d7495d8f345865b17456baf22d8173.tar.gz
libvpx-62c7356098d7495d8f345865b17456baf22d8173.tar.bz2
libvpx-62c7356098d7495d8f345865b17456baf22d8173.zip
Merge "Use hybrid RD and non-RD coding flow for key frame coding"
Diffstat (limited to 'vp9/encoder/vp9_encodeframe.c')
-rw-r--r--vp9/encoder/vp9_encodeframe.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c
index f39d14788..8d2f14f2c 100644
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -2663,6 +2663,15 @@ static TX_MODE select_tx_mode(const VP9_COMP *cpi, MACROBLOCKD *const xd) {
return cpi->common.tx_mode;
}
+static void hybrid_intra_mode_search(VP9_COMP *cpi, MACROBLOCK *const x,
+ RD_COST *rd_cost, BLOCK_SIZE bsize,
+ PICK_MODE_CONTEXT *ctx) {
+ if (bsize < BLOCK_16X16)
+ vp9_rd_pick_intra_mode_sb(cpi, x, rd_cost, bsize, ctx, INT64_MAX);
+ else
+ vp9_pick_intra_mode(cpi, x, rd_cost, bsize, ctx);
+}
+
static void nonrd_pick_sb_modes(VP9_COMP *cpi,
TileDataEnc *tile_data, MACROBLOCK *const x,
int mi_row, int mi_col, RD_COST *rd_cost,
@@ -2680,7 +2689,7 @@ static void nonrd_pick_sb_modes(VP9_COMP *cpi,
x->rdmult = vp9_cyclic_refresh_get_rdmult(cpi->cyclic_refresh);
if (cm->frame_type == KEY_FRAME)
- vp9_pick_intra_mode(cpi, x, rd_cost, bsize, ctx);
+ hybrid_intra_mode_search(cpi, x, rd_cost, bsize, ctx);
else if (vp9_segfeature_active(&cm->seg, mbmi->segment_id, SEG_LVL_SKIP))
set_mode_info_seg_skip(x, cm->tx_mode, rd_cost, bsize);
else
@@ -3609,6 +3618,7 @@ static void encode_frame_internal(VP9_COMP *cpi) {
cm->tx_mode = ALLOW_16X16;
}
+
#if CONFIG_VP9_HIGHBITDEPTH
if (cm->use_highbitdepth)
x->fwd_txm4x4 = xd->lossless ? vp9_highbd_fwht4x4 : vp9_highbd_fdct4x4;