xref: /rockchip-linux_mpp/mpp/codec/dec/h264/h264d_dpb.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka *
3*437bfbebSnyanmisaka * Copyright 2015 Rockchip Electronics Co. LTD
4*437bfbebSnyanmisaka *
5*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License");
6*437bfbebSnyanmisaka * you may not use this file except in compliance with the License.
7*437bfbebSnyanmisaka * You may obtain a copy of the License at
8*437bfbebSnyanmisaka *
9*437bfbebSnyanmisaka *      http://www.apache.org/licenses/LICENSE-2.0
10*437bfbebSnyanmisaka *
11*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software
12*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS,
13*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*437bfbebSnyanmisaka * See the License for the specific language governing permissions and
15*437bfbebSnyanmisaka * limitations under the License.
16*437bfbebSnyanmisaka */
17*437bfbebSnyanmisaka 
18*437bfbebSnyanmisaka #ifndef _H264D_DPB_H_
19*437bfbebSnyanmisaka #define _H264D_DPB_H_
20*437bfbebSnyanmisaka 
21*437bfbebSnyanmisaka 
22*437bfbebSnyanmisaka #include "rk_type.h"
23*437bfbebSnyanmisaka #include "mpp_err.h"
24*437bfbebSnyanmisaka #include "h264d_global.h"
25*437bfbebSnyanmisaka 
26*437bfbebSnyanmisaka 
27*437bfbebSnyanmisaka #ifdef  __cplusplus
28*437bfbebSnyanmisaka extern "C" {
29*437bfbebSnyanmisaka #endif
30*437bfbebSnyanmisaka 
31*437bfbebSnyanmisaka void    update_ref_list(H264_DpbBuf_t *p_Dpb);
32*437bfbebSnyanmisaka void    update_ltref_list(H264_DpbBuf_t *p_Dpb);
33*437bfbebSnyanmisaka void    free_storable_picture(H264_DecCtx_t *p_Dec, H264_StorePic_t *p);
34*437bfbebSnyanmisaka void    free_frame_store(H264_DecCtx_t *p_Dec, H264_FrameStore_t *f);
35*437bfbebSnyanmisaka 
36*437bfbebSnyanmisaka MPP_RET idr_memory_management(H264_DpbBuf_t *p_Dpb, H264_StorePic_t *p);
37*437bfbebSnyanmisaka MPP_RET insert_picture_in_dpb(H264dVideoCtx_t *p_Vid, H264_FrameStore_t *fs,    H264_StorePic_t *p, RK_U8 combine_flag);
38*437bfbebSnyanmisaka MPP_RET store_picture_in_dpb (H264_DpbBuf_t *p_Dpb, H264_StorePic_t *p);
39*437bfbebSnyanmisaka 
40*437bfbebSnyanmisaka MPP_RET check_mvc_dpb(H264dVideoCtx_t*p_Vid, H264_DpbBuf_t *p_Dpb_layer_0,  H264_DpbBuf_t* p_Dpb_layer_1);
41*437bfbebSnyanmisaka MPP_RET init_dpb    (H264dVideoCtx_t *p_Vid, H264_DpbBuf_t *p_Dpb, RK_S32 type);
42*437bfbebSnyanmisaka MPP_RET flush_dpb   (H264_DpbBuf_t   *p_Dpb, RK_S32 type);
43*437bfbebSnyanmisaka MPP_RET output_dpb  (H264_DecCtx_t *p_Dec, H264_DpbBuf_t *p_Dpb);
44*437bfbebSnyanmisaka 
45*437bfbebSnyanmisaka void    free_dpb    (H264_DpbBuf_t   *p_Dpb);
46*437bfbebSnyanmisaka MPP_RET exit_picture(H264dVideoCtx_t *p_Vid, H264_StorePic_t **dec_pic);
47*437bfbebSnyanmisaka 
48*437bfbebSnyanmisaka RK_U32  get_field_dpb_combine_flag(H264_FrameStore_t *p_last, H264_StorePic_t *p);
49*437bfbebSnyanmisaka H264_StorePic_t *alloc_storable_picture(H264dVideoCtx_t *p_Vid, RK_S32 structure);
50*437bfbebSnyanmisaka 
51*437bfbebSnyanmisaka #ifdef  __cplusplus
52*437bfbebSnyanmisaka }
53*437bfbebSnyanmisaka #endif
54*437bfbebSnyanmisaka 
55*437bfbebSnyanmisaka //========================================
56*437bfbebSnyanmisaka #endif /* end of _H264D_DPB_H_ */
57*437bfbebSnyanmisaka 
58