You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1469 lines
62 KiB
1469 lines
62 KiB
/******************************************************************************
|
|
*
|
|
* 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
|
|
* ive2.h
|
|
*
|
|
* @brief
|
|
* This file contains all the necessary structure and enumeration
|
|
* definitions needed for the Application Program Interface(API) of the
|
|
* Ittiam Video Encoders This is version 2
|
|
*
|
|
* @author
|
|
* Ittiam
|
|
*
|
|
* @par List of Functions:
|
|
*
|
|
* @remarks
|
|
* None
|
|
*
|
|
*******************************************************************************
|
|
*/
|
|
|
|
#ifndef _IVE2_H_
|
|
#define _IVE2_H_
|
|
|
|
/*****************************************************************************/
|
|
/* Constant Macros */
|
|
/*****************************************************************************/
|
|
|
|
/** Maximum number of components in I/O Buffers */
|
|
#define IVE_MAX_IO_BUFFER_COMPONENTS 4
|
|
|
|
/** Maximum number of reference pictures */
|
|
#define IVE_MAX_REF 16
|
|
|
|
/*****************************************************************************/
|
|
/* Enums */
|
|
/*****************************************************************************/
|
|
|
|
/** Slice modes */
|
|
typedef enum
|
|
{
|
|
IVE_SLICE_MODE_NA = 0x7FFFFFFF,
|
|
IVE_SLICE_MODE_NONE = 0x0,
|
|
|
|
IVE_SLICE_MODE_BYTES = 0x1,
|
|
IVE_SLICE_MODE_BLOCKS = 0x2,
|
|
}IVE_SLICE_MODE_T;
|
|
|
|
/** Adaptive Intra refresh modes */
|
|
typedef enum
|
|
{
|
|
IVE_AIR_MODE_NA = 0x7FFFFFFF,
|
|
IVE_AIR_MODE_NONE = 0x0,
|
|
IVE_AIR_MODE_CYCLIC = 0x1,
|
|
IVE_AIR_MODE_RANDOM = 0x2,
|
|
IVE_AIR_MODE_DISTORTION = 0x3,
|
|
}IVE_AIR_MODE_T;
|
|
|
|
/** Rate control modes */
|
|
typedef enum
|
|
{
|
|
IVE_RC_NA = 0x7FFFFFFF,
|
|
IVE_RC_NONE = 0x0,
|
|
IVE_RC_STORAGE = 0x1,
|
|
IVE_RC_CBR_NON_LOW_DELAY = 0x2,
|
|
IVE_RC_CBR_LOW_DELAY = 0x3,
|
|
IVE_RC_TWOPASS = 0x4,
|
|
IVE_RC_RATECONTROLPRESET_DEFAULT = IVE_RC_STORAGE
|
|
}IVE_RC_MODE_T;
|
|
|
|
/** Encoder mode */
|
|
typedef enum
|
|
{
|
|
IVE_ENC_MODE_NA = 0x7FFFFFFF,
|
|
IVE_ENC_MODE_HEADER = 0x1,
|
|
IVE_ENC_MODE_PICTURE = 0x0,
|
|
IVE_ENC_MODE_DEFAULT = IVE_ENC_MODE_PICTURE,
|
|
}IVE_ENC_MODE_T;
|
|
|
|
/** Speed Config */
|
|
typedef enum IVE_SPEED_CONFIG
|
|
{
|
|
IVE_QUALITY_DUMMY = 0x7FFFFFFF,
|
|
IVE_CONFIG = 0,
|
|
IVE_SLOWEST = 1,
|
|
IVE_NORMAL = 2,
|
|
IVE_FAST = 3,
|
|
IVE_HIGH_SPEED = 4,
|
|
IVE_FASTEST = 5,
|
|
}IVE_SPEED_CONFIG;
|
|
|
|
/** API command type */
|
|
typedef enum
|
|
{
|
|
IVE_CMD_VIDEO_NA = 0x7FFFFFFF,
|
|
IVE_CMD_VIDEO_CTL = IV_CMD_EXTENSIONS + 1,
|
|
IVE_CMD_VIDEO_ENCODE,
|
|
IVE_CMD_QUEUE_INPUT,
|
|
IVE_CMD_DEQUEUE_INPUT,
|
|
IVE_CMD_QUEUE_OUTPUT,
|
|
IVE_CMD_DEQUEUE_OUTPUT,
|
|
IVE_CMD_GET_RECON,
|
|
}IVE_API_COMMAND_TYPE_T;
|
|
|
|
/** Video Control API command type */
|
|
typedef enum
|
|
{
|
|
IVE_CMD_CT_NA = 0x7FFFFFFF,
|
|
IVE_CMD_CTL_SETDEFAULT = 0x0,
|
|
IVE_CMD_CTL_SET_DIMENSIONS = 0x1,
|
|
IVE_CMD_CTL_SET_FRAMERATE = 0x2,
|
|
IVE_CMD_CTL_SET_BITRATE = 0x3,
|
|
IVE_CMD_CTL_SET_FRAMETYPE = 0x4,
|
|
IVE_CMD_CTL_SET_QP = 0x5,
|
|
IVE_CMD_CTL_SET_ENC_MODE = 0x6,
|
|
IVE_CMD_CTL_SET_VBV_PARAMS = 0x7,
|
|
IVE_CMD_CTL_SET_AIR_PARAMS = 0x8,
|
|
IVE_CMD_CTL_SET_ME_PARAMS = 0X9,
|
|
IVE_CMD_CTL_SET_GOP_PARAMS = 0XA,
|
|
IVE_CMD_CTL_SET_PROFILE_PARAMS = 0XB,
|
|
IVE_CMD_CTL_SET_DEBLOCK_PARAMS = 0XC,
|
|
IVE_CMD_CTL_SET_IPE_PARAMS = 0XD,
|
|
IVE_CMD_CTL_SET_VUI_PARAMS = 0XE,
|
|
IVE_CMD_CTL_SET_NUM_CORES = 0x30,
|
|
IVE_CMD_CTL_RESET = 0xA0,
|
|
IVE_CMD_CTL_FLUSH = 0xB0,
|
|
IVE_CMD_CTL_GETBUFINFO = 0xC0,
|
|
IVE_CMD_CTL_GETVERSION = 0xC1,
|
|
IVE_CMD_CTL_SET_SEI_MDCV_PARAMS = 0xD0,
|
|
IVE_CMD_CTL_SET_SEI_CLL_PARAMS = 0xD1,
|
|
IVE_CMD_CTL_SET_SEI_AVE_PARAMS = 0xD2,
|
|
IVE_CMD_CTL_SET_SEI_CCV_PARAMS = 0xD3,
|
|
IVE_CMD_CTL_CODEC_SUBCMD_START = 0x100,
|
|
}IVE_CONTROL_API_COMMAND_TYPE_T;
|
|
|
|
/* IVE_ERROR_BITS_T: A UWORD32 container will be used for reporting the error*/
|
|
/* code to the application. The first 8 bits starting from LSB have been */
|
|
/* reserved for the codec to report internal error details. The rest of the */
|
|
/* bits will be generic for all video encoders and each bit has an associated*/
|
|
/* meaning as mentioned below. The unused bit fields are reserved for future */
|
|
/* extenstions and will be zero in the current implementation */
|
|
typedef enum {
|
|
|
|
/* Bit 8 - Unsupported input parameter or configuration. */
|
|
IVE_UNSUPPORTEDPARAM = 0x8,
|
|
|
|
/* Bit 9 - Fatal error (stop the codec).If there is an */
|
|
/* error and this bit is not set, the error is a recoverable one. */
|
|
IVE_FATALERROR = 0x9,
|
|
|
|
IVE_ERROR_BITS_T_DUMMY_ELEMENT = 0x7FFFFFFF
|
|
}IVE_ERROR_BITS_T;
|
|
|
|
/* IVE_ERROR_CODES_T: The list of error codes depicting the possible error */
|
|
/* scenarios that can be encountered while encoding */
|
|
typedef enum
|
|
{
|
|
|
|
IVE_ERR_NA = 0x7FFFFFFF,
|
|
IVE_ERR_NONE = 0x00,
|
|
IVE_ERR_INVALID_API_CMD = 0x01,
|
|
IVE_ERR_INVALID_API_SUB_CMD = 0x02,
|
|
IVE_ERR_IP_GET_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x03,
|
|
IVE_ERR_OP_GET_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x04,
|
|
IVE_ERR_IP_FILL_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x05,
|
|
IVE_ERR_OP_FILL_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x06,
|
|
IVE_ERR_IP_INIT_API_STRUCT_SIZE_INCORRECT = 0x07,
|
|
IVE_ERR_OP_INIT_API_STRUCT_SIZE_INCORRECT = 0x08,
|
|
IVE_ERR_IP_RETRIEVE_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x09,
|
|
IVE_ERR_OP_RETRIEVE_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x0A,
|
|
IVE_ERR_IP_ENCODE_API_STRUCT_SIZE_INCORRECT = 0x0B,
|
|
IVE_ERR_OP_ENCODE_API_STRUCT_SIZE_INCORRECT = 0x0C,
|
|
IVE_ERR_IP_CTL_SETDEF_API_STRUCT_SIZE_INCORRECT = 0x0D,
|
|
IVE_ERR_OP_CTL_SETDEF_API_STRUCT_SIZE_INCORRECT = 0x0E,
|
|
IVE_ERR_IP_CTL_GETBUFINFO_API_STRUCT_SIZE_INCORRECT = 0x0F,
|
|
IVE_ERR_OP_CTL_GETBUFINFO_API_STRUCT_SIZE_INCORRECT = 0x10,
|
|
IVE_ERR_IP_CTL_GETVERSION_API_STRUCT_SIZE_INCORRECT = 0x11,
|
|
IVE_ERR_OP_CTL_GETVERSION_API_STRUCT_SIZE_INCORRECT = 0x12,
|
|
IVE_ERR_IP_CTL_FLUSH_API_STRUCT_SIZE_INCORRECT = 0x13,
|
|
IVE_ERR_OP_CTL_FLUSH_API_STRUCT_SIZE_INCORRECT = 0x14,
|
|
IVE_ERR_IP_CTL_RESET_API_STRUCT_SIZE_INCORRECT = 0x15,
|
|
IVE_ERR_OP_CTL_RESET_API_STRUCT_SIZE_INCORRECT = 0x16,
|
|
IVE_ERR_IP_CTL_SETCORES_API_STRUCT_SIZE_INCORRECT = 0x17,
|
|
IVE_ERR_OP_CTL_SETCORES_API_STRUCT_SIZE_INCORRECT = 0x18,
|
|
IVE_ERR_IP_CTL_SETDIM_API_STRUCT_SIZE_INCORRECT = 0x19,
|
|
IVE_ERR_OP_CTL_SETDIM_API_STRUCT_SIZE_INCORRECT = 0x1A,
|
|
IVE_ERR_IP_CTL_SETFRAMERATE_API_STRUCT_SIZE_INCORRECT = 0x1B,
|
|
IVE_ERR_OP_CTL_SETFRAMERATE_API_STRUCT_SIZE_INCORRECT = 0x1C,
|
|
IVE_ERR_IP_CTL_SETBITRATE_API_STRUCT_SIZE_INCORRECT = 0x1D,
|
|
IVE_ERR_OP_CTL_SETBITRATE_API_STRUCT_SIZE_INCORRECT = 0x1E,
|
|
IVE_ERR_IP_CTL_SETFRAMETYPE_API_STRUCT_SIZE_INCORRECT = 0x1F,
|
|
IVE_ERR_OP_CTL_SETFRAMETYPE_API_STRUCT_SIZE_INCORRECT = 0x20,
|
|
IVE_ERR_IP_CTL_SETMEPARAMS_API_STRUCT_SIZE_INCORRECT = 0x21,
|
|
IVE_ERR_OP_CTL_SETMEPARAMS_API_STRUCT_SIZE_INCORRECT = 0x22,
|
|
IVE_ERR_IP_CTL_SETIPEPARAMS_API_STRUCT_SIZE_INCORRECT = 0x23,
|
|
IVE_ERR_OP_CTL_SETIPEPARAMS_API_STRUCT_SIZE_INCORRECT = 0x24,
|
|
IVE_ERR_IP_CTL_SETGOPPARAMS_API_STRUCT_SIZE_INCORRECT = 0x25,
|
|
IVE_ERR_OP_CTL_SETGOPPARAMS_API_STRUCT_SIZE_INCORRECT = 0x26,
|
|
IVE_ERR_IP_CTL_SETDEBLKPARAMS_API_STRUCT_SIZE_INCORRECT = 0x27,
|
|
IVE_ERR_OP_CTL_SETDEBLKPARAMS_API_STRUCT_SIZE_INCORRECT = 0x28,
|
|
IVE_ERR_IP_CTL_SETQPPARAMS_API_STRUCT_SIZE_INCORRECT = 0x29,
|
|
IVE_ERR_OP_CTL_SETQPPARAMS_API_STRUCT_SIZE_INCORRECT = 0x2A,
|
|
IVE_ERR_FILL_NUM_MEM_RECS_POINTER_NULL = 0x2B,
|
|
IVE_ERR_NUM_MEM_REC_NOT_SUFFICIENT = 0x2C,
|
|
IVE_ERR_MEM_REC_STRUCT_SIZE_INCORRECT = 0x2D,
|
|
IVE_ERR_MEM_REC_BASE_POINTER_NULL = 0x2E,
|
|
IVE_ERR_MEM_REC_OVERLAP_ERR = 0x2F,
|
|
IVE_ERR_MEM_REC_INSUFFICIENT_SIZE = 0x30,
|
|
IVE_ERR_MEM_REC_ALIGNMENT_ERR = 0x31,
|
|
IVE_ERR_MEM_REC_INCORRECT_TYPE = 0x32,
|
|
IVE_ERR_HANDLE_NULL = 0x33,
|
|
IVE_ERR_HANDLE_STRUCT_SIZE_INCORRECT = 0x34,
|
|
IVE_ERR_API_FUNCTION_PTR_NULL = 0x35,
|
|
IVE_ERR_INVALID_CODEC_HANDLE = 0x36,
|
|
IVE_ERR_CTL_GET_VERSION_BUFFER_IS_NULL = 0x37,
|
|
IVE_ERR_IP_CTL_SETAIRPARAMS_API_STRUCT_SIZE_INCORRECT = 0x38,
|
|
IVE_ERR_OP_CTL_SETAIRPARAMS_API_STRUCT_SIZE_INCORRECT = 0x39,
|
|
IVE_ERR_IP_CTL_SETENCMODE_API_STRUCT_SIZE_INCORRECT = 0x3A,
|
|
IVE_ERR_OP_CTL_SETENCMODE_API_STRUCT_SIZE_INCORRECT = 0x3B,
|
|
IVE_ERR_IP_CTL_SETVBVPARAMS_API_STRUCT_SIZE_INCORRECT = 0x3C,
|
|
IVE_ERR_OP_CTL_SETVBVPARAMS_API_STRUCT_SIZE_INCORRECT = 0x3D,
|
|
IVE_ERR_IP_CTL_SETPROFILE_API_STRUCT_SIZE_INCORRECT = 0x3E,
|
|
IVE_ERR_OP_CTL_SETPROFILE_API_STRUCT_SIZE_INCORRECT = 0x3F,
|
|
IVE_ERR_IP_CTL_SET_VUI_STRUCT_SIZE_INCORRECT = 0x40,
|
|
IVE_ERR_OP_CTL_SET_VUI_STRUCT_SIZE_INCORRECT = 0x41,
|
|
IVE_ERR_IP_CTL_SET_SEI_MDCV_STRUCT_SIZE_INCORRECT = 0x42,
|
|
IVE_ERR_OP_CTL_SET_SEI_MDCV_STRUCT_SIZE_INCORRECT = 0x43,
|
|
IVE_ERR_IP_CTL_SET_SEI_CLL_STRUCT_SIZE_INCORRECT = 0x44,
|
|
IVE_ERR_OP_CTL_SET_SEI_CLL_STRUCT_SIZE_INCORRECT = 0x45,
|
|
IVE_ERR_IP_CTL_SET_SEI_AVE_STRUCT_SIZE_INCORRECT = 0x46,
|
|
IVE_ERR_OP_CTL_SET_SEI_AVE_STRUCT_SIZE_INCORRECT = 0x47,
|
|
IVE_ERR_IP_CTL_SET_SEI_CCV_STRUCT_SIZE_INCORRECT = 0x48,
|
|
IVE_ERR_OP_CTL_SET_SEI_CCV_STRUCT_SIZE_INCORRECT = 0x49,
|
|
}IVE_ERROR_CODES_T;
|
|
|
|
|
|
/*****************************************************************************/
|
|
/* Initialize encoder */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Initialize the encoder */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Command type */
|
|
IV_API_COMMAND_TYPE_T e_cmd;
|
|
|
|
/** Number of memory records */
|
|
UWORD32 u4_num_mem_rec;
|
|
|
|
/** pointer to array of memrecords structures should be filled by codec
|
|
with details of memory resource requirements */
|
|
iv_mem_rec_t *ps_mem_rec;
|
|
|
|
/** maximum width for which codec should request memory requirements */
|
|
UWORD32 u4_max_wd;
|
|
|
|
/** maximum height for which codec should request memory requirements */
|
|
UWORD32 u4_max_ht;
|
|
|
|
/** Maximum number of reference frames */
|
|
UWORD32 u4_max_ref_cnt;
|
|
|
|
/** Maximum number of reorder frames */
|
|
UWORD32 u4_max_reorder_cnt;
|
|
|
|
/** Maximum level supported */
|
|
UWORD32 u4_max_level;
|
|
|
|
/** Input color format */
|
|
IV_COLOR_FORMAT_T e_inp_color_fmt;
|
|
|
|
/** Flag to enable/disable - To be used only for debugging/testing */
|
|
UWORD32 u4_enable_recon;
|
|
|
|
/** Recon color format */
|
|
IV_COLOR_FORMAT_T e_recon_color_fmt;
|
|
|
|
/** Rate control mode */
|
|
IVE_RC_MODE_T e_rc_mode;
|
|
|
|
/** Maximum frame rate to be supported */
|
|
UWORD32 u4_max_framerate;
|
|
|
|
/** Maximum bitrate to be supported */
|
|
UWORD32 u4_max_bitrate;
|
|
|
|
/** Maximum number of consecutive B frames */
|
|
UWORD32 u4_num_bframes;
|
|
|
|
/** Content type Interlaced/Progressive */
|
|
IV_CONTENT_TYPE_T e_content_type;
|
|
|
|
/** Maximum search range to be used in X direction */
|
|
UWORD32 u4_max_srch_rng_x;
|
|
|
|
/** Maximum search range to be used in Y direction */
|
|
UWORD32 u4_max_srch_rng_y;
|
|
|
|
/** Slice Mode */
|
|
IVE_SLICE_MODE_T e_slice_mode;
|
|
|
|
/** Slice parameter */
|
|
UWORD32 u4_slice_param;
|
|
|
|
/** Processor architecture */
|
|
IV_ARCH_T e_arch;
|
|
|
|
/** SOC details */
|
|
IV_SOC_T e_soc;
|
|
|
|
|
|
}ive_init_ip_t;
|
|
|
|
/** Output structure : Initialize the encoder */
|
|
typedef struct
|
|
{
|
|
/** Size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_init_op_t;
|
|
|
|
|
|
/*****************************************************************************/
|
|
/* Video Encode - Deprecated */
|
|
/*****************************************************************************/
|
|
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
IVE_API_COMMAND_TYPE_T e_cmd;
|
|
|
|
/** Descriptor for input raw buffer */
|
|
iv_raw_buf_t s_inp_buf;
|
|
|
|
/** Buffer containing pic info if mb_info_type is non-zero */
|
|
void *pv_bufs;
|
|
|
|
/** Flag to indicate if mb info is sent along with input buffer */
|
|
UWORD32 u4_mb_info_type;
|
|
|
|
/** Buffer containing mb info if mb_info_type is non-zero */
|
|
void *pv_mb_info;
|
|
|
|
/** Flag to indicate if pic info is sent along with input buffer */
|
|
UWORD32 u4_pic_info_type;
|
|
|
|
/** Buffer containing pic info if mb_info_type is non-zero */
|
|
void *pv_pic_info;
|
|
|
|
/** Lower 32bits of input time stamp */
|
|
UWORD32 u4_timestamp_low;
|
|
|
|
/** Upper 32bits of input time stamp */
|
|
UWORD32 u4_timestamp_high;
|
|
|
|
/** Flag to indicate if this is the last input in the stream */
|
|
UWORD32 u4_is_last;
|
|
|
|
/** Descriptor for output bit-stream buffer */
|
|
iv_bits_buf_t s_out_buf;
|
|
|
|
/** Descriptor for recon buffer */
|
|
iv_raw_buf_t s_recon_buf;
|
|
|
|
}ive_video_encode_ip_t;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** error code */
|
|
UWORD32 u4_error_code;
|
|
|
|
/* Output present */
|
|
WORD32 output_present;
|
|
|
|
/* dump recon */
|
|
WORD32 dump_recon;
|
|
|
|
/* encoded frame type */
|
|
UWORD32 u4_encoded_frame_type;
|
|
|
|
/** Flag to indicate if this is the last output from the encoder */
|
|
UWORD32 u4_is_last;
|
|
|
|
/** Lower 32bits of input time stamp */
|
|
UWORD32 u4_timestamp_low;
|
|
|
|
/** Upper 32bits of input time stamp */
|
|
UWORD32 u4_timestamp_high;
|
|
|
|
/** Descriptor for input raw buffer freed from codec */
|
|
iv_raw_buf_t s_inp_buf;
|
|
|
|
/** Descriptor for output bit-stream buffer */
|
|
iv_bits_buf_t s_out_buf;
|
|
|
|
/** Descriptor for recon buffer */
|
|
iv_raw_buf_t s_recon_buf;
|
|
|
|
}ive_video_encode_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Queue Input raw buffer - Send the YUV buffer to be encoded */
|
|
/*****************************************************************************/
|
|
/** Input structure : Queue input buffer to the encoder */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Command : IVE_CMD_QUEUE_INPUT */
|
|
IVE_API_COMMAND_TYPE_T e_cmd;
|
|
|
|
/** Descriptor for input raw buffer */
|
|
iv_raw_buf_t s_inp_buf;
|
|
|
|
/** Flag to indicate if mb info is sent along with input buffer */
|
|
UWORD32 u4_mb_info_type;
|
|
|
|
/** Flag to indicate the size of mb info structure */
|
|
UWORD32 u4_mb_info_size;
|
|
|
|
/** Buffer containing mb info if mb_info_type is non-zero */
|
|
void *pv_mb_info;
|
|
|
|
/** Flag to indicate if pic info is sent along with input buffer */
|
|
UWORD32 u4_pic_info_type;
|
|
|
|
/** Buffer containing pic info if mb_info_type is non-zero */
|
|
void *pv_pic_info;
|
|
|
|
/** Lower 32bits of input time stamp */
|
|
UWORD32 u4_timestamp_low;
|
|
|
|
/** Upper 32bits of input time stamp */
|
|
UWORD32 u4_timestamp_high;
|
|
|
|
|
|
/** Flag to enable/disable blocking the current API call */
|
|
UWORD32 u4_is_blocking;
|
|
|
|
/** Flag to indicate if this is the last input in the stream */
|
|
UWORD32 u4_is_last;
|
|
|
|
}ive_queue_inp_ip_t;
|
|
|
|
/** Input structure : Queue output buffer to the encoder */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_queue_inp_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Dequeue Input raw buffer - Get free YUV buffer from the encoder */
|
|
/*****************************************************************************/
|
|
/** Input structure : Dequeue input buffer from the encoder */
|
|
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Command: IVE_CMD_DEQUEUE_INPUT */
|
|
IVE_API_COMMAND_TYPE_T e_cmd;
|
|
|
|
/** Flag to enable/disable blocking the current API call */
|
|
UWORD32 u4_is_blocking;
|
|
|
|
}ive_dequeue_inp_ip_t;
|
|
|
|
/** Output structure : Dequeue input buffer from the encoder */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
|
|
/** Buffer descriptor of the buffer returned from encoder */
|
|
iv_raw_buf_t s_inp_buf;
|
|
|
|
/** Flag to indicate if mb info is sent along with input buffer */
|
|
UWORD32 u4_mb_info_type;
|
|
|
|
/** Flag to indicate the size of mb info structure */
|
|
UWORD32 u4_mb_info_size;
|
|
|
|
/** Buffer containing mb info if mb_info_type is non-zero */
|
|
void *pv_mb_info;
|
|
|
|
/** Flag to indicate if pic info is sent along with input buffer */
|
|
UWORD32 u4_pic_info_type;
|
|
|
|
/** Buffer containing pic info if mb_info_type is non-zero */
|
|
void *pv_pic_info;
|
|
|
|
/** Lower 32bits of input time stamp */
|
|
UWORD32 u4_timestamp_low;
|
|
|
|
/** Upper 32bits of input time stamp */
|
|
UWORD32 u4_timestamp_high;
|
|
|
|
/** Flag to indicate if this is the last input in the stream */
|
|
UWORD32 u4_is_last;
|
|
|
|
|
|
}ive_dequeue_inp_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Queue Output bitstream buffer - Send the bistream buffer to be filled */
|
|
/*****************************************************************************/
|
|
/** Input structure : Queue output buffer to the encoder */
|
|
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Command : IVE_CMD_QUEUE_OUTPUT */
|
|
IVE_API_COMMAND_TYPE_T e_cmd;
|
|
|
|
/** Descriptor for output bit-stream buffer */
|
|
iv_bits_buf_t s_out_buf;
|
|
|
|
/** Flag to enable/disable blocking the current API call */
|
|
UWORD32 u4_is_blocking;
|
|
|
|
/** Flag to indicate if this is the last output in the stream */
|
|
UWORD32 u4_is_last;
|
|
|
|
}ive_queue_out_ip_t;
|
|
|
|
/** Output structure : Queue output buffer to the encoder */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
|
|
}ive_queue_out_op_t;
|
|
|
|
|
|
/*****************************************************************************/
|
|
/* Dequeue Output bitstream buffer - Get the bistream buffer filled */
|
|
/*****************************************************************************/
|
|
/** Input structure : Dequeue output buffer from the encoder */
|
|
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Command : IVE_CMD_DEQUEUE_OUTPUT */
|
|
IVE_API_COMMAND_TYPE_T e_cmd;
|
|
|
|
/** Flag to enable/disable blocking the current API call */
|
|
UWORD32 u4_is_blocking;
|
|
}ive_dequeue_out_ip_t;
|
|
|
|
/** Output structure : Dequeue output buffer from the encoder */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
|
|
/** Descriptor for output bit-stream buffer */
|
|
iv_bits_buf_t s_out_buf;
|
|
|
|
/** Lower 32bits of timestamp corresponding to this buffer */
|
|
UWORD32 u4_timestamp_low;
|
|
|
|
/** Upper 32bits of timestamp corresponding to this buffer */
|
|
UWORD32 u4_timestamp_high;
|
|
|
|
/** Flag to indicate if this is the last output in the stream */
|
|
UWORD32 u4_is_last;
|
|
|
|
}ive_dequeue_out_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Get Recon data - Get the reconstructed data from encoder */
|
|
/*****************************************************************************/
|
|
/** Input structure : Get recon data from the encoder */
|
|
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Command : IVE_CMD_GET_RECON */
|
|
IVE_API_COMMAND_TYPE_T e_cmd;
|
|
|
|
/** Flag to enable/disable blocking the current API call */
|
|
UWORD32 u4_is_blocking;
|
|
|
|
/** Descriptor for recon buffer */
|
|
iv_raw_buf_t s_recon_buf;
|
|
|
|
/** Flag to indicate if this is the last recon in the stream */
|
|
UWORD32 u4_is_last;
|
|
|
|
}ive_get_recon_ip_t;
|
|
|
|
/** Output structure : Get recon data from the encoder */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
|
|
/** Lower 32bits of time stamp corresponding to this buffer */
|
|
UWORD32 u4_timestamp_low;
|
|
|
|
/** Upper 32bits of time stamp corresponding to this buffer */
|
|
UWORD32 u4_timestamp_high;
|
|
|
|
/** Flag to indicate if this is the last recon in the stream */
|
|
UWORD32 u4_is_last;
|
|
|
|
}ive_get_recon_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Flush */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Flush all the buffers from the encoder */
|
|
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_FLUSH */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
}ive_ctl_flush_ip_t;
|
|
|
|
/** Output structure : Flush all the buffers from the encoder */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_flush_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control reset */
|
|
/*****************************************************************************/
|
|
/** Input structure : Reset the encoder */
|
|
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_RESET */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
}ive_ctl_reset_ip_t;
|
|
|
|
/** Output structure : Reset the encoder */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_reset_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control:Get Buf Info */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Get encoder buffer requirements */
|
|
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_GETBUFINFO */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** maximum width for which codec should request memory requirements */
|
|
UWORD32 u4_max_wd;
|
|
|
|
/** maximum height for which codec should request memory requirements */
|
|
UWORD32 u4_max_ht;
|
|
|
|
/** Input color format */
|
|
IV_COLOR_FORMAT_T e_inp_color_fmt;
|
|
|
|
}ive_ctl_getbufinfo_ip_t;
|
|
|
|
/** Output structure : Get encoder buffer requirements */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
|
|
/** Minimum number of input buffers required for codec */
|
|
UWORD32 u4_min_inp_bufs;
|
|
|
|
/** Minimum number of output buffers required for codec */
|
|
UWORD32 u4_min_out_bufs;
|
|
|
|
/** Number of components in input buffers required for codec */
|
|
UWORD32 u4_inp_comp_cnt;
|
|
|
|
/** Number of components in output buffers required for codec */
|
|
UWORD32 u4_out_comp_cnt;
|
|
|
|
/** Minimum sizes of each component in input buffer required */
|
|
UWORD32 au4_min_in_buf_size[IVE_MAX_IO_BUFFER_COMPONENTS];
|
|
|
|
/** Minimum sizes of each component in output buffer required */
|
|
UWORD32 au4_min_out_buf_size[IVE_MAX_IO_BUFFER_COMPONENTS];
|
|
|
|
}ive_ctl_getbufinfo_op_t;
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************/
|
|
/* Video control:Get Version Info */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Get encoder version 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_GETVERSION */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Buffer where version info will be returned */
|
|
UWORD8 *pu1_version;
|
|
|
|
/** Size of the buffer allocated for version info */
|
|
UWORD32 u4_version_bufsize;
|
|
}ive_ctl_getversioninfo_ip_t;
|
|
|
|
/** Output structure : Get encoder version information */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_getversioninfo_op_t;
|
|
|
|
|
|
/*****************************************************************************/
|
|
/* Video control:set default params */
|
|
/*****************************************************************************/
|
|
/** Input structure : Set default encoder parameters */
|
|
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_SETDEFAULT */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** 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;
|
|
|
|
}ive_ctl_setdefault_ip_t;
|
|
|
|
/** Output structure : Set default encoder parameters */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_setdefault_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set Frame dimensions */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set frame dimensions */
|
|
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_DIMENSIONS */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Input width */
|
|
UWORD32 u4_wd;
|
|
|
|
/** Input height */
|
|
UWORD32 u4_ht;
|
|
|
|
/** 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;
|
|
|
|
}ive_ctl_set_dimensions_ip_t;
|
|
|
|
/** Output structure : Set frame dimensions */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_dimensions_op_t;
|
|
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set Frame rates */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set frame rate */
|
|
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_FRAMERATE */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Source frame rate */
|
|
UWORD32 u4_src_frame_rate;
|
|
|
|
/** Target frame rate */
|
|
UWORD32 u4_tgt_frame_rate;
|
|
|
|
/** 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;
|
|
|
|
}ive_ctl_set_frame_rate_ip_t;
|
|
|
|
/** Output structure : Set frame rate */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_frame_rate_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set Bitrate */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set bitrate */
|
|
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_BITRATE */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Target bitrate in kilobits per second */
|
|
UWORD32 u4_target_bitrate;
|
|
|
|
/** 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;
|
|
|
|
}ive_ctl_set_bitrate_ip_t;
|
|
|
|
/** Output structure : Set bitrate */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_bitrate_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set Frame type */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set frametype */
|
|
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_FRAMETYPE */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Force current frame type */
|
|
IV_PICTURE_CODING_TYPE_T e_frame_type;
|
|
|
|
/** 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;
|
|
|
|
}ive_ctl_set_frame_type_ip_t;
|
|
|
|
/** Output structure : Set frametype */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_frame_type_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set Encode mode */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set encode mode */
|
|
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_ENC_MODE */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Encoder mode */
|
|
IVE_ENC_MODE_T e_enc_mode;
|
|
|
|
/** 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;
|
|
|
|
}ive_ctl_set_enc_mode_ip_t;
|
|
|
|
/** Output structure : Set encode mode */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
|
|
}ive_ctl_set_enc_mode_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set QP */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set QP */
|
|
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_QP */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Set initial Qp for I pictures */
|
|
UWORD32 u4_i_qp;
|
|
|
|
/** Set initial Qp for P pictures */
|
|
UWORD32 u4_p_qp;
|
|
|
|
/** Set initial Qp for B pictures */
|
|
UWORD32 u4_b_qp;
|
|
|
|
/** Set minimum Qp for I pictures */
|
|
UWORD32 u4_i_qp_min;
|
|
|
|
/** Set maximum Qp for I pictures */
|
|
UWORD32 u4_i_qp_max;
|
|
|
|
/** Set minimum Qp for P pictures */
|
|
UWORD32 u4_p_qp_min;
|
|
|
|
/** Set maximum Qp for P pictures */
|
|
UWORD32 u4_p_qp_max;
|
|
|
|
/** Set minimum Qp for B pictures */
|
|
UWORD32 u4_b_qp_min;
|
|
|
|
/** Set maximum Qp for B pictures */
|
|
UWORD32 u4_b_qp_max;
|
|
|
|
/** 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;
|
|
|
|
|
|
}ive_ctl_set_qp_ip_t;
|
|
|
|
/** Output structure : Set QP */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_qp_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set AIR params */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set AIR 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_AIR_PARAMS */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Adaptive intra refresh mode */
|
|
IVE_AIR_MODE_T e_air_mode;
|
|
|
|
/** Adaptive intra refresh period in frames */
|
|
UWORD32 u4_air_refresh_period;
|
|
|
|
/** 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;
|
|
|
|
|
|
}ive_ctl_set_air_params_ip_t;
|
|
|
|
/** Output structure : Set AIR params */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_air_params_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set VBV params */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set VBV 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_VBV_PARAMS */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** VBV buffer delay */
|
|
UWORD32 u4_vbv_buffer_delay;
|
|
|
|
/** VBV buffer size */
|
|
UWORD32 u4_vbv_buf_size;
|
|
|
|
/** 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;
|
|
|
|
|
|
}ive_ctl_set_vbv_params_ip_t;
|
|
|
|
/** Output structure : Set VBV params */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_vbv_params_op_t;
|
|
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set Processor Details */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set processor details */
|
|
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_NUM_CORES */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Total number of cores to be used */
|
|
UWORD32 u4_num_cores;
|
|
|
|
/** 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;
|
|
|
|
}ive_ctl_set_num_cores_ip_t;
|
|
|
|
/** Output structure : Set processor details */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_num_cores_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set Intra Prediction estimation params */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set IPE 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_IPE_PARAMS */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Flag to enable/disbale intra 4x4 analysis */
|
|
UWORD32 u4_enable_intra_4x4;
|
|
|
|
/** Flag to enable/disable pre-enc stage of Intra Pred estimation */
|
|
UWORD32 u4_pre_enc_ipe;
|
|
|
|
/** Speed preset - Value between 0 (slowest) and 100 (fastest) */
|
|
IVE_SPEED_CONFIG u4_enc_speed_preset;
|
|
|
|
/** 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;
|
|
|
|
/** Constrained intra pred flag */
|
|
UWORD32 u4_constrained_intra_pred;
|
|
|
|
}ive_ctl_set_ipe_params_ip_t;
|
|
|
|
/** Output structure : Set IPE Params */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_ipe_params_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set Motion estimation params */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set ME 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_ME_PARAMS */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Flag to enable/disable pre-enc stage of Motion estimation */
|
|
UWORD32 u4_pre_enc_me;
|
|
|
|
/** Speed preset - Value between 0 (slowest) and 100 (fastest) */
|
|
UWORD32 u4_me_speed_preset;
|
|
|
|
/** Flag to enable/disable half pel motion estimation */
|
|
UWORD32 u4_enable_hpel;
|
|
|
|
/** Flag to enable/disable quarter pel motion estimation */
|
|
UWORD32 u4_enable_qpel;
|
|
|
|
/** Flag to enable/disable fast SAD approximation */
|
|
UWORD32 u4_enable_fast_sad;
|
|
|
|
/** Flag to enable/disable alternate reference frames */
|
|
UWORD32 u4_enable_alt_ref;
|
|
|
|
/** Maximum search range in X direction for farthest reference */
|
|
UWORD32 u4_srch_rng_x;
|
|
|
|
/** Maximum search range in Y direction for farthest reference */
|
|
UWORD32 u4_srch_rng_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;
|
|
|
|
}ive_ctl_set_me_params_ip_t;
|
|
|
|
/** Output structure : Set ME Params */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_me_params_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set GOP params */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set GOP 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_GOP_PARAMS */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** I frame interval */
|
|
UWORD32 u4_i_frm_interval;
|
|
|
|
/** IDR frame interval */
|
|
UWORD32 u4_idr_frm_interval;
|
|
|
|
/** 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;
|
|
|
|
}ive_ctl_set_gop_params_ip_t;
|
|
|
|
/** Output structure : Set GOP params */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_gop_params_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set Deblock params */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set Deblock 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_GOP_PARAMS */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Disable deblock level (0: Enable completely, 3: Disable completely */
|
|
UWORD32 u4_disable_deblock_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;
|
|
|
|
}ive_ctl_set_deblock_params_ip_t;
|
|
|
|
/** Output structure : Set Deblock Params */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_deblock_params_op_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Video control Set Profile params */
|
|
/*****************************************************************************/
|
|
|
|
/** Input structure : Set Profile 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_PROFILE_PARAMS */
|
|
IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
|
|
|
|
/** Profile */
|
|
IV_PROFILE_T e_profile;
|
|
|
|
/** 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;
|
|
|
|
/** Entropy coding mode flag: 0-CAVLC, 1-CABAC */
|
|
UWORD32 u4_entropy_coding_mode;
|
|
|
|
}ive_ctl_set_profile_params_ip_t;
|
|
|
|
/** Output structure : Set Profile Params */
|
|
typedef struct
|
|
{
|
|
/** size of the structure */
|
|
UWORD32 u4_size;
|
|
|
|
/** Return error code */
|
|
UWORD32 u4_error_code;
|
|
}ive_ctl_set_profile_params_op_t;
|
|
|
|
|
|
#endif /* _IVE2_H_ */
|
|
|