diff options
author | Hamsalekha S <hamsalekha.s@ittiam.com> | 2015-03-13 21:24:58 +0530 |
---|---|---|
committer | Hamsalekha S <hamsalekha.s@ittiam.com> | 2015-04-02 15:59:02 +0530 |
commit | 8d3d303c7942ced6a987a52db8977d768dc3605f (patch) | |
tree | cc806c96794356996b13ba9970941d0aed74a97e /encoder/ive2.h | |
parent | 3956d913d37327dcb340f836e604b04bd478b158 (diff) | |
download | android_external_libavc-8d3d303c7942ced6a987a52db8977d768dc3605f.tar.gz android_external_libavc-8d3d303c7942ced6a987a52db8977d768dc3605f.tar.bz2 android_external_libavc-8d3d303c7942ced6a987a52db8977d768dc3605f.zip |
Initial version
Change-Id: I7efe9a589cd24edf86e8d086b40c27cbbf8b4017
Diffstat (limited to 'encoder/ive2.h')
-rwxr-xr-x | encoder/ive2.h | 1445 |
1 files changed, 1445 insertions, 0 deletions
diff --git a/encoder/ive2.h b/encoder/ive2.h new file mode 100755 index 0000000..8cb0fd1 --- /dev/null +++ b/encoder/ive2.h @@ -0,0 +1,1445 @@ +/****************************************************************************** + * + * 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_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_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_max_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; + + /** 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; + + /** Input stride */ + UWORD32 u4_strd; + + /** 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; + +}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; + + /** consecutive B frames */ + UWORD32 u4_num_b_frames; + + /** 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; + +}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_ */ + |