summaryrefslogtreecommitdiff
path: root/vp9/decoder/vp9_decoder.h
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2015-09-25 20:43:04 -0700
committerJames Zern <jzern@google.com>2015-10-06 20:13:54 -0700
commit1f4a6c8a4e92addc5624a8b55dd9cf6a05797dcc (patch)
tree2fc0a672d70272221489910f761df0e9fecfa2c3 /vp9/decoder/vp9_decoder.h
parentfb209003a8b9f1c52b2512391a74004b898e749c (diff)
downloadlibvpx-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.h9
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;