975 lines
35 KiB
C
975 lines
35 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 : ih264e.h */
|
||
|
/* */
|
||
|
/* Description : This file contains all the necessary structure and */
|
||
|
/* enumeration definitions needed for the Application */
|
||
|
/* Program Interface(API) of the Ittiam MPEG4 */
|
||
|
/* Encoder on Cortex A8 - Neon platform */
|
||
|
/* */
|
||
|
/* List of Functions : ih264e_api_function */
|
||
|
/* */
|
||
|
/* Issues / Problems : None */
|
||
|
/* */
|
||
|
/* Revision History : */
|
||
|
/* */
|
||
|
/* DD MM YYYY Author(s) Changes (Describe the changes made) */
|
||
|
/* 26 08 2010 100239(RCY) Draft */
|
||
|
/* */
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
#ifndef _IH264E_H_
|
||
|
#define _IH264E_H_
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include "iv2.h"
|
||
|
#include "ive2.h"
|
||
|
/*****************************************************************************/
|
||
|
/* API Function Prototype */
|
||
|
/*****************************************************************************/
|
||
|
IV_STATUS_T ih264e_api_function(iv_obj_t *ps_handle, void *pv_api_ip,void *pv_api_op);
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Enums */
|
||
|
/*****************************************************************************/
|
||
|
typedef enum
|
||
|
{
|
||
|
IH264E_CMD_CTL_SET_ME_INFO_ENABLE,
|
||
|
}IH264E_CMD_CTL_SUB_CMDS;
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Extended Structures */
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Get Number of Memory Records */
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
iv_num_mem_rec_ip_t s_ive_ip;
|
||
|
}ih264e_num_mem_rec_ip_t;
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
iv_num_mem_rec_op_t s_ive_op;
|
||
|
}ih264e_num_mem_rec_op_t;
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Fill Memory Records */
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
iv_fill_mem_rec_ip_t s_ive_ip;
|
||
|
}ih264e_fill_mem_rec_ip_t;
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
iv_fill_mem_rec_op_t s_ive_op;
|
||
|
}ih264e_fill_mem_rec_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Retrieve Memory Records */
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
iv_retrieve_mem_rec_ip_t s_ive_ip;
|
||
|
}ih264e_retrieve_mem_rec_ip_t;
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
iv_retrieve_mem_rec_op_t s_ive_op;
|
||
|
}ih264e_retrieve_mem_rec_op_t;
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Initialize encoder */
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_init_ip_t s_ive_ip;
|
||
|
}ih264e_init_ip_t;
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_init_op_t s_ive_op;
|
||
|
}ih264e_init_op_t;
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Queue Input raw buffer - Send the YUV buffer to be encoded */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_queue_inp_ip_t s_ive_ip;
|
||
|
}ih264e_queue_inp_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_queue_inp_op_t s_ive_op;
|
||
|
}ih264e_queue_inp_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Dequeue Input raw buffer - Get free YUV buffer from the encoder */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_dequeue_inp_ip_t s_ive_ip;
|
||
|
}ih264e_dequeue_inp_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_dequeue_inp_op_t s_ive_op;
|
||
|
}ih264e_dequeue_inp_op_t;
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Queue Output bitstream buffer - Send the bistream buffer to be filled */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_queue_out_ip_t s_ive_ip;
|
||
|
}ih264e_queue_out_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_queue_out_op_t s_ive_op;
|
||
|
}ih264e_queue_out_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Dequeue Output bitstream buffer - Get the bistream buffer filled */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_dequeue_out_ip_t s_ive_ip;
|
||
|
}ih264e_dequeue_out_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_dequeue_out_op_t s_ive_op;
|
||
|
}ih264e_dequeue_out_op_t;
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Get Recon data - Get the reconstructed data from encoder */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_get_recon_ip_t s_ive_ip;
|
||
|
}ih264e_get_recon_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_get_recon_op_t s_ive_op;
|
||
|
}ih264e_get_recon_op_t;
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Flush */
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_flush_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_flush_ip_t;
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_flush_op_t s_ive_op;
|
||
|
}ih264e_ctl_flush_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control reset */
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_reset_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_reset_ip_t;
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_reset_op_t s_ive_op;
|
||
|
}ih264e_ctl_reset_op_t;
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control:Get Buf Info */
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_getbufinfo_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_getbufinfo_ip_t;
|
||
|
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_getbufinfo_op_t s_ive_op;
|
||
|
}ih264e_ctl_getbufinfo_op_t;
|
||
|
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control:Get Version Info */
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_getversioninfo_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_getversioninfo_ip_t;
|
||
|
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_getversioninfo_op_t s_ive_op;
|
||
|
}ih264e_ctl_getversioninfo_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control:Set default params */
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_setdefault_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_setdefault_ip_t;
|
||
|
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_setdefault_op_t s_ive_op;
|
||
|
}ih264e_ctl_setdefault_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set IPE params */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_ipe_params_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_ipe_params_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_ipe_params_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_ipe_params_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set Frame dimensions */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_dimensions_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_dimensions_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_dimensions_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_dimensions_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set Frame rates */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_frame_rate_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_frame_rate_ip_t;
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_frame_rate_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_frame_rate_op_t;
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set Bitrate */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_bitrate_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_bitrate_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_bitrate_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_bitrate_op_t;
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set Frame type */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_frame_type_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_frame_type_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_frame_type_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_frame_type_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set Encode mode */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_enc_mode_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_enc_mode_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_enc_mode_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_enc_mode_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set QP */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_qp_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_qp_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_qp_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_qp_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set AIR params */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_air_params_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_air_params_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_air_params_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_air_params_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set VBV params */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_vbv_params_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_vbv_params_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_vbv_params_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_vbv_params_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set Processor Details */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_num_cores_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_num_cores_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_num_cores_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_num_cores_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set Motion estimation params */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_me_params_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_me_params_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_me_params_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_me_params_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set GOP params */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_gop_params_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_gop_params_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_gop_params_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_gop_params_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set Deblock params */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_deblock_params_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_deblock_params_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_deblock_params_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_deblock_params_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set Profile params */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_profile_params_ip_t s_ive_ip;
|
||
|
}ih264e_ctl_set_profile_params_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_ctl_set_profile_params_op_t s_ive_op;
|
||
|
}ih264e_ctl_set_profile_params_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Synchronous video encode call */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_video_encode_ip_t s_ive_ip;
|
||
|
}ih264e_video_encode_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
ive_video_encode_op_t s_ive_op;
|
||
|
}ih264e_video_encode_op_t;
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video usability information */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
/** size of the structure */
|
||
|
UWORD32 u4_size;
|
||
|
|
||
|
/** Command type : IVE_CMD_VIDEO_CTL */
|
||
|
IVE_API_COMMAND_TYPE_T e_cmd;
|
||
|
|
||
|
/** Sub command type : IVE_CMD_CTL_SET_GOP_PARAMS */
|
||
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
|
|
||
|
/** 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;
|
||
|
|
||
|
/** Height 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;
|
||
|
|
||
|
/** pal, secam, ntsc, ... */
|
||
|
UWORD8 u1_video_format;
|
||
|
|
||
|
/** indicates the black level and range of the luma and chroma signals */
|
||
|
UWORD8 u1_video_full_range_flag;
|
||
|
|
||
|
/** if 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;
|
||
|
|
||
|
/** 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;
|
||
|
|
||
|
/** Flag indicating that time difference between two frames is a constant */
|
||
|
UWORD8 u1_fixed_frame_rate_flag;
|
||
|
|
||
|
/** Indicates the presence of NAL HRD parameters */
|
||
|
UWORD8 u1_nal_hrd_parameters_present_flag;
|
||
|
|
||
|
/** Indicates the presence of VCL HRD parameters */
|
||
|
UWORD8 u1_vcl_hrd_parameters_present_flag;
|
||
|
|
||
|
/** Specifies the HRD operational mode */
|
||
|
UWORD8 u1_low_delay_hrd_flag;
|
||
|
|
||
|
/** Indicates presence of SEI messages which include pic_struct syntax element */
|
||
|
UWORD8 u1_pic_struct_present_flag;
|
||
|
|
||
|
/** 1, specifies that the following cvs bitstream restriction parameters are present */
|
||
|
UWORD8 u1_bitstream_restriction_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;
|
||
|
|
||
|
/** 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_mb_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;
|
||
|
|
||
|
/** Max number of frames that are not synchronized in display and decode order */
|
||
|
UWORD8 u1_num_reorder_frames;
|
||
|
|
||
|
/** specifies required size of the HRD DPB in units of frame buffers */
|
||
|
UWORD8 u1_max_dec_frame_buffering;
|
||
|
|
||
|
}ih264e_vui_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
/** size of the structure */
|
||
|
UWORD32 u4_size;
|
||
|
|
||
|
/** Return error code */
|
||
|
UWORD32 u4_error_code;
|
||
|
}ih264e_vui_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set SEI MDCV params */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
/** size of the structure */
|
||
|
UWORD32 u4_size;
|
||
|
|
||
|
/** Command type : IVE_CMD_VIDEO_CTL */
|
||
|
IVE_API_COMMAND_TYPE_T e_cmd;
|
||
|
|
||
|
/** Sub command type : IVE_CMD_CTL_SET_SEI_MDCV_PARAMS */
|
||
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
|
|
||
|
/** mastering display color volume info present flag */
|
||
|
UWORD8 u1_sei_mdcv_params_present_flag;
|
||
|
|
||
|
/** 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;
|
||
|
|
||
|
/** Lower 32bits of time stamp corresponding to input buffer,
|
||
|
* from which this command takes effect */
|
||
|
UWORD32 u4_timestamp_low;
|
||
|
|
||
|
/** Upper 32bits of time stamp corresponding to input buffer,
|
||
|
* from which this command takes effect */
|
||
|
UWORD32 u4_timestamp_high;
|
||
|
|
||
|
}ih264e_ctl_set_sei_mdcv_params_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
/** size of the structure */
|
||
|
UWORD32 u4_size;
|
||
|
|
||
|
/** Return error code */
|
||
|
UWORD32 u4_error_code;
|
||
|
|
||
|
}ih264e_ctl_set_sei_mdcv_params_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set SEI CLL params */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
/** size of the structure */
|
||
|
UWORD32 u4_size;
|
||
|
|
||
|
/** Command type : IVE_CMD_VIDEO_CTL */
|
||
|
IVE_API_COMMAND_TYPE_T e_cmd;
|
||
|
|
||
|
/** Sub command type : IVE_CMD_CTL_SET_SEI_CLL_PARAMS */
|
||
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
|
|
||
|
/** content light level info present flag */
|
||
|
UWORD8 u1_sei_cll_params_present_flag;
|
||
|
|
||
|
/** 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;
|
||
|
|
||
|
/** Lower 32bits of time stamp corresponding to input buffer,
|
||
|
* from which this command takes effect */
|
||
|
UWORD32 u4_timestamp_low;
|
||
|
|
||
|
/** Upper 32bits of time stamp corresponding to input buffer,
|
||
|
* from which this command takes effect */
|
||
|
UWORD32 u4_timestamp_high;
|
||
|
|
||
|
}ih264e_ctl_set_sei_cll_params_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
/** size of the structure */
|
||
|
UWORD32 u4_size;
|
||
|
|
||
|
/** Return error code */
|
||
|
UWORD32 u4_error_code;
|
||
|
|
||
|
}ih264e_ctl_set_sei_cll_params_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set SEI AVE params */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
/** size of the structure */
|
||
|
UWORD32 u4_size;
|
||
|
|
||
|
/** Command type : IVE_CMD_VIDEO_CTL */
|
||
|
IVE_API_COMMAND_TYPE_T e_cmd;
|
||
|
|
||
|
/** Sub command type : IVE_CMD_CTL_SET_SEI_AVE_PARAMS */
|
||
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
|
|
||
|
/** ambient viewing environment info present flag */
|
||
|
UWORD8 u1_sei_ave_params_present_flag;
|
||
|
|
||
|
/** 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;
|
||
|
|
||
|
/** Lower 32bits of time stamp corresponding to input buffer,
|
||
|
* from which this command takes effect */
|
||
|
UWORD32 u4_timestamp_low;
|
||
|
|
||
|
/** Upper 32bits of time stamp corresponding to input buffer,
|
||
|
* from which this command takes effect */
|
||
|
UWORD32 u4_timestamp_high;
|
||
|
|
||
|
}ih264e_ctl_set_sei_ave_params_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
/** size of the structure */
|
||
|
UWORD32 u4_size;
|
||
|
|
||
|
/** Return error code */
|
||
|
UWORD32 u4_error_code;
|
||
|
|
||
|
}ih264e_ctl_set_sei_ave_params_op_t;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Video control Set SEI CCV params */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
/** size of the structure */
|
||
|
UWORD32 u4_size;
|
||
|
|
||
|
/** Command type : IVE_CMD_VIDEO_CTL */
|
||
|
IVE_API_COMMAND_TYPE_T e_cmd;
|
||
|
|
||
|
/** Sub command type : IVE_CMD_CTL_SET_SEI_CCV_PARAMS */
|
||
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
||
|
|
||
|
/** content color volume info present flag */
|
||
|
UWORD8 u1_sei_ccv_params_present_flag;
|
||
|
|
||
|
/** 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[3];
|
||
|
|
||
|
/** specify the normalized y chromaticity coordinates of the colour
|
||
|
* primary component c of the nominal content colour volume */
|
||
|
WORD32 ai4_ccv_primaries_y[3];
|
||
|
|
||
|
/** 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;
|
||
|
|
||
|
/** Lower 32bits of time stamp corresponding to input buffer,
|
||
|
* from which this command takes effect */
|
||
|
UWORD32 u4_timestamp_low;
|
||
|
|
||
|
/** Upper 32bits of time stamp corresponding to input buffer,
|
||
|
* from which this command takes effect */
|
||
|
UWORD32 u4_timestamp_high;
|
||
|
|
||
|
}ih264e_ctl_set_sei_ccv_params_ip_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
/** size of the structure */
|
||
|
UWORD32 u4_size;
|
||
|
|
||
|
/** Return error code */
|
||
|
UWORD32 u4_error_code;
|
||
|
|
||
|
}ih264e_ctl_set_sei_ccv_params_op_t;
|
||
|
|
||
|
|
||
|
/* The enum values should not have greater than 8 bits as this is assigned to WORD8 */
|
||
|
typedef enum
|
||
|
{
|
||
|
INTRA16x16 = 0,
|
||
|
INTRA4x4,
|
||
|
INTER16x16
|
||
|
}IV_MB_TYPE_T;
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* Pic info structures */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
/** Qp */
|
||
|
UWORD32 u4_qp;
|
||
|
|
||
|
/** Pic Type */
|
||
|
IV_PICTURE_CODING_TYPE_T e_frame_type;
|
||
|
|
||
|
}ih264e_pic_info1_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
/** Qp */
|
||
|
UWORD32 u4_qp;
|
||
|
|
||
|
/** Pic Type */
|
||
|
IV_PICTURE_CODING_TYPE_T e_frame_type;
|
||
|
|
||
|
/** Disable deblock level (0: Enable completely, 3: Disable completely */
|
||
|
UWORD32 u4_disable_deblock_level;
|
||
|
|
||
|
}ih264e_pic_info2_t;
|
||
|
|
||
|
|
||
|
/*****************************************************************************/
|
||
|
/* MB info structures */
|
||
|
/*****************************************************************************/
|
||
|
typedef struct
|
||
|
{
|
||
|
/** MV X */
|
||
|
WORD16 i2_mv_x;
|
||
|
|
||
|
/** MV Y */
|
||
|
WORD16 i2_mv_y;
|
||
|
}ih264e_mv_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
/** Intra / Inter */
|
||
|
WORD8 i1_mb_type;
|
||
|
union
|
||
|
{
|
||
|
ih264e_mv_t as_mv[1];
|
||
|
|
||
|
/** Intra mode */
|
||
|
WORD8 ai1_intra_mode[1];
|
||
|
};
|
||
|
}ih264e_mb_info1_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
/** Intra / Inter */
|
||
|
WORD8 i1_mb_type;
|
||
|
|
||
|
|
||
|
/** SAD */
|
||
|
UWORD16 u2_sad;
|
||
|
|
||
|
union
|
||
|
{
|
||
|
ih264e_mv_t as_mv[1];
|
||
|
|
||
|
/** Intra mode */
|
||
|
WORD8 ai1_intra_mode[1];
|
||
|
};
|
||
|
|
||
|
|
||
|
}ih264e_mb_info2_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
/** Intra / Inter */
|
||
|
WORD8 i1_mb_type;
|
||
|
|
||
|
union
|
||
|
{
|
||
|
ih264e_mv_t as_mv[4];
|
||
|
|
||
|
/** Intra mode */
|
||
|
WORD8 ai1_intra_mode[16];
|
||
|
};
|
||
|
|
||
|
}ih264e_mb_info3_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
/** Intra / Inter */
|
||
|
WORD8 i1_mb_type;
|
||
|
|
||
|
/** Intra Mode */
|
||
|
WORD8 i1_intra_mode;
|
||
|
|
||
|
/** SAD */
|
||
|
UWORD16 u2_sad;
|
||
|
|
||
|
union
|
||
|
{
|
||
|
ih264e_mv_t as_mv[16];
|
||
|
|
||
|
/** Intra mode */
|
||
|
WORD8 ai1_intra_mode[16];
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
}ih264e_mb_info4_t;
|
||
|
|
||
|
/* Add any new structures to the following union. It is used to calculate the max size needed for allocation of memory */
|
||
|
typedef struct
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
ih264e_mb_info1_t s_mb_info1;
|
||
|
ih264e_mb_info2_t s_mb_info2;
|
||
|
ih264e_mb_info3_t s_mb_info3;
|
||
|
ih264e_mb_info4_t s_mb_info4;
|
||
|
};
|
||
|
}ih264e_mb_info_t;
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} /* closing brace for extern "C" */
|
||
|
#endif
|
||
|
#endif /* _IH264E_H_ */
|