| /****************************************************************************** |
| * |
| * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore |
| * |
| * 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. |
| * |
| ******************************************************************************/ |
| /** |
| ******************************************************************************* |
| * @file |
| * ihevcd_cxa.h |
| * |
| * @brief |
| * This file contains all the necessary structure and enumeration |
| * definitions needed for the Application Program Interface(API) of the |
| * Ittiam HEVC decoder on Cortex Ax |
| * |
| * @author |
| * Harish |
| * |
| * @remarks |
| * None |
| * |
| ******************************************************************************* |
| */ |
| #ifndef __IHEVCD_CXA_H__ |
| #define __IHEVCD_CXA_H__ |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| #include "iv.h" |
| #include "ivd.h" |
| |
| |
| /*****************************************************************************/ |
| /* Constant Macros */ |
| /*****************************************************************************/ |
| |
| /*****************************************************************************/ |
| /* 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 ihevcd_cxa_api_function(iv_obj_t *ps_handle, |
| void *pv_api_ip, |
| void *pv_api_op); |
| |
| /*****************************************************************************/ |
| /* Enums */ |
| /*****************************************************************************/ |
| /* Codec Error codes for HEVC Decoder */ |
| |
| |
| typedef enum { |
| /** |
| * No error |
| */ |
| IHEVCD_SUCCESS = 0, |
| |
| /** |
| * Codec calls done without successful init |
| */ |
| IHEVCD_INIT_NOT_DONE = IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS, |
| |
| |
| IHEVCD_CXA_VID_HDR_DEC_NUM_FRM_BUF_NOT_SUFFICIENT, |
| |
| /** |
| * Unsupported level passed as an argument |
| */ |
| IHEVCD_LEVEL_UNSUPPORTED, |
| /** |
| * Unsupported number of reference pictures passed as an argument |
| */ |
| IHEVCD_NUM_REF_UNSUPPORTED, |
| /** |
| * Unsupported number of reorder pictures passed as an argument |
| */ |
| IHEVCD_NUM_REORDER_UNSUPPORTED, |
| /** |
| * Unsupported number of extra display pictures passed as an argument |
| */ |
| IHEVCD_NUM_EXTRA_DISP_UNSUPPORTED, |
| /** |
| * Invalid display stride requested. |
| */ |
| IHEVCD_INVALID_DISP_STRD, |
| |
| /** |
| * Reached end of sequence |
| */ |
| IHEVCD_END_OF_SEQUENCE, |
| |
| /** |
| * Width/height greater than max width and max height |
| */ |
| IHEVCD_UNSUPPORTED_DIMENSIONS, |
| |
| /** |
| * Buffer size to hold version string is not sufficient |
| * Allocate more to hold version string |
| */ |
| IHEVCD_CXA_VERS_BUF_INSUFFICIENT, |
| /** |
| * Stream chroma format other than YUV420 |
| */ |
| IHEVCD_UNSUPPORTED_CHROMA_FMT_IDC, |
| |
| /** |
| * Generic failure |
| */ |
| IHEVCD_FAIL = 0x7FFFFFFF |
| |
| |
| }IHEVCD_CXA_ERROR_CODES_T; |
| |
| /*****************************************************************************/ |
| /* Extended Structures */ |
| /*****************************************************************************/ |
| |
| |
| /*****************************************************************************/ |
| /* Delete Codec */ |
| /*****************************************************************************/ |
| |
| typedef struct { |
| ivd_delete_ip_t s_ivd_delete_ip_t; |
| }ihevcd_cxa_delete_ip_t; |
| |
| |
| typedef struct { |
| ivd_delete_op_t s_ivd_delete_op_t; |
| }ihevcd_cxa_delete_op_t; |
| |
| /*****************************************************************************/ |
| /* Initialize decoder */ |
| /*****************************************************************************/ |
| |
| typedef struct { |
| ivd_create_ip_t s_ivd_create_ip_t; |
| }ihevcd_cxa_create_ip_t; |
| |
| |
| typedef struct { |
| ivd_create_op_t s_ivd_create_op_t; |
| }ihevcd_cxa_create_op_t; |
| |
| /*****************************************************************************/ |
| /* Video Decode */ |
| /*****************************************************************************/ |
| |
| typedef struct { |
| |
| /** |
| * ivd_video_decode_ip_t |
| */ |
| ivd_video_decode_ip_t s_ivd_video_decode_ip_t; |
| }ihevcd_cxa_video_decode_ip_t; |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_video_decode_op_t |
| */ |
| ivd_video_decode_op_t s_ivd_video_decode_op_t; |
| }ihevcd_cxa_video_decode_op_t; |
| |
| |
| /*****************************************************************************/ |
| /* Get Display Frame */ |
| /*****************************************************************************/ |
| |
| typedef struct |
| { |
| /** |
| * ivd_get_display_frame_ip_t |
| */ |
| ivd_get_display_frame_ip_t s_ivd_get_display_frame_ip_t; |
| }ihevcd_cxa_get_display_frame_ip_t; |
| |
| |
| typedef struct |
| { |
| /** |
| * ivd_get_display_frame_op_t |
| */ |
| ivd_get_display_frame_op_t s_ivd_get_display_frame_op_t; |
| }ihevcd_cxa_get_display_frame_op_t; |
| |
| /*****************************************************************************/ |
| /* Set Display Frame */ |
| /*****************************************************************************/ |
| |
| |
| typedef struct |
| { |
| /** |
| * ivd_set_display_frame_ip_t |
| */ |
| ivd_set_display_frame_ip_t s_ivd_set_display_frame_ip_t; |
| }ihevcd_cxa_set_display_frame_ip_t; |
| |
| |
| typedef struct |
| { |
| /** |
| * ivd_set_display_frame_op_t |
| */ |
| ivd_set_display_frame_op_t s_ivd_set_display_frame_op_t; |
| }ihevcd_cxa_set_display_frame_op_t; |
| |
| /*****************************************************************************/ |
| /* Release Display Buffers */ |
| /*****************************************************************************/ |
| |
| |
| typedef struct |
| { |
| /** |
| * ivd_rel_display_frame_ip_t |
| */ |
| |
| ivd_rel_display_frame_ip_t s_ivd_rel_display_frame_ip_t; |
| }ihevcd_cxa_rel_display_frame_ip_t; |
| |
| |
| typedef struct |
| { |
| /** |
| * ivd_rel_display_frame_op_t |
| */ |
| ivd_rel_display_frame_op_t s_ivd_rel_display_frame_op_t; |
| }ihevcd_cxa_rel_display_frame_op_t; |
| |
| |
| typedef enum |
| { |
| /** Set number of cores/threads to be used */ |
| IHEVCD_CXA_CMD_CTL_SET_NUM_CORES = IVD_CMD_CTL_CODEC_SUBCMD_START, |
| |
| /** Set processor details */ |
| IHEVCD_CXA_CMD_CTL_SET_PROCESSOR = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x001, |
| |
| /** Get display buffer dimensions */ |
| IHEVCD_CXA_CMD_CTL_GET_BUFFER_DIMENSIONS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x100, |
| |
| /** Get VUI parameters */ |
| IHEVCD_CXA_CMD_CTL_GET_VUI_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x101, |
| |
| /** Get SEI Mastering display color volume parameters */ |
| IHEVCD_CXA_CMD_CTL_GET_SEI_MASTERING_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x102, |
| |
| /** Enable/disable GPU, supported on select platforms */ |
| IHEVCD_CXA_CMD_CTL_GPU_ENABLE_DISABLE = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x200, |
| |
| /** Set degrade level */ |
| IHEVCD_CXA_CMD_CTL_DEGRADE = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x300 |
| }IHEVCD_CXA_CMD_CTL_SUB_CMDS; |
| /*****************************************************************************/ |
| /* Video control Flush */ |
| /*****************************************************************************/ |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_flush_ip_t |
| */ |
| ivd_ctl_flush_ip_t s_ivd_ctl_flush_ip_t; |
| }ihevcd_cxa_ctl_flush_ip_t; |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_flush_op_t |
| */ |
| ivd_ctl_flush_op_t s_ivd_ctl_flush_op_t; |
| }ihevcd_cxa_ctl_flush_op_t; |
| |
| /*****************************************************************************/ |
| /* Video control reset */ |
| /*****************************************************************************/ |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_reset_ip_t |
| */ |
| ivd_ctl_reset_ip_t s_ivd_ctl_reset_ip_t; |
| }ihevcd_cxa_ctl_reset_ip_t; |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_reset_op_t |
| */ |
| ivd_ctl_reset_op_t s_ivd_ctl_reset_op_t; |
| }ihevcd_cxa_ctl_reset_op_t; |
| |
| |
| /*****************************************************************************/ |
| /* Video control Set Params */ |
| /*****************************************************************************/ |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_set_config_ip_t |
| */ |
| ivd_ctl_set_config_ip_t s_ivd_ctl_set_config_ip_t; |
| }ihevcd_cxa_ctl_set_config_ip_t; |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_set_config_op_t |
| */ |
| ivd_ctl_set_config_op_t s_ivd_ctl_set_config_op_t; |
| }ihevcd_cxa_ctl_set_config_op_t; |
| |
| /*****************************************************************************/ |
| /* Video control:Get Buf Info */ |
| /*****************************************************************************/ |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_getbufinfo_ip_t |
| */ |
| ivd_ctl_getbufinfo_ip_t s_ivd_ctl_getbufinfo_ip_t; |
| }ihevcd_cxa_ctl_getbufinfo_ip_t; |
| |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_getbufinfo_op_t |
| */ |
| ivd_ctl_getbufinfo_op_t s_ivd_ctl_getbufinfo_op_t; |
| }ihevcd_cxa_ctl_getbufinfo_op_t; |
| |
| |
| /*****************************************************************************/ |
| /* Video control:Getstatus Call */ |
| /*****************************************************************************/ |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_getstatus_ip_t |
| */ |
| ivd_ctl_getstatus_ip_t s_ivd_ctl_getstatus_ip_t; |
| }ihevcd_cxa_ctl_getstatus_ip_t; |
| |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_getstatus_op_t |
| */ |
| ivd_ctl_getstatus_op_t s_ivd_ctl_getstatus_op_t; |
| |
| /** |
| * Height of the coding picture without cropping |
| */ |
| UWORD32 u4_coded_pic_ht; |
| |
| /** |
| * Width of the coding picture without cropping |
| */ |
| UWORD32 u4_coded_pic_wd; |
| }ihevcd_cxa_ctl_getstatus_op_t; |
| |
| |
| /*****************************************************************************/ |
| /* Video control:Get Version Info */ |
| /*****************************************************************************/ |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_getversioninfo_ip_t |
| */ |
| ivd_ctl_getversioninfo_ip_t s_ivd_ctl_getversioninfo_ip_t; |
| }ihevcd_cxa_ctl_getversioninfo_ip_t; |
| |
| |
| |
| typedef struct { |
| |
| /** |
| * ivd_ctl_getversioninfo_op_t |
| */ |
| ivd_ctl_getversioninfo_op_t s_ivd_ctl_getversioninfo_op_t; |
| }ihevcd_cxa_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 |
| * 0 : Disable SAO |
| * 1 : Disable deblocking |
| * 2 : Faster inter prediction filters |
| * 3 : Fastest inter prediction filters |
| */ |
| WORD32 i4_degrade_type; |
| |
| }ihevcd_cxa_ctl_degrade_ip_t; |
| |
| typedef struct |
| { |
| /** |
| * u4_size |
| */ |
| UWORD32 u4_size; |
| |
| /** |
| * error_code |
| */ |
| UWORD32 u4_error_code; |
| }ihevcd_cxa_ctl_degrade_op_t; |
| |
| typedef struct |
| { |
| |
| /** |
| * size |
| */ |
| UWORD32 u4_size; |
| |
| /** |
| * cmd |
| */ |
| IVD_API_COMMAND_TYPE_T e_cmd; |
| |
| /** |
| * sub_cmd |
| */ |
| IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; |
| |
| /** |
| * num_cores |
| */ |
| UWORD32 u4_num_cores; |
| }ihevcd_cxa_ctl_set_num_cores_ip_t; |
| |
| typedef struct |
| { |
| |
| /** |
| * size |
| */ |
| UWORD32 u4_size; |
| |
| /** |
| * error_code |
| */ |
| UWORD32 u4_error_code; |
| }ihevcd_cxa_ctl_set_num_cores_op_t; |
| |
| typedef struct |
| { |
| /** |
| * 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; |
| |
| }ihevcd_cxa_ctl_set_processor_ip_t; |
| |
| typedef struct |
| { |
| /** |
| * size |
| */ |
| UWORD32 u4_size; |
| /** |
| * error_code |
| */ |
| UWORD32 u4_error_code; |
| }ihevcd_cxa_ctl_set_processor_op_t; |
| |
| typedef struct |
| { |
| |
| /** |
| * size |
| */ |
| UWORD32 u4_size; |
| |
| /** |
| * cmd |
| */ |
| IVD_API_COMMAND_TYPE_T e_cmd; |
| |
| /** |
| * sub cmd |
| */ |
| IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; |
| }ihevcd_cxa_ctl_get_frame_dimensions_ip_t; |
| |
| |
| typedef struct { |
| |
| /** |
| * size |
| */ |
| UWORD32 u4_size; |
| |
| /** |
| * error_code |
| */ |
| UWORD32 u4_error_code; |
| |
| /** |
| * x_offset[3] |
| */ |
| UWORD32 u4_x_offset[3]; |
| |
| /** |
| * y_offset[3] |
| */ |
| UWORD32 u4_y_offset[3]; |
| |
| /** |
| * disp_wd[3] |
| */ |
| UWORD32 u4_disp_wd[3]; |
| |
| /** |
| * disp_ht[3] |
| */ |
| UWORD32 u4_disp_ht[3]; |
| |
| /** |
| * buffer_wd[3] |
| */ |
| UWORD32 u4_buffer_wd[3]; |
| |
| /** |
| * buffer_ht[3] |
| */ |
| UWORD32 u4_buffer_ht[3]; |
| }ihevcd_cxa_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; |
| }ihevcd_cxa_ctl_get_vui_params_ip_t; |
| |
| typedef struct { |
| UWORD32 u4_size; |
| UWORD32 u4_error_code; |
| |
| /** |
| * indicates the presence of aspect_ratio |
| */ |
| UWORD8 u1_aspect_ratio_info_present_flag; |
| |
| /** |
| * specifies the aspect ratio of the luma samples |
| */ |
| UWORD8 u1_aspect_ratio_idc; |
| |
| /** |
| * width of the luma samples. user dependent |
| */ |
| UWORD16 u2_sar_width; |
| |
| /** |
| * hieght of the luma samples. user dependent |
| */ |
| UWORD16 u2_sar_height; |
| |
| /** |
| * if 1, specifies that the overscan_appropriate_flag is present |
| * if 0, the preferred display method for the video signal is unspecified |
| */ |
| UWORD8 u1_overscan_info_present_flag; |
| |
| /** |
| * if 1,indicates that the cropped decoded pictures output |
| * are suitable for display using overscan |
| */ |
| UWORD8 u1_overscan_appropriate_flag; |
| |
| /** |
| * if 1 specifies that video_format, video_full_range_flag and |
| * colour_description_present_flag are present |
| */ |
| UWORD8 u1_video_signal_type_present_flag; |
| |
| /** |
| * |
| */ |
| UWORD8 u1_video_format; |
| |
| /** |
| * indicates the black level and range of the luma and chroma signals |
| */ |
| UWORD8 u1_video_full_range_flag; |
| |
| /** |
| * if 1,to 1 specifies that colour_primaries, transfer_characteristics |
| * and matrix_coefficients are present |
| */ |
| UWORD8 u1_colour_description_present_flag; |
| |
| /** |
| * indicates the chromaticity coordinates of the source primaries |
| */ |
| UWORD8 u1_colour_primaries; |
| |
| /** |
| * indicates the opto-electronic transfer characteristic of the source picture |
| */ |
| UWORD8 u1_transfer_characteristics; |
| |
| /** |
| * the matrix coefficients used in deriving luma and chroma signals |
| * from the green, blue, and red primaries |
| */ |
| UWORD8 u1_matrix_coefficients; |
| |
| /** |
| * if 1, specifies that chroma_sample_loc_type_top_field and |
| * chroma_sample_loc_type_bottom_field are present |
| */ |
| UWORD8 u1_chroma_loc_info_present_flag; |
| |
| /** |
| * location of chroma samples |
| */ |
| UWORD8 u1_chroma_sample_loc_type_top_field; |
| |
| UWORD8 u1_chroma_sample_loc_type_bottom_field; |
| |
| /** |
| * if 1, indicates that the value of all decoded chroma samples is |
| * equal to 1 << ( BitDepthC - 1 ) |
| */ |
| UWORD8 u1_neutral_chroma_indication_flag; |
| |
| /** |
| * 1 indicates that the coded video sequence conveys pictures that represent fields |
| * 0 indicates the pictures that represents field |
| */ |
| UWORD8 u1_field_seq_flag; |
| |
| /** |
| * specifies that picture timing SEI messages are present for every picture |
| */ |
| UWORD8 u1_frame_field_info_present_flag; |
| |
| /** |
| * 1 indicates that the default display window parameters follow next in the VUI |
| */ |
| UWORD8 u1_default_display_window_flag; |
| |
| /** |
| * specify the samples of the pictures in the coded video sequence |
| * that are within the default display window, |
| * in terms of a rectangular region specified in picture coordinates for display |
| */ |
| UWORD32 u4_def_disp_win_left_offset; |
| |
| UWORD32 u4_def_disp_win_right_offset; |
| |
| UWORD32 u4_def_disp_win_top_offset; |
| |
| UWORD32 u4_def_disp_win_bottom_offset; |
| |
| /** |
| * to 1 specifies that the syntax structure hrd_parameters is present in the vui_parameters syntax structue |
| */ |
| UWORD8 u1_vui_hrd_parameters_present_flag; |
| |
| /** |
| * Indicates the presence of the |
| * num_units_in_ticks, time_scale flag |
| */ |
| UWORD8 u1_vui_timing_info_present_flag; |
| |
| /** |
| * Number of units that |
| * correspond to one increment of the |
| * clock. Indicates the resolution |
| */ |
| UWORD32 u4_vui_num_units_in_tick; |
| |
| /** |
| * The number of time units that pass in one second |
| */ |
| UWORD32 u4_vui_time_scale; |
| /** |
| * if 1, indicates that the POC for each picture in the coded video sequence (cvs) (not the first picture), in decoding order, |
| * is proportional to the output time of the picture relative to that of the first picture in the cvs |
| */ |
| UWORD8 u1_poc_proportional_to_timing_flag; |
| |
| /** |
| * num_ticks_poc_diff_one_minus1 plus 1 specifies the number of clock ticks |
| * corresponding to a difference of poc values equal to 1 |
| */ |
| UWORD8 u1_num_ticks_poc_diff_one_minus1; |
| |
| /** |
| * 1, specifies that the following cvs bitstream restriction parameters are present |
| */ |
| UWORD8 u1_bitstream_restriction_flag; |
| |
| /** |
| * if 1, indicates that each pps that is active in the cvs has |
| * the same value of the tile syntax elements |
| */ |
| UWORD8 u1_tiles_fixed_structure_flag; |
| |
| /** |
| * if 0, indicates that no pel outside the pic boundaries and |
| * no sub-pels derived using pels outside the pic boundaries is used for inter prediction |
| */ |
| UWORD8 u1_motion_vectors_over_pic_boundaries_flag; |
| |
| /** |
| * if 1, indicates |
| * all P/B slices belonging to the same pic have an identical refpic list0, |
| * all B slices that belong to the same picture have an identical refpic list1. |
| */ |
| UWORD8 u1_restricted_ref_pic_lists_flag; |
| |
| /** |
| * |
| */ |
| UWORD8 u4_min_spatial_segmentation_idc; |
| /** |
| * Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units |
| * associated with any coded picture |
| */ |
| UWORD8 u1_max_bytes_per_pic_denom; |
| |
| /** |
| * Indicates an upper bound for the number of bits of coding_unit() data |
| */ |
| UWORD8 u1_max_bits_per_mincu_denom; |
| |
| /** |
| * Indicate the maximum absolute value of a decoded horizontal MV component |
| * in quarter-pel luma units |
| */ |
| UWORD8 u1_log2_max_mv_length_horizontal; |
| |
| /** |
| * Indicate the maximum absolute value of a decoded vertical MV component |
| * in quarter-pel luma units |
| */ |
| UWORD8 u1_log2_max_mv_length_vertical; |
| |
| /** |
| * HRD parameters |
| */ |
| |
| |
| /** |
| * Indicates the presence of the |
| * num_units_in_ticks, time_scale flag |
| */ |
| UWORD8 u1_timing_info_present_flag; |
| |
| /** |
| * Number of units that |
| * correspond to one increment of the |
| * clock. Indicates the resolution |
| */ |
| UWORD32 u4_num_units_in_tick; |
| |
| /** |
| * The number of time units that pass in one second |
| */ |
| UWORD32 u4_time_scale; |
| |
| /** |
| * Nal- hrd parameters flag |
| */ |
| UWORD8 u1_nal_hrd_parameters_present_flag; |
| |
| /** |
| * VCL- hrd parameters flag |
| */ |
| UWORD8 u1_vcl_hrd_parameters_present_flag; |
| |
| /** |
| * Indicates the presence of NAL-HRD params or VCL_HRD params |
| * in the bitstream |
| */ |
| UWORD8 u1_cpbdpb_delays_present_flag; |
| |
| /** |
| * specifies that sub-picture level CPB removal delay parameters are |
| * present in picture timing SEI messages |
| */ |
| UWORD8 u1_sub_pic_cpb_params_present_flag; |
| |
| /** |
| * specify the clock sub-tick |
| * (the minimum interval of time that can be represented in the coded data when sub_pic_cpb_params_present_flag is equal to 1) |
| */ |
| UWORD8 u1_tick_divisor_minus2; |
| |
| /** |
| * specifies the length, in bits for the du cpb delay syntax in pt_sei |
| */ |
| UWORD8 u1_du_cpb_removal_delay_increment_length_minus1; |
| |
| /** |
| * Indicates presence of sub_pic_cpb_params in pic timing sei |
| */ |
| UWORD8 u1_sub_pic_cpb_params_in_pic_timing_sei_flag; |
| |
| /** |
| * Indicates dpb output delay for the du |
| */ |
| UWORD8 u1_dpb_output_delay_du_length_minus1; |
| |
| /** |
| * (together with bit_rate_value_minus1) specifies the |
| * maximum input bit rate of the i-th CPB |
| */ |
| UWORD8 u4_bit_rate_scale; |
| |
| /** |
| * (together with cpb_size_du_value_minus1) specfies |
| * CPB size of the i-th CPB when the CPB operates |
| * at the access unit level |
| */ |
| UWORD8 u4_cpb_size_scale; |
| |
| /** |
| * (together with cpb_size_du_value_minus1) specfies |
| * CPB size of the i-th CPB when the CPB operates |
| * at the sub-picture level |
| */ |
| UWORD8 u4_cpb_size_du_scale; |
| |
| |
| /** |
| * specifies the length, in bits for initial cpb delay (nal/vcl)sysntax in bp sei |
| */ |
| UWORD8 u1_initial_cpb_removal_delay_length_minus1; |
| |
| /** |
| * specifies the length, in bits for the au cpb delay syntax in pt_sei |
| */ |
| UWORD8 u1_au_cpb_removal_delay_length_minus1; |
| |
| /** |
| * specifies the length, in bits, of the pic_dpb_output_delay syntax element in the pt SEI message |
| */ |
| UWORD8 u1_dpb_output_delay_length_minus1; |
| |
| /** |
| * if 1, , for the highest temporal sub-layers, the temporal distance between the HRD output times |
| * of consecutive pictures in output order is constrained refer to Table E-6 |
| */ |
| UWORD8 au1_fixed_pic_rate_general_flag[6]; |
| |
| UWORD8 au1_fixed_pic_rate_within_cvs_flag[6]; |
| |
| /** |
| * if 1, , for the highest temporal sub-layers, the temporal distance (in clock ticks) between the |
| * element units that specify HRD output times of consecutive pictures in output order is constrained |
| * refer to Table E-6 |
| */ |
| UWORD8 au1_elemental_duration_in_tc_minus1[6]; |
| |
| /** |
| * specifies the HRD operational mode |
| */ |
| UWORD8 au1_low_delay_hrd_flag[6]; |
| |
| /** |
| * 1 specifies the number of alternative CPB specifications in the |
| * bitstream of the cvs when HighestTid is equal to i |
| */ |
| UWORD8 au1_cpb_cnt_minus1[6]; |
| }ihevcd_cxa_ctl_get_vui_params_op_t; |
| |
| typedef struct |
| { |
| UWORD32 u4_size; |
| IVD_API_COMMAND_TYPE_T e_cmd; |
| IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; |
| }ihevcd_cxa_ctl_get_sei_mastering_params_ip_t; |
| |
| typedef struct |
| { |
| UWORD32 u4_size; |
| UWORD32 u4_error_code; |
| |
| /** |
| * Array to store the display_primaries_x values |
| */ |
| UWORD16 au2_display_primaries_x[3]; |
| |
| /** |
| * Array to store the display_primaries_y values |
| */ |
| UWORD16 au2_display_primaries_y[3]; |
| |
| /** |
| * 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; |
| |
| }ihevcd_cxa_ctl_get_sei_mastering_params_op_t; |
| |
| #ifdef __cplusplus |
| } /* closing brace for extern "C" */ |
| #endif |
| #endif /* __IHEVCD_CXA_H__ */ |