1*a97c2a1fSXin Li /******************************************************************************
2*a97c2a1fSXin Li *
3*a97c2a1fSXin Li * Copyright (C) 2015 The Android Open Source Project
4*a97c2a1fSXin Li *
5*a97c2a1fSXin Li * Licensed under the Apache License, Version 2.0 (the "License");
6*a97c2a1fSXin Li * you may not use this file except in compliance with the License.
7*a97c2a1fSXin Li * You may obtain a copy of the License at:
8*a97c2a1fSXin Li *
9*a97c2a1fSXin Li * http://www.apache.org/licenses/LICENSE-2.0
10*a97c2a1fSXin Li *
11*a97c2a1fSXin Li * Unless required by applicable law or agreed to in writing, software
12*a97c2a1fSXin Li * distributed under the License is distributed on an "AS IS" BASIS,
13*a97c2a1fSXin Li * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*a97c2a1fSXin Li * See the License for the specific language governing permissions and
15*a97c2a1fSXin Li * limitations under the License.
16*a97c2a1fSXin Li *
17*a97c2a1fSXin Li *****************************************************************************
18*a97c2a1fSXin Li * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*a97c2a1fSXin Li */
20*a97c2a1fSXin Li
21*a97c2a1fSXin Li /**
22*a97c2a1fSXin Li *******************************************************************************
23*a97c2a1fSXin Li * @file
24*a97c2a1fSXin Li * impeg2_buf_mgr.c
25*a97c2a1fSXin Li *
26*a97c2a1fSXin Li * @brief
27*a97c2a1fSXin Li * Contains function definitions for buffer management
28*a97c2a1fSXin Li *
29*a97c2a1fSXin Li * @author
30*a97c2a1fSXin Li * Srinivas T
31*a97c2a1fSXin Li *
32*a97c2a1fSXin Li * @par List of Functions:
33*a97c2a1fSXin Li * - impeg2_buf_mgr_init()
34*a97c2a1fSXin Li * - impeg2_buf_mgr_add()
35*a97c2a1fSXin Li * - impeg2_buf_mgr_get_next_free()
36*a97c2a1fSXin Li * - impeg2_buf_mgr_check_free()
37*a97c2a1fSXin Li * - impeg2_buf_mgr_release()
38*a97c2a1fSXin Li * - impeg2_buf_mgr_set_status()
39*a97c2a1fSXin Li * - impeg2_buf_mgr_get_status()
40*a97c2a1fSXin Li * - impeg2_buf_mgr_get_buf()
41*a97c2a1fSXin Li * - impeg2_buf_mgr_get_num_active_buf()
42*a97c2a1fSXin Li *
43*a97c2a1fSXin Li * @remarks
44*a97c2a1fSXin Li * None
45*a97c2a1fSXin Li *
46*a97c2a1fSXin Li *******************************************************************************
47*a97c2a1fSXin Li */
48*a97c2a1fSXin Li #include <stdio.h>
49*a97c2a1fSXin Li #include <stdlib.h>
50*a97c2a1fSXin Li #include "iv_datatypedef.h"
51*a97c2a1fSXin Li #include "impeg2_defs.h"
52*a97c2a1fSXin Li #include "impeg2_buf_mgr.h"
53*a97c2a1fSXin Li
54*a97c2a1fSXin Li
55*a97c2a1fSXin Li
56*a97c2a1fSXin Li /**
57*a97c2a1fSXin Li *******************************************************************************
58*a97c2a1fSXin Li *
59*a97c2a1fSXin Li * @brief
60*a97c2a1fSXin Li * Buffer manager initialization function.
61*a97c2a1fSXin Li *
62*a97c2a1fSXin Li * @par Description:
63*a97c2a1fSXin Li * Initializes the buffer manager structure
64*a97c2a1fSXin Li *
65*a97c2a1fSXin Li * @param[in] ps_buf_mgr
66*a97c2a1fSXin Li * Pointer to the buffer manager
67*a97c2a1fSXin Li *
68*a97c2a1fSXin Li * @returns
69*a97c2a1fSXin Li *
70*a97c2a1fSXin Li * @remarks
71*a97c2a1fSXin Li * None
72*a97c2a1fSXin Li *
73*a97c2a1fSXin Li *******************************************************************************
74*a97c2a1fSXin Li */
75*a97c2a1fSXin Li
impeg2_buf_mgr_init(buf_mgr_t * ps_buf_mgr)76*a97c2a1fSXin Li void impeg2_buf_mgr_init(
77*a97c2a1fSXin Li buf_mgr_t *ps_buf_mgr)
78*a97c2a1fSXin Li {
79*a97c2a1fSXin Li WORD32 id;
80*a97c2a1fSXin Li
81*a97c2a1fSXin Li ps_buf_mgr->u4_max_buf_cnt = BUF_MGR_MAX_CNT;
82*a97c2a1fSXin Li ps_buf_mgr->u4_active_buf_cnt = 0;
83*a97c2a1fSXin Li
84*a97c2a1fSXin Li for(id = 0; id < BUF_MGR_MAX_CNT; id++)
85*a97c2a1fSXin Li {
86*a97c2a1fSXin Li ps_buf_mgr->au4_status[id] = 0;
87*a97c2a1fSXin Li ps_buf_mgr->apv_ptr[id] = NULL;
88*a97c2a1fSXin Li }
89*a97c2a1fSXin Li }
90*a97c2a1fSXin Li
91*a97c2a1fSXin Li /**
92*a97c2a1fSXin Li *******************************************************************************
93*a97c2a1fSXin Li *
94*a97c2a1fSXin Li * @brief
95*a97c2a1fSXin Li * Buffer manager reset function.
96*a97c2a1fSXin Li *
97*a97c2a1fSXin Li * @par Description:
98*a97c2a1fSXin Li * Resets the buffer manager structure
99*a97c2a1fSXin Li *
100*a97c2a1fSXin Li * @param[in] ps_buf_mgr
101*a97c2a1fSXin Li * Pointer to the buffer manager
102*a97c2a1fSXin Li *
103*a97c2a1fSXin Li * @returns
104*a97c2a1fSXin Li *
105*a97c2a1fSXin Li * @remarks
106*a97c2a1fSXin Li * None
107*a97c2a1fSXin Li *
108*a97c2a1fSXin Li *******************************************************************************
109*a97c2a1fSXin Li */
110*a97c2a1fSXin Li
impeg2_buf_mgr_reset(buf_mgr_t * ps_buf_mgr)111*a97c2a1fSXin Li void impeg2_buf_mgr_reset(
112*a97c2a1fSXin Li buf_mgr_t *ps_buf_mgr)
113*a97c2a1fSXin Li {
114*a97c2a1fSXin Li WORD32 id;
115*a97c2a1fSXin Li
116*a97c2a1fSXin Li ps_buf_mgr->u4_max_buf_cnt = BUF_MGR_MAX_CNT;
117*a97c2a1fSXin Li ps_buf_mgr->u4_active_buf_cnt = 0;
118*a97c2a1fSXin Li
119*a97c2a1fSXin Li for(id = 0; id < BUF_MGR_MAX_CNT; id++)
120*a97c2a1fSXin Li {
121*a97c2a1fSXin Li ps_buf_mgr->au4_status[id] = 0;
122*a97c2a1fSXin Li }
123*a97c2a1fSXin Li }
124*a97c2a1fSXin Li
125*a97c2a1fSXin Li /**
126*a97c2a1fSXin Li *******************************************************************************
127*a97c2a1fSXin Li *
128*a97c2a1fSXin Li * @brief
129*a97c2a1fSXin Li * Adds and increments the buffer and buffer count.
130*a97c2a1fSXin Li *
131*a97c2a1fSXin Li * @par Description:
132*a97c2a1fSXin Li * Adds a buffer to the buffer manager if it is not already present and
133*a97c2a1fSXin Li * increments the active buffer count
134*a97c2a1fSXin Li *
135*a97c2a1fSXin Li * @param[in] ps_buf_mgr
136*a97c2a1fSXin Li * Pointer to the buffer manager
137*a97c2a1fSXin Li *
138*a97c2a1fSXin Li * @param[in] pv_ptr
139*a97c2a1fSXin Li * Pointer to the buffer to be added
140*a97c2a1fSXin Li *
141*a97c2a1fSXin Li * @returns Returns 0 on success, -1 otherwise
142*a97c2a1fSXin Li *
143*a97c2a1fSXin Li * @remarks
144*a97c2a1fSXin Li * None
145*a97c2a1fSXin Li *
146*a97c2a1fSXin Li *******************************************************************************
147*a97c2a1fSXin Li */
impeg2_buf_mgr_add(buf_mgr_t * ps_buf_mgr,void * pv_ptr,WORD32 i4_buf_id)148*a97c2a1fSXin Li WORD32 impeg2_buf_mgr_add(
149*a97c2a1fSXin Li buf_mgr_t *ps_buf_mgr,
150*a97c2a1fSXin Li void *pv_ptr,
151*a97c2a1fSXin Li WORD32 i4_buf_id)
152*a97c2a1fSXin Li {
153*a97c2a1fSXin Li
154*a97c2a1fSXin Li /* Check if buffer ID is within allowed range */
155*a97c2a1fSXin Li if(i4_buf_id >= (WORD32)ps_buf_mgr->u4_max_buf_cnt)
156*a97c2a1fSXin Li {
157*a97c2a1fSXin Li return (-1);
158*a97c2a1fSXin Li }
159*a97c2a1fSXin Li
160*a97c2a1fSXin Li /* Check if the current ID is being used to hold some other buffer */
161*a97c2a1fSXin Li if((ps_buf_mgr->apv_ptr[i4_buf_id] != NULL) &&
162*a97c2a1fSXin Li (ps_buf_mgr->apv_ptr[i4_buf_id] != pv_ptr))
163*a97c2a1fSXin Li {
164*a97c2a1fSXin Li return (-1);
165*a97c2a1fSXin Li }
166*a97c2a1fSXin Li ps_buf_mgr->apv_ptr[i4_buf_id] = pv_ptr;
167*a97c2a1fSXin Li
168*a97c2a1fSXin Li return 0;
169*a97c2a1fSXin Li }
170*a97c2a1fSXin Li
171*a97c2a1fSXin Li
172*a97c2a1fSXin Li /**
173*a97c2a1fSXin Li *******************************************************************************
174*a97c2a1fSXin Li *
175*a97c2a1fSXin Li * @brief
176*a97c2a1fSXin Li * Gets the next free buffer.
177*a97c2a1fSXin Li *
178*a97c2a1fSXin Li * @par Description:
179*a97c2a1fSXin Li * Returns the next free buffer available and sets the corresponding status
180*a97c2a1fSXin Li * to DEC
181*a97c2a1fSXin Li *
182*a97c2a1fSXin Li * @param[in] ps_buf_mgr
183*a97c2a1fSXin Li * Pointer to the buffer manager
184*a97c2a1fSXin Li *
185*a97c2a1fSXin Li * @param[in] pi4_buf_id
186*a97c2a1fSXin Li * Pointer to the id of the free buffer
187*a97c2a1fSXin Li *
188*a97c2a1fSXin Li * @returns Pointer to the free buffer
189*a97c2a1fSXin Li *
190*a97c2a1fSXin Li * @remarks
191*a97c2a1fSXin Li * None
192*a97c2a1fSXin Li *
193*a97c2a1fSXin Li *******************************************************************************
194*a97c2a1fSXin Li */
impeg2_buf_mgr_get_next_free(buf_mgr_t * ps_buf_mgr,WORD32 * pi4_buf_id)195*a97c2a1fSXin Li void* impeg2_buf_mgr_get_next_free(
196*a97c2a1fSXin Li buf_mgr_t *ps_buf_mgr,
197*a97c2a1fSXin Li WORD32 *pi4_buf_id)
198*a97c2a1fSXin Li {
199*a97c2a1fSXin Li WORD32 id;
200*a97c2a1fSXin Li void *pv_ret_ptr;
201*a97c2a1fSXin Li
202*a97c2a1fSXin Li pv_ret_ptr = NULL;
203*a97c2a1fSXin Li for(id = 0; id < (WORD32)ps_buf_mgr->u4_max_buf_cnt; id++)
204*a97c2a1fSXin Li {
205*a97c2a1fSXin Li /* Check if the buffer is non-null and status is zero */
206*a97c2a1fSXin Li if((ps_buf_mgr->au4_status[id] == 0) && (ps_buf_mgr->apv_ptr[id]))
207*a97c2a1fSXin Li {
208*a97c2a1fSXin Li *pi4_buf_id = id;
209*a97c2a1fSXin Li /* DEC is set to 1 */
210*a97c2a1fSXin Li ps_buf_mgr->au4_status[id] = 1;
211*a97c2a1fSXin Li pv_ret_ptr = ps_buf_mgr->apv_ptr[id];
212*a97c2a1fSXin Li break;
213*a97c2a1fSXin Li }
214*a97c2a1fSXin Li }
215*a97c2a1fSXin Li
216*a97c2a1fSXin Li return pv_ret_ptr;
217*a97c2a1fSXin Li }
218*a97c2a1fSXin Li
219*a97c2a1fSXin Li
220*a97c2a1fSXin Li /**
221*a97c2a1fSXin Li *******************************************************************************
222*a97c2a1fSXin Li *
223*a97c2a1fSXin Li * @brief
224*a97c2a1fSXin Li * Checks the buffer manager for free buffers available.
225*a97c2a1fSXin Li *
226*a97c2a1fSXin Li * @par Description:
227*a97c2a1fSXin Li * Checks if there are any free buffers available
228*a97c2a1fSXin Li *
229*a97c2a1fSXin Li * @param[in] ps_buf_mgr
230*a97c2a1fSXin Li * Pointer to the buffer manager
231*a97c2a1fSXin Li *
232*a97c2a1fSXin Li * @returns Returns 0 if available, -1 otherwise
233*a97c2a1fSXin Li *
234*a97c2a1fSXin Li * @remarks
235*a97c2a1fSXin Li * None
236*a97c2a1fSXin Li *
237*a97c2a1fSXin Li *******************************************************************************
238*a97c2a1fSXin Li */
impeg2_buf_mgr_check_free(buf_mgr_t * ps_buf_mgr)239*a97c2a1fSXin Li WORD32 impeg2_buf_mgr_check_free(
240*a97c2a1fSXin Li buf_mgr_t *ps_buf_mgr)
241*a97c2a1fSXin Li {
242*a97c2a1fSXin Li UWORD32 id;
243*a97c2a1fSXin Li
244*a97c2a1fSXin Li for(id = 0; id < ps_buf_mgr->u4_max_buf_cnt; id++)
245*a97c2a1fSXin Li {
246*a97c2a1fSXin Li if((ps_buf_mgr->au4_status[id] == 0) &&
247*a97c2a1fSXin Li (ps_buf_mgr->apv_ptr[id]))
248*a97c2a1fSXin Li {
249*a97c2a1fSXin Li return 1;
250*a97c2a1fSXin Li }
251*a97c2a1fSXin Li }
252*a97c2a1fSXin Li
253*a97c2a1fSXin Li return 0;
254*a97c2a1fSXin Li
255*a97c2a1fSXin Li }
256*a97c2a1fSXin Li
257*a97c2a1fSXin Li
258*a97c2a1fSXin Li /**
259*a97c2a1fSXin Li *******************************************************************************
260*a97c2a1fSXin Li *
261*a97c2a1fSXin Li * @brief
262*a97c2a1fSXin Li * Resets the status bits.
263*a97c2a1fSXin Li *
264*a97c2a1fSXin Li * @par Description:
265*a97c2a1fSXin Li * resets the status bits that the mask contains (status corresponding to
266*a97c2a1fSXin Li * the id)
267*a97c2a1fSXin Li *
268*a97c2a1fSXin Li * @param[in] ps_buf_mgr
269*a97c2a1fSXin Li * Pointer to the buffer manager
270*a97c2a1fSXin Li *
271*a97c2a1fSXin Li * @param[in] buf_id
272*a97c2a1fSXin Li * ID of the buffer status to be released
273*a97c2a1fSXin Li *
274*a97c2a1fSXin Li * @param[in] mask
275*a97c2a1fSXin Li * Contains the bits that are to be reset
276*a97c2a1fSXin Li *
277*a97c2a1fSXin Li * @returns 0 if success, -1 otherwise
278*a97c2a1fSXin Li *
279*a97c2a1fSXin Li * @remarks
280*a97c2a1fSXin Li * None
281*a97c2a1fSXin Li *
282*a97c2a1fSXin Li *******************************************************************************
283*a97c2a1fSXin Li */
impeg2_buf_mgr_release(buf_mgr_t * ps_buf_mgr,WORD32 i4_buf_id,UWORD32 u4_mask)284*a97c2a1fSXin Li WORD32 impeg2_buf_mgr_release(
285*a97c2a1fSXin Li buf_mgr_t *ps_buf_mgr,
286*a97c2a1fSXin Li WORD32 i4_buf_id,
287*a97c2a1fSXin Li UWORD32 u4_mask)
288*a97c2a1fSXin Li {
289*a97c2a1fSXin Li /* If the given id is pointing to an id which is not yet added */
290*a97c2a1fSXin Li if(i4_buf_id >= (WORD32)ps_buf_mgr->u4_max_buf_cnt)
291*a97c2a1fSXin Li {
292*a97c2a1fSXin Li return (-1);
293*a97c2a1fSXin Li }
294*a97c2a1fSXin Li
295*a97c2a1fSXin Li if(0 == (ps_buf_mgr->au4_status[i4_buf_id] & u4_mask))
296*a97c2a1fSXin Li {
297*a97c2a1fSXin Li return (-1);
298*a97c2a1fSXin Li }
299*a97c2a1fSXin Li
300*a97c2a1fSXin Li ps_buf_mgr->au4_status[i4_buf_id] &= ~u4_mask;
301*a97c2a1fSXin Li
302*a97c2a1fSXin Li /* If both the REF and DISP are zero, DEC is set to zero */
303*a97c2a1fSXin Li if(ps_buf_mgr->au4_status[i4_buf_id] == 1)
304*a97c2a1fSXin Li {
305*a97c2a1fSXin Li ps_buf_mgr->au4_status[i4_buf_id] = 0;
306*a97c2a1fSXin Li }
307*a97c2a1fSXin Li
308*a97c2a1fSXin Li return 0;
309*a97c2a1fSXin Li }
310*a97c2a1fSXin Li
311*a97c2a1fSXin Li
312*a97c2a1fSXin Li /**
313*a97c2a1fSXin Li *******************************************************************************
314*a97c2a1fSXin Li *
315*a97c2a1fSXin Li * @brief
316*a97c2a1fSXin Li * Sets the status bit.
317*a97c2a1fSXin Li *
318*a97c2a1fSXin Li * @par Description:
319*a97c2a1fSXin Li * sets the status bits that the mask contains (status corresponding to the
320*a97c2a1fSXin Li * id)
321*a97c2a1fSXin Li *
322*a97c2a1fSXin Li *
323*a97c2a1fSXin Li * @param[in] ps_buf_mgr
324*a97c2a1fSXin Li * Pointer to the buffer manager
325*a97c2a1fSXin Li *
326*a97c2a1fSXin Li * @param[in] buf_id
327*a97c2a1fSXin Li * ID of the buffer whose status needs to be modified
328*a97c2a1fSXin Li *
329*a97c2a1fSXin Li *
330*a97c2a1fSXin Li * @param[in] mask
331*a97c2a1fSXin Li * Contains the bits that are to be set
332*a97c2a1fSXin Li *
333*a97c2a1fSXin Li * @returns 0 if success, -1 otherwise
334*a97c2a1fSXin Li *
335*a97c2a1fSXin Li * @remarks
336*a97c2a1fSXin Li * None
337*a97c2a1fSXin Li *
338*a97c2a1fSXin Li *******************************************************************************
339*a97c2a1fSXin Li */
impeg2_buf_mgr_set_status(buf_mgr_t * ps_buf_mgr,WORD32 i4_buf_id,UWORD32 u4_mask)340*a97c2a1fSXin Li WORD32 impeg2_buf_mgr_set_status(
341*a97c2a1fSXin Li buf_mgr_t *ps_buf_mgr,
342*a97c2a1fSXin Li WORD32 i4_buf_id,
343*a97c2a1fSXin Li UWORD32 u4_mask)
344*a97c2a1fSXin Li {
345*a97c2a1fSXin Li if(i4_buf_id >= (WORD32)ps_buf_mgr->u4_max_buf_cnt)
346*a97c2a1fSXin Li {
347*a97c2a1fSXin Li return (-1);
348*a97c2a1fSXin Li }
349*a97c2a1fSXin Li
350*a97c2a1fSXin Li
351*a97c2a1fSXin Li if((ps_buf_mgr->au4_status[i4_buf_id] & u4_mask) != 0)
352*a97c2a1fSXin Li {
353*a97c2a1fSXin Li return (-1);
354*a97c2a1fSXin Li }
355*a97c2a1fSXin Li
356*a97c2a1fSXin Li ps_buf_mgr->au4_status[i4_buf_id] |= u4_mask;
357*a97c2a1fSXin Li return 0;
358*a97c2a1fSXin Li }
359*a97c2a1fSXin Li
360*a97c2a1fSXin Li
361*a97c2a1fSXin Li /**
362*a97c2a1fSXin Li *******************************************************************************
363*a97c2a1fSXin Li *
364*a97c2a1fSXin Li * @brief
365*a97c2a1fSXin Li * Returns the status of the buffer.
366*a97c2a1fSXin Li *
367*a97c2a1fSXin Li * @par Description:
368*a97c2a1fSXin Li * Returns the status of the buffer corresponding to the id
369*a97c2a1fSXin Li *
370*a97c2a1fSXin Li * @param[in] ps_buf_mgr
371*a97c2a1fSXin Li * Pointer to the buffer manager
372*a97c2a1fSXin Li *
373*a97c2a1fSXin Li * @param[in] buf_id
374*a97c2a1fSXin Li * ID of the buffer status required
375*a97c2a1fSXin Li *
376*a97c2a1fSXin Li * @returns Status of the buffer corresponding to the id
377*a97c2a1fSXin Li *
378*a97c2a1fSXin Li * @remarks
379*a97c2a1fSXin Li * None
380*a97c2a1fSXin Li *
381*a97c2a1fSXin Li *******************************************************************************
382*a97c2a1fSXin Li */
impeg2_buf_mgr_get_status(buf_mgr_t * ps_buf_mgr,WORD32 i4_buf_id)383*a97c2a1fSXin Li UWORD32 impeg2_buf_mgr_get_status(
384*a97c2a1fSXin Li buf_mgr_t *ps_buf_mgr,
385*a97c2a1fSXin Li WORD32 i4_buf_id)
386*a97c2a1fSXin Li {
387*a97c2a1fSXin Li return ps_buf_mgr->au4_status[i4_buf_id];
388*a97c2a1fSXin Li }
389*a97c2a1fSXin Li
390*a97c2a1fSXin Li
391*a97c2a1fSXin Li /**
392*a97c2a1fSXin Li *******************************************************************************
393*a97c2a1fSXin Li *
394*a97c2a1fSXin Li * @brief
395*a97c2a1fSXin Li * Gets the buffer from the buffer manager
396*a97c2a1fSXin Li *
397*a97c2a1fSXin Li * @par Description:
398*a97c2a1fSXin Li * Returns the pointer to the buffer corresponding to the id
399*a97c2a1fSXin Li *
400*a97c2a1fSXin Li * @param[in] ps_buf_mgr
401*a97c2a1fSXin Li * Pointer to the buffer manager
402*a97c2a1fSXin Li *
403*a97c2a1fSXin Li * @param[in] buf_id
404*a97c2a1fSXin Li * ID of the buffer required
405*a97c2a1fSXin Li *
406*a97c2a1fSXin Li * @returns Pointer to the buffer required
407*a97c2a1fSXin Li *
408*a97c2a1fSXin Li * @remarks
409*a97c2a1fSXin Li * None
410*a97c2a1fSXin Li *
411*a97c2a1fSXin Li *******************************************************************************
412*a97c2a1fSXin Li */
impeg2_buf_mgr_get_buf(buf_mgr_t * ps_buf_mgr,WORD32 i4_buf_id)413*a97c2a1fSXin Li void* impeg2_buf_mgr_get_buf(
414*a97c2a1fSXin Li buf_mgr_t *ps_buf_mgr,
415*a97c2a1fSXin Li WORD32 i4_buf_id)
416*a97c2a1fSXin Li {
417*a97c2a1fSXin Li return ps_buf_mgr->apv_ptr[i4_buf_id];
418*a97c2a1fSXin Li }
419*a97c2a1fSXin Li
420*a97c2a1fSXin Li
421*a97c2a1fSXin Li /**
422*a97c2a1fSXin Li *******************************************************************************
423*a97c2a1fSXin Li *
424*a97c2a1fSXin Li * @brief
425*a97c2a1fSXin Li * Gets the no.of active buffer
426*a97c2a1fSXin Li *
427*a97c2a1fSXin Li * @par Description:
428*a97c2a1fSXin Li * Return the number of active buffers in the buffer manager
429*a97c2a1fSXin Li *
430*a97c2a1fSXin Li * @param[in] ps_buf_mgr
431*a97c2a1fSXin Li * Pointer to the buffer manager
432*a97c2a1fSXin Li *
433*a97c2a1fSXin Li * @returns number of active buffers
434*a97c2a1fSXin Li *
435*a97c2a1fSXin Li * @remarks
436*a97c2a1fSXin Li * None
437*a97c2a1fSXin Li *
438*a97c2a1fSXin Li *******************************************************************************
439*a97c2a1fSXin Li */
impeg2_buf_mgr_get_num_active_buf(buf_mgr_t * ps_buf_mgr)440*a97c2a1fSXin Li UWORD32 impeg2_buf_mgr_get_num_active_buf(
441*a97c2a1fSXin Li buf_mgr_t *ps_buf_mgr)
442*a97c2a1fSXin Li {
443*a97c2a1fSXin Li return ps_buf_mgr->u4_max_buf_cnt;
444*a97c2a1fSXin Li }
445