xref: /aosp_15_r20/external/libavc/decoder/mvc/imvcd_utils.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1*495ae853SAndroid Build Coastguard Worker /******************************************************************************
2*495ae853SAndroid Build Coastguard Worker  *
3*495ae853SAndroid Build Coastguard Worker  * Copyright (C) 2021 The Android Open Source Project
4*495ae853SAndroid Build Coastguard Worker  *
5*495ae853SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*495ae853SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*495ae853SAndroid Build Coastguard Worker  * You may obtain a copy of the License at:
8*495ae853SAndroid Build Coastguard Worker  *
9*495ae853SAndroid Build Coastguard Worker  * http://www.apache.org/licenses/LICENSE-2.0
10*495ae853SAndroid Build Coastguard Worker  *
11*495ae853SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*495ae853SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*495ae853SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*495ae853SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*495ae853SAndroid Build Coastguard Worker  * limitations under the License.
16*495ae853SAndroid Build Coastguard Worker  *
17*495ae853SAndroid Build Coastguard Worker  *****************************************************************************
18*495ae853SAndroid Build Coastguard Worker  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*495ae853SAndroid Build Coastguard Worker  */
20*495ae853SAndroid Build Coastguard Worker 
21*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
22*495ae853SAndroid Build Coastguard Worker /*                                                                           */
23*495ae853SAndroid Build Coastguard Worker /*  File Name         : imvcd_utils.c                                        */
24*495ae853SAndroid Build Coastguard Worker /*                                                                           */
25*495ae853SAndroid Build Coastguard Worker /*  Description       : MVCD Utility functions used by 'imvcd_api.c'         */
26*495ae853SAndroid Build Coastguard Worker /*                                                                           */
27*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
28*495ae853SAndroid Build Coastguard Worker 
29*495ae853SAndroid Build Coastguard Worker #ifndef _IMVCD_UTILS_H_
30*495ae853SAndroid Build Coastguard Worker #define _IMVCD_UTILS_H_
31*495ae853SAndroid Build Coastguard Worker 
32*495ae853SAndroid Build Coastguard Worker #include <stdbool.h>
33*495ae853SAndroid Build Coastguard Worker #include <string.h>
34*495ae853SAndroid Build Coastguard Worker 
35*495ae853SAndroid Build Coastguard Worker #include "ih264_typedefs.h"
36*495ae853SAndroid Build Coastguard Worker #include "imvc_defs.h"
37*495ae853SAndroid Build Coastguard Worker #include "ih264d_mvpred.h"
38*495ae853SAndroid Build Coastguard Worker #include "ih264d_structs.h"
39*495ae853SAndroid Build Coastguard Worker #include "imvcd_structs.h"
40*495ae853SAndroid Build Coastguard Worker 
41*495ae853SAndroid Build Coastguard Worker #define SWAP(x, y, data_type)                 \
42*495ae853SAndroid Build Coastguard Worker     {                                         \
43*495ae853SAndroid Build Coastguard Worker         data_type temp;                       \
44*495ae853SAndroid Build Coastguard Worker         memcpy(&temp, &y, sizeof(data_type)); \
45*495ae853SAndroid Build Coastguard Worker         memcpy(&y, &x, sizeof(data_type));    \
46*495ae853SAndroid Build Coastguard Worker         memcpy(&x, &temp, sizeof(data_type)); \
47*495ae853SAndroid Build Coastguard Worker     }
48*495ae853SAndroid Build Coastguard Worker 
49*495ae853SAndroid Build Coastguard Worker extern IV_API_CALL_STATUS_T imvcd_get_next_display_au_buf(mvc_dec_ctxt_t *ps_mvcd_ctxt);
50*495ae853SAndroid Build Coastguard Worker 
51*495ae853SAndroid Build Coastguard Worker extern UWORD32 imvcd_get_num_mbs_in_level(UWORD8 u1_level_idc);
52*495ae853SAndroid Build Coastguard Worker 
53*495ae853SAndroid Build Coastguard Worker extern WORD32 imvcd_allocate_dynamic_bufs(mvc_dec_ctxt_t *ps_mvcd_ctxt);
54*495ae853SAndroid Build Coastguard Worker 
55*495ae853SAndroid Build Coastguard Worker extern WORD16 imvcd_free_dynamic_bufs(mvc_dec_ctxt_t *ps_mvcd_ctxt);
56*495ae853SAndroid Build Coastguard Worker 
57*495ae853SAndroid Build Coastguard Worker extern WORD32 imvcd_init_au_buffers(mvc_dec_ctxt_t *ps_mvcd_ctxt);
58*495ae853SAndroid Build Coastguard Worker 
59*495ae853SAndroid Build Coastguard Worker extern WORD32 imvcd_init_au_mv_pred_bufs(mvc_dec_ctxt_t *ps_mvcd_ctxt);
60*495ae853SAndroid Build Coastguard Worker 
61*495ae853SAndroid Build Coastguard Worker extern void imvcd_convert_au_buf_to_view_buf(mvc_au_buffer_t *ps_au_buf, pic_buffer_t *ps_view_buf,
62*495ae853SAndroid Build Coastguard Worker                                              UWORD16 u2_view_order_id, UWORD16 u2_view_id);
63*495ae853SAndroid Build Coastguard Worker 
64*495ae853SAndroid Build Coastguard Worker extern void imvcd_init_ref_idx_to_ref_buf_map(mvc_dec_ctxt_t *ps_mvcd_ctxt);
65*495ae853SAndroid Build Coastguard Worker 
66*495ae853SAndroid Build Coastguard Worker extern void imvcd_ivp_buf_copier(mvc_au_buffer_t *ps_au_buf_src, mvc_au_buffer_t *ps_au_buf_dst,
67*495ae853SAndroid Build Coastguard Worker                                  mvc_au_mv_pred_t *ps_au_mv_data_src,
68*495ae853SAndroid Build Coastguard Worker                                  mvc_au_mv_pred_t *ps_au_mv_data_dst, UWORD16 u2_src_view_id,
69*495ae853SAndroid Build Coastguard Worker                                  UWORD16 u2_dst_view_id);
70*495ae853SAndroid Build Coastguard Worker 
71*495ae853SAndroid Build Coastguard Worker /* Function defined in 'ih264d_utils.c' and declared nowhere else */
72*495ae853SAndroid Build Coastguard Worker extern WORD32 ih264d_init_dec_mb_grp(dec_struct_t *ps_dec);
73*495ae853SAndroid Build Coastguard Worker 
74*495ae853SAndroid Build Coastguard Worker extern void ih264d_init_cabac_contexts(UWORD8 u1_slice_type, dec_struct_t *ps_dec);
75*495ae853SAndroid Build Coastguard Worker 
76*495ae853SAndroid Build Coastguard Worker extern void ih264d_get_implicit_weights(dec_struct_t *ps_dec);
77*495ae853SAndroid Build Coastguard Worker 
78*495ae853SAndroid Build Coastguard Worker extern void imvcd_free_ref_bufs(mvc_au_buf_mgr_t *ps_mvc_au_buf_mgr,
79*495ae853SAndroid Build Coastguard Worker                                 mvc_au_mv_pred_buf_mgr_t *ps_mvc_au_mv_pred_buf_mgr,
80*495ae853SAndroid Build Coastguard Worker                                 WORD32 i4_pic_buf_id);
81*495ae853SAndroid Build Coastguard Worker 
82*495ae853SAndroid Build Coastguard Worker extern void imvcd_release_all_ref_bufs(mvc_dec_ctxt_t *ps_mvcd_ctxt, WORD32 i4_num_bufs);
83*495ae853SAndroid Build Coastguard Worker 
84*495ae853SAndroid Build Coastguard Worker extern void imvcd_free_ref_and_io_bufs(mvc_au_buf_mgr_t *ps_mvc_au_buf_mgr,
85*495ae853SAndroid Build Coastguard Worker                                        mvc_au_mv_pred_buf_mgr_t *ps_mvc_au_mv_pred_buf_mgr,
86*495ae853SAndroid Build Coastguard Worker                                        WORD32 i4_pic_buf_id);
87*495ae853SAndroid Build Coastguard Worker 
88*495ae853SAndroid Build Coastguard Worker extern void imvcd_release_all_ref_and_io_bufs(mvc_dec_ctxt_t *ps_mvcd_ctxt, WORD32 i4_num_bufs);
89*495ae853SAndroid Build Coastguard Worker 
90*495ae853SAndroid Build Coastguard Worker extern bool is_header_decoded(WORD32 i4_header_decoded, AVC_EXT_NALU_ID_T e_nalu_id);
91*495ae853SAndroid Build Coastguard Worker 
92*495ae853SAndroid Build Coastguard Worker extern bool is_mvc_nalu(AVC_EXT_NALU_ID_T e_nalu_id);
93*495ae853SAndroid Build Coastguard Worker 
94*495ae853SAndroid Build Coastguard Worker extern bool is_slice_nalu_type(AVC_EXT_NALU_ID_T e_nalu_id);
95*495ae853SAndroid Build Coastguard Worker 
96*495ae853SAndroid Build Coastguard Worker extern nalu_mvc_ext_t *imvcd_get_cur_nalu_mvc_ext(mvc_dec_ctxt_t *ps_mvcd_ctxt);
97*495ae853SAndroid Build Coastguard Worker 
98*495ae853SAndroid Build Coastguard Worker extern nalu_mvc_ext_t *imvcd_get_nalu_mvc_ext(nalu_mvc_ext_t *ps_nalu_mvc_exts,
99*495ae853SAndroid Build Coastguard Worker                                               UWORD16 u2_num_views_decoded, UWORD16 u2_view_id);
100*495ae853SAndroid Build Coastguard Worker 
101*495ae853SAndroid Build Coastguard Worker extern ref_pic_list_mod_data_t *imvcd_get_cur_ref_pic_list_mod_data(mvc_dec_ctxt_t *ps_mvcd_ctxt);
102*495ae853SAndroid Build Coastguard Worker 
103*495ae853SAndroid Build Coastguard Worker extern subset_sps_t *imvcd_get_valid_subset_sps(mvc_dec_ctxt_t *ps_mvcd_ctxt);
104*495ae853SAndroid Build Coastguard Worker 
105*495ae853SAndroid Build Coastguard Worker extern void imvcd_modulate_max_disp_seq(dec_struct_t *ps_view_ctxt);
106*495ae853SAndroid Build Coastguard Worker 
107*495ae853SAndroid Build Coastguard Worker extern mv_pred_t imvcd_get_default_mv_pred(void);
108*495ae853SAndroid Build Coastguard Worker 
109*495ae853SAndroid Build Coastguard Worker extern UWORD32 imvcd_get_max_num_ivp_refs(mvc_dec_ctxt_t *ps_mvcd_ctxt);
110*495ae853SAndroid Build Coastguard Worker 
111*495ae853SAndroid Build Coastguard Worker extern bool imvcd_is_idr_au(mvc_dec_ctxt_t *ps_mvcd_ctxt);
112*495ae853SAndroid Build Coastguard Worker 
113*495ae853SAndroid Build Coastguard Worker extern coordinates_t imvcd_get_buf_pad_dims(bool b_is_chroma);
114*495ae853SAndroid Build Coastguard Worker 
115*495ae853SAndroid Build Coastguard Worker extern WORD32 imvcd_get_ref_pic_pad_offset(WORD32 i4_stride, bool b_is_chroma);
116*495ae853SAndroid Build Coastguard Worker 
117*495ae853SAndroid Build Coastguard Worker extern UWORD32 imvcd_get_next_bits(dec_bit_stream_t *ps_bitstream);
118*495ae853SAndroid Build Coastguard Worker 
119*495ae853SAndroid Build Coastguard Worker extern void imvcd_set_view_buf_id_to_buf_map(dec_struct_t *ps_view_ctxt);
120*495ae853SAndroid Build Coastguard Worker 
121*495ae853SAndroid Build Coastguard Worker #endif
122