summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_onyx_if.c
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2013-10-28 12:45:11 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2013-10-28 12:45:11 -0700
commit3ffa41aae32bdf2372b144cc7a1e65a921501551 (patch)
tree0035758d36f93d31f6f3ab568af59de54e9b767f /vp9/encoder/vp9_onyx_if.c
parentded951793c5f13d62b608f4f964a4c5f1f633150 (diff)
parent7b9ca3caa78bd08fbc4dac8a05396be6c7240143 (diff)
downloadlibvpx-3ffa41aae32bdf2372b144cc7a1e65a921501551.tar
libvpx-3ffa41aae32bdf2372b144cc7a1e65a921501551.tar.gz
libvpx-3ffa41aae32bdf2372b144cc7a1e65a921501551.tar.bz2
libvpx-3ffa41aae32bdf2372b144cc7a1e65a921501551.zip
Merge changes If9b16f7d,I75aab21c,I9cbb768c,If5cea3d3,I96940657,I025595d8,Ie0bc3935,I3ebb172d
* changes: vp9: remove partition+entropy contexts from common vp9: add above/left_context to MACROBLOCKD vp9: add above/left_seg_context to MACROBLOCKD vp9: add above/left_context to encoder vp9: add above/left_seg_context to encoder vp9: pass entropy context directly to set_skip_context vp9: pass context directly to partition functions vp9/decode: add alloc_tile_storage()
Diffstat (limited to 'vp9/encoder/vp9_onyx_if.c')
-rw-r--r--vp9/encoder/vp9_onyx_if.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c
index 0be170fcd..ad214c709 100644
--- a/vp9/encoder/vp9_onyx_if.c
+++ b/vp9/encoder/vp9_onyx_if.c
@@ -312,6 +312,12 @@ static void dealloc_compressor_data(VP9_COMP *cpi) {
cpi->mb_activity_map = 0;
vpx_free(cpi->mb_norm_activity_map);
cpi->mb_norm_activity_map = 0;
+
+ vpx_free(cpi->above_context[0]);
+ cpi->above_context[0] = NULL;
+
+ vpx_free(cpi->above_seg_context);
+ cpi->above_seg_context = NULL;
}
// Computes a q delta (in "q index" terms) to get from a starting q value
@@ -1040,6 +1046,19 @@ void vp9_alloc_compressor_data(VP9_COMP *cpi) {
CHECK_MEM_ERROR(cm, cpi->mb_norm_activity_map,
vpx_calloc(sizeof(unsigned int),
cm->mb_rows * cm->mb_cols));
+
+ // 2 contexts per 'mi unit', so that we have one context per 4x4 txfm
+ // block where mi unit size is 8x8.
+ vpx_free(cpi->above_context[0]);
+ CHECK_MEM_ERROR(cm, cpi->above_context[0],
+ vpx_calloc(2 * mi_cols_aligned_to_sb(cm->mi_cols) *
+ MAX_MB_PLANE,
+ sizeof(*cpi->above_context[0])));
+
+ vpx_free(cpi->above_seg_context);
+ CHECK_MEM_ERROR(cm, cpi->above_seg_context,
+ vpx_calloc(mi_cols_aligned_to_sb(cm->mi_cols),
+ sizeof(*cpi->above_seg_context)));
}
@@ -1072,6 +1091,15 @@ static void update_frame_size(VP9_COMP *cpi) {
vp9_init_dsmotion_compensation(&cpi->mb, y_stride);
}
}
+
+ {
+ int i;
+ for (i = 1; i < MAX_MB_PLANE; ++i) {
+ cpi->above_context[i] = cpi->above_context[0] +
+ i * sizeof(*cpi->above_context[0]) * 2 *
+ mi_cols_aligned_to_sb(cm->mi_cols);
+ }
+ }
}