diff options
author | Alex Converse <aconverse@google.com> | 2015-07-07 21:19:21 -0700 |
---|---|---|
committer | Alex Converse <aconverse@google.com> | 2015-07-08 12:37:55 -0700 |
commit | 89090d8046d950f73f42ae89b0caaecbe6c442ea (patch) | |
tree | dc241f871f4b6c6fb0b2d2817a65863f5fdbcb01 /vp9/decoder | |
parent | 892128f6cacde9bc088cfbcb2165eb9bb7431b83 (diff) | |
download | libvpx-89090d8046d950f73f42ae89b0caaecbe6c442ea.tar libvpx-89090d8046d950f73f42ae89b0caaecbe6c442ea.tar.gz libvpx-89090d8046d950f73f42ae89b0caaecbe6c442ea.tar.bz2 libvpx-89090d8046d950f73f42ae89b0caaecbe6c442ea.zip |
Don't allocate dqcoeff in MACROBLOCKD.
The encoder gets its dqcoeff from the context tree. In the decoder move
it to directly after MACROBLOCKD.
Change-Id: I46c9b76f26956a360d17de0b26ecb994dae34ecb
Diffstat (limited to 'vp9/decoder')
-rw-r--r-- | vp9/decoder/vp9_decodeframe.c | 6 | ||||
-rw-r--r-- | vp9/decoder/vp9_decoder.h | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c index 6c6454050..4cdfe8762 100644 --- a/vp9/decoder/vp9_decodeframe.c +++ b/vp9/decoder/vp9_decodeframe.c @@ -1324,11 +1324,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); } } @@ -1543,12 +1544,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; |