From bad6e169bf6159b2d231cf2a7d577d25c1ccde52 Mon Sep 17 00:00:00 2001 From: hui su Date: Wed, 25 May 2016 14:51:02 -0700 Subject: [PATCH] Add a quick path in build_intra_predictors For the cases where no reference data is available. Change-Id: Ibf1ac9b7073acc2c7fc44da893f3d608dc74bc1e --- vp10/common/reconintra.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/vp10/common/reconintra.c b/vp10/common/reconintra.c index fa20f2cc1..89ff13b3f 100644 --- a/vp10/common/reconintra.c +++ b/vp10/common/reconintra.c @@ -1198,6 +1198,20 @@ static void build_intra_predictors_high(const MACROBLOCKD *xd, #endif // CONFIG_EXT_INTRA (void) plane; + assert(n_top_px >= 0); + assert(n_topright_px >= 0); + assert(n_left_px >= 0); + assert(n_bottomleft_px >= 0); + + if ((!need_above && n_left_px == 0) || (!need_left && n_top_px == 0)) { + int i; + const int val = (n_left_px == 0) ? base + 1 : base - 1; + for (i = 0; i < bs; ++i) { + vpx_memset16(dst, val, bs); + dst += dst_stride; + } + return; + } // NEED_LEFT if (need_left) { @@ -1361,6 +1375,16 @@ static void build_intra_predictors(const MACROBLOCKD *xd, const uint8_t *ref, assert(n_left_px >= 0); assert(n_bottomleft_px >= 0); + if ((!need_above && n_left_px == 0) || (!need_left && n_top_px == 0)) { + int i; + const int val = (n_left_px == 0) ? 129 : 127; + for (i = 0; i < bs; ++i) { + memset(dst, val, bs); + dst += dst_stride; + } + return; + } + // NEED_LEFT if (need_left) { #if CONFIG_EXT_INTRA -- 2.49.0