diff options
author | Alex Converse <aconverse@google.com> | 2015-07-08 20:42:34 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-07-08 20:42:36 +0000 |
commit | 8bf791e7ef59ed55252b9dc9e6b44f672147404d (patch) | |
tree | 47b526a147598f7b3b5b268024b1b3d422fed911 | |
parent | 66da7710408c3546afdf033253ea3961a6c33a66 (diff) | |
parent | 89090d8046d950f73f42ae89b0caaecbe6c442ea (diff) | |
download | libvpx-8bf791e7ef59ed55252b9dc9e6b44f672147404d.tar libvpx-8bf791e7ef59ed55252b9dc9e6b44f672147404d.tar.gz libvpx-8bf791e7ef59ed55252b9dc9e6b44f672147404d.tar.bz2 libvpx-8bf791e7ef59ed55252b9dc9e6b44f672147404d.zip |
Merge "Don't allocate dqcoeff in MACROBLOCKD."
-rw-r--r-- | vp9/common/vp9_blockd.h | 6 | ||||
-rw-r--r-- | vp9/common/vp9_onyxc_int.h | 5 | ||||
-rw-r--r-- | vp9/decoder/vp9_decodeframe.c | 6 | ||||
-rw-r--r-- | vp9/decoder/vp9_decoder.h | 4 | ||||
-rw-r--r-- | vp9/encoder/vp9_encoder.c | 2 |
5 files changed, 12 insertions, 11 deletions
diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h index fd8fe3f11..fbdbb4426 100644 --- a/vp9/common/vp9_blockd.h +++ b/vp9/common/vp9_blockd.h @@ -187,12 +187,6 @@ typedef struct macroblockd { int bd; #endif - /* dqcoeff are shared by all the planes. So planes must be decoded serially */ -#if CONFIG_VP9_ENCODER - DECLARE_ALIGNED(16, tran_low_t, dqcoeff[64 * 64]); -#else - DECLARE_ALIGNED(16, tran_low_t, dqcoeff[32 * 32]); -#endif int lossless; int corrupted; diff --git a/vp9/common/vp9_onyxc_int.h b/vp9/common/vp9_onyxc_int.h index 8f1240a6a..ca0dfc802 100644 --- a/vp9/common/vp9_onyxc_int.h +++ b/vp9/common/vp9_onyxc_int.h @@ -348,11 +348,12 @@ static INLINE void set_partition_probs(const VP9_COMMON *const cm, (const vp9_prob (*)[PARTITION_TYPES - 1])cm->fc->partition_prob; } -static INLINE void vp9_init_macroblockd(VP9_COMMON *cm, MACROBLOCKD *xd) { +static INLINE void vp9_init_macroblockd(VP9_COMMON *cm, MACROBLOCKD *xd, + tran_low_t *dqcoeff) { int i; for (i = 0; i < MAX_MB_PLANE; ++i) { - xd->plane[i].dqcoeff = xd->dqcoeff; + xd->plane[i].dqcoeff = dqcoeff; xd->above_context[i] = cm->above_context + i * sizeof(*cm->above_context) * 2 * mi_cols_aligned_to_sb(cm->mi_cols); diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c index 6d2a92b1e..142e865d3 100644 --- a/vp9/decoder/vp9_decodeframe.c +++ b/vp9/decoder/vp9_decodeframe.c @@ -1397,11 +1397,12 @@ static const uint8_t *decode_tiles(VP9Decoder *pbi, tile_data->xd.corrupted = 0; tile_data->xd.counts = cm->frame_parallel_decoding_mode ? NULL : &cm->counts; + vp9_zero(tile_data->dqcoeff); vp9_tile_init(&tile_data->xd.tile, tile_data->cm, tile_row, tile_col); setup_token_decoder(buf->data, data_end, buf->size, &cm->error, &tile_data->bit_reader, pbi->decrypt_cb, pbi->decrypt_state); - vp9_init_macroblockd(cm, &tile_data->xd); + vp9_init_macroblockd(cm, &tile_data->xd, tile_data->dqcoeff); } } @@ -1616,12 +1617,13 @@ static const uint8_t *decode_tiles_mt(VP9Decoder *pbi, tile_data->xd.corrupted = 0; tile_data->xd.counts = cm->frame_parallel_decoding_mode ? 0 : &tile_data->counts; + vp9_zero(tile_data->dqcoeff); vp9_tile_init(tile, cm, 0, buf->col); vp9_tile_init(&tile_data->xd.tile, cm, 0, buf->col); setup_token_decoder(buf->data, data_end, buf->size, &cm->error, &tile_data->bit_reader, pbi->decrypt_cb, pbi->decrypt_state); - vp9_init_macroblockd(cm, &tile_data->xd); + vp9_init_macroblockd(cm, &tile_data->xd, tile_data->dqcoeff); worker->had_error = 0; if (i == num_workers - 1 || n == tile_cols - 1) { diff --git a/vp9/decoder/vp9_decoder.h b/vp9/decoder/vp9_decoder.h index 76a874667..af47f8560 100644 --- a/vp9/decoder/vp9_decoder.h +++ b/vp9/decoder/vp9_decoder.h @@ -32,6 +32,8 @@ typedef struct TileData { VP9_COMMON *cm; vp9_reader bit_reader; DECLARE_ALIGNED(16, MACROBLOCKD, xd); + /* dqcoeff are shared by all the planes. So planes must be decoded serially */ + DECLARE_ALIGNED(16, tran_low_t, dqcoeff[32 * 32]); } TileData; typedef struct TileWorkerData { @@ -39,6 +41,8 @@ typedef struct TileWorkerData { vp9_reader bit_reader; FRAME_COUNTS counts; DECLARE_ALIGNED(16, MACROBLOCKD, xd); + /* dqcoeff are shared by all the planes. So planes must be decoded serially */ + DECLARE_ALIGNED(16, tran_low_t, dqcoeff[32 * 32]); struct vpx_internal_error_info error_info; } TileWorkerData; diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index f27f57a24..6c595b7d6 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -732,7 +732,7 @@ static void update_frame_size(VP9_COMP *cpi) { vp9_set_mb_mi(cm, cm->width, cm->height); vp9_init_context_buffers(cm); - vp9_init_macroblockd(cm, xd); + vp9_init_macroblockd(cm, xd, NULL); cpi->td.mb.mbmi_ext_base = cpi->mbmi_ext_base; memset(cpi->mbmi_ext_base, 0, cm->mi_rows * cm->mi_cols * sizeof(*cpi->mbmi_ext_base)); |