1*fb1b10abSAndroid Build Coastguard Worker /* 2*fb1b10abSAndroid Build Coastguard Worker * Copyright (c) 2018 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker * 4*fb1b10abSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker */ 10*fb1b10abSAndroid Build Coastguard Worker 11*fb1b10abSAndroid Build Coastguard Worker #ifndef VPX_VP9_DECODER_VP9_JOB_QUEUE_H_ 12*fb1b10abSAndroid Build Coastguard Worker #define VPX_VP9_DECODER_VP9_JOB_QUEUE_H_ 13*fb1b10abSAndroid Build Coastguard Worker 14*fb1b10abSAndroid Build Coastguard Worker #include "vpx_util/vpx_pthread.h" 15*fb1b10abSAndroid Build Coastguard Worker 16*fb1b10abSAndroid Build Coastguard Worker typedef struct { 17*fb1b10abSAndroid Build Coastguard Worker // Pointer to buffer base which contains the jobs 18*fb1b10abSAndroid Build Coastguard Worker uint8_t *buf_base; 19*fb1b10abSAndroid Build Coastguard Worker 20*fb1b10abSAndroid Build Coastguard Worker // Pointer to current address where new job can be added 21*fb1b10abSAndroid Build Coastguard Worker uint8_t *volatile buf_wr; 22*fb1b10abSAndroid Build Coastguard Worker 23*fb1b10abSAndroid Build Coastguard Worker // Pointer to current address from where next job can be obtained 24*fb1b10abSAndroid Build Coastguard Worker uint8_t *volatile buf_rd; 25*fb1b10abSAndroid Build Coastguard Worker 26*fb1b10abSAndroid Build Coastguard Worker // Pointer to end of job buffer 27*fb1b10abSAndroid Build Coastguard Worker uint8_t *buf_end; 28*fb1b10abSAndroid Build Coastguard Worker 29*fb1b10abSAndroid Build Coastguard Worker int terminate; 30*fb1b10abSAndroid Build Coastguard Worker 31*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_MULTITHREAD 32*fb1b10abSAndroid Build Coastguard Worker pthread_mutex_t mutex; 33*fb1b10abSAndroid Build Coastguard Worker pthread_cond_t cond; 34*fb1b10abSAndroid Build Coastguard Worker #endif 35*fb1b10abSAndroid Build Coastguard Worker } JobQueueRowMt; 36*fb1b10abSAndroid Build Coastguard Worker 37*fb1b10abSAndroid Build Coastguard Worker void vp9_jobq_init(JobQueueRowMt *jobq, uint8_t *buf, size_t buf_size); 38*fb1b10abSAndroid Build Coastguard Worker void vp9_jobq_reset(JobQueueRowMt *jobq); 39*fb1b10abSAndroid Build Coastguard Worker void vp9_jobq_deinit(JobQueueRowMt *jobq); 40*fb1b10abSAndroid Build Coastguard Worker void vp9_jobq_terminate(JobQueueRowMt *jobq); 41*fb1b10abSAndroid Build Coastguard Worker int vp9_jobq_queue(JobQueueRowMt *jobq, void *job, size_t job_size); 42*fb1b10abSAndroid Build Coastguard Worker int vp9_jobq_dequeue(JobQueueRowMt *jobq, void *job, size_t job_size, 43*fb1b10abSAndroid Build Coastguard Worker int blocking); 44*fb1b10abSAndroid Build Coastguard Worker 45*fb1b10abSAndroid Build Coastguard Worker #endif // VPX_VP9_DECODER_VP9_JOB_QUEUE_H_ 46