From 009ee2b737404c92bd2517dc6df4e2020ecb272a Mon Sep 17 00:00:00 2001 From: Paul Wilkins Date: Thu, 3 Apr 2014 14:34:43 +0100 Subject: Fix complexity Aq mode. This was broken by change Icc4b66f3935fad5ec4516a4d57e843d12c365e64 Change-Id: I49e3fc525664eb7a433f55f76b8f8628fe251eab --- vp9/encoder/vp9_encodeframe.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'vp9/encoder/vp9_encodeframe.c') diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 42e1ac88f..0d064848d 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -856,13 +856,22 @@ static void update_state(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx, *mi_addr = *mi; - // For in frame adaptive Q, check for reseting the segment_id and updating - // the cyclic refresh map. - if ((cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ) && seg->enabled && - output_enabled) { - vp9_cyclic_refresh_update_segment(cpi, &xd->mi[0]->mbmi, - mi_row, mi_col, bsize, 1); - vp9_init_plane_quantizers(cpi, x); + // If segmentation in use + if (seg->enabled && output_enabled) { + // For in frame complexity AQ copy the segment id from the segment map. + if (cpi->oxcf.aq_mode == COMPLEXITY_AQ) { + 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); + } + // Else for cyclic refresh mode update the segment map, set the segment id + // and then update the quantizer. + else if (cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ) { + vp9_cyclic_refresh_update_segment(cpi, &xd->mi[0]->mbmi, + mi_row, mi_col, bsize, 1); + vp9_init_plane_quantizers(cpi, x); + } } max_plane = is_inter_block(mbmi) ? MAX_MB_PLANE : 1; -- cgit v1.2.3