mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-13 01:26:58 +00:00
[libvpx] Update to v1.8.1 from https://chromium.googlesource.com/webm/libvpx
This commit is contained in:
committed by
Andrey Volk
parent
34fcadbd53
commit
ceb051af4e
@@ -8,8 +8,8 @@
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#ifndef VP9_DECODER_VP9_DECODER_H_
|
||||
#define VP9_DECODER_VP9_DECODER_H_
|
||||
#ifndef VPX_VP9_DECODER_VP9_DECODER_H_
|
||||
#define VPX_VP9_DECODER_VP9_DECODER_H_
|
||||
|
||||
#include "./vpx_config.h"
|
||||
|
||||
@@ -21,11 +21,24 @@
|
||||
#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" {
|
||||
#endif
|
||||
|
||||
#define EOBS_PER_SB_LOG2 8
|
||||
#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;
|
||||
@@ -37,12 +50,46 @@ typedef struct TileWorkerData {
|
||||
int buf_start, buf_end; // pbi->tile_buffers to decode, inclusive
|
||||
vpx_reader bit_reader;
|
||||
FRAME_COUNTS counts;
|
||||
LFWorkerData *lf_data;
|
||||
VP9LfSync *lf_sync;
|
||||
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;
|
||||
|
||||
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;
|
||||
int num_jobs;
|
||||
#if CONFIG_MULTITHREAD
|
||||
pthread_mutex_t recon_done_mutex;
|
||||
pthread_mutex_t *recon_sync_mutex;
|
||||
pthread_cond_t *recon_sync_cond;
|
||||
#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);
|
||||
|
||||
@@ -72,10 +119,14 @@ typedef struct VP9Decoder {
|
||||
int inv_tile_order;
|
||||
int need_resync; // wait for key/intra-only frame.
|
||||
int hold_ref_buf; // hold the reference buffer.
|
||||
|
||||
int row_mt;
|
||||
int lpf_mt_opt;
|
||||
RowMTWorkerData *row_mt_worker_data;
|
||||
} VP9Decoder;
|
||||
|
||||
int vp9_receive_compressed_data(struct VP9Decoder *pbi, size_t size,
|
||||
const uint8_t **dest);
|
||||
const uint8_t **psource);
|
||||
|
||||
int vp9_get_raw_frame(struct VP9Decoder *pbi, YV12_BUFFER_CONFIG *sd,
|
||||
vp9_ppflags_t *flags);
|
||||
@@ -109,6 +160,11 @@ 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, int max_threads,
|
||||
int num_jobs);
|
||||
void vp9_dec_free_row_mt_mem(RowMTWorkerData *row_mt_worker_data);
|
||||
|
||||
static INLINE void decrease_ref_count(int idx, RefCntBuffer *const frame_bufs,
|
||||
BufferPool *const pool) {
|
||||
if (idx >= 0 && frame_bufs[idx].ref_count > 0) {
|
||||
@@ -129,4 +185,4 @@ static INLINE void decrease_ref_count(int idx, RefCntBuffer *const frame_bufs,
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // VP9_DECODER_VP9_DECODER_H_
|
||||
#endif // VPX_VP9_DECODER_VP9_DECODER_H_
|
||||
|
Reference in New Issue
Block a user