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