• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  *******************************************************************************
21  * @file
22  *  ihevc_dpb_mgr.h
23  *
24  * @brief
25  *  Function declarations used for decoded picture buffer management
26  *
27  * @author
28  *  Srinivas T
29  *
30  *
31  * @remarks
32  *  None
33  *
34  *******************************************************************************
35  */
36 #ifndef _DPB_MANAGER_H
37 #define _DPB_MANAGER_H
38 
39 /* Temporary definitions. Have to be defined later */
40 
41 #define MAX_DPB_BUFS                (MAX_DPB_SIZE * 4)
42 
43 #define MARK_ST_PICNUM_AS_NONREF    1
44 #define MARK_LT_INDEX_AS_NONREF     2
45 #define MARK_ST_PICNUM_AS_LT_INDEX  3
46 #define RESET_REF_PICTURES          5
47 
48 typedef struct dpb_info_t dpb_info_t;
49 
50 enum
51 {
52     UNUSED_FOR_REF = 0,
53     LONG_TERM_REF,
54     SHORT_TERM_REF,
55 };
56 struct dpb_info_t
57 {
58     /**
59      * Pointer to picture buffer structure
60      */
61     pic_buf_t *ps_pic_buf;
62 
63     /**
64      * Link to the DPB buffer with previous pic Num
65      */
66     dpb_info_t *ps_prev_dpb;
67 
68 };
69 
70 typedef struct
71 {
72     /**
73      * Pointer to the most recent pic Num
74      */
75     dpb_info_t *ps_dpb_head;
76 
77     /**
78      * Physical storage for dpbInfo for ref bufs
79      */
80     dpb_info_t as_dpb_info[MAX_DPB_BUFS];
81 
82     /**
83      * Number of reference buffers
84      */
85     UWORD8 u1_num_ref_bufs;
86 
87 }dpb_mgr_t;
88 
89 void ihevc_dpb_mgr_init(dpb_mgr_t *ps_dpb_mgr);
90 
91 WORD32 ihevc_dpb_mgr_insert_ref(dpb_mgr_t *ps_dpb_mgr,
92                                 pic_buf_t *ps_pic_buf,
93                                 WORD32 buf_id);
94 
95 void ihevc_dpb_mgr_del_ref(dpb_mgr_t *ps_dpb_mgr,
96                            buf_mgr_t *ps_buf_mgr,
97                            WORD32 u4_abs_poc);
98 
99 pic_buf_t* ihevc_dpb_mgr_get_ref_by_nearest_poc(dpb_mgr_t *ps_dpb_mgr, WORD32 cur_abs_poc);
100 
101 pic_buf_t* ihevc_dpb_mgr_get_ref_by_poc(dpb_mgr_t *ps_dpb_mgr, WORD32 abs_poc);
102 
103 pic_buf_t* ihevc_dpb_mgr_get_ref_by_poc_lsb(dpb_mgr_t *ps_dpb_mgr, WORD32 poc_lsb);
104 
105 void ihevc_dpb_mgr_reset(dpb_mgr_t *ps_dpb_mgr, buf_mgr_t *ps_buf_mgr);
106 
107 void ihevc_dpb_mgr_release_pics(buf_mgr_t *ps_buf_mgr, UWORD8 u1_disp_bufs);
108 
109 #endif /*  _DPB_MANAGER_H */
110