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