From e6add6499fccb1bfc3ea027e656f3fe111fe17bd Mon Sep 17 00:00:00 2001 From: James Zern Date: Mon, 15 Jun 2015 17:30:54 -0700 Subject: [PATCH] vp9_pred_common: inline vp9_get_segment_id + drop 'vp9_' prefix Change-Id: Id5a3c8d416dbdf93d9f4f1bde662f7b2c2290168 --- vp9/common/vp9_pred_common.c | 19 ------------------- vp9/common/vp9_pred_common.h | 20 ++++++++++++++++++-- vp9/decoder/vp9_decodemv.c | 2 +- vp9/encoder/vp9_encodeframe.c | 16 ++++++++-------- vp9/encoder/vp9_segmentation.c | 4 ++-- 5 files changed, 29 insertions(+), 32 deletions(-) diff --git a/vp9/common/vp9_pred_common.c b/vp9/common/vp9_pred_common.c index 0aac4a9e6..a24e95003 100644 --- a/vp9/common/vp9_pred_common.c +++ b/vp9/common/vp9_pred_common.c @@ -9,8 +9,6 @@ * be found in the AUTHORS file in the root of the source tree. */ -#include - #include "vp9/common/vp9_common.h" #include "vp9/common/vp9_pred_common.h" #include "vp9/common/vp9_seg_common.h" @@ -362,20 +360,3 @@ int vp9_get_tx_size_context(const MACROBLOCKD *xd) { return (above_ctx + left_ctx) > max_tx_size; } -int vp9_get_segment_id(const VP9_COMMON *cm, const uint8_t *segment_ids, - BLOCK_SIZE bsize, int mi_row, int mi_col) { - const int mi_offset = mi_row * cm->mi_cols + mi_col; - const int bw = num_8x8_blocks_wide_lookup[bsize]; - const int bh = num_8x8_blocks_high_lookup[bsize]; - const int xmis = MIN(cm->mi_cols - mi_col, bw); - const int ymis = MIN(cm->mi_rows - mi_row, bh); - int x, y, segment_id = INT_MAX; - - for (y = 0; y < ymis; y++) - for (x = 0; x < xmis; x++) - segment_id = MIN(segment_id, - segment_ids[mi_offset + y * cm->mi_cols + x]); - - assert(segment_id >= 0 && segment_id < MAX_SEGMENTS); - return segment_id; -} diff --git a/vp9/common/vp9_pred_common.h b/vp9/common/vp9_pred_common.h index bc19d28b9..7ea8c9da3 100644 --- a/vp9/common/vp9_pred_common.h +++ b/vp9/common/vp9_pred_common.h @@ -18,8 +18,24 @@ extern "C" { #endif -int vp9_get_segment_id(const VP9_COMMON *cm, const uint8_t *segment_ids, - BLOCK_SIZE bsize, int mi_row, int mi_col); +static INLINE int get_segment_id(const VP9_COMMON *cm, + const uint8_t *segment_ids, + BLOCK_SIZE bsize, int mi_row, int mi_col) { + const int mi_offset = mi_row * cm->mi_cols + mi_col; + const int bw = num_8x8_blocks_wide_lookup[bsize]; + const int bh = num_8x8_blocks_high_lookup[bsize]; + const int xmis = MIN(cm->mi_cols - mi_col, bw); + const int ymis = MIN(cm->mi_rows - mi_row, bh); + int x, y, segment_id = MAX_SEGMENTS; + + for (y = 0; y < ymis; ++y) + for (x = 0; x < xmis; ++x) + segment_id = MIN(segment_id, + segment_ids[mi_offset + y * cm->mi_cols + x]); + + assert(segment_id >= 0 && segment_id < MAX_SEGMENTS); + return segment_id; +} static INLINE int vp9_get_pred_context_seg_id(const MACROBLOCKD *xd) { const MODE_INFO *const above_mi = xd->above_mi; diff --git a/vp9/decoder/vp9_decodemv.c b/vp9/decoder/vp9_decodemv.c index d34926dc6..dcc4c6254 100644 --- a/vp9/decoder/vp9_decodemv.c +++ b/vp9/decoder/vp9_decodemv.c @@ -155,7 +155,7 @@ static int read_inter_segment_id(VP9_COMMON *const cm, MACROBLOCKD *const xd, return 0; // Default for disabled segmentation predicted_segment_id = cm->last_frame_seg_map ? - vp9_get_segment_id(cm, cm->last_frame_seg_map, bsize, mi_row, mi_col) : 0; + get_segment_id(cm, cm->last_frame_seg_map, bsize, mi_row, mi_col) : 0; if (!seg->update_map) { copy_segment_id(cm, cm->last_frame_seg_map, cm->current_frame_seg_map, diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 5299244d9..dddf7df40 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -221,7 +221,7 @@ static void set_offsets(VP9_COMP *cpi, const TileInfo *const tile, if (cpi->oxcf.aq_mode != VARIANCE_AQ) { const uint8_t *const map = seg->update_map ? cpi->segmentation_map : cm->last_frame_seg_map; - mbmi->segment_id = vp9_get_segment_id(cm, map, bsize, mi_row, mi_col); + mbmi->segment_id = get_segment_id(cm, map, bsize, mi_row, mi_col); } vp9_init_plane_quantizers(cpi, x); @@ -670,7 +670,7 @@ static int choose_partitioning(VP9_COMP *cpi, if (cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ && cm->seg.enabled) { const uint8_t *const map = cm->seg.update_map ? cpi->segmentation_map : cm->last_frame_seg_map; - segment_id = vp9_get_segment_id(cm, map, BLOCK_64X64, mi_row, mi_col); + segment_id = get_segment_id(cm, map, BLOCK_64X64, mi_row, mi_col); if (cyclic_refresh_segment_id_boosted(segment_id)) { int q = vp9_get_qindex(&cm->seg, segment_id, cm->base_qindex); @@ -993,7 +993,7 @@ static void update_state(VP9_COMP *cpi, ThreadData *td, const uint8_t *const map = seg->update_map ? cpi->segmentation_map : cm->last_frame_seg_map; mi_addr->mbmi.segment_id = - vp9_get_segment_id(cm, map, bsize, mi_row, mi_col); + get_segment_id(cm, map, bsize, mi_row, mi_col); } // Else for cyclic refresh mode update the segment map, set the segment id // and then update the quantizer. @@ -1228,7 +1228,7 @@ static void rd_pick_sb_modes(VP9_COMP *cpi, } else { const uint8_t *const map = cm->seg.update_map ? cpi->segmentation_map : cm->last_frame_seg_map; - mbmi->segment_id = vp9_get_segment_id(cm, map, bsize, mi_row, mi_col); + mbmi->segment_id = get_segment_id(cm, map, bsize, mi_row, mi_col); } x->rdmult = set_segment_rdmult(cpi, x, mbmi->segment_id); } else if (aq_mode == COMPLEXITY_AQ) { @@ -1238,7 +1238,7 @@ static void rd_pick_sb_modes(VP9_COMP *cpi, : cm->last_frame_seg_map; // If segment is boosted, use rdmult for that segment. if (cyclic_refresh_segment_id_boosted( - vp9_get_segment_id(cm, map, bsize, mi_row, mi_col))) + get_segment_id(cm, map, bsize, mi_row, mi_col))) x->rdmult = vp9_cyclic_refresh_get_rdmult(cpi->cyclic_refresh); } @@ -1687,7 +1687,7 @@ static void update_state_rt(VP9_COMP *cpi, ThreadData *td, cpi->oxcf.aq_mode == VARIANCE_AQ ) { const uint8_t *const map = seg->update_map ? cpi->segmentation_map : cm->last_frame_seg_map; - mbmi->segment_id = vp9_get_segment_id(cm, map, bsize, mi_row, mi_col); + mbmi->segment_id = get_segment_id(cm, map, bsize, mi_row, mi_col); } else { // Setting segmentation map for cyclic_refresh. vp9_cyclic_refresh_update_segment(cpi, mbmi, mi_row, mi_col, bsize, @@ -2848,7 +2848,7 @@ static void encode_rd_sb_row(VP9_COMP *cpi, if (seg->enabled) { const uint8_t *const map = seg->update_map ? cpi->segmentation_map : cm->last_frame_seg_map; - int segment_id = vp9_get_segment_id(cm, map, BLOCK_64X64, mi_row, mi_col); + int segment_id = get_segment_id(cm, map, BLOCK_64X64, mi_row, mi_col); seg_skip = segfeature_active(seg, segment_id, SEG_LVL_SKIP); } @@ -3598,7 +3598,7 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, if (seg->enabled) { const uint8_t *const map = seg->update_map ? cpi->segmentation_map : cm->last_frame_seg_map; - int segment_id = vp9_get_segment_id(cm, map, BLOCK_64X64, mi_row, mi_col); + int segment_id = get_segment_id(cm, map, BLOCK_64X64, mi_row, mi_col); seg_skip = segfeature_active(seg, segment_id, SEG_LVL_SKIP); if (seg_skip) { partition_search_type = FIXED_PARTITION; diff --git a/vp9/encoder/vp9_segmentation.c b/vp9/encoder/vp9_segmentation.c index 9b15072e9..1f0d4dfee 100644 --- a/vp9/encoder/vp9_segmentation.c +++ b/vp9/encoder/vp9_segmentation.c @@ -129,8 +129,8 @@ static void count_segs(const VP9_COMMON *cm, MACROBLOCKD *xd, if (cm->frame_type != KEY_FRAME) { const BLOCK_SIZE bsize = xd->mi[0]->mbmi.sb_type; // Test to see if the segment id matches the predicted value. - const int pred_segment_id = vp9_get_segment_id(cm, cm->last_frame_seg_map, - bsize, mi_row, mi_col); + const int pred_segment_id = get_segment_id(cm, cm->last_frame_seg_map, + bsize, mi_row, mi_col); const int pred_flag = pred_segment_id == segment_id; const int pred_context = vp9_get_pred_context_seg_id(xd);