diff options
author | Ritu Baldwa <ritu.baldwa@ittiam.com> | 2019-01-02 11:58:34 +0530 |
---|---|---|
committer | Ritu Baldwa <ritu.baldwa@ittiam.com> | 2019-01-19 10:20:32 +0530 |
commit | 5818014b691c1dc20f3597bbcbf165782b54eacb (patch) | |
tree | d5bbe5ebaebde85b614a467777307260f6ef73a0 /vp9/decoder/vp9_decoder.h | |
parent | 06983668cf41f66765528db044419f954e5a5d64 (diff) | |
download | libvpx-5818014b691c1dc20f3597bbcbf165782b54eacb.tar libvpx-5818014b691c1dc20f3597bbcbf165782b54eacb.tar.gz libvpx-5818014b691c1dc20f3597bbcbf165782b54eacb.tar.bz2 libvpx-5818014b691c1dc20f3597bbcbf165782b54eacb.zip |
Revert "Revert "Add Tile-SB-Row based Multi-threading in Decoder""
This reverts commit 06983668cf41f66765528db044419f954e5a5d64.
Fixes Visual Studio build errors introduced by earlier row mt commit
BUG=webm:1587
Change-Id: I792df86e8254cd6b2a511955b691af619a569cd0
Diffstat (limited to 'vp9/decoder/vp9_decoder.h')
-rw-r--r-- | vp9/decoder/vp9_decoder.h | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/vp9/decoder/vp9_decoder.h b/vp9/decoder/vp9_decoder.h index 9a582fffb..ad39bc03d 100644 --- a/vp9/decoder/vp9_decoder.h +++ b/vp9/decoder/vp9_decoder.h @@ -21,6 +21,7 @@ #include "vp9/common/vp9_thread_common.h" #include "vp9/common/vp9_onyxc_int.h" #include "vp9/common/vp9_ppflags.h" +#include "./vp9_job_queue.h" #ifdef __cplusplus extern "C" { @@ -30,6 +31,14 @@ extern "C" { #define DQCOEFFS_PER_SB_LOG2 12 #define PARTITIONS_PER_SB 85 +typedef enum JobType { PARSE_JOB, RECON_JOB, LPF_JOB } JobType; + +typedef struct ThreadData { + struct VP9Decoder *pbi; + LFWorkerData *lf_data; + VP9LfSync *lf_sync; +} ThreadData; + typedef struct TileBuffer { const uint8_t *data; size_t size; @@ -49,14 +58,36 @@ typedef struct TileWorkerData { struct vpx_internal_error_info error_info; } TileWorkerData; +typedef void (*process_block_fn_t)(TileWorkerData *twd, + struct VP9Decoder *const pbi, int mi_row, + int mi_col, BLOCK_SIZE bsize, int bwl, + int bhl); + typedef struct RowMTWorkerData { int num_sbs; int *eob[MAX_MB_PLANE]; PARTITION_TYPE *partition; tran_low_t *dqcoeff[MAX_MB_PLANE]; int8_t *recon_map; + const uint8_t *data_end; + uint8_t *jobq_buf; + JobQueueRowMt jobq; + size_t jobq_size; + int num_tiles_done; +#if CONFIG_MULTITHREAD + pthread_mutex_t recon_mutex; + pthread_mutex_t map_mutex; +#endif + ThreadData *thread_data; } RowMTWorkerData; +/* Structure to queue and dequeue row decode jobs */ +typedef struct Job { + int row_num; + int tile_col; + JobType job_type; +} Job; + typedef struct VP9Decoder { DECLARE_ALIGNED(16, MACROBLOCKD, mb); @@ -128,7 +159,7 @@ struct VP9Decoder *vp9_decoder_create(BufferPool *const pool); void vp9_decoder_remove(struct VP9Decoder *pbi); void vp9_dec_alloc_row_mt_mem(RowMTWorkerData *row_mt_worker_data, - VP9_COMMON *cm, int num_sbs); + VP9_COMMON *cm, int num_sbs, int max_threads); void vp9_dec_free_row_mt_mem(RowMTWorkerData *row_mt_worker_data); static INLINE void decrease_ref_count(int idx, RefCntBuffer *const frame_bufs, |