xref: /aosp_15_r20/external/libavc/common/ih264_list.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1*495ae853SAndroid Build Coastguard Worker /******************************************************************************
2*495ae853SAndroid Build Coastguard Worker  *
3*495ae853SAndroid Build Coastguard Worker  * Copyright (C) 2015 The Android Open Source Project
4*495ae853SAndroid Build Coastguard Worker  *
5*495ae853SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*495ae853SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*495ae853SAndroid Build Coastguard Worker  * You may obtain a copy of the License at:
8*495ae853SAndroid Build Coastguard Worker  *
9*495ae853SAndroid Build Coastguard Worker  * http://www.apache.org/licenses/LICENSE-2.0
10*495ae853SAndroid Build Coastguard Worker  *
11*495ae853SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*495ae853SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*495ae853SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*495ae853SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*495ae853SAndroid Build Coastguard Worker  * limitations under the License.
16*495ae853SAndroid Build Coastguard Worker  *
17*495ae853SAndroid Build Coastguard Worker  *****************************************************************************
18*495ae853SAndroid Build Coastguard Worker  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*495ae853SAndroid Build Coastguard Worker */
20*495ae853SAndroid Build Coastguard Worker 
21*495ae853SAndroid Build Coastguard Worker /**
22*495ae853SAndroid Build Coastguard Worker *******************************************************************************
23*495ae853SAndroid Build Coastguard Worker * @file
24*495ae853SAndroid Build Coastguard Worker *  ih264_list.h
25*495ae853SAndroid Build Coastguard Worker *
26*495ae853SAndroid Build Coastguard Worker * @brief
27*495ae853SAndroid Build Coastguard Worker *  Contains functions for buf queue
28*495ae853SAndroid Build Coastguard Worker *
29*495ae853SAndroid Build Coastguard Worker * @author
30*495ae853SAndroid Build Coastguard Worker *  ittiam
31*495ae853SAndroid Build Coastguard Worker *
32*495ae853SAndroid Build Coastguard Worker * @remarks
33*495ae853SAndroid Build Coastguard Worker *  none
34*495ae853SAndroid Build Coastguard Worker *
35*495ae853SAndroid Build Coastguard Worker *******************************************************************************
36*495ae853SAndroid Build Coastguard Worker */
37*495ae853SAndroid Build Coastguard Worker 
38*495ae853SAndroid Build Coastguard Worker #ifndef _IH264_LIST_H_
39*495ae853SAndroid Build Coastguard Worker #define _IH264_LIST_H_
40*495ae853SAndroid Build Coastguard Worker 
41*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
42*495ae853SAndroid Build Coastguard Worker /* Structure Definitions                                                     */
43*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
44*495ae853SAndroid Build Coastguard Worker typedef struct
45*495ae853SAndroid Build Coastguard Worker {
46*495ae853SAndroid Build Coastguard Worker     /** Pointer to buffer base which contains the bufs */
47*495ae853SAndroid Build Coastguard Worker     void *pv_buf_base;
48*495ae853SAndroid Build Coastguard Worker 
49*495ae853SAndroid Build Coastguard Worker     /** Mutex used to keep the functions thread-safe */
50*495ae853SAndroid Build Coastguard Worker     void *pv_mutex;
51*495ae853SAndroid Build Coastguard Worker 
52*495ae853SAndroid Build Coastguard Worker     /** Current write index */
53*495ae853SAndroid Build Coastguard Worker     volatile WORD32 i4_buf_wr_idx;
54*495ae853SAndroid Build Coastguard Worker 
55*495ae853SAndroid Build Coastguard Worker     /** Current read index */
56*495ae853SAndroid Build Coastguard Worker     volatile WORD32 i4_buf_rd_idx;
57*495ae853SAndroid Build Coastguard Worker 
58*495ae853SAndroid Build Coastguard Worker     /** Maximum index */
59*495ae853SAndroid Build Coastguard Worker     WORD32 i4_buf_max_idx;
60*495ae853SAndroid Build Coastguard Worker 
61*495ae853SAndroid Build Coastguard Worker     /** Log2(buf_max_idx) -
62*495ae853SAndroid Build Coastguard Worker      * To ensure number of entries is power of two
63*495ae853SAndroid Build Coastguard Worker      * This makes it easier to wrap around by using AND with buf_max_idx - 1
64*495ae853SAndroid Build Coastguard Worker      * */
65*495ae853SAndroid Build Coastguard Worker     WORD32 i4_log2_buf_max_idx;
66*495ae853SAndroid Build Coastguard Worker 
67*495ae853SAndroid Build Coastguard Worker     /** Flag to indicate list has to be terminated */
68*495ae853SAndroid Build Coastguard Worker     WORD32 i4_terminate;
69*495ae853SAndroid Build Coastguard Worker 
70*495ae853SAndroid Build Coastguard Worker     /** Size of each entry */
71*495ae853SAndroid Build Coastguard Worker     WORD32 i4_entry_size;
72*495ae853SAndroid Build Coastguard Worker 
73*495ae853SAndroid Build Coastguard Worker     /** If the list is to be used frequently send this as zero, else send a large value
74*495ae853SAndroid Build Coastguard Worker      * to ensure cores are not loaded unnecessarily.
75*495ae853SAndroid Build Coastguard Worker      * For eg: For picture level queues this can be a large value like 100us
76*495ae853SAndroid Build Coastguard Worker      * but for jobq this will be zero.
77*495ae853SAndroid Build Coastguard Worker      */
78*495ae853SAndroid Build Coastguard Worker     WORD32 i4_yield_interval_us;
79*495ae853SAndroid Build Coastguard Worker 
80*495ae853SAndroid Build Coastguard Worker }list_t;
81*495ae853SAndroid Build Coastguard Worker 
82*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
83*495ae853SAndroid Build Coastguard Worker /* Function Declarations                                                     */
84*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
85*495ae853SAndroid Build Coastguard Worker WORD32 ih264_list_size(WORD32 num_entries, WORD32 entry_size);
86*495ae853SAndroid Build Coastguard Worker 
87*495ae853SAndroid Build Coastguard Worker void* ih264_list_init(void *pv_buf, WORD32 buf_size, WORD32 num_entries,
88*495ae853SAndroid Build Coastguard Worker                       WORD32 entry_size, WORD32 yeild_interval_us);
89*495ae853SAndroid Build Coastguard Worker 
90*495ae853SAndroid Build Coastguard Worker IH264_ERROR_T ih264_list_free(list_t *ps_list);
91*495ae853SAndroid Build Coastguard Worker 
92*495ae853SAndroid Build Coastguard Worker IH264_ERROR_T ih264_list_reset(list_t *ps_list);
93*495ae853SAndroid Build Coastguard Worker 
94*495ae853SAndroid Build Coastguard Worker IH264_ERROR_T ih264_list_deinit(list_t *ps_list);
95*495ae853SAndroid Build Coastguard Worker 
96*495ae853SAndroid Build Coastguard Worker IH264_ERROR_T ih264_list_terminate(list_t *ps_list);
97*495ae853SAndroid Build Coastguard Worker 
98*495ae853SAndroid Build Coastguard Worker IH264_ERROR_T ih264_list_queue(list_t *ps_list, void *pv_buf, WORD32 blocking);
99*495ae853SAndroid Build Coastguard Worker 
100*495ae853SAndroid Build Coastguard Worker IH264_ERROR_T ih264_list_dequeue(list_t *ps_list, void *pv_buf,
101*495ae853SAndroid Build Coastguard Worker                                  WORD32 blocking);
102*495ae853SAndroid Build Coastguard Worker 
103*495ae853SAndroid Build Coastguard Worker #endif /* _IH264_LIST_H_ */
104