summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodeframe.c
diff options
context:
space:
mode:
authorYaowu Xu <yaowu@google.com>2014-04-03 16:51:49 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2014-04-03 16:51:49 -0700
commit6ca6073b6d3474f4470a02aa041e9ecab5c83723 (patch)
tree5af8026ef17b8ce90d06fe628c9a3078853f9392 /vp9/encoder/vp9_encodeframe.c
parent30a15633f8bd3d2ce54bced94f0be83b07ab43ef (diff)
parent009ee2b737404c92bd2517dc6df4e2020ecb272a (diff)
downloadlibvpx-6ca6073b6d3474f4470a02aa041e9ecab5c83723.tar
libvpx-6ca6073b6d3474f4470a02aa041e9ecab5c83723.tar.gz
libvpx-6ca6073b6d3474f4470a02aa041e9ecab5c83723.tar.bz2
libvpx-6ca6073b6d3474f4470a02aa041e9ecab5c83723.zip
Merge "Fix complexity Aq mode."
Diffstat (limited to 'vp9/encoder/vp9_encodeframe.c')
-rw-r--r--vp9/encoder/vp9_encodeframe.c23
1 files changed, 16 insertions, 7 deletions
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;