| /****************************************************************************** |
| * |
| * 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_ */ |
| |