1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 4*c83a76b0SSuyog Pawar * 5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License"); 6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License. 7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at: 8*c83a76b0SSuyog Pawar * 9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0 10*c83a76b0SSuyog Pawar * 11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software 12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS, 13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and 15*c83a76b0SSuyog Pawar * limitations under the License. 16*c83a76b0SSuyog Pawar * 17*c83a76b0SSuyog Pawar ******************************************************************************/ 18*c83a76b0SSuyog Pawar /** 19*c83a76b0SSuyog Pawar ******************************************************************************* 20*c83a76b0SSuyog Pawar * @file 21*c83a76b0SSuyog Pawar * ihevc_buf_mgr.h 22*c83a76b0SSuyog Pawar * 23*c83a76b0SSuyog Pawar * @brief 24*c83a76b0SSuyog Pawar * Function declarations used for buffer management 25*c83a76b0SSuyog Pawar * 26*c83a76b0SSuyog Pawar * @author 27*c83a76b0SSuyog Pawar * Srinivas T 28*c83a76b0SSuyog Pawar * 29*c83a76b0SSuyog Pawar * @remarks 30*c83a76b0SSuyog Pawar * None 31*c83a76b0SSuyog Pawar * 32*c83a76b0SSuyog Pawar ******************************************************************************* 33*c83a76b0SSuyog Pawar */ 34*c83a76b0SSuyog Pawar #ifndef _BUF_MGR_H_ 35*c83a76b0SSuyog Pawar #define _BUF_MGR_H_ 36*c83a76b0SSuyog Pawar 37*c83a76b0SSuyog Pawar #define BUF_MGR_MAX_CNT 64 38*c83a76b0SSuyog Pawar 39*c83a76b0SSuyog Pawar #define BUF_MGR_DEC 1 40*c83a76b0SSuyog Pawar #define BUF_MGR_REF (1 << 1) 41*c83a76b0SSuyog Pawar #define BUF_MGR_DISP (1 << 2) 42*c83a76b0SSuyog Pawar 43*c83a76b0SSuyog Pawar typedef struct 44*c83a76b0SSuyog Pawar { 45*c83a76b0SSuyog Pawar /** 46*c83a76b0SSuyog Pawar * max_buf_cnt 47*c83a76b0SSuyog Pawar */ 48*c83a76b0SSuyog Pawar UWORD32 u4_max_buf_cnt; 49*c83a76b0SSuyog Pawar 50*c83a76b0SSuyog Pawar /** 51*c83a76b0SSuyog Pawar * active_buf_cnt 52*c83a76b0SSuyog Pawar */ 53*c83a76b0SSuyog Pawar UWORD32 u4_active_buf_cnt; 54*c83a76b0SSuyog Pawar /** 55*c83a76b0SSuyog Pawar * au4_status[BUF_MGR_MAX_CNT] 56*c83a76b0SSuyog Pawar */ 57*c83a76b0SSuyog Pawar UWORD32 au4_status[BUF_MGR_MAX_CNT]; 58*c83a76b0SSuyog Pawar /* The last three bit of status are: */ 59*c83a76b0SSuyog Pawar /* Bit 0 - DEC */ 60*c83a76b0SSuyog Pawar /* Bit 1 - REF */ 61*c83a76b0SSuyog Pawar /* Bit 2 - DISP */ 62*c83a76b0SSuyog Pawar 63*c83a76b0SSuyog Pawar void *apv_ptr[BUF_MGR_MAX_CNT]; 64*c83a76b0SSuyog Pawar }buf_mgr_t; 65*c83a76b0SSuyog Pawar 66*c83a76b0SSuyog Pawar // intializes the buffer API structure 67*c83a76b0SSuyog Pawar void ihevc_buf_mgr_init( 68*c83a76b0SSuyog Pawar buf_mgr_t *ps_buf_mgr); 69*c83a76b0SSuyog Pawar 70*c83a76b0SSuyog Pawar // Add buffer to buffer manager. 0: success, -1: fail (u4_active_buf_cnt has reached u4_max_buf_cnt) 71*c83a76b0SSuyog Pawar WORD32 ihevc_buf_mgr_add( 72*c83a76b0SSuyog Pawar buf_mgr_t *ps_buf_mgr, 73*c83a76b0SSuyog Pawar void *pv_ptr, 74*c83a76b0SSuyog Pawar WORD32 buf_id); 75*c83a76b0SSuyog Pawar 76*c83a76b0SSuyog Pawar // this function will set the buffer status to DEC 77*c83a76b0SSuyog Pawar void* ihevc_buf_mgr_get_next_free( 78*c83a76b0SSuyog Pawar buf_mgr_t *ps_buf_mgr, 79*c83a76b0SSuyog Pawar WORD32 *pi4_id); 80*c83a76b0SSuyog Pawar 81*c83a76b0SSuyog Pawar // this function will check if there are any free buffers 82*c83a76b0SSuyog Pawar WORD32 ihevc_buf_mgr_check_free( 83*c83a76b0SSuyog Pawar buf_mgr_t *ps_buf_mgr); 84*c83a76b0SSuyog Pawar 85*c83a76b0SSuyog Pawar // mask will have who released it: DISP:REF:DEC 86*c83a76b0SSuyog Pawar WORD32 ihevc_buf_mgr_release( 87*c83a76b0SSuyog Pawar buf_mgr_t *ps_buf_mgr, 88*c83a76b0SSuyog Pawar WORD32 id, 89*c83a76b0SSuyog Pawar UWORD32 mask); 90*c83a76b0SSuyog Pawar 91*c83a76b0SSuyog Pawar // sets the status to one or all of DISP:REF:DEC 92*c83a76b0SSuyog Pawar WORD32 ihevc_buf_mgr_set_status( 93*c83a76b0SSuyog Pawar buf_mgr_t *ps_buf_mgr, 94*c83a76b0SSuyog Pawar WORD32 id, 95*c83a76b0SSuyog Pawar UWORD32 mask); 96*c83a76b0SSuyog Pawar 97*c83a76b0SSuyog Pawar // Gets status of the buffer 98*c83a76b0SSuyog Pawar UWORD32 ihevc_buf_mgr_get_status( 99*c83a76b0SSuyog Pawar buf_mgr_t *ps_buf_mgr, 100*c83a76b0SSuyog Pawar WORD32 id); 101*c83a76b0SSuyog Pawar 102*c83a76b0SSuyog Pawar // pass the ID - buffer will be returned 103*c83a76b0SSuyog Pawar void* ihevc_buf_mgr_get_buf( 104*c83a76b0SSuyog Pawar buf_mgr_t *ps_buf_mgr, 105*c83a76b0SSuyog Pawar WORD32 id); 106*c83a76b0SSuyog Pawar 107*c83a76b0SSuyog Pawar // will return number of active buffers 108*c83a76b0SSuyog Pawar UWORD32 ihevc_buf_mgr_get_num_active_buf( 109*c83a76b0SSuyog Pawar buf_mgr_t *ps_buf_mgr); 110*c83a76b0SSuyog Pawar 111*c83a76b0SSuyog Pawar 112*c83a76b0SSuyog Pawar 113*c83a76b0SSuyog Pawar #endif //_BUF_MGR_H_ 114