280 lines
5.8 KiB
C
280 lines
5.8 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
|
|
*/
|
|
/**
|
|
*******************************************************************************
|
|
* @file
|
|
* imvcd.h
|
|
*
|
|
* @brief
|
|
* This file contains all the necessary structure and enumeration
|
|
* definitions needed for the Application Program Interface(API) of the
|
|
* Ittiam MVC Decoder
|
|
*
|
|
*******************************************************************************
|
|
*/
|
|
|
|
#ifndef _IMVCD_H_
|
|
#define _IMVCD_H_
|
|
#include <stdbool.h>
|
|
|
|
#include "ih264_typedefs.h"
|
|
#include "iv.h"
|
|
#include "ivd.h"
|
|
|
|
/* Extern functions */
|
|
extern IV_API_CALL_STATUS_T imvcd_api_function(iv_obj_t *ps_dec_hdl, void *pv_ip, void *pv_op);
|
|
|
|
/* Typedefs */
|
|
typedef enum IMVCD_CTL_SUB_CMDS
|
|
{
|
|
IMVCD_CTL_SET_NUM_CORES = IVD_CMD_CTL_CODEC_SUBCMD_START,
|
|
IMVCD_CTL_SET_PROCESSOR = IVD_CMD_CTL_CODEC_SUBCMD_START + 1,
|
|
IMVCD_CTL_GET_VUI_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 2,
|
|
IMVCD_CTL_DEGRADE = IVD_CMD_CTL_CODEC_SUBCMD_START + 3,
|
|
|
|
} IMVCD_CTL_SUB_CMDS;
|
|
|
|
typedef struct imvcd_create_ip_t
|
|
{
|
|
ivd_create_ip_t s_ivd_ip;
|
|
|
|
} imvcd_create_ip_t;
|
|
|
|
typedef struct imvcd_create_op_t
|
|
{
|
|
ivd_create_op_t s_ivd_op;
|
|
|
|
} imvcd_create_op_t;
|
|
|
|
typedef struct imvcd_delete_ip_t
|
|
{
|
|
ivd_delete_ip_t s_ivd_ip;
|
|
|
|
} imvcd_delete_ip_t;
|
|
|
|
typedef struct imvcd_delete_op_t
|
|
{
|
|
ivd_delete_op_t s_ivd_op;
|
|
|
|
} imvcd_delete_op_t;
|
|
|
|
typedef struct imvcd_video_decode_ip_t
|
|
{
|
|
ivd_video_decode_ip_t s_ivd_ip;
|
|
|
|
} imvcd_video_decode_ip_t;
|
|
|
|
typedef struct imvcd_video_decode_op_t
|
|
{
|
|
ivd_video_decode_op_t s_ivd_op;
|
|
|
|
iv_yuv_buf_t *ps_view_disp_bufs;
|
|
|
|
} imvcd_video_decode_op_t;
|
|
|
|
typedef struct imvcd_set_config_ip_t
|
|
{
|
|
ivd_ctl_set_config_ip_t s_ivd_ip;
|
|
} imvcd_set_config_ip_t;
|
|
|
|
typedef struct imvcd_set_config_op_t
|
|
{
|
|
ivd_ctl_set_config_op_t s_ivd_op;
|
|
} imvcd_set_config_op_t;
|
|
|
|
typedef struct imvcd_set_num_cores_ip_t
|
|
{
|
|
UWORD32 u4_size;
|
|
|
|
IVD_API_COMMAND_TYPE_T e_cmd;
|
|
|
|
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
UWORD32 u4_num_cores;
|
|
} imvcd_set_num_cores_ip_t;
|
|
|
|
typedef struct imvcd_set_num_cores_op_t
|
|
{
|
|
UWORD32 u4_size;
|
|
|
|
UWORD32 u4_error_code;
|
|
} imvcd_set_num_cores_op_t;
|
|
|
|
typedef struct imvcd_set_arch_ip_t
|
|
{
|
|
UWORD32 u4_size;
|
|
|
|
IVD_API_COMMAND_TYPE_T e_cmd;
|
|
|
|
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
IVD_ARCH_T e_arch;
|
|
|
|
IVD_SOC_T e_soc;
|
|
|
|
} imvcd_set_arch_ip_t;
|
|
|
|
typedef struct imvcd_set_arch_op_t
|
|
{
|
|
UWORD32 u4_size;
|
|
|
|
UWORD32 u4_error_code;
|
|
} imvcd_set_arch_op_t;
|
|
|
|
typedef struct imvcd_set_degrade_mode_ip_t
|
|
{
|
|
UWORD32 u4_size;
|
|
|
|
IVD_API_COMMAND_TYPE_T e_cmd;
|
|
|
|
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/**
|
|
* Pictures that are are degraded
|
|
* 0 : No degrade
|
|
* 1 : Only on non-reference frames
|
|
* 2 : Use interval specified by u4_nondegrade_interval
|
|
* 3 : All non-key frames
|
|
* 4 : All frames
|
|
*/
|
|
WORD32 i4_degrade_pics;
|
|
|
|
/**
|
|
* Interval for pictures which are completely decoded without any degradation
|
|
*/
|
|
WORD32 i4_nondegrade_interval;
|
|
|
|
/**
|
|
* bit position (lsb is zero): Type of degradation
|
|
* 1 : Disable deblocking
|
|
* 2 : Faster inter prediction filters
|
|
* 3 : Fastest inter prediction filters
|
|
*/
|
|
WORD32 i4_degrade_type;
|
|
|
|
} imvcd_set_degrade_mode_ip_t;
|
|
|
|
typedef struct imvcd_set_degrade_mode_op_t
|
|
{
|
|
UWORD32 u4_size;
|
|
|
|
UWORD32 u4_error_code;
|
|
} imvcd_set_degrade_mode_op_t;
|
|
|
|
typedef struct imvcd_flush_dec_ip_t
|
|
{
|
|
ivd_ctl_flush_ip_t s_ivd_ip;
|
|
} imvcd_flush_dec_ip_t;
|
|
|
|
typedef struct imvcd_flush_dec_op_t
|
|
{
|
|
ivd_ctl_flush_op_t s_ivd_op;
|
|
} imvcd_flush_dec_op_t;
|
|
|
|
typedef struct imvcd_get_buf_info_ip_t
|
|
{
|
|
ivd_ctl_getbufinfo_ip_t s_ivd_ip;
|
|
} imvcd_get_buf_info_ip_t;
|
|
|
|
typedef struct ivd_mvc_buf_info_t
|
|
{
|
|
UWORD16 u2_num_views;
|
|
} ivd_mvc_buf_info_t;
|
|
|
|
typedef struct imvcd_get_buf_info_op_t
|
|
{
|
|
ivd_ctl_getbufinfo_op_t s_ivd_op;
|
|
|
|
ivd_mvc_buf_info_t s_mvc_buf_info;
|
|
|
|
} imvcd_get_buf_info_op_t;
|
|
|
|
typedef struct imvcd_get_vui_ip_t
|
|
{
|
|
UWORD32 u4_size;
|
|
|
|
IVD_API_COMMAND_TYPE_T e_cmd;
|
|
|
|
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
} imvcd_get_vui_ip_t;
|
|
|
|
typedef struct imvcd_get_vui_op_t
|
|
{
|
|
bool b_is_vui_available;
|
|
|
|
UWORD32 u4_error_code;
|
|
|
|
UWORD8 u1_aspect_ratio_idc;
|
|
|
|
UWORD16 u2_sar_width;
|
|
|
|
UWORD16 u2_sar_height;
|
|
|
|
UWORD8 u1_overscan_appropriate_flag;
|
|
|
|
UWORD8 u1_video_format;
|
|
|
|
UWORD8 u1_video_full_range_flag;
|
|
|
|
UWORD8 u1_colour_primaries;
|
|
|
|
UWORD8 u1_tfr_chars;
|
|
|
|
UWORD8 u1_matrix_coeffs;
|
|
|
|
UWORD8 u1_cr_top_field;
|
|
|
|
UWORD8 u1_cr_bottom_field;
|
|
|
|
UWORD32 u4_num_units_in_tick;
|
|
|
|
UWORD32 u4_time_scale;
|
|
|
|
UWORD8 u1_fixed_frame_rate_flag;
|
|
|
|
UWORD8 u1_nal_hrd_params_present;
|
|
|
|
UWORD8 u1_vcl_hrd_params_present;
|
|
|
|
UWORD8 u1_low_delay_hrd_flag;
|
|
|
|
UWORD8 u1_pic_struct_present_flag;
|
|
|
|
UWORD8 u1_bitstream_restriction_flag;
|
|
|
|
UWORD8 u1_mv_over_pic_boundaries_flag;
|
|
|
|
UWORD32 u4_max_bytes_per_pic_denom;
|
|
|
|
UWORD32 u4_max_bits_per_mb_denom;
|
|
|
|
UWORD32 u4_log2_max_mv_length_horz;
|
|
|
|
UWORD32 u4_log2_max_mv_length_vert;
|
|
|
|
UWORD32 u4_num_reorder_frames;
|
|
|
|
UWORD32 u4_max_dec_frame_buffering;
|
|
|
|
} imvcd_get_vui_op_t;
|
|
|
|
#endif
|