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