diff options
author | Dmitry Kovalev <dkovalev@google.com> | 2014-03-28 13:32:37 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2014-03-28 13:32:37 -0700 |
commit | 9e46dcd2fc7f15a1ddeacb1e6d38d5b76ed273af (patch) | |
tree | 1e9004c8b9706409ca40a21b82a4a42894a078c7 | |
parent | 0a6d5547e28ec0e9f92dfdb231704f169b942b2f (diff) | |
parent | 03349d2ba227098cf2906026f0923556695807dd (diff) | |
download | libvpx-9e46dcd2fc7f15a1ddeacb1e6d38d5b76ed273af.tar libvpx-9e46dcd2fc7f15a1ddeacb1e6d38d5b76ed273af.tar.gz libvpx-9e46dcd2fc7f15a1ddeacb1e6d38d5b76ed273af.tar.bz2 libvpx-9e46dcd2fc7f15a1ddeacb1e6d38d5b76ed273af.zip |
Merge "Moving dqcoeff array to MACROBLOCKD in decoder."
-rw-r--r-- | vp9/common/vp9_blockd.h | 8 | ||||
-rw-r--r-- | vp9/decoder/vp9_decodeframe.c | 19 | ||||
-rw-r--r-- | vp9/decoder/vp9_decoder.c | 11 | ||||
-rw-r--r-- | vp9/decoder/vp9_decoder.h | 2 | ||||
-rw-r--r-- | vp9/decoder/vp9_dthread.h | 1 |
5 files changed, 12 insertions, 29 deletions
diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h index b3f2ec594..556be6aba 100644 --- a/vp9/common/vp9_blockd.h +++ b/vp9/common/vp9_blockd.h @@ -235,7 +235,8 @@ typedef struct macroblockd { int corrupted; - /* Y,U,V,(A) */ + DECLARE_ALIGNED(16, int16_t, dqcoeff[MAX_MB_PLANE][64 * 64]); + ENTROPY_CONTEXT *above_context[MAX_MB_PLANE]; ENTROPY_CONTEXT left_context[MAX_MB_PLANE][16]; @@ -243,7 +244,12 @@ typedef struct macroblockd { PARTITION_CONTEXT left_seg_context[8]; } MACROBLOCKD; +static INLINE void init_macroblockd(MACROBLOCKD *xd) { + int i; + for (i = 0; i < MAX_MB_PLANE; ++i) + xd->plane[i].dqcoeff = xd->dqcoeff[i]; +} static INLINE BLOCK_SIZE get_subsize(BLOCK_SIZE bsize, PARTITION_TYPE partition) { diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c index a2bd6541f..2f15bfb52 100644 --- a/vp9/decoder/vp9_decodeframe.c +++ b/vp9/decoder/vp9_decodeframe.c @@ -853,17 +853,6 @@ static const uint8_t *decode_tiles(VP9D_COMP *pbi, return end; } -static void setup_tile_macroblockd(TileWorkerData *const tile_data) { - MACROBLOCKD *xd = &tile_data->xd; - struct macroblockd_plane *const pd = xd->plane; - int i; - - for (i = 0; i < MAX_MB_PLANE; ++i) { - pd[i].dqcoeff = tile_data->dqcoeff[i]; - vpx_memset(xd->plane[i].dqcoeff, 0, 64 * 64 * sizeof(int16_t)); - } -} - static int tile_worker_hook(void *arg1, void *arg2) { TileWorkerData *const tile_data = (TileWorkerData*)arg1; const TileInfo *const tile = (TileInfo*)arg2; @@ -990,8 +979,10 @@ static const uint8_t *decode_tiles_mt(VP9D_COMP *pbi, setup_token_decoder(buf->data, data_end, buf->size, &cm->error, &tile_data->bit_reader); + setup_tile_context(cm, &tile_data->xd, 0, buf->col); - setup_tile_macroblockd(tile_data); + init_macroblockd(&tile_data->xd); + vp9_zero(tile_data->xd.dqcoeff); worker->had_error = 0; if (i == num_workers - 1 || n == tile_cols - 1) { @@ -1281,7 +1272,6 @@ static void debug_check_frame_counts(const VP9_COMMON *const cm) { int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t *data, const uint8_t *data_end, const uint8_t **p_data_end) { - int i; VP9_COMMON *const cm = &pbi->common; MACROBLOCKD *const xd = &pbi->mb; @@ -1330,8 +1320,7 @@ int vp9_decode_frame(VP9D_COMP *pbi, cm->fc = cm->frame_contexts[cm->frame_context_idx]; vp9_zero(cm->counts); - for (i = 0; i < MAX_MB_PLANE; ++i) - vpx_memset(xd->plane[i].dqcoeff, 0, 64 * 64 * sizeof(int16_t)); + vp9_zero(xd->dqcoeff); xd->corrupted = 0; new_fb->corrupted = read_compressed_header(pbi, data, first_partition_size); diff --git a/vp9/decoder/vp9_decoder.c b/vp9/decoder/vp9_decoder.c index c7c096e69..17b8c98c8 100644 --- a/vp9/decoder/vp9_decoder.c +++ b/vp9/decoder/vp9_decoder.c @@ -110,15 +110,6 @@ void vp9_initialize_dec() { } } -static void init_macroblockd(VP9D_COMP *const pbi) { - MACROBLOCKD *xd = &pbi->mb; - struct macroblockd_plane *const pd = xd->plane; - int i; - - for (i = 0; i < MAX_MB_PLANE; ++i) - pd[i].dqcoeff = pbi->dqcoeff[i]; -} - VP9D_COMP *vp9_create_decompressor(const VP9D_CONFIG *oxcf) { VP9D_COMP *const pbi = vpx_memalign(32, sizeof(VP9D_COMP)); VP9_COMMON *const cm = pbi ? &pbi->common : NULL; @@ -156,7 +147,7 @@ VP9D_COMP *vp9_create_decompressor(const VP9D_CONFIG *oxcf) { cm->error.setjmp = 0; pbi->decoded_key_frame = 0; - init_macroblockd(pbi); + init_macroblockd(&pbi->mb); vp9_worker_init(&pbi->lf_worker); diff --git a/vp9/decoder/vp9_decoder.h b/vp9/decoder/vp9_decoder.h index 2b1697047..f220ccd02 100644 --- a/vp9/decoder/vp9_decoder.h +++ b/vp9/decoder/vp9_decoder.h @@ -40,8 +40,6 @@ typedef struct VP9Decompressor { DECLARE_ALIGNED(16, VP9_COMMON, common); - DECLARE_ALIGNED(16, int16_t, dqcoeff[MAX_MB_PLANE][64 * 64]); - VP9D_CONFIG oxcf; int64_t last_time_stamp; diff --git a/vp9/decoder/vp9_dthread.h b/vp9/decoder/vp9_dthread.h index 6d4450fd2..2f65e1e30 100644 --- a/vp9/decoder/vp9_dthread.h +++ b/vp9/decoder/vp9_dthread.h @@ -24,7 +24,6 @@ typedef struct TileWorkerData { struct VP9Common *cm; vp9_reader bit_reader; DECLARE_ALIGNED(16, struct macroblockd, xd); - DECLARE_ALIGNED(16, int16_t, dqcoeff[MAX_MB_PLANE][64 * 64]); // Row-based parallel loopfilter data LFWorkerData lfdata; |