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.
1456 lines
61 KiB
1456 lines
61 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_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_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_ */ |
|
|
|
|