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 Name : ih264e.h */ 23 /* */ 24 /* Description : This file contains all the necessary structure and */ 25 /* enumeration definitions needed for the Application */ 26 /* Program Interface(API) of the Ittiam MPEG4 */ 27 /* Encoder on Cortex A8 - Neon platform */ 28 /* */ 29 /* List of Functions : ih264e_api_function */ 30 /* */ 31 /* Issues / Problems : None */ 32 /* */ 33 /* Revision History : */ 34 /* */ 35 /* DD MM YYYY Author(s) Changes (Describe the changes made) */ 36 /* 26 08 2010 100239(RCY) Draft */ 37 /* */ 38 /*****************************************************************************/ 39 40 #ifndef _IH264E_H_ 41 #define _IH264E_H_ 42 43 #ifdef __cplusplus 44 extern "C" { 45 #endif 46 47 #include "iv2.h" 48 #include "ive2.h" 49 /*****************************************************************************/ 50 /* API Function Prototype */ 51 /*****************************************************************************/ 52 IV_STATUS_T ih264e_api_function(iv_obj_t *ps_handle, void *pv_api_ip,void *pv_api_op); 53 54 /*****************************************************************************/ 55 /* Enums */ 56 /*****************************************************************************/ 57 typedef enum 58 { 59 IH264E_CMD_CTL_SET_ME_INFO_ENABLE, 60 }IH264E_CMD_CTL_SUB_CMDS; 61 62 63 /*****************************************************************************/ 64 /* Extended Structures */ 65 /*****************************************************************************/ 66 67 /*****************************************************************************/ 68 /* Get Number of Memory Records */ 69 /*****************************************************************************/ 70 71 72 typedef struct 73 { 74 iv_num_mem_rec_ip_t s_ive_ip; 75 }ih264e_num_mem_rec_ip_t; 76 77 78 typedef struct 79 { 80 iv_num_mem_rec_op_t s_ive_op; 81 }ih264e_num_mem_rec_op_t; 82 83 84 /*****************************************************************************/ 85 /* Fill Memory Records */ 86 /*****************************************************************************/ 87 88 89 typedef struct 90 { 91 iv_fill_mem_rec_ip_t s_ive_ip; 92 }ih264e_fill_mem_rec_ip_t; 93 94 95 typedef struct 96 { 97 iv_fill_mem_rec_op_t s_ive_op; 98 }ih264e_fill_mem_rec_op_t; 99 100 /*****************************************************************************/ 101 /* Retrieve Memory Records */ 102 /*****************************************************************************/ 103 104 105 typedef struct 106 { 107 iv_retrieve_mem_rec_ip_t s_ive_ip; 108 }ih264e_retrieve_mem_rec_ip_t; 109 110 111 typedef struct 112 { 113 iv_retrieve_mem_rec_op_t s_ive_op; 114 }ih264e_retrieve_mem_rec_op_t; 115 116 117 /*****************************************************************************/ 118 /* Initialize encoder */ 119 /*****************************************************************************/ 120 121 typedef struct 122 { 123 ive_init_ip_t s_ive_ip; 124 }ih264e_init_ip_t; 125 126 127 typedef struct 128 { 129 ive_init_op_t s_ive_op; 130 }ih264e_init_op_t; 131 132 133 /*****************************************************************************/ 134 /* Queue Input raw buffer - Send the YUV buffer to be encoded */ 135 /*****************************************************************************/ 136 typedef struct 137 { 138 ive_queue_inp_ip_t s_ive_ip; 139 }ih264e_queue_inp_ip_t; 140 141 typedef struct 142 { 143 ive_queue_inp_op_t s_ive_op; 144 }ih264e_queue_inp_op_t; 145 146 /*****************************************************************************/ 147 /* Dequeue Input raw buffer - Get free YUV buffer from the encoder */ 148 /*****************************************************************************/ 149 typedef struct 150 { 151 ive_dequeue_inp_ip_t s_ive_ip; 152 }ih264e_dequeue_inp_ip_t; 153 154 typedef struct 155 { 156 ive_dequeue_inp_op_t s_ive_op; 157 }ih264e_dequeue_inp_op_t; 158 159 160 /*****************************************************************************/ 161 /* Queue Output bitstream buffer - Send the bistream buffer to be filled */ 162 /*****************************************************************************/ 163 typedef struct 164 { 165 ive_queue_out_ip_t s_ive_ip; 166 }ih264e_queue_out_ip_t; 167 168 typedef struct 169 { 170 ive_queue_out_op_t s_ive_op; 171 }ih264e_queue_out_op_t; 172 173 /*****************************************************************************/ 174 /* Dequeue Output bitstream buffer - Get the bistream buffer filled */ 175 /*****************************************************************************/ 176 typedef struct 177 { 178 ive_dequeue_out_ip_t s_ive_ip; 179 }ih264e_dequeue_out_ip_t; 180 181 typedef struct 182 { 183 ive_dequeue_out_op_t s_ive_op; 184 }ih264e_dequeue_out_op_t; 185 186 187 /*****************************************************************************/ 188 /* Get Recon data - Get the reconstructed data from encoder */ 189 /*****************************************************************************/ 190 typedef struct 191 { 192 ive_get_recon_ip_t s_ive_ip; 193 }ih264e_get_recon_ip_t; 194 195 typedef struct 196 { 197 ive_get_recon_op_t s_ive_op; 198 }ih264e_get_recon_op_t; 199 /*****************************************************************************/ 200 /* Video control Flush */ 201 /*****************************************************************************/ 202 203 204 typedef struct 205 { 206 ive_ctl_flush_ip_t s_ive_ip; 207 }ih264e_ctl_flush_ip_t; 208 209 210 typedef struct 211 { 212 ive_ctl_flush_op_t s_ive_op; 213 }ih264e_ctl_flush_op_t; 214 215 /*****************************************************************************/ 216 /* Video control reset */ 217 /*****************************************************************************/ 218 219 220 typedef struct 221 { 222 ive_ctl_reset_ip_t s_ive_ip; 223 }ih264e_ctl_reset_ip_t; 224 225 226 typedef struct 227 { 228 ive_ctl_reset_op_t s_ive_op; 229 }ih264e_ctl_reset_op_t; 230 231 232 /*****************************************************************************/ 233 /* Video control:Get Buf Info */ 234 /*****************************************************************************/ 235 236 237 typedef struct 238 { 239 ive_ctl_getbufinfo_ip_t s_ive_ip; 240 }ih264e_ctl_getbufinfo_ip_t; 241 242 243 244 typedef struct 245 { 246 ive_ctl_getbufinfo_op_t s_ive_op; 247 }ih264e_ctl_getbufinfo_op_t; 248 249 250 251 /*****************************************************************************/ 252 /* Video control:Get Version Info */ 253 /*****************************************************************************/ 254 255 256 typedef struct 257 { 258 ive_ctl_getversioninfo_ip_t s_ive_ip; 259 }ih264e_ctl_getversioninfo_ip_t; 260 261 262 263 typedef struct 264 { 265 ive_ctl_getversioninfo_op_t s_ive_op; 266 }ih264e_ctl_getversioninfo_op_t; 267 268 /*****************************************************************************/ 269 /* Video control:Set default params */ 270 /*****************************************************************************/ 271 272 273 typedef struct 274 { 275 ive_ctl_setdefault_ip_t s_ive_ip; 276 }ih264e_ctl_setdefault_ip_t; 277 278 279 280 typedef struct 281 { 282 ive_ctl_setdefault_op_t s_ive_op; 283 }ih264e_ctl_setdefault_op_t; 284 285 /*****************************************************************************/ 286 /* Video control Set IPE params */ 287 /*****************************************************************************/ 288 typedef struct 289 { 290 ive_ctl_set_ipe_params_ip_t s_ive_ip; 291 }ih264e_ctl_set_ipe_params_ip_t; 292 293 typedef struct 294 { 295 ive_ctl_set_ipe_params_op_t s_ive_op; 296 }ih264e_ctl_set_ipe_params_op_t; 297 298 /*****************************************************************************/ 299 /* Video control Set Frame dimensions */ 300 /*****************************************************************************/ 301 typedef struct 302 { 303 ive_ctl_set_dimensions_ip_t s_ive_ip; 304 }ih264e_ctl_set_dimensions_ip_t; 305 306 typedef struct 307 { 308 ive_ctl_set_dimensions_op_t s_ive_op; 309 }ih264e_ctl_set_dimensions_op_t; 310 311 /*****************************************************************************/ 312 /* Video control Set Frame rates */ 313 /*****************************************************************************/ 314 typedef struct 315 { 316 ive_ctl_set_frame_rate_ip_t s_ive_ip; 317 }ih264e_ctl_set_frame_rate_ip_t; 318 typedef struct 319 { 320 ive_ctl_set_frame_rate_op_t s_ive_op; 321 }ih264e_ctl_set_frame_rate_op_t; 322 323 324 /*****************************************************************************/ 325 /* Video control Set Bitrate */ 326 /*****************************************************************************/ 327 typedef struct 328 { 329 ive_ctl_set_bitrate_ip_t s_ive_ip; 330 }ih264e_ctl_set_bitrate_ip_t; 331 332 typedef struct 333 { 334 ive_ctl_set_bitrate_op_t s_ive_op; 335 }ih264e_ctl_set_bitrate_op_t; 336 337 338 /*****************************************************************************/ 339 /* Video control Set Frame type */ 340 /*****************************************************************************/ 341 typedef struct 342 { 343 ive_ctl_set_frame_type_ip_t s_ive_ip; 344 }ih264e_ctl_set_frame_type_ip_t; 345 346 typedef struct 347 { 348 ive_ctl_set_frame_type_op_t s_ive_op; 349 }ih264e_ctl_set_frame_type_op_t; 350 351 /*****************************************************************************/ 352 /* Video control Set Encode mode */ 353 /*****************************************************************************/ 354 typedef struct 355 { 356 ive_ctl_set_enc_mode_ip_t s_ive_ip; 357 }ih264e_ctl_set_enc_mode_ip_t; 358 359 typedef struct 360 { 361 ive_ctl_set_enc_mode_op_t s_ive_op; 362 }ih264e_ctl_set_enc_mode_op_t; 363 364 /*****************************************************************************/ 365 /* Video control Set QP */ 366 /*****************************************************************************/ 367 typedef struct 368 { 369 ive_ctl_set_qp_ip_t s_ive_ip; 370 }ih264e_ctl_set_qp_ip_t; 371 372 typedef struct 373 { 374 ive_ctl_set_qp_op_t s_ive_op; 375 }ih264e_ctl_set_qp_op_t; 376 377 /*****************************************************************************/ 378 /* Video control Set AIR params */ 379 /*****************************************************************************/ 380 typedef struct 381 { 382 ive_ctl_set_air_params_ip_t s_ive_ip; 383 }ih264e_ctl_set_air_params_ip_t; 384 385 typedef struct 386 { 387 ive_ctl_set_air_params_op_t s_ive_op; 388 }ih264e_ctl_set_air_params_op_t; 389 390 /*****************************************************************************/ 391 /* Video control Set VBV params */ 392 /*****************************************************************************/ 393 typedef struct 394 { 395 ive_ctl_set_vbv_params_ip_t s_ive_ip; 396 }ih264e_ctl_set_vbv_params_ip_t; 397 398 typedef struct 399 { 400 ive_ctl_set_vbv_params_op_t s_ive_op; 401 }ih264e_ctl_set_vbv_params_op_t; 402 403 /*****************************************************************************/ 404 /* Video control Set Processor Details */ 405 /*****************************************************************************/ 406 typedef struct 407 { 408 ive_ctl_set_num_cores_ip_t s_ive_ip; 409 }ih264e_ctl_set_num_cores_ip_t; 410 411 typedef struct 412 { 413 ive_ctl_set_num_cores_op_t s_ive_op; 414 }ih264e_ctl_set_num_cores_op_t; 415 416 /*****************************************************************************/ 417 /* Video control Set Motion estimation params */ 418 /*****************************************************************************/ 419 typedef struct 420 { 421 ive_ctl_set_me_params_ip_t s_ive_ip; 422 }ih264e_ctl_set_me_params_ip_t; 423 424 typedef struct 425 { 426 ive_ctl_set_me_params_op_t s_ive_op; 427 }ih264e_ctl_set_me_params_op_t; 428 429 /*****************************************************************************/ 430 /* Video control Set GOP params */ 431 /*****************************************************************************/ 432 typedef struct 433 { 434 ive_ctl_set_gop_params_ip_t s_ive_ip; 435 }ih264e_ctl_set_gop_params_ip_t; 436 437 typedef struct 438 { 439 ive_ctl_set_gop_params_op_t s_ive_op; 440 }ih264e_ctl_set_gop_params_op_t; 441 442 /*****************************************************************************/ 443 /* Video control Set Deblock params */ 444 /*****************************************************************************/ 445 typedef struct 446 { 447 ive_ctl_set_deblock_params_ip_t s_ive_ip; 448 }ih264e_ctl_set_deblock_params_ip_t; 449 450 typedef struct 451 { 452 ive_ctl_set_deblock_params_op_t s_ive_op; 453 }ih264e_ctl_set_deblock_params_op_t; 454 455 /*****************************************************************************/ 456 /* Video control Set Profile params */ 457 /*****************************************************************************/ 458 typedef struct 459 { 460 ive_ctl_set_profile_params_ip_t s_ive_ip; 461 }ih264e_ctl_set_profile_params_ip_t; 462 463 typedef struct 464 { 465 ive_ctl_set_profile_params_op_t s_ive_op; 466 }ih264e_ctl_set_profile_params_op_t; 467 468 /*****************************************************************************/ 469 /* Synchronous video encode call */ 470 /*****************************************************************************/ 471 typedef struct 472 { 473 ive_video_encode_ip_t s_ive_ip; 474 }ih264e_video_encode_ip_t; 475 476 typedef struct 477 { 478 ive_video_encode_op_t s_ive_op; 479 }ih264e_video_encode_op_t; 480 481 482 /*****************************************************************************/ 483 /* Video usability information */ 484 /*****************************************************************************/ 485 typedef struct 486 { 487 /** size of the structure */ 488 UWORD32 u4_size; 489 490 /** Command type : IVE_CMD_VIDEO_CTL */ 491 IVE_API_COMMAND_TYPE_T e_cmd; 492 493 /** Sub command type : IVE_CMD_CTL_SET_GOP_PARAMS */ 494 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 495 496 /** indicates the presence of aspect_ratio */ 497 UWORD8 u1_aspect_ratio_info_present_flag; 498 499 /** specifies the aspect ratio of the luma samples */ 500 UWORD8 u1_aspect_ratio_idc; 501 502 /** width of the luma samples. user dependent */ 503 UWORD16 u2_sar_width; 504 505 /** Height of the luma samples. user dependent */ 506 UWORD16 u2_sar_height; 507 508 /** if 1, specifies that the overscan_appropriate_flag is present 509 * if 0, the preferred display method for the video signal is unspecified */ 510 UWORD8 u1_overscan_info_present_flag; 511 512 /** if 1,indicates that the cropped decoded pictures output 513 * are suitable for display using overscan */ 514 UWORD8 u1_overscan_appropriate_flag; 515 516 /** if 1 specifies that video_format, video_full_range_flag and 517 * colour_description_present_flag are present */ 518 UWORD8 u1_video_signal_type_present_flag; 519 520 /** pal, secam, ntsc, ... */ 521 UWORD8 u1_video_format; 522 523 /** indicates the black level and range of the luma and chroma signals */ 524 UWORD8 u1_video_full_range_flag; 525 526 /** if 1,specifies that colour_primaries, transfer_characteristics 527 * and matrix_coefficients are present */ 528 UWORD8 u1_colour_description_present_flag; 529 530 /** indicates the chromaticity coordinates of the source primaries */ 531 UWORD8 u1_colour_primaries; 532 533 /** indicates the opto-electronic transfer characteristic of the source picture */ 534 UWORD8 u1_transfer_characteristics; 535 536 /** the matrix coefficients used in deriving luma and chroma signals 537 * from the green, blue, and red primaries */ 538 UWORD8 u1_matrix_coefficients; 539 540 /** if 1, specifies that chroma_sample_loc_type_top_field and 541 * chroma_sample_loc_type_bottom_field are present */ 542 UWORD8 u1_chroma_loc_info_present_flag; 543 544 /** location of chroma samples */ 545 UWORD8 u1_chroma_sample_loc_type_top_field; 546 UWORD8 u1_chroma_sample_loc_type_bottom_field; 547 548 /** Indicates the presence of the num_units_in_ticks, time_scale flag */ 549 UWORD8 u1_vui_timing_info_present_flag; 550 551 /** Number of units that correspond to one increment of the 552 * clock. Indicates the resolution */ 553 UWORD32 u4_vui_num_units_in_tick; 554 555 /** The number of time units that pass in one second */ 556 UWORD32 u4_vui_time_scale; 557 558 /** Flag indicating that time difference between two frames is a constant */ 559 UWORD8 u1_fixed_frame_rate_flag; 560 561 /** Indicates the presence of NAL HRD parameters */ 562 UWORD8 u1_nal_hrd_parameters_present_flag; 563 564 /** Indicates the presence of VCL HRD parameters */ 565 UWORD8 u1_vcl_hrd_parameters_present_flag; 566 567 /** Specifies the HRD operational mode */ 568 UWORD8 u1_low_delay_hrd_flag; 569 570 /** Indicates presence of SEI messages which include pic_struct syntax element */ 571 UWORD8 u1_pic_struct_present_flag; 572 573 /** 1, specifies that the following cvs bitstream restriction parameters are present */ 574 UWORD8 u1_bitstream_restriction_flag; 575 576 /** if 0, indicates that no pel outside the pic boundaries and 577 * no sub-pels derived using pels outside the pic boundaries is used for inter prediction */ 578 UWORD8 u1_motion_vectors_over_pic_boundaries_flag; 579 580 /** Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units 581 * associated with any coded picture */ 582 UWORD8 u1_max_bytes_per_pic_denom; 583 584 /** Indicates an upper bound for the number of bits of coding_unit() data */ 585 UWORD8 u1_max_bits_per_mb_denom; 586 587 /** Indicate the maximum absolute value of a decoded horizontal MV component 588 * in quarter-pel luma units */ 589 UWORD8 u1_log2_max_mv_length_horizontal; 590 591 /** Indicate the maximum absolute value of a decoded vertical MV component 592 * in quarter-pel luma units */ 593 UWORD8 u1_log2_max_mv_length_vertical; 594 595 /** Max number of frames that are not synchronized in display and decode order */ 596 UWORD8 u1_num_reorder_frames; 597 598 /** specifies required size of the HRD DPB in units of frame buffers */ 599 UWORD8 u1_max_dec_frame_buffering; 600 601 }ih264e_vui_ip_t; 602 603 typedef struct 604 { 605 /** size of the structure */ 606 UWORD32 u4_size; 607 608 /** Return error code */ 609 UWORD32 u4_error_code; 610 }ih264e_vui_op_t; 611 612 /*****************************************************************************/ 613 /* Video control Set SEI MDCV params */ 614 /*****************************************************************************/ 615 typedef struct 616 { 617 /** size of the structure */ 618 UWORD32 u4_size; 619 620 /** Command type : IVE_CMD_VIDEO_CTL */ 621 IVE_API_COMMAND_TYPE_T e_cmd; 622 623 /** Sub command type : IVE_CMD_CTL_SET_SEI_MDCV_PARAMS */ 624 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 625 626 /** mastering display color volume info present flag */ 627 UWORD8 u1_sei_mdcv_params_present_flag; 628 629 /** Array to store the display_primaries_x values */ 630 UWORD16 au2_display_primaries_x[3]; 631 632 /** Array to store the display_primaries_y values */ 633 UWORD16 au2_display_primaries_y[3]; 634 635 /** Variable to store the white point x value */ 636 UWORD16 u2_white_point_x; 637 638 /** Variable to store the white point y value */ 639 UWORD16 u2_white_point_y; 640 641 /** Variable to store the max display mastering luminance value */ 642 UWORD32 u4_max_display_mastering_luminance; 643 644 /** Variable to store the min display mastering luminance value */ 645 UWORD32 u4_min_display_mastering_luminance; 646 647 /** Lower 32bits of time stamp corresponding to input buffer, 648 * from which this command takes effect */ 649 UWORD32 u4_timestamp_low; 650 651 /** Upper 32bits of time stamp corresponding to input buffer, 652 * from which this command takes effect */ 653 UWORD32 u4_timestamp_high; 654 655 }ih264e_ctl_set_sei_mdcv_params_ip_t; 656 657 typedef struct 658 { 659 /** size of the structure */ 660 UWORD32 u4_size; 661 662 /** Return error code */ 663 UWORD32 u4_error_code; 664 665 }ih264e_ctl_set_sei_mdcv_params_op_t; 666 667 /*****************************************************************************/ 668 /* Video control Set SEI CLL params */ 669 /*****************************************************************************/ 670 typedef struct 671 { 672 /** size of the structure */ 673 UWORD32 u4_size; 674 675 /** Command type : IVE_CMD_VIDEO_CTL */ 676 IVE_API_COMMAND_TYPE_T e_cmd; 677 678 /** Sub command type : IVE_CMD_CTL_SET_SEI_CLL_PARAMS */ 679 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 680 681 /** content light level info present flag */ 682 UWORD8 u1_sei_cll_params_present_flag; 683 684 /** The maximum pixel intensity of all samples */ 685 UWORD16 u2_max_content_light_level; 686 687 /** The average pixel intensity of all samples */ 688 UWORD16 u2_max_pic_average_light_level; 689 690 /** Lower 32bits of time stamp corresponding to input buffer, 691 * from which this command takes effect */ 692 UWORD32 u4_timestamp_low; 693 694 /** Upper 32bits of time stamp corresponding to input buffer, 695 * from which this command takes effect */ 696 UWORD32 u4_timestamp_high; 697 698 }ih264e_ctl_set_sei_cll_params_ip_t; 699 700 typedef struct 701 { 702 /** size of the structure */ 703 UWORD32 u4_size; 704 705 /** Return error code */ 706 UWORD32 u4_error_code; 707 708 }ih264e_ctl_set_sei_cll_params_op_t; 709 710 /*****************************************************************************/ 711 /* Video control Set SEI AVE params */ 712 /*****************************************************************************/ 713 typedef struct 714 { 715 /** size of the structure */ 716 UWORD32 u4_size; 717 718 /** Command type : IVE_CMD_VIDEO_CTL */ 719 IVE_API_COMMAND_TYPE_T e_cmd; 720 721 /** Sub command type : IVE_CMD_CTL_SET_SEI_AVE_PARAMS */ 722 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 723 724 /** ambient viewing environment info present flag */ 725 UWORD8 u1_sei_ave_params_present_flag; 726 727 /** specifies the environmental illluminance of the ambient viewing 728 * environment */ 729 UWORD32 u4_ambient_illuminance; 730 731 /** specify the normalized x chromaticity coordinates of the 732 * environmental ambient light in the nominal viewing environment */ 733 UWORD16 u2_ambient_light_x; 734 735 /** specify the normalized y chromaticity coordinates of the 736 * environmental ambient light in the nominal viewing environment */ 737 UWORD16 u2_ambient_light_y; 738 739 /** Lower 32bits of time stamp corresponding to input buffer, 740 * from which this command takes effect */ 741 UWORD32 u4_timestamp_low; 742 743 /** Upper 32bits of time stamp corresponding to input buffer, 744 * from which this command takes effect */ 745 UWORD32 u4_timestamp_high; 746 747 }ih264e_ctl_set_sei_ave_params_ip_t; 748 749 typedef struct 750 { 751 /** size of the structure */ 752 UWORD32 u4_size; 753 754 /** Return error code */ 755 UWORD32 u4_error_code; 756 757 }ih264e_ctl_set_sei_ave_params_op_t; 758 759 /*****************************************************************************/ 760 /* Video control Set SEI CCV params */ 761 /*****************************************************************************/ 762 typedef struct 763 { 764 /** size of the structure */ 765 UWORD32 u4_size; 766 767 /** Command type : IVE_CMD_VIDEO_CTL */ 768 IVE_API_COMMAND_TYPE_T e_cmd; 769 770 /** Sub command type : IVE_CMD_CTL_SET_SEI_CCV_PARAMS */ 771 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 772 773 /** content color volume info present flag */ 774 UWORD8 u1_sei_ccv_params_present_flag; 775 776 /** Flag used to control persistence of CCV SEI messages */ 777 UWORD8 u1_ccv_cancel_flag; 778 779 /** specifies the persistence of the CCV SEI message for the 780 * current layer */ 781 UWORD8 u1_ccv_persistence_flag; 782 783 /** specifies the presence of syntax elements ccv_primaries_x 784 * and ccv_primaries_y */ 785 UWORD8 u1_ccv_primaries_present_flag; 786 787 /** specifies that the syntax element ccv_min_luminance_value 788 * is present */ 789 UWORD8 u1_ccv_min_luminance_value_present_flag; 790 791 /** specifies that the syntax element ccv_max_luminance_value 792 * is present */ 793 UWORD8 u1_ccv_max_luminance_value_present_flag; 794 795 /** specifies that the syntax element ccv_avg_luminance_value 796 * is present */ 797 UWORD8 u1_ccv_avg_luminance_value_present_flag; 798 799 /** shall be equal to 0 in bitstreams conforming to this version. 800 * Other values for reserved_zero_2bits are reserved for future use */ 801 UWORD8 u1_ccv_reserved_zero_2bits; 802 803 /** specify the normalized x chromaticity coordinates of the colour 804 * primary component c of the nominal content colour volume */ 805 WORD32 ai4_ccv_primaries_x[3]; 806 807 /** specify the normalized y chromaticity coordinates of the colour 808 * primary component c of the nominal content colour volume */ 809 WORD32 ai4_ccv_primaries_y[3]; 810 811 /** specifies the normalized minimum luminance value */ 812 UWORD32 u4_ccv_min_luminance_value; 813 814 /** specifies the normalized maximum luminance value */ 815 UWORD32 u4_ccv_max_luminance_value; 816 817 /** specifies the normalized average luminance value */ 818 UWORD32 u4_ccv_avg_luminance_value; 819 820 /** Lower 32bits of time stamp corresponding to input buffer, 821 * from which this command takes effect */ 822 UWORD32 u4_timestamp_low; 823 824 /** Upper 32bits of time stamp corresponding to input buffer, 825 * from which this command takes effect */ 826 UWORD32 u4_timestamp_high; 827 828 }ih264e_ctl_set_sei_ccv_params_ip_t; 829 830 typedef struct 831 { 832 /** size of the structure */ 833 UWORD32 u4_size; 834 835 /** Return error code */ 836 UWORD32 u4_error_code; 837 838 }ih264e_ctl_set_sei_ccv_params_op_t; 839 840 /*****************************************************************************/ 841 /* Video control Set SEI SII params */ 842 /*****************************************************************************/ 843 844 typedef struct 845 { 846 /** size of the structure */ 847 UWORD32 u4_size; 848 849 /** Command type : IVE_CMD_VIDEO_CTL */ 850 IVE_API_COMMAND_TYPE_T e_cmd; 851 852 /** Sub command type : IVE_CMD_CTL_SET_SEI_SII_PARAMS */ 853 IVE_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 854 855 /** 856 * specifies if the sei sii is enabled */ 857 UWORD8 u1_shutter_interval_info_present_flag; 858 859 /** 860 * specifies the shutter interval temporal sub-layer index 861 * of the current picture */ 862 UWORD32 u4_sii_sub_layer_idx; 863 864 /** 865 * specify the number of time units that pass in one second */ 866 UWORD32 u4_sii_time_scale; 867 868 /** 869 * specifies that the indicated shutter interval is the same 870 * for all pictures in the coded video sequence */ 871 UWORD8 u1_fixed_shutter_interval_within_cvs_flag; 872 873 /** 874 * specifies the the number of time units of a clock operating at 875 * the frequency sii_time_scale Hz that corresponds to the indicated 876 * shutter interval of each picture in the coded video sequence */ 877 UWORD32 u4_sii_num_units_in_shutter_interval; 878 879 /** 880 * sii_max_sub_layers_minus1 plus 1 specifies the maximum number of 881 * shutter interval temporal sub-layers indexes that may be present 882 * in the coded video sequence */ 883 UWORD8 u1_sii_max_sub_layers_minus1; 884 885 /** 886 * specifies the number of time units of a clock operating at the 887 * frequency sii_time_scale Hz that corresponds to the shutter 888 * interval of each picture in the coded video sequence */ 889 UWORD32 au4_sub_layer_num_units_in_shutter_interval[8]; 890 891 /** 892 * Lower 32bits of time stamp corresponding to input buffer, 893 * from which this command takes effect */ 894 UWORD32 u4_timestamp_low; 895 896 /** 897 * Upper 32bits of time stamp corresponding to input buffer, 898 * from which this command takes effect */ 899 UWORD32 u4_timestamp_high; 900 901 } ih264e_ctl_set_sei_sii_params_ip_t; 902 903 typedef struct 904 { 905 /** size of the structure */ 906 UWORD32 u4_size; 907 908 /** Return error code */ 909 UWORD32 u4_error_code; 910 911 } ih264e_ctl_set_sei_sii_params_op_t; 912 913 /* The enum values should not have greater than 8 bits as this is assigned to WORD8 */ 914 typedef enum 915 { 916 INTRA16x16 = 0, 917 INTRA4x4, 918 INTER16x16 919 }IV_MB_TYPE_T; 920 921 /*****************************************************************************/ 922 /* Pic info structures */ 923 /*****************************************************************************/ 924 typedef struct 925 { 926 /** Qp */ 927 UWORD32 u4_qp; 928 929 /** Pic Type */ 930 IV_PICTURE_CODING_TYPE_T e_frame_type; 931 932 }ih264e_pic_info1_t; 933 934 typedef struct 935 { 936 /** Qp */ 937 UWORD32 u4_qp; 938 939 /** Pic Type */ 940 IV_PICTURE_CODING_TYPE_T e_frame_type; 941 942 /** Disable deblock level (0: Enable completely, 3: Disable completely */ 943 UWORD32 u4_disable_deblock_level; 944 945 }ih264e_pic_info2_t; 946 947 948 /*****************************************************************************/ 949 /* MB info structures */ 950 /*****************************************************************************/ 951 typedef struct 952 { 953 /** MV X */ 954 WORD16 i2_mv_x; 955 956 /** MV Y */ 957 WORD16 i2_mv_y; 958 }ih264e_mv_t; 959 960 typedef struct 961 { 962 /** Intra / Inter */ 963 WORD8 i1_mb_type; 964 union 965 { 966 ih264e_mv_t as_mv[1]; 967 968 /** Intra mode */ 969 WORD8 ai1_intra_mode[1]; 970 }; 971 }ih264e_mb_info1_t; 972 973 typedef struct 974 { 975 /** Intra / Inter */ 976 WORD8 i1_mb_type; 977 978 979 /** SAD */ 980 UWORD16 u2_sad; 981 982 union 983 { 984 ih264e_mv_t as_mv[1]; 985 986 /** Intra mode */ 987 WORD8 ai1_intra_mode[1]; 988 }; 989 990 991 }ih264e_mb_info2_t; 992 993 typedef struct 994 { 995 /** Intra / Inter */ 996 WORD8 i1_mb_type; 997 998 union 999 { 1000 ih264e_mv_t as_mv[4]; 1001 1002 /** Intra mode */ 1003 WORD8 ai1_intra_mode[16]; 1004 }; 1005 1006 }ih264e_mb_info3_t; 1007 1008 typedef struct 1009 { 1010 /** Intra / Inter */ 1011 WORD8 i1_mb_type; 1012 1013 /** Intra Mode */ 1014 WORD8 i1_intra_mode; 1015 1016 /** SAD */ 1017 UWORD16 u2_sad; 1018 1019 union 1020 { 1021 ih264e_mv_t as_mv[16]; 1022 1023 /** Intra mode */ 1024 WORD8 ai1_intra_mode[16]; 1025 }; 1026 1027 1028 1029 }ih264e_mb_info4_t; 1030 1031 /* Add any new structures to the following union. It is used to calculate the max size needed for allocation of memory */ 1032 typedef struct 1033 { 1034 union 1035 { 1036 ih264e_mb_info1_t s_mb_info1; 1037 ih264e_mb_info2_t s_mb_info2; 1038 ih264e_mb_info3_t s_mb_info3; 1039 ih264e_mb_info4_t s_mb_info4; 1040 }; 1041 }ih264e_mb_info_t; 1042 1043 #ifdef __cplusplus 1044 } /* closing brace for extern "C" */ 1045 #endif 1046 #endif /* _IH264E_H_ */ 1047