1 /****************************************************************************** 2 * 3 * Copyright (C) 2015 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ***************************************************************************** 18 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19 */ 20 /** 21 ******************************************************************************* 22 * @file 23 * ive2.h 24 * 25 * @brief 26 * This file contains all the necessary structure and enumeration 27 * definitions needed for the Application Program Interface(API) of the 28 * Ittiam Video Encoders This is version 2 29 * 30 * @author 31 * Ittiam 32 * 33 * @par List of Functions: 34 * 35 * @remarks 36 * None 37 * 38 ******************************************************************************* 39 */ 40 41 #ifndef _IVE2_H_ 42 #define _IVE2_H_ 43 44 /*****************************************************************************/ 45 /* Constant Macros */ 46 /*****************************************************************************/ 47 48 /** Maximum number of components in I/O Buffers */ 49 #define IVE_MAX_IO_BUFFER_COMPONENTS 4 50 51 /** Maximum number of reference pictures */ 52 #define IVE_MAX_REF 16 53 54 /*****************************************************************************/ 55 /* Enums */ 56 /*****************************************************************************/ 57 58 /** Slice modes */ 59 typedef enum 60 { 61 IVE_SLICE_MODE_NA = 0x7FFFFFFF, 62 IVE_SLICE_MODE_NONE = 0x0, 63 64 IVE_SLICE_MODE_BYTES = 0x1, 65 IVE_SLICE_MODE_BLOCKS = 0x2, 66 }IVE_SLICE_MODE_T; 67 68 /** Adaptive Intra refresh modes */ 69 typedef enum 70 { 71 IVE_AIR_MODE_NA = 0x7FFFFFFF, 72 IVE_AIR_MODE_NONE = 0x0, 73 IVE_AIR_MODE_CYCLIC = 0x1, 74 IVE_AIR_MODE_RANDOM = 0x2, 75 IVE_AIR_MODE_DISTORTION = 0x3, 76 }IVE_AIR_MODE_T; 77 78 /** Rate control modes */ 79 typedef enum 80 { 81 IVE_RC_NA = 0x7FFFFFFF, 82 IVE_RC_NONE = 0x0, 83 IVE_RC_STORAGE = 0x1, 84 IVE_RC_CBR_NON_LOW_DELAY = 0x2, 85 IVE_RC_CBR_LOW_DELAY = 0x3, 86 IVE_RC_TWOPASS = 0x4, 87 IVE_RC_RATECONTROLPRESET_DEFAULT = IVE_RC_STORAGE 88 }IVE_RC_MODE_T; 89 90 /** Encoder mode */ 91 typedef enum 92 { 93 IVE_ENC_MODE_NA = 0x7FFFFFFF, 94 IVE_ENC_MODE_HEADER = 0x1, 95 IVE_ENC_MODE_PICTURE = 0x0, 96 IVE_ENC_MODE_DEFAULT = IVE_ENC_MODE_PICTURE, 97 }IVE_ENC_MODE_T; 98 99 /** Speed Config */ 100 typedef enum IVE_SPEED_CONFIG 101 { 102 IVE_QUALITY_DUMMY = 0x7FFFFFFF, 103 IVE_CONFIG = 0, 104 IVE_SLOWEST = 1, 105 IVE_NORMAL = 2, 106 IVE_FAST = 3, 107 IVE_HIGH_SPEED = 4, 108 IVE_FASTEST = 5, 109 }IVE_SPEED_CONFIG; 110 111 /** API command type */ 112 typedef enum 113 { 114 IVE_CMD_VIDEO_NA = 0x7FFFFFFF, 115 IVE_CMD_VIDEO_CTL = IV_CMD_EXTENSIONS + 1, 116 IVE_CMD_VIDEO_ENCODE, 117 IVE_CMD_QUEUE_INPUT, 118 IVE_CMD_DEQUEUE_INPUT, 119 IVE_CMD_QUEUE_OUTPUT, 120 IVE_CMD_DEQUEUE_OUTPUT, 121 IVE_CMD_GET_RECON, 122 }IVE_API_COMMAND_TYPE_T; 123 124 /** Video Control API command type */ 125 typedef enum 126 { 127 IVE_CMD_CT_NA = 0x7FFFFFFF, 128 IVE_CMD_CTL_SETDEFAULT = 0x0, 129 IVE_CMD_CTL_SET_DIMENSIONS = 0x1, 130 IVE_CMD_CTL_SET_FRAMERATE = 0x2, 131 IVE_CMD_CTL_SET_BITRATE = 0x3, 132 IVE_CMD_CTL_SET_FRAMETYPE = 0x4, 133 IVE_CMD_CTL_SET_QP = 0x5, 134 IVE_CMD_CTL_SET_ENC_MODE = 0x6, 135 IVE_CMD_CTL_SET_VBV_PARAMS = 0x7, 136 IVE_CMD_CTL_SET_AIR_PARAMS = 0x8, 137 IVE_CMD_CTL_SET_ME_PARAMS = 0X9, 138 IVE_CMD_CTL_SET_GOP_PARAMS = 0XA, 139 IVE_CMD_CTL_SET_PROFILE_PARAMS = 0XB, 140 IVE_CMD_CTL_SET_DEBLOCK_PARAMS = 0XC, 141 IVE_CMD_CTL_SET_IPE_PARAMS = 0XD, 142 IVE_CMD_CTL_SET_VUI_PARAMS = 0XE, 143 IVE_CMD_CTL_SET_NUM_CORES = 0x30, 144 IVE_CMD_CTL_RESET = 0xA0, 145 IVE_CMD_CTL_FLUSH = 0xB0, 146 IVE_CMD_CTL_GETBUFINFO = 0xC0, 147 IVE_CMD_CTL_GETVERSION = 0xC1, 148 IVE_CMD_CTL_SET_SEI_MDCV_PARAMS = 0xD0, 149 IVE_CMD_CTL_SET_SEI_CLL_PARAMS = 0xD1, 150 IVE_CMD_CTL_SET_SEI_AVE_PARAMS = 0xD2, 151 IVE_CMD_CTL_SET_SEI_CCV_PARAMS = 0xD3, 152 IVE_CMD_CTL_CODEC_SUBCMD_START = 0x100, 153 }IVE_CONTROL_API_COMMAND_TYPE_T; 154 155 /* IVE_ERROR_BITS_T: A UWORD32 container will be used for reporting the error*/ 156 /* code to the application. The first 8 bits starting from LSB have been */ 157 /* reserved for the codec to report internal error details. The rest of the */ 158 /* bits will be generic for all video encoders and each bit has an associated*/ 159 /* meaning as mentioned below. The unused bit fields are reserved for future */ 160 /* extenstions and will be zero in the current implementation */ 161 typedef enum { 162 163 /* Bit 8 - Unsupported input parameter or configuration. */ 164 IVE_UNSUPPORTEDPARAM = 0x8, 165 166 /* Bit 9 - Fatal error (stop the codec).If there is an */ 167 /* error and this bit is not set, the error is a recoverable one. */ 168 IVE_FATALERROR = 0x9, 169 170 IVE_ERROR_BITS_T_DUMMY_ELEMENT = 0x7FFFFFFF 171 }IVE_ERROR_BITS_T; 172 173 /* IVE_ERROR_CODES_T: The list of error codes depicting the possible error */ 174 /* scenarios that can be encountered while encoding */ 175 typedef enum 176 { 177 178 IVE_ERR_NA = 0x7FFFFFFF, 179 IVE_ERR_NONE = 0x00, 180 IVE_ERR_INVALID_API_CMD = 0x01, 181 IVE_ERR_INVALID_API_SUB_CMD = 0x02, 182 IVE_ERR_IP_GET_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x03, 183 IVE_ERR_OP_GET_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x04, 184 IVE_ERR_IP_FILL_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x05, 185 IVE_ERR_OP_FILL_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x06, 186 IVE_ERR_IP_INIT_API_STRUCT_SIZE_INCORRECT = 0x07, 187 IVE_ERR_OP_INIT_API_STRUCT_SIZE_INCORRECT = 0x08, 188 IVE_ERR_IP_RETRIEVE_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x09, 189 IVE_ERR_OP_RETRIEVE_MEM_REC_API_STRUCT_SIZE_INCORRECT = 0x0A, 190 IVE_ERR_IP_ENCODE_API_STRUCT_SIZE_INCORRECT = 0x0B, 191 IVE_ERR_OP_ENCODE_API_STRUCT_SIZE_INCORRECT = 0x0C, 192 IVE_ERR_IP_CTL_SETDEF_API_STRUCT_SIZE_INCORRECT = 0x0D, 193 IVE_ERR_OP_CTL_SETDEF_API_STRUCT_SIZE_INCORRECT = 0x0E, 194 IVE_ERR_IP_CTL_GETBUFINFO_API_STRUCT_SIZE_INCORRECT = 0x0F, 195 IVE_ERR_OP_CTL_GETBUFINFO_API_STRUCT_SIZE_INCORRECT = 0x10, 196 IVE_ERR_IP_CTL_GETVERSION_API_STRUCT_SIZE_INCORRECT = 0x11, 197 IVE_ERR_OP_CTL_GETVERSION_API_STRUCT_SIZE_INCORRECT = 0x12, 198 IVE_ERR_IP_CTL_FLUSH_API_STRUCT_SIZE_INCORRECT = 0x13, 199 IVE_ERR_OP_CTL_FLUSH_API_STRUCT_SIZE_INCORRECT = 0x14, 200 IVE_ERR_IP_CTL_RESET_API_STRUCT_SIZE_INCORRECT = 0x15, 201 IVE_ERR_OP_CTL_RESET_API_STRUCT_SIZE_INCORRECT = 0x16, 202 IVE_ERR_IP_CTL_SETCORES_API_STRUCT_SIZE_INCORRECT = 0x17, 203 IVE_ERR_OP_CTL_SETCORES_API_STRUCT_SIZE_INCORRECT = 0x18, 204 IVE_ERR_IP_CTL_SETDIM_API_STRUCT_SIZE_INCORRECT = 0x19, 205 IVE_ERR_OP_CTL_SETDIM_API_STRUCT_SIZE_INCORRECT = 0x1A, 206 IVE_ERR_IP_CTL_SETFRAMERATE_API_STRUCT_SIZE_INCORRECT = 0x1B, 207 IVE_ERR_OP_CTL_SETFRAMERATE_API_STRUCT_SIZE_INCORRECT = 0x1C, 208 IVE_ERR_IP_CTL_SETBITRATE_API_STRUCT_SIZE_INCORRECT = 0x1D, 209 IVE_ERR_OP_CTL_SETBITRATE_API_STRUCT_SIZE_INCORRECT = 0x1E, 210 IVE_ERR_IP_CTL_SETFRAMETYPE_API_STRUCT_SIZE_INCORRECT = 0x1F, 211 IVE_ERR_OP_CTL_SETFRAMETYPE_API_STRUCT_SIZE_INCORRECT = 0x20, 212 IVE_ERR_IP_CTL_SETMEPARAMS_API_STRUCT_SIZE_INCORRECT = 0x21, 213 IVE_ERR_OP_CTL_SETMEPARAMS_API_STRUCT_SIZE_INCORRECT = 0x22, 214 IVE_ERR_IP_CTL_SETIPEPARAMS_API_STRUCT_SIZE_INCORRECT = 0x23, 215 IVE_ERR_OP_CTL_SETIPEPARAMS_API_STRUCT_SIZE_INCORRECT = 0x24, 216 IVE_ERR_IP_CTL_SETGOPPARAMS_API_STRUCT_SIZE_INCORRECT = 0x25, 217 IVE_ERR_OP_CTL_SETGOPPARAMS_API_STRUCT_SIZE_INCORRECT = 0x26, 218 IVE_ERR_IP_CTL_SETDEBLKPARAMS_API_STRUCT_SIZE_INCORRECT = 0x27, 219 IVE_ERR_OP_CTL_SETDEBLKPARAMS_API_STRUCT_SIZE_INCORRECT = 0x28, 220 IVE_ERR_IP_CTL_SETQPPARAMS_API_STRUCT_SIZE_INCORRECT = 0x29, 221 IVE_ERR_OP_CTL_SETQPPARAMS_API_STRUCT_SIZE_INCORRECT = 0x2A, 222 IVE_ERR_FILL_NUM_MEM_RECS_POINTER_NULL = 0x2B, 223 IVE_ERR_NUM_MEM_REC_NOT_SUFFICIENT = 0x2C, 224 IVE_ERR_MEM_REC_STRUCT_SIZE_INCORRECT = 0x2D, 225 IVE_ERR_MEM_REC_BASE_POINTER_NULL = 0x2E, 226 IVE_ERR_MEM_REC_OVERLAP_ERR = 0x2F, 227 IVE_ERR_MEM_REC_INSUFFICIENT_SIZE = 0x30, 228 IVE_ERR_MEM_REC_ALIGNMENT_ERR = 0x31, 229 IVE_ERR_MEM_REC_INCORRECT_TYPE = 0x32, 230 IVE_ERR_HANDLE_NULL = 0x33, 231 IVE_ERR_HANDLE_STRUCT_SIZE_INCORRECT = 0x34, 232 IVE_ERR_API_FUNCTION_PTR_NULL = 0x35, 233 IVE_ERR_INVALID_CODEC_HANDLE = 0x36, 234 IVE_ERR_CTL_GET_VERSION_BUFFER_IS_NULL = 0x37, 235 IVE_ERR_IP_CTL_SETAIRPARAMS_API_STRUCT_SIZE_INCORRECT = 0x38, 236 IVE_ERR_OP_CTL_SETAIRPARAMS_API_STRUCT_SIZE_INCORRECT = 0x39, 237 IVE_ERR_IP_CTL_SETENCMODE_API_STRUCT_SIZE_INCORRECT = 0x3A, 238 IVE_ERR_OP_CTL_SETENCMODE_API_STRUCT_SIZE_INCORRECT = 0x3B, 239 IVE_ERR_IP_CTL_SETVBVPARAMS_API_STRUCT_SIZE_INCORRECT = 0x3C, 240 IVE_ERR_OP_CTL_SETVBVPARAMS_API_STRUCT_SIZE_INCORRECT = 0x3D, 241 IVE_ERR_IP_CTL_SETPROFILE_API_STRUCT_SIZE_INCORRECT = 0x3E, 242 IVE_ERR_OP_CTL_SETPROFILE_API_STRUCT_SIZE_INCORRECT = 0x3F, 243 IVE_ERR_IP_CTL_SET_VUI_STRUCT_SIZE_INCORRECT = 0x40, 244 IVE_ERR_OP_CTL_SET_VUI_STRUCT_SIZE_INCORRECT = 0x41, 245 IVE_ERR_IP_CTL_SET_SEI_MDCV_STRUCT_SIZE_INCORRECT = 0x42, 246 IVE_ERR_OP_CTL_SET_SEI_MDCV_STRUCT_SIZE_INCORRECT = 0x43, 247 IVE_ERR_IP_CTL_SET_SEI_CLL_STRUCT_SIZE_INCORRECT = 0x44, 248 IVE_ERR_OP_CTL_SET_SEI_CLL_STRUCT_SIZE_INCORRECT = 0x45, 249 IVE_ERR_IP_CTL_SET_SEI_AVE_STRUCT_SIZE_INCORRECT = 0x46, 250 IVE_ERR_OP_CTL_SET_SEI_AVE_STRUCT_SIZE_INCORRECT = 0x47, 251 IVE_ERR_IP_CTL_SET_SEI_CCV_STRUCT_SIZE_INCORRECT = 0x48, 252 IVE_ERR_OP_CTL_SET_SEI_CCV_STRUCT_SIZE_INCORRECT = 0x49, 253 }IVE_ERROR_CODES_T; 254 255 256 /*****************************************************************************/ 257 /* Initialize encoder */ 258 /*****************************************************************************/ 259 260 /** Input structure : Initialize the encoder */ 261 typedef struct 262 { 263 /** size of the structure */ 264 UWORD32 u4_size; 265 266 /** Command type */ 267 IV_API_COMMAND_TYPE_T e_cmd; 268 269 /** Number of memory records */ 270 UWORD32 u4_num_mem_rec; 271 272 /** pointer to array of memrecords structures should be filled by codec 273 with details of memory resource requirements */ 274 iv_mem_rec_t *ps_mem_rec; 275 276 /** maximum width for which codec should request memory requirements */ 277 UWORD32 u4_max_wd; 278 279 /** maximum height for which codec should request memory requirements */ 280 UWORD32 u4_max_ht; 281 282 /** Maximum number of reference frames */ 283 UWORD32 u4_max_ref_cnt; 284 285 /** Maximum number of reorder frames */ 286 UWORD32 u4_max_reorder_cnt; 287 288 /** Maximum level supported */ 289 UWORD32 u4_max_level; 290 291 /** Input color format */ 292 IV_COLOR_FORMAT_T e_inp_color_fmt; 293 294 /** Flag to enable/disable - To be used only for debugging/testing */ 295 UWORD32 u4_enable_recon; 296 297 /** Recon color format */ 298 IV_COLOR_FORMAT_T e_recon_color_fmt; 299 300 /** Rate control mode */ 301 IVE_RC_MODE_T e_rc_mode; 302 303 /** Maximum frame rate to be supported */ 304 UWORD32 u4_max_framerate; 305 306 /** Maximum bitrate to be supported */ 307 UWORD32 u4_max_bitrate; 308 309 /** Maximum number of consecutive B frames */ 310 UWORD32 u4_num_bframes; 311 312 /** Content type Interlaced/Progressive */ 313 IV_CONTENT_TYPE_T e_content_type; 314 315 /** Maximum search range to be used in X direction */ 316 UWORD32 u4_max_srch_rng_x; 317 318 /** Maximum search range to be used in Y direction */ 319 UWORD32 u4_max_srch_rng_y; 320 321 /** Slice Mode */ 322 IVE_SLICE_MODE_T e_slice_mode; 323 324 /** Slice parameter */ 325 UWORD32 u4_slice_param; 326 327 /** Processor architecture */ 328 IV_ARCH_T e_arch; 329 330 /** SOC details */ 331 IV_SOC_T e_soc; 332 333 334 }ive_init_ip_t; 335 336 /** Output structure : Initialize the encoder */ 337 typedef struct 338 { 339 /** Size of the structure */ 340 UWORD32 u4_size; 341 342 /** Return error code */ 343 UWORD32 u4_error_code; 344 }ive_init_op_t; 345 346 347 /*****************************************************************************/ 348 /* Video Encode - Deprecated */ 349 /*****************************************************************************/ 350 351 typedef struct 352 { 353 /** size of the structure */ 354 UWORD32 u4_size; 355 356 IVE_API_COMMAND_TYPE_T e_cmd; 357 358 /** Descriptor for input raw buffer */ 359 iv_raw_buf_t s_inp_buf; 360 361 /** Buffer containing pic info if mb_info_type is non-zero */ 362 void *pv_bufs; 363 364 /** Flag to indicate if mb info is sent along with input buffer */ 365 UWORD32 u4_mb_info_type; 366 367 /** Buffer containing mb info if mb_info_type is non-zero */ 368 void *pv_mb_info; 369 370 /** Flag to indicate if pic info is sent along with input buffer */ 371 UWORD32 u4_pic_info_type; 372 373 /** Buffer containing pic info if mb_info_type is non-zero */ 374 void *pv_pic_info; 375 376 /** Lower 32bits of input time stamp */ 377 UWORD32 u4_timestamp_low; 378 379 /** Upper 32bits of input time stamp */ 380 UWORD32 u4_timestamp_high; 381 382 /** Flag to indicate if this is the last input in the stream */ 383 UWORD32 u4_is_last; 384 385 /** Descriptor for output bit-stream buffer */ 386 iv_bits_buf_t s_out_buf; 387 388 /** Descriptor for recon buffer */ 389 iv_raw_buf_t s_recon_buf; 390 391 }ive_video_encode_ip_t; 392 393 394 typedef struct 395 { 396 /** size of the structure */ 397 UWORD32 u4_size; 398 399 /** error code */ 400 UWORD32 u4_error_code; 401 402 /* Output present */ 403 WORD32 output_present; 404 405 /* dump recon */ 406 WORD32 dump_recon; 407 408 /* encoded frame type */ 409 UWORD32 u4_encoded_frame_type; 410 411 /** Flag to indicate if this is the last output from the encoder */ 412 UWORD32 u4_is_last; 413 414 /** Lower 32bits of input time stamp */ 415 UWORD32 u4_timestamp_low; 416 417 /** Upper 32bits of input time stamp */ 418 UWORD32 u4_timestamp_high; 419 420 /** Descriptor for input raw buffer freed from codec */ 421 iv_raw_buf_t s_inp_buf; 422 423 /** Descriptor for output bit-stream buffer */ 424 iv_bits_buf_t s_out_buf; 425 426 /** Descriptor for recon buffer */ 427 iv_raw_buf_t s_recon_buf; 428 429 }ive_video_encode_op_t; 430 431 /*****************************************************************************/ 432 /* Queue Input raw buffer - Send the YUV buffer to be encoded */ 433 /*****************************************************************************/ 434 /** Input structure : Queue input buffer to the encoder */ 435 typedef struct 436 { 437 /** size of the structure */ 438 UWORD32 u4_size; 439 440 /** Command : IVE_CMD_QUEUE_INPUT */ 441 IVE_API_COMMAND_TYPE_T e_cmd; 442 443 /** Descriptor for input raw buffer */ 444 iv_raw_buf_t s_inp_buf; 445 446 /** Flag to indicate if mb info is sent along with input buffer */ 447 UWORD32 u4_mb_info_type; 448 449 /** Flag to indicate the size of mb info structure */ 450 UWORD32 u4_mb_info_size; 451 452 /** Buffer containing mb info if mb_info_type is non-zero */ 453 void *pv_mb_info; 454 455 /** Flag to indicate if pic info is sent along with input buffer */ 456 UWORD32 u4_pic_info_type; 457 458 /** Buffer containing pic info if mb_info_type is non-zero */ 459 void *pv_pic_info; 460 461 /** Lower 32bits of input time stamp */ 462 UWORD32 u4_timestamp_low; 463 464 /** Upper 32bits of input time stamp */ 465 UWORD32 u4_timestamp_high; 466 467 468 /** Flag to enable/disable blocking the current API call */ 469 UWORD32 u4_is_blocking; 470 471 /** Flag to indicate if this is the last input in the stream */ 472 UWORD32 u4_is_last; 473 474 }ive_queue_inp_ip_t; 475 476 /** Input structure : Queue output buffer to the encoder */ 477 typedef struct 478 { 479 /** size of the structure */ 480 UWORD32 u4_size; 481 482 /** Return error code */ 483 UWORD32 u4_error_code; 484 }ive_queue_inp_op_t; 485 486 /*****************************************************************************/ 487 /* Dequeue Input raw buffer - Get free YUV buffer from the encoder */ 488 /*****************************************************************************/ 489 /** Input structure : Dequeue input buffer from the encoder */ 490 491 typedef struct 492 { 493 /** size of the structure */ 494 UWORD32 u4_size; 495 496 /** Command: IVE_CMD_DEQUEUE_INPUT */ 497 IVE_API_COMMAND_TYPE_T e_cmd; 498 499 /** Flag to enable/disable blocking the current API call */ 500 UWORD32 u4_is_blocking; 501 502 }ive_dequeue_inp_ip_t; 503 504 /** Output structure : Dequeue input buffer from the encoder */ 505 typedef struct 506 { 507 /** size of the structure */ 508 UWORD32 u4_size; 509 510 /** Return error code */ 511 UWORD32 u4_error_code; 512 513 /** Buffer descriptor of the buffer returned from encoder */ 514 iv_raw_buf_t s_inp_buf; 515 516 /** Flag to indicate if mb info is sent along with input buffer */ 517 UWORD32 u4_mb_info_type; 518 519 /** Flag to indicate the size of mb info structure */ 520 UWORD32 u4_mb_info_size; 521 522 /** Buffer containing mb info if mb_info_type is non-zero */ 523 void *pv_mb_info; 524 525 /** Flag to indicate if pic info is sent along with input buffer */ 526 UWORD32 u4_pic_info_type; 527 528 /** Buffer containing pic info if mb_info_type is non-zero */ 529 void *pv_pic_info; 530 531 /** Lower 32bits of input time stamp */ 532 UWORD32 u4_timestamp_low; 533 534 /** Upper 32bits of input time stamp */ 535 UWORD32 u4_timestamp_high; 536 537 /** Flag to indicate if this is the last input in the stream */ 538 UWORD32 u4_is_last; 539 540 541 }ive_dequeue_inp_op_t; 542 543 /*****************************************************************************/ 544 /* Queue Output bitstream buffer - Send the bistream buffer to be filled */ 545 /*****************************************************************************/ 546 /** Input structure : Queue output buffer to the encoder */ 547 548 typedef struct 549 { 550 /** size of the structure */ 551 UWORD32 u4_size; 552 553 /** Command : IVE_CMD_QUEUE_OUTPUT */ 554 IVE_API_COMMAND_TYPE_T e_cmd; 555 556 /** Descriptor for output bit-stream buffer */ 557 iv_bits_buf_t s_out_buf; 558 559 /** Flag to enable/disable blocking the current API call */ 560 UWORD32 u4_is_blocking; 561 562 /** Flag to indicate if this is the last output in the stream */ 563 UWORD32 u4_is_last; 564 565 }ive_queue_out_ip_t; 566 567 /** Output structure : Queue output buffer to the encoder */ 568 typedef struct 569 { 570 /** size of the structure */ 571 UWORD32 u4_size; 572 573 /** Return error code */ 574 UWORD32 u4_error_code; 575 576 }ive_queue_out_op_t; 577 578 579 /*****************************************************************************/ 580 /* Dequeue Output bitstream buffer - Get the bistream buffer filled */ 581 /*****************************************************************************/ 582 /** Input structure : Dequeue output buffer from the encoder */ 583 584 typedef struct 585 { 586 /** size of the structure */ 587 UWORD32 u4_size; 588 589 /** Command : IVE_CMD_DEQUEUE_OUTPUT */ 590 IVE_API_COMMAND_TYPE_T e_cmd; 591 592 /** Flag to enable/disable blocking the current API call */ 593 UWORD32 u4_is_blocking; 594 }ive_dequeue_out_ip_t; 595 596 /** Output structure : Dequeue output buffer from the encoder */ 597 typedef struct 598 { 599 /** size of the structure */ 600 UWORD32 u4_size; 601 602 /** Return error code */ 603 UWORD32 u4_error_code; 604 605 /** Descriptor for output bit-stream buffer */ 606 iv_bits_buf_t s_out_buf; 607 608 /** Lower 32bits of timestamp corresponding to this buffer */ 609 UWORD32 u4_timestamp_low; 610 611 /** Upper 32bits of timestamp corresponding to this buffer */ 612 UWORD32 u4_timestamp_high; 613 614 /** Flag to indicate if this is the last output in the stream */ 615 UWORD32 u4_is_last; 616 617 }ive_dequeue_out_op_t; 618 619 /*****************************************************************************/ 620 /* Get Recon data - Get the reconstructed data from encoder */ 621 /*****************************************************************************/ 622 /** Input structure : Get recon data from the encoder */ 623 624 typedef struct 625 { 626 /** size of the structure */ 627 UWORD32 u4_size; 628 629 /** Command : IVE_CMD_GET_RECON */ 630 IVE_API_COMMAND_TYPE_T e_cmd; 631 632 /** Flag to enable/disable blocking the current API call */ 633 UWORD32 u4_is_blocking; 634 635 /** Descriptor for recon buffer */ 636 iv_raw_buf_t s_recon_buf; 637 638 /** Flag to indicate if this is the last recon in the stream */ 639 UWORD32 u4_is_last; 640 641 }ive_get_recon_ip_t; 642 643 /** Output structure : Get recon data from the encoder */ 644 typedef struct 645 { 646 /** size of the structure */ 647 UWORD32 u4_size; 648 649 /** Return error code */ 650 UWORD32 u4_error_code; 651 652 /** Lower 32bits of time stamp corresponding to this buffer */ 653 UWORD32 u4_timestamp_low; 654 655 /** Upper 32bits of time stamp corresponding to this buffer */ 656 UWORD32 u4_timestamp_high; 657 658 /** Flag to indicate if this is the last recon in the stream */ 659 UWORD32 u4_is_last; 660 661 }ive_get_recon_op_t; 662 663 /*****************************************************************************/ 664 /* Video control Flush */ 665 /*****************************************************************************/ 666 667 /** Input structure : Flush all the buffers from the encoder */ 668 typedef struct 669 { 670 /** size of the structure */ 671 UWORD32 u4_size; 672 673 /** Command type : IVE_CMD_VIDEO_CTL */ 674 IVE_API_COMMAND_TYPE_T e_cmd; 675 676 /** Sub command type : IVE_CMD_CTL_FLUSH */ 677 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 678 }ive_ctl_flush_ip_t; 679 680 /** Output structure : Flush all the buffers from the encoder */ 681 typedef struct 682 { 683 /** size of the structure */ 684 UWORD32 u4_size; 685 686 /** Return error code */ 687 UWORD32 u4_error_code; 688 }ive_ctl_flush_op_t; 689 690 /*****************************************************************************/ 691 /* Video control reset */ 692 /*****************************************************************************/ 693 /** Input structure : Reset the encoder */ 694 typedef struct 695 { 696 /** size of the structure */ 697 UWORD32 u4_size; 698 699 /** Command type : IVE_CMD_VIDEO_CTL */ 700 IVE_API_COMMAND_TYPE_T e_cmd; 701 702 /** Sub command type : IVE_CMD_CTL_RESET */ 703 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 704 }ive_ctl_reset_ip_t; 705 706 /** Output structure : Reset the encoder */ 707 typedef struct 708 { 709 /** size of the structure */ 710 UWORD32 u4_size; 711 712 /** Return error code */ 713 UWORD32 u4_error_code; 714 }ive_ctl_reset_op_t; 715 716 /*****************************************************************************/ 717 /* Video control:Get Buf Info */ 718 /*****************************************************************************/ 719 720 /** Input structure : Get encoder buffer requirements */ 721 typedef struct 722 { 723 /** size of the structure */ 724 UWORD32 u4_size; 725 726 /** Command type : IVE_CMD_VIDEO_CTL */ 727 IVE_API_COMMAND_TYPE_T e_cmd; 728 729 /** Sub command type : IVE_CMD_CTL_GETBUFINFO */ 730 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 731 732 /** maximum width for which codec should request memory requirements */ 733 UWORD32 u4_max_wd; 734 735 /** maximum height for which codec should request memory requirements */ 736 UWORD32 u4_max_ht; 737 738 /** Input color format */ 739 IV_COLOR_FORMAT_T e_inp_color_fmt; 740 741 }ive_ctl_getbufinfo_ip_t; 742 743 /** Output structure : Get encoder buffer requirements */ 744 typedef struct 745 { 746 /** size of the structure */ 747 UWORD32 u4_size; 748 749 /** Return error code */ 750 UWORD32 u4_error_code; 751 752 /** Minimum number of input buffers required for codec */ 753 UWORD32 u4_min_inp_bufs; 754 755 /** Minimum number of output buffers required for codec */ 756 UWORD32 u4_min_out_bufs; 757 758 /** Number of components in input buffers required for codec */ 759 UWORD32 u4_inp_comp_cnt; 760 761 /** Number of components in output buffers required for codec */ 762 UWORD32 u4_out_comp_cnt; 763 764 /** Minimum sizes of each component in input buffer required */ 765 UWORD32 au4_min_in_buf_size[IVE_MAX_IO_BUFFER_COMPONENTS]; 766 767 /** Minimum sizes of each component in output buffer required */ 768 UWORD32 au4_min_out_buf_size[IVE_MAX_IO_BUFFER_COMPONENTS]; 769 770 }ive_ctl_getbufinfo_op_t; 771 772 773 774 775 /*****************************************************************************/ 776 /* Video control:Get Version Info */ 777 /*****************************************************************************/ 778 779 /** Input structure : Get encoder version information */ 780 typedef struct 781 { 782 /** size of the structure */ 783 UWORD32 u4_size; 784 /** Command type : IVE_CMD_VIDEO_CTL */ 785 IVE_API_COMMAND_TYPE_T e_cmd; 786 787 /** Sub command type : IVE_CMD_CTL_GETVERSION */ 788 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 789 790 /** Buffer where version info will be returned */ 791 UWORD8 *pu1_version; 792 793 /** Size of the buffer allocated for version info */ 794 UWORD32 u4_version_bufsize; 795 }ive_ctl_getversioninfo_ip_t; 796 797 /** Output structure : Get encoder version information */ 798 typedef struct 799 { 800 /** size of the structure */ 801 UWORD32 u4_size; 802 803 /** Return error code */ 804 UWORD32 u4_error_code; 805 }ive_ctl_getversioninfo_op_t; 806 807 808 /*****************************************************************************/ 809 /* Video control:set default params */ 810 /*****************************************************************************/ 811 /** Input structure : Set default encoder parameters */ 812 typedef struct 813 { 814 /** size of the structure */ 815 UWORD32 u4_size; 816 817 /** Command type : IVE_CMD_VIDEO_CTL */ 818 IVE_API_COMMAND_TYPE_T e_cmd; 819 820 /** Sub command type : IVE_CMD_CTL_SETDEFAULT */ 821 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 822 823 /** Lower 32bits of time stamp corresponding to input buffer, 824 * from which this command takes effect */ 825 UWORD32 u4_timestamp_low; 826 827 /** Upper 32bits of time stamp corresponding to input buffer, 828 * from which this command takes effect */ 829 UWORD32 u4_timestamp_high; 830 831 }ive_ctl_setdefault_ip_t; 832 833 /** Output structure : Set default encoder parameters */ 834 typedef struct 835 { 836 /** size of the structure */ 837 UWORD32 u4_size; 838 839 /** Return error code */ 840 UWORD32 u4_error_code; 841 }ive_ctl_setdefault_op_t; 842 843 /*****************************************************************************/ 844 /* Video control Set Frame dimensions */ 845 /*****************************************************************************/ 846 847 /** Input structure : Set frame dimensions */ 848 typedef struct 849 { 850 /** size of the structure */ 851 UWORD32 u4_size; 852 853 /** Command type : IVE_CMD_VIDEO_CTL */ 854 IVE_API_COMMAND_TYPE_T e_cmd; 855 856 /** Sub command type : IVE_CMD_CTL_SET_DIMENSIONS */ 857 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 858 859 /** Input width */ 860 UWORD32 u4_wd; 861 862 /** Input height */ 863 UWORD32 u4_ht; 864 865 /** Lower 32bits of time stamp corresponding to input buffer, 866 * from which this command takes effect */ 867 UWORD32 u4_timestamp_low; 868 869 /** Upper 32bits of time stamp corresponding to input buffer, 870 * from which this command takes effect */ 871 UWORD32 u4_timestamp_high; 872 873 }ive_ctl_set_dimensions_ip_t; 874 875 /** Output structure : Set frame dimensions */ 876 typedef struct 877 { 878 /** size of the structure */ 879 UWORD32 u4_size; 880 881 /** Return error code */ 882 UWORD32 u4_error_code; 883 }ive_ctl_set_dimensions_op_t; 884 885 886 /*****************************************************************************/ 887 /* Video control Set Frame rates */ 888 /*****************************************************************************/ 889 890 /** Input structure : Set frame rate */ 891 typedef struct 892 { 893 /** size of the structure */ 894 UWORD32 u4_size; 895 896 /** Command type : IVE_CMD_VIDEO_CTL */ 897 IVE_API_COMMAND_TYPE_T e_cmd; 898 899 /** Sub command type : IVE_CMD_CTL_SET_FRAMERATE */ 900 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 901 902 /** Source frame rate */ 903 UWORD32 u4_src_frame_rate; 904 905 /** Target frame rate */ 906 UWORD32 u4_tgt_frame_rate; 907 908 /** Lower 32bits of time stamp corresponding to input buffer, 909 * from which this command takes effect */ 910 UWORD32 u4_timestamp_low; 911 912 /** Upper 32bits of time stamp corresponding to input buffer, 913 * from which this command takes effect */ 914 UWORD32 u4_timestamp_high; 915 916 }ive_ctl_set_frame_rate_ip_t; 917 918 /** Output structure : Set frame rate */ 919 typedef struct 920 { 921 /** size of the structure */ 922 UWORD32 u4_size; 923 924 /** Return error code */ 925 UWORD32 u4_error_code; 926 }ive_ctl_set_frame_rate_op_t; 927 928 /*****************************************************************************/ 929 /* Video control Set Bitrate */ 930 /*****************************************************************************/ 931 932 /** Input structure : Set bitrate */ 933 typedef struct 934 { 935 /** size of the structure */ 936 UWORD32 u4_size; 937 938 /** Command type : IVE_CMD_VIDEO_CTL */ 939 IVE_API_COMMAND_TYPE_T e_cmd; 940 941 /** Sub command type : IVE_CMD_CTL_SET_BITRATE */ 942 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 943 944 /** Target bitrate in kilobits per second */ 945 UWORD32 u4_target_bitrate; 946 947 /** Lower 32bits of time stamp corresponding to input buffer, 948 * from which this command takes effect */ 949 UWORD32 u4_timestamp_low; 950 951 /** Upper 32bits of time stamp corresponding to input buffer, 952 * from which this command takes effect */ 953 UWORD32 u4_timestamp_high; 954 955 }ive_ctl_set_bitrate_ip_t; 956 957 /** Output structure : Set bitrate */ 958 typedef struct 959 { 960 /** size of the structure */ 961 UWORD32 u4_size; 962 963 /** Return error code */ 964 UWORD32 u4_error_code; 965 }ive_ctl_set_bitrate_op_t; 966 967 /*****************************************************************************/ 968 /* Video control Set Frame type */ 969 /*****************************************************************************/ 970 971 /** Input structure : Set frametype */ 972 typedef struct 973 { 974 /** size of the structure */ 975 UWORD32 u4_size; 976 977 /** Command type : IVE_CMD_VIDEO_CTL */ 978 IVE_API_COMMAND_TYPE_T e_cmd; 979 980 /** Sub command type : IVE_CMD_CTL_SET_FRAMETYPE */ 981 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 982 983 /** Force current frame type */ 984 IV_PICTURE_CODING_TYPE_T e_frame_type; 985 986 /** Lower 32bits of time stamp corresponding to input buffer, 987 * from which this command takes effect */ 988 UWORD32 u4_timestamp_low; 989 990 /** Upper 32bits of time stamp corresponding to input buffer, 991 * from which this command takes effect */ 992 UWORD32 u4_timestamp_high; 993 994 }ive_ctl_set_frame_type_ip_t; 995 996 /** Output structure : Set frametype */ 997 typedef struct 998 { 999 /** size of the structure */ 1000 UWORD32 u4_size; 1001 1002 /** Return error code */ 1003 UWORD32 u4_error_code; 1004 }ive_ctl_set_frame_type_op_t; 1005 1006 /*****************************************************************************/ 1007 /* Video control Set Encode mode */ 1008 /*****************************************************************************/ 1009 1010 /** Input structure : Set encode mode */ 1011 typedef struct 1012 { 1013 /** size of the structure */ 1014 UWORD32 u4_size; 1015 1016 /** Command type : IVE_CMD_VIDEO_CTL */ 1017 IVE_API_COMMAND_TYPE_T e_cmd; 1018 1019 /** Sub command type : IVE_CMD_CTL_SET_ENC_MODE */ 1020 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1021 1022 /** Encoder mode */ 1023 IVE_ENC_MODE_T e_enc_mode; 1024 1025 /** Lower 32bits of time stamp corresponding to input buffer, 1026 * from which this command takes effect */ 1027 UWORD32 u4_timestamp_low; 1028 1029 /** Upper 32bits of time stamp corresponding to input buffer, 1030 * from which this command takes effect */ 1031 UWORD32 u4_timestamp_high; 1032 1033 }ive_ctl_set_enc_mode_ip_t; 1034 1035 /** Output structure : Set encode mode */ 1036 typedef struct 1037 { 1038 /** size of the structure */ 1039 UWORD32 u4_size; 1040 1041 /** Return error code */ 1042 UWORD32 u4_error_code; 1043 1044 }ive_ctl_set_enc_mode_op_t; 1045 1046 /*****************************************************************************/ 1047 /* Video control Set QP */ 1048 /*****************************************************************************/ 1049 1050 /** Input structure : Set QP */ 1051 typedef struct 1052 { 1053 /** size of the structure */ 1054 UWORD32 u4_size; 1055 1056 /** Command type : IVE_CMD_VIDEO_CTL */ 1057 IVE_API_COMMAND_TYPE_T e_cmd; 1058 1059 /** Sub command type : IVE_CMD_CTL_SET_QP */ 1060 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1061 1062 /** Set initial Qp for I pictures */ 1063 UWORD32 u4_i_qp; 1064 1065 /** Set initial Qp for P pictures */ 1066 UWORD32 u4_p_qp; 1067 1068 /** Set initial Qp for B pictures */ 1069 UWORD32 u4_b_qp; 1070 1071 /** Set minimum Qp for I pictures */ 1072 UWORD32 u4_i_qp_min; 1073 1074 /** Set maximum Qp for I pictures */ 1075 UWORD32 u4_i_qp_max; 1076 1077 /** Set minimum Qp for P pictures */ 1078 UWORD32 u4_p_qp_min; 1079 1080 /** Set maximum Qp for P pictures */ 1081 UWORD32 u4_p_qp_max; 1082 1083 /** Set minimum Qp for B pictures */ 1084 UWORD32 u4_b_qp_min; 1085 1086 /** Set maximum Qp for B pictures */ 1087 UWORD32 u4_b_qp_max; 1088 1089 /** Lower 32bits of time stamp corresponding to input buffer, 1090 * from which this command takes effect */ 1091 UWORD32 u4_timestamp_low; 1092 1093 /** Upper 32bits of time stamp corresponding to input buffer, 1094 * from which this command takes effect */ 1095 UWORD32 u4_timestamp_high; 1096 1097 1098 }ive_ctl_set_qp_ip_t; 1099 1100 /** Output structure : Set QP */ 1101 typedef struct 1102 { 1103 /** size of the structure */ 1104 UWORD32 u4_size; 1105 1106 /** Return error code */ 1107 UWORD32 u4_error_code; 1108 }ive_ctl_set_qp_op_t; 1109 1110 /*****************************************************************************/ 1111 /* Video control Set AIR params */ 1112 /*****************************************************************************/ 1113 1114 /** Input structure : Set AIR params */ 1115 typedef struct 1116 { 1117 /** size of the structure */ 1118 UWORD32 u4_size; 1119 /** Command type : IVE_CMD_VIDEO_CTL */ 1120 IVE_API_COMMAND_TYPE_T e_cmd; 1121 1122 /** Sub command type : IVE_CMD_CTL_SET_AIR_PARAMS */ 1123 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1124 1125 /** Adaptive intra refresh mode */ 1126 IVE_AIR_MODE_T e_air_mode; 1127 1128 /** Adaptive intra refresh period in frames */ 1129 UWORD32 u4_air_refresh_period; 1130 1131 /** Lower 32bits of time stamp corresponding to input buffer, 1132 * from which this command takes effect */ 1133 UWORD32 u4_timestamp_low; 1134 1135 /** Upper 32bits of time stamp corresponding to input buffer, 1136 * from which this command takes effect */ 1137 UWORD32 u4_timestamp_high; 1138 1139 1140 }ive_ctl_set_air_params_ip_t; 1141 1142 /** Output structure : Set AIR params */ 1143 typedef struct 1144 { 1145 /** size of the structure */ 1146 UWORD32 u4_size; 1147 1148 /** Return error code */ 1149 UWORD32 u4_error_code; 1150 }ive_ctl_set_air_params_op_t; 1151 1152 /*****************************************************************************/ 1153 /* Video control Set VBV params */ 1154 /*****************************************************************************/ 1155 1156 /** Input structure : Set VBV params */ 1157 typedef struct 1158 { 1159 /** size of the structure */ 1160 UWORD32 u4_size; 1161 1162 /** Command type : IVE_CMD_VIDEO_CTL */ 1163 IVE_API_COMMAND_TYPE_T e_cmd; 1164 1165 /** Sub command type : IVE_CMD_CTL_SET_VBV_PARAMS */ 1166 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1167 1168 /** VBV buffer delay */ 1169 UWORD32 u4_vbv_buffer_delay; 1170 1171 /** VBV buffer size */ 1172 UWORD32 u4_vbv_buf_size; 1173 1174 /** Lower 32bits of time stamp corresponding to input buffer, 1175 * from which this command takes effect */ 1176 UWORD32 u4_timestamp_low; 1177 1178 /** Upper 32bits of time stamp corresponding to input buffer, 1179 * from which this command takes effect */ 1180 UWORD32 u4_timestamp_high; 1181 1182 1183 }ive_ctl_set_vbv_params_ip_t; 1184 1185 /** Output structure : Set VBV params */ 1186 typedef struct 1187 { 1188 /** size of the structure */ 1189 UWORD32 u4_size; 1190 1191 /** Return error code */ 1192 UWORD32 u4_error_code; 1193 }ive_ctl_set_vbv_params_op_t; 1194 1195 1196 /*****************************************************************************/ 1197 /* Video control Set Processor Details */ 1198 /*****************************************************************************/ 1199 1200 /** Input structure : Set processor details */ 1201 typedef struct 1202 { 1203 /** size of the structure */ 1204 UWORD32 u4_size; 1205 1206 /** Command type : IVE_CMD_VIDEO_CTL */ 1207 IVE_API_COMMAND_TYPE_T e_cmd; 1208 1209 /** Sub command type : IVE_CMD_CTL_SET_NUM_CORES */ 1210 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1211 1212 /** Total number of cores to be used */ 1213 UWORD32 u4_num_cores; 1214 1215 /** Lower 32bits of time stamp corresponding to input buffer, 1216 * from which this command takes effect */ 1217 UWORD32 u4_timestamp_low; 1218 1219 /** Upper 32bits of time stamp corresponding to input buffer, 1220 * from which this command takes effect */ 1221 UWORD32 u4_timestamp_high; 1222 1223 }ive_ctl_set_num_cores_ip_t; 1224 1225 /** Output structure : Set processor details */ 1226 typedef struct 1227 { 1228 /** size of the structure */ 1229 UWORD32 u4_size; 1230 1231 /** Return error code */ 1232 UWORD32 u4_error_code; 1233 }ive_ctl_set_num_cores_op_t; 1234 1235 /*****************************************************************************/ 1236 /* Video control Set Intra Prediction estimation params */ 1237 /*****************************************************************************/ 1238 1239 /** Input structure : Set IPE params */ 1240 typedef struct 1241 { 1242 /** size of the structure */ 1243 UWORD32 u4_size; 1244 1245 /** Command type : IVE_CMD_VIDEO_CTL */ 1246 IVE_API_COMMAND_TYPE_T e_cmd; 1247 1248 /** Sub command type : IVE_CMD_CTL_SET_IPE_PARAMS */ 1249 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1250 1251 /** Flag to enable/disbale intra 4x4 analysis */ 1252 UWORD32 u4_enable_intra_4x4; 1253 1254 /** Flag to enable/disable pre-enc stage of Intra Pred estimation */ 1255 UWORD32 u4_pre_enc_ipe; 1256 1257 /** Speed preset - Value between 0 (slowest) and 100 (fastest) */ 1258 IVE_SPEED_CONFIG u4_enc_speed_preset; 1259 1260 /** Lower 32bits of time stamp corresponding to input buffer, 1261 * from which this command takes effect */ 1262 UWORD32 u4_timestamp_low; 1263 1264 /** Upper 32bits of time stamp corresponding to input buffer, 1265 * from which this command takes effect */ 1266 UWORD32 u4_timestamp_high; 1267 1268 /** Constrained intra pred flag */ 1269 UWORD32 u4_constrained_intra_pred; 1270 1271 }ive_ctl_set_ipe_params_ip_t; 1272 1273 /** Output structure : Set IPE Params */ 1274 typedef struct 1275 { 1276 /** size of the structure */ 1277 UWORD32 u4_size; 1278 1279 /** Return error code */ 1280 UWORD32 u4_error_code; 1281 }ive_ctl_set_ipe_params_op_t; 1282 1283 /*****************************************************************************/ 1284 /* Video control Set Motion estimation params */ 1285 /*****************************************************************************/ 1286 1287 /** Input structure : Set ME Params */ 1288 typedef struct 1289 { 1290 /** size of the structure */ 1291 UWORD32 u4_size; 1292 1293 /** Command type : IVE_CMD_VIDEO_CTL */ 1294 IVE_API_COMMAND_TYPE_T e_cmd; 1295 1296 /** Sub command type : IVE_CMD_CTL_SET_ME_PARAMS */ 1297 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1298 1299 /** Flag to enable/disable pre-enc stage of Motion estimation */ 1300 UWORD32 u4_pre_enc_me; 1301 1302 /** Speed preset - Value between 0 (slowest) and 100 (fastest) */ 1303 UWORD32 u4_me_speed_preset; 1304 1305 /** Flag to enable/disable half pel motion estimation */ 1306 UWORD32 u4_enable_hpel; 1307 1308 /** Flag to enable/disable quarter pel motion estimation */ 1309 UWORD32 u4_enable_qpel; 1310 1311 /** Flag to enable/disable fast SAD approximation */ 1312 UWORD32 u4_enable_fast_sad; 1313 1314 /** Flag to enable/disable alternate reference frames */ 1315 UWORD32 u4_enable_alt_ref; 1316 1317 /** Maximum search range in X direction for farthest reference */ 1318 UWORD32 u4_srch_rng_x; 1319 1320 /** Maximum search range in Y direction for farthest reference */ 1321 UWORD32 u4_srch_rng_y; 1322 1323 /** Lower 32bits of time stamp corresponding to input buffer, 1324 * from which this command takes effect */ 1325 UWORD32 u4_timestamp_low; 1326 1327 /** Upper 32bits of time stamp corresponding to input buffer, 1328 * from which this command takes effect */ 1329 UWORD32 u4_timestamp_high; 1330 1331 }ive_ctl_set_me_params_ip_t; 1332 1333 /** Output structure : Set ME Params */ 1334 typedef struct 1335 { 1336 /** size of the structure */ 1337 UWORD32 u4_size; 1338 1339 /** Return error code */ 1340 UWORD32 u4_error_code; 1341 }ive_ctl_set_me_params_op_t; 1342 1343 /*****************************************************************************/ 1344 /* Video control Set GOP params */ 1345 /*****************************************************************************/ 1346 1347 /** Input structure : Set GOP Params */ 1348 typedef struct 1349 { 1350 /** size of the structure */ 1351 UWORD32 u4_size; 1352 1353 /** Command type : IVE_CMD_VIDEO_CTL */ 1354 IVE_API_COMMAND_TYPE_T e_cmd; 1355 1356 /** Sub command type : IVE_CMD_CTL_SET_GOP_PARAMS */ 1357 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1358 1359 /** I frame interval */ 1360 UWORD32 u4_i_frm_interval; 1361 1362 /** IDR frame interval */ 1363 UWORD32 u4_idr_frm_interval; 1364 1365 /** Lower 32bits of time stamp corresponding to input buffer, 1366 * from which this command takes effect */ 1367 UWORD32 u4_timestamp_low; 1368 1369 /** Upper 32bits of time stamp corresponding to input buffer, 1370 * from which this command takes effect */ 1371 UWORD32 u4_timestamp_high; 1372 1373 }ive_ctl_set_gop_params_ip_t; 1374 1375 /** Output structure : Set GOP params */ 1376 typedef struct 1377 { 1378 /** size of the structure */ 1379 UWORD32 u4_size; 1380 1381 /** Return error code */ 1382 UWORD32 u4_error_code; 1383 }ive_ctl_set_gop_params_op_t; 1384 1385 /*****************************************************************************/ 1386 /* Video control Set Deblock params */ 1387 /*****************************************************************************/ 1388 1389 /** Input structure : Set Deblock Params */ 1390 typedef struct 1391 { 1392 /** size of the structure */ 1393 UWORD32 u4_size; 1394 1395 /** Command type : IVE_CMD_VIDEO_CTL */ 1396 IVE_API_COMMAND_TYPE_T e_cmd; 1397 1398 /** Sub command type : IVE_CMD_CTL_SET_GOP_PARAMS */ 1399 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1400 1401 /** Disable deblock level (0: Enable completely, 3: Disable completely */ 1402 UWORD32 u4_disable_deblock_level; 1403 1404 /** Lower 32bits of time stamp corresponding to input buffer, 1405 * from which this command takes effect */ 1406 UWORD32 u4_timestamp_low; 1407 1408 /** Upper 32bits of time stamp corresponding to input buffer, 1409 * from which this command takes effect */ 1410 UWORD32 u4_timestamp_high; 1411 1412 }ive_ctl_set_deblock_params_ip_t; 1413 1414 /** Output structure : Set Deblock Params */ 1415 typedef struct 1416 { 1417 /** size of the structure */ 1418 UWORD32 u4_size; 1419 1420 /** Return error code */ 1421 UWORD32 u4_error_code; 1422 }ive_ctl_set_deblock_params_op_t; 1423 1424 /*****************************************************************************/ 1425 /* Video control Set Profile params */ 1426 /*****************************************************************************/ 1427 1428 /** Input structure : Set Profile Params */ 1429 typedef struct 1430 { 1431 /** size of the structure */ 1432 UWORD32 u4_size; 1433 1434 /** Command type : IVE_CMD_VIDEO_CTL */ 1435 IVE_API_COMMAND_TYPE_T e_cmd; 1436 1437 /** Sub command type : IVE_CMD_CTL_SET_PROFILE_PARAMS */ 1438 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1439 1440 /** Profile */ 1441 IV_PROFILE_T e_profile; 1442 1443 /** Lower 32bits of time stamp corresponding to input buffer, 1444 * from which this command takes effect */ 1445 UWORD32 u4_timestamp_low; 1446 1447 /** Upper 32bits of time stamp corresponding to input buffer, 1448 * from which this command takes effect */ 1449 UWORD32 u4_timestamp_high; 1450 1451 /** Entropy coding mode flag: 0-CAVLC, 1-CABAC */ 1452 UWORD32 u4_entropy_coding_mode; 1453 1454 }ive_ctl_set_profile_params_ip_t; 1455 1456 /** Output structure : Set Profile Params */ 1457 typedef struct 1458 { 1459 /** size of the structure */ 1460 UWORD32 u4_size; 1461 1462 /** Return error code */ 1463 UWORD32 u4_error_code; 1464 }ive_ctl_set_profile_params_op_t; 1465 1466 1467 #endif /* _IVE2_H_ */ 1468 1469