1033 lines
32 KiB
C
1033 lines
32 KiB
C
/******************************************************************************
|
||
*
|
||
* Copyright (C) 2015 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 Name : ih264d.h */
|
||
/* */
|
||
/* Description : This file contains all the necessary structure and */
|
||
/* enumeration definitions needed for the Application */
|
||
/* Program Interface(API) of the Ittiam H264 ASP */
|
||
/* Decoder on Cortex A8 - Neon platform */
|
||
/* */
|
||
/* List of Functions : ih264d_api_function */
|
||
/* */
|
||
/* Issues / Problems : None */
|
||
/* */
|
||
/* Revision History : */
|
||
/* */
|
||
/* DD MM YYYY Author(s) Changes (Describe the changes made) */
|
||
/* 26 08 2010 100239(RCY) Draft */
|
||
/* */
|
||
/*****************************************************************************/
|
||
|
||
#ifndef _IH264D_H_
|
||
#define _IH264D_H_
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#include "iv.h"
|
||
#include "ivd.h"
|
||
|
||
|
||
/*****************************************************************************/
|
||
/* Constant Macros */
|
||
/*****************************************************************************/
|
||
#define IVD_ERROR_MASK 0xFF
|
||
|
||
/*****************************************************************************/
|
||
/* Function Macros */
|
||
/*****************************************************************************/
|
||
#define IS_IVD_CONCEALMENT_APPLIED(x) (x & (1 << IVD_APPLIEDCONCEALMENT))
|
||
#define IS_IVD_INSUFFICIENTDATA_ERROR(x) (x & (1 << IVD_INSUFFICIENTDATA))
|
||
#define IS_IVD_CORRUPTEDDATA_ERROR(x) (x & (1 << IVD_CORRUPTEDDATA))
|
||
#define IS_IVD_CORRUPTEDHEADER_ERROR(x) (x & (1 << IVD_CORRUPTEDHEADER))
|
||
#define IS_IVD_UNSUPPORTEDINPUT_ERROR(x) (x & (1 << IVD_UNSUPPORTEDINPUT))
|
||
#define IS_IVD_UNSUPPORTEDPARAM_ERROR(x) (x & (1 << IVD_UNSUPPORTEDPARAM))
|
||
#define IS_IVD_FATAL_ERROR(x) (x & (1 << IVD_FATALERROR))
|
||
#define IS_IVD_INVALID_BITSTREAM_ERROR(x) (x & (1 << IVD_INVALID_BITSTREAM))
|
||
#define IS_IVD_INCOMPLETE_BITSTREAM_ERROR(x) (x & (1 << IVD_INCOMPLETE_BITSTREAM))
|
||
|
||
|
||
/*****************************************************************************/
|
||
/* API Function Prototype */
|
||
/*****************************************************************************/
|
||
IV_API_CALL_STATUS_T ih264d_api_function(iv_obj_t *ps_handle, void *pv_api_ip,void *pv_api_op);
|
||
|
||
/*****************************************************************************/
|
||
/* Enums */
|
||
/*****************************************************************************/
|
||
/* Codec Error codes for H264 ASP Decoder */
|
||
|
||
typedef enum {
|
||
|
||
IH264D_VID_HDR_DEC_NUM_FRM_BUF_NOT_SUFFICIENT = IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS + 1,
|
||
IH264D_FRAME_INFO_OP_BUF_NULL,
|
||
IH264D_INSUFFICIENT_METADATA_BUFFER,
|
||
|
||
}IH264D_ERROR_CODES_T;
|
||
|
||
/*****************************************************************************/
|
||
/* Extended Structures */
|
||
/*****************************************************************************/
|
||
|
||
|
||
/*****************************************************************************/
|
||
/* Delete Codec */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct {
|
||
ivd_delete_ip_t s_ivd_delete_ip_t;
|
||
}ih264d_delete_ip_t;
|
||
|
||
|
||
typedef struct{
|
||
ivd_delete_op_t s_ivd_delete_op_t;
|
||
}ih264d_delete_op_t;
|
||
|
||
|
||
/*****************************************************************************/
|
||
/* Initialize decoder */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct {
|
||
ivd_create_ip_t s_ivd_create_ip_t;
|
||
|
||
/**
|
||
* enable_frm_info
|
||
*/
|
||
UWORD32 u4_enable_frame_info;
|
||
}ih264d_create_ip_t;
|
||
|
||
|
||
typedef struct{
|
||
ivd_create_op_t s_ivd_create_op_t;
|
||
}ih264d_create_op_t;
|
||
|
||
|
||
/*****************************************************************************/
|
||
/* Video Decode */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct {
|
||
ivd_video_decode_ip_t s_ivd_video_decode_ip_t;
|
||
|
||
/**
|
||
* 8x8 block QP map size
|
||
*/
|
||
UWORD32 u4_8x8_blk_qp_map_size;
|
||
|
||
/**
|
||
* 8x8 block QP map
|
||
*/
|
||
UWORD8 *pu1_8x8_blk_qp_map;
|
||
|
||
/**
|
||
* 8x8 block type map size
|
||
*/
|
||
UWORD32 u4_8x8_blk_type_map_size;
|
||
|
||
/**
|
||
* 8x8 block type map
|
||
*/
|
||
UWORD8 *pu1_8x8_blk_type_map;
|
||
}ih264d_video_decode_ip_t;
|
||
|
||
/*****************************************************************************/
|
||
/* QP and block type maps are defined for each 8x8 MB sub-block. */
|
||
/* QP can range from <0, 51> and block type can be INTER/INTRA/SKIP. */
|
||
/* */
|
||
/* Let’s say, a frame has a total of ‘m’ MBs (each 16x16). Since the QP */
|
||
/* and block type are defined for each 8x8 block, hence each MB has */
|
||
/* 4 entries giving m x 4 total entires for QP and block type map each. */
|
||
/* */
|
||
/* For example, for a frame of size 60x60 shown in the figure down, both */
|
||
/* maps (QP and MB type) have the same layout. */
|
||
/* Each block represents an 8x8 sub-block. Both width and height are aligned */
|
||
/* to next largest multiple of 8, 64 in this case. */
|
||
/* */
|
||
/* 0 8 16 24 32 40 48 56 64 */
|
||
/* 0 ------------------------------------------------ */
|
||
/* | 0th | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | */
|
||
/* 8 ------------------------------------------------ */
|
||
/* | 8th | 9th | 10th | - | - | - | - | - | */
|
||
/* 16 ------------------------------------------------ */
|
||
/* | - | - | - | - | - | - | - | - | */
|
||
/* 24 ------------------------------------------------ */
|
||
/* | - | - | - | - | - | - | - | - | */
|
||
/* 32 ------------------------------------------------ */
|
||
/* | - | - | - | - | - | - | - | - | */
|
||
/* 40 ------------------------------------------------ */
|
||
/* | - | - | - | - | - | - | - | - | */
|
||
/* 48 ------------------------------------------------ */
|
||
/* | - | - | - | - | - | - | - | - | */
|
||
/* 56 ------------------------------------------------ */
|
||
/* | - | - | - | - | - | - | - | - | */
|
||
/* 64 ------------------------------------------------ */
|
||
/* */
|
||
/*****************************************************************************/
|
||
|
||
typedef struct{
|
||
ivd_video_decode_op_t s_ivd_video_decode_op_t;
|
||
|
||
/**
|
||
* 8x8 block QP map size
|
||
*/
|
||
UWORD32 u4_8x8_blk_qp_map_size;
|
||
|
||
/**
|
||
* 8x8 block QP map
|
||
*/
|
||
UWORD8 *pu1_8x8_blk_qp_map;
|
||
|
||
/**
|
||
* 8x8 block type map size
|
||
*/
|
||
UWORD32 u4_8x8_blk_type_map_size;
|
||
|
||
/**
|
||
* 8x8 block type map
|
||
*/
|
||
UWORD8 *pu1_8x8_blk_type_map;
|
||
}ih264d_video_decode_op_t;
|
||
|
||
|
||
/*****************************************************************************/
|
||
/* Get Display Frame */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct
|
||
{
|
||
ivd_get_display_frame_ip_t s_ivd_get_display_frame_ip_t;
|
||
}ih264d_get_display_frame_ip_t;
|
||
|
||
|
||
typedef struct
|
||
{
|
||
ivd_get_display_frame_op_t s_ivd_get_display_frame_op_t;
|
||
}ih264d_get_display_frame_op_t;
|
||
|
||
/*****************************************************************************/
|
||
/* Set Display Frame */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct
|
||
{
|
||
ivd_set_display_frame_ip_t s_ivd_set_display_frame_ip_t;
|
||
}ih264d_set_display_frame_ip_t;
|
||
|
||
|
||
typedef struct
|
||
{
|
||
ivd_set_display_frame_op_t s_ivd_set_display_frame_op_t;
|
||
}ih264d_set_display_frame_op_t;
|
||
|
||
/*****************************************************************************/
|
||
/* Release Display Buffers */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct
|
||
{
|
||
ivd_rel_display_frame_ip_t s_ivd_rel_display_frame_ip_t;
|
||
}ih264d_rel_display_frame_ip_t;
|
||
|
||
|
||
typedef struct
|
||
{
|
||
ivd_rel_display_frame_op_t s_ivd_rel_display_frame_op_t;
|
||
}ih264d_rel_display_frame_op_t;
|
||
|
||
typedef enum {
|
||
/** Set number of cores/threads to be used */
|
||
IH264D_CMD_CTL_SET_NUM_CORES = IVD_CMD_CTL_CODEC_SUBCMD_START,
|
||
|
||
/** Set processor details */
|
||
IH264D_CMD_CTL_SET_PROCESSOR = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x001,
|
||
|
||
/** Get display buffer dimensions */
|
||
IH264D_CMD_CTL_GET_BUFFER_DIMENSIONS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x100,
|
||
|
||
/** Get VUI parameters */
|
||
IH264D_CMD_CTL_GET_VUI_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x101,
|
||
|
||
/** Enable/disable GPU, supported on select platforms */
|
||
IH264D_CMD_CTL_GPU_ENABLE_DISABLE = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x200,
|
||
|
||
/** Set degrade level */
|
||
IH264D_CMD_CTL_DEGRADE = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x300,
|
||
|
||
/** Get SEI MDCV parameters */
|
||
IH264D_CMD_CTL_GET_SEI_MDCV_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x301,
|
||
|
||
/** Get SEI CLL parameters */
|
||
IH264D_CMD_CTL_GET_SEI_CLL_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x302,
|
||
|
||
/** Get SEI AVE parameters */
|
||
IH264D_CMD_CTL_GET_SEI_AVE_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x303,
|
||
|
||
/** Get SEI CCV parameters */
|
||
IH264D_CMD_CTL_GET_SEI_CCV_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x304,
|
||
|
||
/** Get SEI SII parameters */
|
||
IH264D_CMD_CTL_GET_SEI_SII_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x305,
|
||
|
||
/** Get SEI FGC parameters */
|
||
IH264D_CMD_CTL_GET_SEI_FGC_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x306
|
||
|
||
}IH264D_CMD_CTL_SUB_CMDS;
|
||
/*****************************************************************************/
|
||
/* Video control Flush */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct{
|
||
ivd_ctl_flush_ip_t s_ivd_ctl_flush_ip_t;
|
||
}ih264d_ctl_flush_ip_t;
|
||
|
||
|
||
typedef struct{
|
||
ivd_ctl_flush_op_t s_ivd_ctl_flush_op_t;
|
||
}ih264d_ctl_flush_op_t;
|
||
|
||
/*****************************************************************************/
|
||
/* Video control reset */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct{
|
||
ivd_ctl_reset_ip_t s_ivd_ctl_reset_ip_t;
|
||
}ih264d_ctl_reset_ip_t;
|
||
|
||
|
||
typedef struct{
|
||
ivd_ctl_reset_op_t s_ivd_ctl_reset_op_t;
|
||
}ih264d_ctl_reset_op_t;
|
||
|
||
|
||
/*****************************************************************************/
|
||
/* Video control Set Params */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct {
|
||
ivd_ctl_set_config_ip_t s_ivd_ctl_set_config_ip_t;
|
||
}ih264d_ctl_set_config_ip_t;
|
||
|
||
|
||
typedef struct{
|
||
ivd_ctl_set_config_op_t s_ivd_ctl_set_config_op_t;
|
||
}ih264d_ctl_set_config_op_t;
|
||
|
||
/*****************************************************************************/
|
||
/* Video control:Get Buf Info */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct{
|
||
ivd_ctl_getbufinfo_ip_t s_ivd_ctl_getbufinfo_ip_t;
|
||
}ih264d_ctl_getbufinfo_ip_t;
|
||
|
||
|
||
|
||
typedef struct{
|
||
ivd_ctl_getbufinfo_op_t s_ivd_ctl_getbufinfo_op_t;
|
||
}ih264d_ctl_getbufinfo_op_t;
|
||
|
||
|
||
/*****************************************************************************/
|
||
/* Video control:Getstatus Call */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct{
|
||
ivd_ctl_getstatus_ip_t s_ivd_ctl_getstatus_ip_t;
|
||
}ih264d_ctl_getstatus_ip_t;
|
||
|
||
|
||
|
||
typedef struct{
|
||
ivd_ctl_getstatus_op_t s_ivd_ctl_getstatus_op_t;
|
||
}ih264d_ctl_getstatus_op_t;
|
||
|
||
|
||
/*****************************************************************************/
|
||
/* Video control:Get Version Info */
|
||
/*****************************************************************************/
|
||
|
||
|
||
typedef struct{
|
||
ivd_ctl_getversioninfo_ip_t s_ivd_ctl_getversioninfo_ip_t;
|
||
}ih264d_ctl_getversioninfo_ip_t;
|
||
|
||
|
||
|
||
typedef struct{
|
||
ivd_ctl_getversioninfo_op_t s_ivd_ctl_getversioninfo_op_t;
|
||
}ih264d_ctl_getversioninfo_op_t;
|
||
|
||
typedef struct{
|
||
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* cmd
|
||
*/
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
|
||
/**
|
||
* sub_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;
|
||
|
||
}ih264d_ctl_degrade_ip_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* error_code
|
||
*/
|
||
UWORD32 u4_error_code;
|
||
}ih264d_ctl_degrade_op_t;
|
||
|
||
typedef struct{
|
||
UWORD32 u4_size;
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
UWORD32 u4_disable_deblk_level;
|
||
}ih264d_ctl_disable_deblock_ip_t;
|
||
|
||
typedef struct{
|
||
UWORD32 u4_size;
|
||
UWORD32 u4_error_code;
|
||
}ih264d_ctl_disable_deblock_op_t;
|
||
|
||
|
||
typedef struct{
|
||
UWORD32 u4_size;
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
UWORD32 u4_num_cores;
|
||
}ih264d_ctl_set_num_cores_ip_t;
|
||
|
||
typedef struct{
|
||
UWORD32 u4_size;
|
||
UWORD32 u4_error_code;
|
||
}ih264d_ctl_set_num_cores_op_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* i4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
/**
|
||
* cmd
|
||
*/
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
/**
|
||
* sub cmd
|
||
*/
|
||
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
/**
|
||
* Processor type
|
||
*/
|
||
UWORD32 u4_arch;
|
||
/**
|
||
* SOC type
|
||
*/
|
||
UWORD32 u4_soc;
|
||
|
||
/**
|
||
* num_cores
|
||
*/
|
||
UWORD32 u4_num_cores;
|
||
|
||
}ih264d_ctl_set_processor_ip_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* i4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
/**
|
||
* error_code
|
||
*/
|
||
UWORD32 u4_error_code;
|
||
}ih264d_ctl_set_processor_op_t;
|
||
|
||
typedef struct{
|
||
UWORD32 u4_size;
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
}ih264d_ctl_get_frame_dimensions_ip_t;
|
||
|
||
|
||
typedef struct{
|
||
UWORD32 u4_size;
|
||
UWORD32 u4_error_code;
|
||
UWORD32 u4_x_offset[3];
|
||
UWORD32 u4_y_offset[3];
|
||
UWORD32 u4_disp_wd[3];
|
||
UWORD32 u4_disp_ht[3];
|
||
UWORD32 u4_buffer_wd[3];
|
||
UWORD32 u4_buffer_ht[3];
|
||
}ih264d_ctl_get_frame_dimensions_op_t;
|
||
|
||
typedef struct
|
||
{
|
||
UWORD32 u4_size;
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
}ih264d_ctl_get_vui_params_ip_t;
|
||
|
||
typedef struct
|
||
{
|
||
UWORD32 u4_size;
|
||
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;
|
||
}ih264d_ctl_get_vui_params_op_t;
|
||
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* cmd
|
||
*/
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
|
||
/**
|
||
* sub_cmd
|
||
*/
|
||
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
}ih264d_ctl_get_sei_mdcv_params_ip_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* error_code
|
||
*/
|
||
UWORD32 u4_error_code;
|
||
|
||
/**
|
||
* Array to store the display_primaries_x values
|
||
*/
|
||
UWORD16 au2_display_primaries_x[NUM_SEI_MDCV_PRIMARIES];
|
||
|
||
/**
|
||
* Array to store the display_primaries_y values
|
||
*/
|
||
UWORD16 au2_display_primaries_y[NUM_SEI_MDCV_PRIMARIES];
|
||
|
||
/**
|
||
* Variable to store the white point x value
|
||
*/
|
||
UWORD16 u2_white_point_x;
|
||
|
||
/**
|
||
* Variable to store the white point y value
|
||
*/
|
||
UWORD16 u2_white_point_y;
|
||
|
||
/**
|
||
* Variable to store the max display mastering luminance value
|
||
*/
|
||
UWORD32 u4_max_display_mastering_luminance;
|
||
|
||
/**
|
||
* Variable to store the min display mastering luminance value
|
||
*/
|
||
UWORD32 u4_min_display_mastering_luminance;
|
||
}ih264d_ctl_get_sei_mdcv_params_op_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* cmd
|
||
*/
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
|
||
/**
|
||
* sub_cmd
|
||
*/
|
||
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
}ih264d_ctl_get_sei_cll_params_ip_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* error_code
|
||
*/
|
||
UWORD32 u4_error_code;
|
||
|
||
/**
|
||
* The maximum pixel intensity of all samples
|
||
*/
|
||
UWORD16 u2_max_content_light_level;
|
||
|
||
/**
|
||
* The average pixel intensity of all samples
|
||
*/
|
||
UWORD16 u2_max_pic_average_light_level;
|
||
} ih264d_ctl_get_sei_cll_params_op_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* cmd
|
||
*/
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
|
||
/**
|
||
* sub_cmd
|
||
*/
|
||
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
}ih264d_ctl_get_sei_ave_params_ip_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* error_code
|
||
*/
|
||
UWORD32 u4_error_code;
|
||
|
||
/**
|
||
* specifies the environmental illluminance of the ambient viewing environment
|
||
*/
|
||
UWORD32 u4_ambient_illuminance;
|
||
|
||
/*
|
||
* specify the normalized x chromaticity coordinates of the
|
||
* environmental ambient light in the nominal viewing environment
|
||
*/
|
||
UWORD16 u2_ambient_light_x;
|
||
|
||
/*
|
||
* specify the normalized y chromaticity coordinates of the
|
||
* environmental ambient light in the nominal viewing environment
|
||
*/
|
||
UWORD16 u2_ambient_light_y;
|
||
} ih264d_ctl_get_sei_ave_params_op_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* cmd
|
||
*/
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
|
||
/**
|
||
* sub_cmd
|
||
*/
|
||
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
}ih264d_ctl_get_sei_ccv_params_ip_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* error_code
|
||
*/
|
||
UWORD32 u4_error_code;
|
||
|
||
/*
|
||
* Flag used to control persistence of CCV SEI messages
|
||
*/
|
||
UWORD8 u1_ccv_cancel_flag;
|
||
|
||
/*
|
||
* specifies the persistence of the CCV SEI message for the current layer
|
||
*/
|
||
UWORD8 u1_ccv_persistence_flag;
|
||
|
||
/*
|
||
* specifies the presence of syntax elements ccv_primaries_x and ccv_primaries_y
|
||
*/
|
||
UWORD8 u1_ccv_primaries_present_flag;
|
||
|
||
/*
|
||
* specifies that the syntax element ccv_min_luminance_value is present
|
||
*/
|
||
UWORD8 u1_ccv_min_luminance_value_present_flag;
|
||
|
||
/*
|
||
* specifies that the syntax element ccv_max_luminance_value is present
|
||
*/
|
||
UWORD8 u1_ccv_max_luminance_value_present_flag;
|
||
|
||
/*
|
||
* specifies that the syntax element ccv_avg_luminance_value is present
|
||
*/
|
||
UWORD8 u1_ccv_avg_luminance_value_present_flag;
|
||
|
||
/*
|
||
* shall be equal to 0 in bitstreams conforming to this version. Other values
|
||
* for reserved_zero_2bits are reserved for future use
|
||
*/
|
||
UWORD8 u1_ccv_reserved_zero_2bits;
|
||
|
||
/*
|
||
* specify the normalized x chromaticity coordinates of the colour
|
||
* primary component c of the nominal content colour volume
|
||
*/
|
||
WORD32 ai4_ccv_primaries_x[NUM_SEI_CCV_PRIMARIES];
|
||
|
||
/*
|
||
* specify the normalized y chromaticity coordinates of the colour
|
||
* primary component c of the nominal content colour volume
|
||
*/
|
||
WORD32 ai4_ccv_primaries_y[NUM_SEI_CCV_PRIMARIES];
|
||
|
||
/*
|
||
* specifies the normalized minimum luminance value
|
||
*/
|
||
UWORD32 u4_ccv_min_luminance_value;
|
||
|
||
/*
|
||
* specifies the normalized maximum luminance value
|
||
*/
|
||
UWORD32 u4_ccv_max_luminance_value;
|
||
|
||
/*
|
||
* specifies the normalized average luminance value
|
||
*/
|
||
UWORD32 u4_ccv_avg_luminance_value;
|
||
} ih264d_ctl_get_sei_ccv_params_op_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* cmd
|
||
*/
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
|
||
/**
|
||
* sub_cmd
|
||
*/
|
||
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
} ih264d_ctl_get_sei_sii_params_ip_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* error_code
|
||
*/
|
||
UWORD32 u4_error_code;
|
||
|
||
/**
|
||
* specifies if the sei sii is enabled
|
||
*/
|
||
UWORD8 u1_shutter_interval_info_present_flag;
|
||
|
||
/**
|
||
* specifies the shutter interval temporal sub-layer index
|
||
* of the current picture
|
||
*/
|
||
UWORD32 u4_sii_sub_layer_idx;
|
||
|
||
/**
|
||
* specify the number of time units that pass in one second
|
||
*/
|
||
UWORD32 u4_sii_time_scale;
|
||
|
||
/**
|
||
* specifies that the indicated shutter interval is the same for all
|
||
* pictures in the coded video sequence
|
||
*/
|
||
UWORD8 u1_fixed_shutter_interval_within_cvs_flag;
|
||
|
||
/**
|
||
* specifies the the number of time units of a clock operating at the
|
||
* frequency sii_time_scale Hz that corresponds to the indicated shutter
|
||
* interval of each picture in the coded video sequence
|
||
*/
|
||
UWORD32 u4_sii_num_units_in_shutter_interval;
|
||
|
||
/**
|
||
* sii_max_sub_layers_minus1 plus 1 specifies the maximum number of
|
||
* shutter interval temporal sub-layers indexes that may be present
|
||
* in the coded video sequence
|
||
*/
|
||
UWORD8 u1_sii_max_sub_layers_minus1;
|
||
|
||
/**
|
||
* specifies the number of time units of a clock operating at the
|
||
* frequency sii_time_scale Hz that corresponds to the shutter
|
||
* interval of each picture in the coded video sequence
|
||
*/
|
||
UWORD32 au4_sub_layer_num_units_in_shutter_interval[SII_MAX_SUB_LAYERS];
|
||
|
||
} ih264d_ctl_get_sei_sii_params_op_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* cmd
|
||
*/
|
||
IVD_API_COMMAND_TYPE_T e_cmd;
|
||
|
||
/**
|
||
* sub_cmd
|
||
*/
|
||
IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
} ih264d_ctl_get_sei_fgc_params_ip_t;
|
||
|
||
typedef struct
|
||
{
|
||
/**
|
||
* u4_size
|
||
*/
|
||
UWORD32 u4_size;
|
||
|
||
/**
|
||
* error_code
|
||
*/
|
||
UWORD32 u4_error_code;
|
||
|
||
/**
|
||
* Flag to control the presence of FGC SEI params
|
||
*/
|
||
UWORD8 u1_film_grain_characteristics_cancel_flag;
|
||
|
||
/**
|
||
* Specifies the pic order count
|
||
*/
|
||
WORD32 i4_poc;
|
||
|
||
/**
|
||
* Specifies IDR pic ID
|
||
*/
|
||
UWORD32 u4_idr_pic_id;
|
||
|
||
/**
|
||
* Specifies film grain model for simulation
|
||
*/
|
||
UWORD8 u1_film_grain_model_id;
|
||
|
||
/**
|
||
* Specifies separate color format for decoded samples and grain
|
||
*/
|
||
UWORD8 u1_separate_colour_description_present_flag;
|
||
|
||
/**
|
||
* Specifies the bit depth used for the luma component
|
||
*/
|
||
UWORD8 u1_film_grain_bit_depth_luma_minus8;
|
||
|
||
/**
|
||
* Specifies the bit depth used for the Cb and Cr components
|
||
*/
|
||
UWORD8 u1_film_grain_bit_depth_chroma_minus8;
|
||
|
||
/**
|
||
* Specifies the colour space of the FGC in SEI
|
||
*/
|
||
UWORD8 u1_film_grain_full_range_flag;
|
||
|
||
/**
|
||
* Specifies the colour space of the FGC in SEI
|
||
*/
|
||
UWORD8 u1_film_grain_colour_primaries;
|
||
|
||
/**
|
||
* Specifies the colour space of the FGC in SEI
|
||
*/
|
||
UWORD8 u1_film_grain_transfer_characteristics;
|
||
|
||
/**
|
||
* Specifies the colour space of the FGC in SEI
|
||
*/
|
||
UWORD8 u1_film_grain_matrix_coefficients;
|
||
|
||
/**
|
||
* identifies the blending mode used to blend the simulated film grain with the decoded images
|
||
*/
|
||
UWORD8 u1_blending_mode_id;
|
||
|
||
/**
|
||
* Specifies a scale factor used in the film grain characterization equations
|
||
*/
|
||
UWORD8 u1_log2_scale_factor;
|
||
|
||
/**
|
||
* Indicates whether film grain is modelled or not on the colour component
|
||
*/
|
||
UWORD8 au1_comp_model_present_flag[SEI_FGC_NUM_COLOUR_COMPONENTS];
|
||
|
||
/**
|
||
* Specifies the number of intensity intervals for which
|
||
* a specific set of model values has been estimated
|
||
*/
|
||
UWORD8 au1_num_intensity_intervals_minus1[SEI_FGC_NUM_COLOUR_COMPONENTS];
|
||
|
||
/**
|
||
* Specifies the number of model values present for each intensity interval in which
|
||
* the film grain has been modelled
|
||
*/
|
||
UWORD8 au1_num_model_values_minus1[SEI_FGC_NUM_COLOUR_COMPONENTS];
|
||
|
||
/**
|
||
* Specifies the lower bound of the interval of intensity levels for which
|
||
* the set of model values applies
|
||
*/
|
||
UWORD8 au1_intensity_interval_lower_bound[SEI_FGC_NUM_COLOUR_COMPONENTS]
|
||
[SEI_FGC_MAX_NUM_INTENSITY_INTERVALS];
|
||
|
||
/**
|
||
* Specifies the upper bound of the interval of intensity levels for which
|
||
* the set of model values applies
|
||
*/
|
||
UWORD8 au1_intensity_interval_upper_bound[SEI_FGC_NUM_COLOUR_COMPONENTS]
|
||
[SEI_FGC_MAX_NUM_INTENSITY_INTERVALS];
|
||
|
||
/**
|
||
* Represents each one of the model values present for
|
||
* the colour component and intensity interval
|
||
*/
|
||
WORD32 ai4_comp_model_value[SEI_FGC_NUM_COLOUR_COMPONENTS][SEI_FGC_MAX_NUM_INTENSITY_INTERVALS]
|
||
[SEI_FGC_MAX_NUM_MODEL_VALUES];
|
||
|
||
/**
|
||
* Specifies the persistence of the film grain characteristics SEI message
|
||
*/
|
||
UWORD32 u4_film_grain_characteristics_repetition_period;
|
||
} ih264d_ctl_get_sei_fgc_params_op_t;
|
||
|
||
#ifdef __cplusplus
|
||
} /* closing brace for extern "C" */
|
||
#endif
|
||
#endif /* _IH264D_H_ */
|