diff options
author | James Zern <jzern@google.com> | 2015-09-25 20:43:04 -0700 |
---|---|---|
committer | James Zern <jzern@google.com> | 2015-10-06 20:13:54 -0700 |
commit | 1f4a6c8a4e92addc5624a8b55dd9cf6a05797dcc (patch) | |
tree | 2fc0a672d70272221489910f761df0e9fecfa2c3 /vp9/decoder/vp9_decoder.h | |
parent | fb209003a8b9f1c52b2512391a74004b898e749c (diff) | |
download | libvpx-1f4a6c8a4e92addc5624a8b55dd9cf6a05797dcc.tar libvpx-1f4a6c8a4e92addc5624a8b55dd9cf6a05797dcc.tar.gz libvpx-1f4a6c8a4e92addc5624a8b55dd9cf6a05797dcc.tar.bz2 libvpx-1f4a6c8a4e92addc5624a8b55dd9cf6a05797dcc.zip |
vp9/tile_worker_hook: add multiple tile decoding
this reduces the number of synchronizations in decode_tiles_mt() and
improves overall performance when the number of threads is less than the
number of tiles
Change-Id: Iaee6082673dc187ffe0e3d91a701d1e470c62924
Diffstat (limited to 'vp9/decoder/vp9_decoder.h')
-rw-r--r-- | vp9/decoder/vp9_decoder.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/vp9/decoder/vp9_decoder.h b/vp9/decoder/vp9_decoder.h index 944f7daa3..da30e157c 100644 --- a/vp9/decoder/vp9_decoder.h +++ b/vp9/decoder/vp9_decoder.h @@ -36,8 +36,16 @@ typedef struct TileData { DECLARE_ALIGNED(16, tran_low_t, dqcoeff[32 * 32]); } TileData; +typedef struct TileBuffer { + const uint8_t *data; + size_t size; + int col; // only used with multi-threaded decoding +} TileBuffer; + typedef struct TileWorkerData { struct VP9Decoder *pbi; + const uint8_t *data_end; + int buf_start, buf_end; // pbi->tile_buffers to decode, inclusive vpx_reader bit_reader; FRAME_COUNTS counts; DECLARE_ALIGNED(16, MACROBLOCKD, xd); @@ -65,6 +73,7 @@ typedef struct VP9Decoder { VPxWorker lf_worker; VPxWorker *tile_workers; TileWorkerData *tile_worker_data; + TileBuffer tile_buffers[64]; int num_tile_workers; TileData *tile_data; |