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