unplugged-system/external/libavc/common/mvc/imvc_structs.h

165 lines
3.6 KiB
C

/******************************************************************************
*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*****************************************************************************
* Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
*/
#ifndef _IMVC_STRUCTS_H_
#define _IMVC_STRUCTS_H_
#include "ih264_typedefs.h"
#include "imvc_defs.h"
typedef struct nalu_mvc_ext_t
{
UWORD8 u1_non_idr_flag;
UWORD8 u1_priority_id;
UWORD16 u2_view_id;
UWORD8 u1_temporal_id;
UWORD8 u1_anchor_pic_flag;
UWORD8 u1_inter_view_flag;
} nalu_mvc_ext_t;
typedef struct mvc_ivp_ref_data_t
{
UWORD8 u1_num_refs;
UWORD16 au2_ref_view_ids[MAX_NUM_IVP_REFS];
} mvc_ivp_ref_data_t;
typedef struct mvc_op_data_t
{
UWORD8 u1_temporal_id;
UWORD16 u2_num_ops;
UWORD16 u2_num_target_views;
UWORD16 au2_target_view_ids[MAX_NUM_VIEWS];
/* Counter for num target views and views each target is dependent on */
UWORD16 u2_num_views;
} mvc_op_data_t;
typedef struct mvc_level_info_t
{
UWORD32 u4_level_idc;
mvc_op_data_t as_mvc_op_data[MAX_NUM_OPERATING_POINTS];
} mvc_level_info_t;
typedef struct sps_mvc_ext_t
{
UWORD16 u2_num_views;
UWORD16 au2_view_ids[MAX_NUM_VIEWS];
/* 0 => L0; 1 => L1 */
mvc_ivp_ref_data_t as_anchor_ref_data[2][MAX_NUM_VIEWS];
/* 0 => L0; 1 => L1 */
mvc_ivp_ref_data_t as_non_anchor_ref_data[2][MAX_NUM_VIEWS];
UWORD8 u1_num_level_values_signalled;
mvc_level_info_t as_mvc_level_info[MAX_NUM_LEVEL_VALUES_SIGNALLED];
} sps_mvc_ext_t;
typedef struct mvc_vui_ext_t
{
UWORD16 u2_vui_mvc_num_ops;
UWORD8 u1_vui_mvc_temporal_id[MAX_NUM_OPERATING_POINTS];
UWORD16 u2_vui_mvc_num_target_output_views[MAX_NUM_OPERATING_POINTS];
UWORD16 u2_vui_mvc_view_id[MAX_NUM_OPERATING_POINTS][MAX_NUM_VIEWS];
UWORD8 u1_vui_mvc_timing_info_present_flag[MAX_NUM_OPERATING_POINTS];
UWORD32 u4_vui_mvc_num_units_in_tick[MAX_NUM_OPERATING_POINTS];
UWORD32 u4_vui_mvc_time_scale[MAX_NUM_OPERATING_POINTS];
UWORD8 u1_vui_mvc_fixed_frame_rate_flag[MAX_NUM_OPERATING_POINTS];
UWORD8 u1_vui_mvc_nal_hrd_parameters_present_flag[MAX_NUM_OPERATING_POINTS];
UWORD8 u1_vui_mvc_vcl_hrd_parameters_present_flag[MAX_NUM_OPERATING_POINTS];
UWORD8 u1_vui_mvc_low_delay_hrd_flag[MAX_NUM_OPERATING_POINTS];
UWORD8 u1_vui_mvc_pic_struct_present_flag[MAX_NUM_OPERATING_POINTS];
} mvc_vui_ext_t;
typedef struct buffer_container_t
{
void *pv_data;
WORD32 i4_data_stride;
} buffer_container_t;
typedef struct yuv_buf_props_t
{
buffer_container_t as_component_bufs[NUM_COMPONENTS];
UWORD8 u1_bit_depth;
UWORD16 u2_width;
UWORD16 u2_height;
} yuv_buf_props_t;
typedef struct iv_mvc_yuv_buf_t
{
yuv_buf_props_t as_view_buf_props[MAX_NUM_VIEWS];
} iv_mvc_yuv_buf_t;
typedef struct coordinates_t
{
WORD32 i4_abscissa;
WORD32 i4_ordinate;
} coordinates_t;
typedef struct offsets_t
{
UWORD16 u2_top_offset;
UWORD16 u2_bottom_offset;
UWORD16 u2_left_offset;
UWORD16 u2_right_offset;
} offsets_t;
#endif