ive2.h revision b0aadd0c45cb959d102cbe39ab870e4e3292ce97
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 */ 59typedef 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 */ 69typedef 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 */ 79typedef 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 */ 91typedef 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 */ 100typedef 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 */ 112typedef 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 */ 125typedef 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 */ 156typedef 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 */ 170typedef 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 */ 247typedef 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 */ 323typedef 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 337typedef 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 380typedef 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 */ 421typedef 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 */ 463typedef 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 477typedef 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 */ 491typedef 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 534typedef 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 */ 554typedef 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 570typedef 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 */ 583typedef 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 610typedef 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 */ 630typedef 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 */ 654typedef 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 */ 667typedef 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 */ 680typedef 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 */ 693typedef 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 */ 707typedef 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 */ 730typedef 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 */ 766typedef 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 */ 784typedef 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 */ 798typedef 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 */ 820typedef 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 */ 834typedef 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 */ 862typedef 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 */ 877typedef 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 */ 905typedef 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 */ 919typedef 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 */ 944typedef 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 */ 958typedef 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 */ 983typedef 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 */ 997typedef 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 */ 1022typedef 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 */ 1037typedef 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 */ 1087typedef 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 */ 1101typedef 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 */ 1129typedef 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 */ 1143typedef 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 */ 1172typedef 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 */ 1187typedef 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 */ 1212typedef 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 */ 1226typedef 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}ive_ctl_set_ipe_params_ip_t; 1255 1256/** Output structure : Set IPE Params */ 1257typedef struct 1258{ 1259 /** size of the structure */ 1260 UWORD32 u4_size; 1261 1262 /** Return error code */ 1263 UWORD32 u4_error_code; 1264}ive_ctl_set_ipe_params_op_t; 1265 1266/*****************************************************************************/ 1267/* Video control Set Motion estimation params */ 1268/*****************************************************************************/ 1269 1270/** Input structure : Set ME Params */ 1271typedef struct 1272{ 1273 /** size of the structure */ 1274 UWORD32 u4_size; 1275 1276 /** Command type : IVE_CMD_VIDEO_CTL */ 1277 IVE_API_COMMAND_TYPE_T e_cmd; 1278 1279 /** Sub command type : IVE_CMD_CTL_SET_ME_PARAMS */ 1280 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1281 1282 /** Flag to enable/disable pre-enc stage of Motion estimation */ 1283 UWORD32 u4_pre_enc_me; 1284 1285 /** Speed preset - Value between 0 (slowest) and 100 (fastest) */ 1286 UWORD32 u4_me_speed_preset; 1287 1288 /** Flag to enable/disable half pel motion estimation */ 1289 UWORD32 u4_enable_hpel; 1290 1291 /** Flag to enable/disable quarter pel motion estimation */ 1292 UWORD32 u4_enable_qpel; 1293 1294 /** Flag to enable/disable fast SAD approximation */ 1295 UWORD32 u4_enable_fast_sad; 1296 1297 /** Flag to enable/disable alternate reference frames */ 1298 UWORD32 u4_enable_alt_ref; 1299 1300 /** Maximum search range in X direction for farthest reference */ 1301 UWORD32 u4_srch_rng_x; 1302 1303 /** Maximum search range in Y direction for farthest reference */ 1304 UWORD32 u4_srch_rng_y; 1305 1306 /** Lower 32bits of time stamp corresponding to input buffer, 1307 * from which this command takes effect */ 1308 UWORD32 u4_timestamp_low; 1309 1310 /** Upper 32bits of time stamp corresponding to input buffer, 1311 * from which this command takes effect */ 1312 UWORD32 u4_timestamp_high; 1313 1314}ive_ctl_set_me_params_ip_t; 1315 1316/** Output structure : Set ME Params */ 1317typedef struct 1318{ 1319 /** size of the structure */ 1320 UWORD32 u4_size; 1321 1322 /** Return error code */ 1323 UWORD32 u4_error_code; 1324}ive_ctl_set_me_params_op_t; 1325 1326/*****************************************************************************/ 1327/* Video control Set GOP params */ 1328/*****************************************************************************/ 1329 1330/** Input structure : Set GOP Params */ 1331typedef struct 1332{ 1333 /** size of the structure */ 1334 UWORD32 u4_size; 1335 1336 /** Command type : IVE_CMD_VIDEO_CTL */ 1337 IVE_API_COMMAND_TYPE_T e_cmd; 1338 1339 /** Sub command type : IVE_CMD_CTL_SET_GOP_PARAMS */ 1340 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1341 1342 /** I frame interval */ 1343 UWORD32 u4_i_frm_interval; 1344 1345 /** IDR frame interval */ 1346 UWORD32 u4_idr_frm_interval; 1347 1348 /** Lower 32bits of time stamp corresponding to input buffer, 1349 * from which this command takes effect */ 1350 UWORD32 u4_timestamp_low; 1351 1352 /** Upper 32bits of time stamp corresponding to input buffer, 1353 * from which this command takes effect */ 1354 UWORD32 u4_timestamp_high; 1355 1356}ive_ctl_set_gop_params_ip_t; 1357 1358/** Output structure : Set GOP params */ 1359typedef struct 1360{ 1361 /** size of the structure */ 1362 UWORD32 u4_size; 1363 1364 /** Return error code */ 1365 UWORD32 u4_error_code; 1366}ive_ctl_set_gop_params_op_t; 1367 1368/*****************************************************************************/ 1369/* Video control Set Deblock params */ 1370/*****************************************************************************/ 1371 1372/** Input structure : Set Deblock Params */ 1373typedef struct 1374{ 1375 /** size of the structure */ 1376 UWORD32 u4_size; 1377 1378 /** Command type : IVE_CMD_VIDEO_CTL */ 1379 IVE_API_COMMAND_TYPE_T e_cmd; 1380 1381 /** Sub command type : IVE_CMD_CTL_SET_GOP_PARAMS */ 1382 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1383 1384 /** Disable deblock level (0: Enable completely, 3: Disable completely */ 1385 UWORD32 u4_disable_deblock_level; 1386 1387 /** Lower 32bits of time stamp corresponding to input buffer, 1388 * from which this command takes effect */ 1389 UWORD32 u4_timestamp_low; 1390 1391 /** Upper 32bits of time stamp corresponding to input buffer, 1392 * from which this command takes effect */ 1393 UWORD32 u4_timestamp_high; 1394 1395}ive_ctl_set_deblock_params_ip_t; 1396 1397/** Output structure : Set Deblock Params */ 1398typedef struct 1399{ 1400 /** size of the structure */ 1401 UWORD32 u4_size; 1402 1403 /** Return error code */ 1404 UWORD32 u4_error_code; 1405}ive_ctl_set_deblock_params_op_t; 1406 1407/*****************************************************************************/ 1408/* Video control Set Profile params */ 1409/*****************************************************************************/ 1410 1411/** Input structure : Set Profile Params */ 1412typedef struct 1413{ 1414 /** size of the structure */ 1415 UWORD32 u4_size; 1416 1417 /** Command type : IVE_CMD_VIDEO_CTL */ 1418 IVE_API_COMMAND_TYPE_T e_cmd; 1419 1420 /** Sub command type : IVE_CMD_CTL_SET_PROFILE_PARAMS */ 1421 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 1422 1423 /** Profile */ 1424 IV_PROFILE_T e_profile; 1425 1426 /** Lower 32bits of time stamp corresponding to input buffer, 1427 * from which this command takes effect */ 1428 UWORD32 u4_timestamp_low; 1429 1430 /** Upper 32bits of time stamp corresponding to input buffer, 1431 * from which this command takes effect */ 1432 UWORD32 u4_timestamp_high; 1433 1434 /** Entropy coding mode flag: 0-CAVLC, 1-CABAC */ 1435 UWORD32 u4_entropy_coding_mode; 1436 1437}ive_ctl_set_profile_params_ip_t; 1438 1439/** Output structure : Set Profile Params */ 1440typedef struct 1441{ 1442 /** size of the structure */ 1443 UWORD32 u4_size; 1444 1445 /** Return error code */ 1446 UWORD32 u4_error_code; 1447}ive_ctl_set_profile_params_op_t; 1448 1449 1450#endif /* _IVE2_H_ */ 1451 1452