xref: /aosp_15_r20/external/libavc/decoder/svc/isvcd_parse_slice.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1 /******************************************************************************
2  *
3  * Copyright (C) 2022 The Android Open Source Project
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  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19  */
20 /**
21  *******************************************************************************
22  * @file
23  *  isvcd_parse_slice.h
24  *
25  * @brief
26  *  Contains routines that decode a Enhancement slice type
27  *
28  * @author
29  *  Kishore
30  *
31  * @remarks
32  *  None
33  *
34  *******************************************************************************
35  */
36 
37 #ifndef _ISVCD_PARSE_SLICE_H_
38 #define _ISVCD_PARSE_SLICE_H_
39 
40 #include "ih264_typedefs.h"
41 #include "ih264_macros.h"
42 #include "ih264_platform_macros.h"
43 #include "ih264d_tables.h"
44 
45 WORD32 isvcd_parse_islice_data_cavlc(svc_dec_lyr_struct_t *ps_svc_lyr_dec,
46                                      dec_slice_params_t *ps_slice, UWORD16 u2_first_mb_in_slice);
47 
48 WORD32 isvcd_parse_islice_data_cabac(svc_dec_lyr_struct_t *ps_svc_lyr_dec,
49                                      dec_slice_params_t *ps_slice, UWORD16 u2_first_mb_in_slice);
50 
51 WORD32 isvcd_parse_bmb_cabac(svc_dec_lyr_struct_t *ps_svc_lyr_dec, dec_mb_info_t *ps_cur_mb_info,
52                              dec_svc_mb_info_t *ps_svc_cur_mb_info, UWORD8 u1_mb_num,
53                              UWORD8 u1_num_mbsNby2);
54 
55 WORD32 isvcd_parse_bmb_cavlc(svc_dec_lyr_struct_t *ps_svc_lyr_dec, dec_mb_info_t *ps_cur_mb_info,
56                              dec_svc_mb_info_t *ps_svc_cur_mb_info, UWORD8 u1_mb_num,
57                              UWORD8 u1_num_mbsNby2);
58 
59 WORD32 isvcd_parse_imb_cavlc(svc_dec_lyr_struct_t *ps_svc_lyr_dec, dec_mb_info_t *ps_cur_mb_info,
60                              dec_svc_mb_info_t *ps_svc_cur_mb_info, UWORD8 u1_mb_num,
61                              UWORD8 u1_mb_type);
62 
63 WORD32 isvcd_parse_eislice_data_cabac(svc_dec_lyr_struct_t *ps_svc_lyr_dec,
64                                       dec_slice_params_t *ps_slice, UWORD16 u2_first_mb_in_slice);
65 
66 WORD32 isvcd_parse_eislice_data_cavlc(svc_dec_lyr_struct_t *ps_svc_lyr_dec,
67                                       dec_slice_params_t *ps_slice, UWORD16 u2_first_mb_in_slice);
68 
69 WORD32 isvcd_parse_imb_cabac(svc_dec_lyr_struct_t *ps_svc_lyr_dec, dec_mb_info_t *ps_cur_mb_info,
70                              dec_svc_mb_info_t *ps_svc_cur_mb_info, UWORD8 u1_mb_type);
71 
72 WORD32 isvcd_parse_inter_slice_data_cavlc_enh_lyr(svc_dec_lyr_struct_t *ps_svc_lyr_dec,
73                                                   dec_slice_params_t *ps_slice,
74                                                   UWORD16 u2_first_mb_in_slice);
75 
76 WORD32 isvcd_parse_inter_slice_data_cabac_enh_lyr(svc_dec_lyr_struct_t *ps_svc_lyr_dec,
77                                                   dec_slice_params_t *ps_slice,
78                                                   UWORD16 u2_first_mb_in_slice);
79 
80 WORD32 isvcd_parse_inter_slice_data_cabac(svc_dec_lyr_struct_t *ps_svc_lyr_dec,
81                                           dec_slice_params_t *ps_slice,
82                                           UWORD16 u2_first_mb_in_slice);
83 
84 WORD32 isvcd_parse_inter_slice_data_cavlc(svc_dec_lyr_struct_t *ps_svc_lyr_dec,
85                                           dec_slice_params_t *ps_slice,
86                                           UWORD16 u2_first_mb_in_slice);
87 
88 WORD32 isvcd_parse_eislice(svc_dec_lyr_struct_t *ps_svc_lyr_dec, UWORD16 u2_first_mb_in_slice);
89 
90 WORD32 isvcd_parse_islice(svc_dec_lyr_struct_t *ps_svc_lyr_dec, UWORD16 u2_first_mb_in_slice);
91 
92 WORD32 isvcd_parse_pslice(svc_dec_lyr_struct_t *ps_svc_lyr_dec, UWORD16 u2_first_mb_in_slice);
93 
94 WORD32 isvcd_parse_decode_slice(UWORD8 u1_is_idr_slice, UWORD8 u1_nal_ref_idc,
95                                 svc_dec_lyr_struct_t *ps_svc_lyr_dec);
96 
97 WORD32 isvcd_parse_slice_header(svc_dec_lyr_struct_t *ps_svc_lyr_dec);
98 
99 WORD32 isvcd_set_default_slice_header_ext(svc_dec_lyr_struct_t *ps_svc_lyr_dec);
100 
101 WORD32 isvcd_start_of_pic(svc_dec_lyr_struct_t *ps_svc_lyr_dec, WORD32 i4_poc,
102                           pocstruct_t *ps_temp_poc, UWORD16 u2_frame_num, dec_pic_params_t *ps_pps);
103 
104 WORD32 isvcd_parse_decode_slice_ext_nal(UWORD8 u1_is_idr_slice, UWORD8 u1_nal_ref_idc,
105                                         svc_dec_lyr_struct_t *ps_svc_lyr_dec);
106 
107 WORD32 isvcd_parse_interlayer_resamp_func_init(svc_dec_lyr_struct_t *ps_svc_lyr_dec,
108                                                UWORD16 u2_first_mb_in_slice);
109 
110 #endif /* _ISVCD_PARSE_SLICE_H_ */
111