1 /****************************************************************************** 2 * 3 * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 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 /** 19 ******************************************************************************* 20 * @file 21 * ihevcd_cxa.h 22 * 23 * @brief 24 * This file contains all the necessary structure and enumeration 25 * definitions needed for the Application Program Interface(API) of the 26 * Ittiam HEVC decoder on Cortex Ax 27 * 28 * @author 29 * Harish 30 * 31 * @remarks 32 * None 33 * 34 ******************************************************************************* 35 */ 36 #ifndef __IHEVCD_CXA_H__ 37 #define __IHEVCD_CXA_H__ 38 #ifdef __cplusplus 39 extern "C" { 40 #endif 41 #include "iv.h" 42 #include "ivd.h" 43 44 45 /*****************************************************************************/ 46 /* Constant Macros */ 47 /*****************************************************************************/ 48 49 /*****************************************************************************/ 50 /* Function Macros */ 51 /*****************************************************************************/ 52 #define IS_IVD_CONCEALMENT_APPLIED(x) (x & (1 << IVD_APPLIEDCONCEALMENT)) 53 #define IS_IVD_INSUFFICIENTDATA_ERROR(x) (x & (1 << IVD_INSUFFICIENTDATA)) 54 #define IS_IVD_CORRUPTEDDATA_ERROR(x) (x & (1 << IVD_CORRUPTEDDATA)) 55 #define IS_IVD_CORRUPTEDHEADER_ERROR(x) (x & (1 << IVD_CORRUPTEDHEADER)) 56 #define IS_IVD_UNSUPPORTEDINPUT_ERROR(x) (x & (1 << IVD_UNSUPPORTEDINPUT)) 57 #define IS_IVD_UNSUPPORTEDPARAM_ERROR(x) (x & (1 << IVD_UNSUPPORTEDPARAM)) 58 #define IS_IVD_FATAL_ERROR(x) (x & (1 << IVD_FATALERROR)) 59 #define IS_IVD_INVALID_BITSTREAM_ERROR(x) (x & (1 << IVD_INVALID_BITSTREAM)) 60 #define IS_IVD_INCOMPLETE_BITSTREAM_ERROR(x) (x & (1 << IVD_INCOMPLETE_BITSTREAM)) 61 62 63 /*****************************************************************************/ 64 /* API Function Prototype */ 65 /*****************************************************************************/ 66 IV_API_CALL_STATUS_T ihevcd_cxa_api_function(iv_obj_t *ps_handle, 67 void *pv_api_ip, 68 void *pv_api_op); 69 70 /*****************************************************************************/ 71 /* Enums */ 72 /*****************************************************************************/ 73 /* Codec Error codes for HEVC Decoder */ 74 75 76 typedef enum { 77 /** 78 * No error 79 */ 80 IHEVCD_SUCCESS = 0, 81 82 /** 83 * Codec calls done without successful init 84 */ 85 IHEVCD_INIT_NOT_DONE = IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS, 86 87 88 IHEVCD_CXA_VID_HDR_DEC_NUM_FRM_BUF_NOT_SUFFICIENT, 89 90 /** 91 * Unsupported level passed as an argument 92 */ 93 IHEVCD_LEVEL_UNSUPPORTED, 94 /** 95 * Unsupported number of reference pictures passed as an argument 96 */ 97 IHEVCD_NUM_REF_UNSUPPORTED, 98 /** 99 * Unsupported number of reorder pictures passed as an argument 100 */ 101 IHEVCD_NUM_REORDER_UNSUPPORTED, 102 /** 103 * Unsupported number of extra display pictures passed as an argument 104 */ 105 IHEVCD_NUM_EXTRA_DISP_UNSUPPORTED, 106 /** 107 * Invalid display stride requested. 108 */ 109 IHEVCD_INVALID_DISP_STRD, 110 111 /** 112 * Reached end of sequence 113 */ 114 IHEVCD_END_OF_SEQUENCE, 115 116 /** 117 * Width/height greater than max width and max height 118 */ 119 IHEVCD_UNSUPPORTED_DIMENSIONS, 120 121 /** 122 * Buffer size to hold version string is not sufficient 123 * Allocate more to hold version string 124 */ 125 IHEVCD_CXA_VERS_BUF_INSUFFICIENT, 126 /** 127 * Stream chroma format other than YUV420 128 */ 129 IHEVCD_UNSUPPORTED_CHROMA_FMT_IDC, 130 131 /** 132 * Generic failure 133 */ 134 IHEVCD_FAIL = 0x7FFFFFFF 135 136 137 }IHEVCD_CXA_ERROR_CODES_T; 138 139 /*****************************************************************************/ 140 /* Extended Structures */ 141 /*****************************************************************************/ 142 143 144 /*****************************************************************************/ 145 /* Delete Codec */ 146 /*****************************************************************************/ 147 148 typedef struct { 149 ivd_delete_ip_t s_ivd_delete_ip_t; 150 }ihevcd_cxa_delete_ip_t; 151 152 153 typedef struct { 154 ivd_delete_op_t s_ivd_delete_op_t; 155 }ihevcd_cxa_delete_op_t; 156 157 /*****************************************************************************/ 158 /* Initialize decoder */ 159 /*****************************************************************************/ 160 161 typedef struct { 162 ivd_create_ip_t s_ivd_create_ip_t; 163 }ihevcd_cxa_create_ip_t; 164 165 166 typedef struct { 167 ivd_create_op_t s_ivd_create_op_t; 168 }ihevcd_cxa_create_op_t; 169 170 /*****************************************************************************/ 171 /* Video Decode */ 172 /*****************************************************************************/ 173 174 typedef struct { 175 176 /** 177 * ivd_video_decode_ip_t 178 */ 179 ivd_video_decode_ip_t s_ivd_video_decode_ip_t; 180 }ihevcd_cxa_video_decode_ip_t; 181 182 183 typedef struct { 184 185 /** 186 * ivd_video_decode_op_t 187 */ 188 ivd_video_decode_op_t s_ivd_video_decode_op_t; 189 }ihevcd_cxa_video_decode_op_t; 190 191 192 /*****************************************************************************/ 193 /* Get Display Frame */ 194 /*****************************************************************************/ 195 196 typedef struct 197 { 198 /** 199 * ivd_get_display_frame_ip_t 200 */ 201 ivd_get_display_frame_ip_t s_ivd_get_display_frame_ip_t; 202 }ihevcd_cxa_get_display_frame_ip_t; 203 204 205 typedef struct 206 { 207 /** 208 * ivd_get_display_frame_op_t 209 */ 210 ivd_get_display_frame_op_t s_ivd_get_display_frame_op_t; 211 }ihevcd_cxa_get_display_frame_op_t; 212 213 /*****************************************************************************/ 214 /* Set Display Frame */ 215 /*****************************************************************************/ 216 217 218 typedef struct 219 { 220 /** 221 * ivd_set_display_frame_ip_t 222 */ 223 ivd_set_display_frame_ip_t s_ivd_set_display_frame_ip_t; 224 }ihevcd_cxa_set_display_frame_ip_t; 225 226 227 typedef struct 228 { 229 /** 230 * ivd_set_display_frame_op_t 231 */ 232 ivd_set_display_frame_op_t s_ivd_set_display_frame_op_t; 233 }ihevcd_cxa_set_display_frame_op_t; 234 235 /*****************************************************************************/ 236 /* Release Display Buffers */ 237 /*****************************************************************************/ 238 239 240 typedef struct 241 { 242 /** 243 * ivd_rel_display_frame_ip_t 244 */ 245 246 ivd_rel_display_frame_ip_t s_ivd_rel_display_frame_ip_t; 247 }ihevcd_cxa_rel_display_frame_ip_t; 248 249 250 typedef struct 251 { 252 /** 253 * ivd_rel_display_frame_op_t 254 */ 255 ivd_rel_display_frame_op_t s_ivd_rel_display_frame_op_t; 256 }ihevcd_cxa_rel_display_frame_op_t; 257 258 259 typedef enum 260 { 261 /** Set number of cores/threads to be used */ 262 IHEVCD_CXA_CMD_CTL_SET_NUM_CORES = IVD_CMD_CTL_CODEC_SUBCMD_START, 263 264 /** Set processor details */ 265 IHEVCD_CXA_CMD_CTL_SET_PROCESSOR = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x001, 266 267 /** Get display buffer dimensions */ 268 IHEVCD_CXA_CMD_CTL_GET_BUFFER_DIMENSIONS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x100, 269 270 /** Get VUI parameters */ 271 IHEVCD_CXA_CMD_CTL_GET_VUI_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x101, 272 273 /** Enable/disable GPU, supported on select platforms */ 274 IHEVCD_CXA_CMD_CTL_GPU_ENABLE_DISABLE = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x200, 275 276 /** Set degrade level */ 277 IHEVCD_CXA_CMD_CTL_DEGRADE = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x300 278 }IHEVCD_CXA_CMD_CTL_SUB_CMDS; 279 /*****************************************************************************/ 280 /* Video control Flush */ 281 /*****************************************************************************/ 282 283 284 typedef struct { 285 286 /** 287 * ivd_ctl_flush_ip_t 288 */ 289 ivd_ctl_flush_ip_t s_ivd_ctl_flush_ip_t; 290 }ihevcd_cxa_ctl_flush_ip_t; 291 292 293 typedef struct { 294 295 /** 296 * ivd_ctl_flush_op_t 297 */ 298 ivd_ctl_flush_op_t s_ivd_ctl_flush_op_t; 299 }ihevcd_cxa_ctl_flush_op_t; 300 301 /*****************************************************************************/ 302 /* Video control reset */ 303 /*****************************************************************************/ 304 305 306 typedef struct { 307 308 /** 309 * ivd_ctl_reset_ip_t 310 */ 311 ivd_ctl_reset_ip_t s_ivd_ctl_reset_ip_t; 312 }ihevcd_cxa_ctl_reset_ip_t; 313 314 315 typedef struct { 316 317 /** 318 * ivd_ctl_reset_op_t 319 */ 320 ivd_ctl_reset_op_t s_ivd_ctl_reset_op_t; 321 }ihevcd_cxa_ctl_reset_op_t; 322 323 324 /*****************************************************************************/ 325 /* Video control Set Params */ 326 /*****************************************************************************/ 327 328 329 typedef struct { 330 331 /** 332 * ivd_ctl_set_config_ip_t 333 */ 334 ivd_ctl_set_config_ip_t s_ivd_ctl_set_config_ip_t; 335 }ihevcd_cxa_ctl_set_config_ip_t; 336 337 338 typedef struct { 339 340 /** 341 * ivd_ctl_set_config_op_t 342 */ 343 ivd_ctl_set_config_op_t s_ivd_ctl_set_config_op_t; 344 }ihevcd_cxa_ctl_set_config_op_t; 345 346 /*****************************************************************************/ 347 /* Video control:Get Buf Info */ 348 /*****************************************************************************/ 349 350 351 typedef struct { 352 353 /** 354 * ivd_ctl_getbufinfo_ip_t 355 */ 356 ivd_ctl_getbufinfo_ip_t s_ivd_ctl_getbufinfo_ip_t; 357 }ihevcd_cxa_ctl_getbufinfo_ip_t; 358 359 360 361 typedef struct { 362 363 /** 364 * ivd_ctl_getbufinfo_op_t 365 */ 366 ivd_ctl_getbufinfo_op_t s_ivd_ctl_getbufinfo_op_t; 367 }ihevcd_cxa_ctl_getbufinfo_op_t; 368 369 370 /*****************************************************************************/ 371 /* Video control:Getstatus Call */ 372 /*****************************************************************************/ 373 374 375 typedef struct { 376 377 /** 378 * ivd_ctl_getstatus_ip_t 379 */ 380 ivd_ctl_getstatus_ip_t s_ivd_ctl_getstatus_ip_t; 381 }ihevcd_cxa_ctl_getstatus_ip_t; 382 383 384 385 typedef struct { 386 387 /** 388 * ivd_ctl_getstatus_op_t 389 */ 390 ivd_ctl_getstatus_op_t s_ivd_ctl_getstatus_op_t; 391 392 /** 393 * Height of the coding picture without cropping 394 */ 395 UWORD32 u4_coded_pic_ht; 396 397 /** 398 * Width of the coding picture without cropping 399 */ 400 UWORD32 u4_coded_pic_wd; 401 }ihevcd_cxa_ctl_getstatus_op_t; 402 403 404 /*****************************************************************************/ 405 /* Video control:Get Version Info */ 406 /*****************************************************************************/ 407 408 409 typedef struct { 410 411 /** 412 * ivd_ctl_getversioninfo_ip_t 413 */ 414 ivd_ctl_getversioninfo_ip_t s_ivd_ctl_getversioninfo_ip_t; 415 }ihevcd_cxa_ctl_getversioninfo_ip_t; 416 417 418 419 typedef struct { 420 421 /** 422 * ivd_ctl_getversioninfo_op_t 423 */ 424 ivd_ctl_getversioninfo_op_t s_ivd_ctl_getversioninfo_op_t; 425 }ihevcd_cxa_ctl_getversioninfo_op_t; 426 427 428 typedef struct { 429 430 /** 431 * u4_size 432 */ 433 UWORD32 u4_size; 434 435 /** 436 * cmd 437 */ 438 IVD_API_COMMAND_TYPE_T e_cmd; 439 440 /** 441 * sub_cmd 442 */ 443 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 444 445 /** 446 * Pictures that are are degraded 447 * 0 : No degrade 448 * 1 : Only on non-reference frames 449 * 2 : Use interval specified by u4_nondegrade_interval 450 * 3 : All non-key frames 451 * 4 : All frames 452 */ 453 WORD32 i4_degrade_pics; 454 455 /** 456 * Interval for pictures which are completely decoded without any degradation 457 */ 458 WORD32 i4_nondegrade_interval; 459 460 /** 461 * bit position (lsb is zero): Type of degradation 462 * 0 : Disable SAO 463 * 1 : Disable deblocking 464 * 2 : Faster inter prediction filters 465 * 3 : Fastest inter prediction filters 466 */ 467 WORD32 i4_degrade_type; 468 469 }ihevcd_cxa_ctl_degrade_ip_t; 470 471 typedef struct 472 { 473 /** 474 * u4_size 475 */ 476 UWORD32 u4_size; 477 478 /** 479 * error_code 480 */ 481 UWORD32 u4_error_code; 482 }ihevcd_cxa_ctl_degrade_op_t; 483 484 typedef struct 485 { 486 487 /** 488 * size 489 */ 490 UWORD32 u4_size; 491 492 /** 493 * cmd 494 */ 495 IVD_API_COMMAND_TYPE_T e_cmd; 496 497 /** 498 * sub_cmd 499 */ 500 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 501 502 /** 503 * num_cores 504 */ 505 UWORD32 u4_num_cores; 506 }ihevcd_cxa_ctl_set_num_cores_ip_t; 507 508 typedef struct 509 { 510 511 /** 512 * size 513 */ 514 UWORD32 u4_size; 515 516 /** 517 * error_code 518 */ 519 UWORD32 u4_error_code; 520 }ihevcd_cxa_ctl_set_num_cores_op_t; 521 522 typedef struct 523 { 524 /** 525 * size 526 */ 527 UWORD32 u4_size; 528 /** 529 * cmd 530 */ 531 IVD_API_COMMAND_TYPE_T e_cmd; 532 /** 533 * sub cmd 534 */ 535 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 536 /** 537 * Processor type 538 */ 539 UWORD32 u4_arch; 540 /** 541 * SOC type 542 */ 543 UWORD32 u4_soc; 544 545 /** 546 * num_cores 547 */ 548 UWORD32 u4_num_cores; 549 550 }ihevcd_cxa_ctl_set_processor_ip_t; 551 552 typedef struct 553 { 554 /** 555 * size 556 */ 557 UWORD32 u4_size; 558 /** 559 * error_code 560 */ 561 UWORD32 u4_error_code; 562 }ihevcd_cxa_ctl_set_processor_op_t; 563 564 typedef struct 565 { 566 567 /** 568 * size 569 */ 570 UWORD32 u4_size; 571 572 /** 573 * cmd 574 */ 575 IVD_API_COMMAND_TYPE_T e_cmd; 576 577 /** 578 * sub cmd 579 */ 580 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 581 }ihevcd_cxa_ctl_get_frame_dimensions_ip_t; 582 583 584 typedef struct { 585 586 /** 587 * size 588 */ 589 UWORD32 u4_size; 590 591 /** 592 * error_code 593 */ 594 UWORD32 u4_error_code; 595 596 /** 597 * x_offset[3] 598 */ 599 UWORD32 u4_x_offset[3]; 600 601 /** 602 * y_offset[3] 603 */ 604 UWORD32 u4_y_offset[3]; 605 606 /** 607 * disp_wd[3] 608 */ 609 UWORD32 u4_disp_wd[3]; 610 611 /** 612 * disp_ht[3] 613 */ 614 UWORD32 u4_disp_ht[3]; 615 616 /** 617 * buffer_wd[3] 618 */ 619 UWORD32 u4_buffer_wd[3]; 620 621 /** 622 * buffer_ht[3] 623 */ 624 UWORD32 u4_buffer_ht[3]; 625 }ihevcd_cxa_ctl_get_frame_dimensions_op_t; 626 627 typedef struct { 628 UWORD32 u4_size; 629 IVD_API_COMMAND_TYPE_T e_cmd; 630 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 631 }ihevcd_cxa_ctl_get_vui_params_ip_t; 632 633 typedef struct { 634 UWORD32 u4_size; 635 UWORD32 u4_error_code; 636 637 /** 638 * indicates the presence of aspect_ratio 639 */ 640 UWORD8 u1_aspect_ratio_info_present_flag; 641 642 /** 643 * specifies the aspect ratio of the luma samples 644 */ 645 UWORD8 u1_aspect_ratio_idc; 646 647 /** 648 * width of the luma samples. user dependent 649 */ 650 UWORD16 u2_sar_width; 651 652 /** 653 * hieght of the luma samples. user dependent 654 */ 655 UWORD16 u2_sar_height; 656 657 /** 658 * if 1, specifies that the overscan_appropriate_flag is present 659 * if 0, the preferred display method for the video signal is unspecified 660 */ 661 UWORD8 u1_overscan_info_present_flag; 662 663 /** 664 * if 1,indicates that the cropped decoded pictures output 665 * are suitable for display using overscan 666 */ 667 UWORD8 u1_overscan_appropriate_flag; 668 669 /** 670 * if 1 specifies that video_format, video_full_range_flag and 671 * colour_description_present_flag are present 672 */ 673 UWORD8 u1_video_signal_type_present_flag; 674 675 /** 676 * 677 */ 678 UWORD8 u1_video_format; 679 680 /** 681 * indicates the black level and range of the luma and chroma signals 682 */ 683 UWORD8 u1_video_full_range_flag; 684 685 /** 686 * if 1,to 1 specifies that colour_primaries, transfer_characteristics 687 * and matrix_coefficients are present 688 */ 689 UWORD8 u1_colour_description_present_flag; 690 691 /** 692 * indicates the chromaticity coordinates of the source primaries 693 */ 694 UWORD8 u1_colour_primaries; 695 696 /** 697 * indicates the opto-electronic transfer characteristic of the source picture 698 */ 699 UWORD8 u1_transfer_characteristics; 700 701 /** 702 * the matrix coefficients used in deriving luma and chroma signals 703 * from the green, blue, and red primaries 704 */ 705 UWORD8 u1_matrix_coefficients; 706 707 /** 708 * if 1, specifies that chroma_sample_loc_type_top_field and 709 * chroma_sample_loc_type_bottom_field are present 710 */ 711 UWORD8 u1_chroma_loc_info_present_flag; 712 713 /** 714 * location of chroma samples 715 */ 716 UWORD8 u1_chroma_sample_loc_type_top_field; 717 718 UWORD8 u1_chroma_sample_loc_type_bottom_field; 719 720 /** 721 * if 1, indicates that the value of all decoded chroma samples is 722 * equal to 1 << ( BitDepthC - 1 ) 723 */ 724 UWORD8 u1_neutral_chroma_indication_flag; 725 726 /** 727 * 1 indicates that the coded video sequence conveys pictures that represent fields 728 * 0 indicates the pictures that represents field 729 */ 730 UWORD8 u1_field_seq_flag; 731 732 /** 733 * specifies that picture timing SEI messages are present for every picture 734 */ 735 UWORD8 u1_frame_field_info_present_flag; 736 737 /** 738 * 1 indicates that the default display window parameters follow next in the VUI 739 */ 740 UWORD8 u1_default_display_window_flag; 741 742 /** 743 * specify the samples of the pictures in the coded video sequence 744 * that are within the default display window, 745 * in terms of a rectangular region specified in picture coordinates for display 746 */ 747 UWORD32 u4_def_disp_win_left_offset; 748 749 UWORD32 u4_def_disp_win_right_offset; 750 751 UWORD32 u4_def_disp_win_top_offset; 752 753 UWORD32 u4_def_disp_win_bottom_offset; 754 755 /** 756 * to 1 specifies that the syntax structure hrd_parameters is present in the vui_parameters syntax structue 757 */ 758 UWORD8 u1_vui_hrd_parameters_present_flag; 759 760 /** 761 * Indicates the presence of the 762 * num_units_in_ticks, time_scale flag 763 */ 764 UWORD8 u1_vui_timing_info_present_flag; 765 766 /** 767 * Number of units that 768 * correspond to one increment of the 769 * clock. Indicates the resolution 770 */ 771 UWORD32 u4_vui_num_units_in_tick; 772 773 /** 774 * The number of time units that pass in one second 775 */ 776 UWORD32 u4_vui_time_scale; 777 /** 778 * if 1, indicates that the POC for each picture in the coded video sequence (cvs) (not the first picture), in decoding order, 779 * is proportional to the output time of the picture relative to that of the first picture in the cvs 780 */ 781 UWORD8 u1_poc_proportional_to_timing_flag; 782 783 /** 784 * num_ticks_poc_diff_one_minus1 plus 1 specifies the number of clock ticks 785 * corresponding to a difference of poc values equal to 1 786 */ 787 UWORD8 u1_num_ticks_poc_diff_one_minus1; 788 789 /** 790 * 1, specifies that the following cvs bitstream restriction parameters are present 791 */ 792 UWORD8 u1_bitstream_restriction_flag; 793 794 /** 795 * if 1, indicates that each pps that is active in the cvs has 796 * the same value of the tile syntax elements 797 */ 798 UWORD8 u1_tiles_fixed_structure_flag; 799 800 /** 801 * if 0, indicates that no pel outside the pic boundaries and 802 * no sub-pels derived using pels outside the pic boundaries is used for inter prediction 803 */ 804 UWORD8 u1_motion_vectors_over_pic_boundaries_flag; 805 806 /** 807 * if 1, indicates 808 * all P/B slices belonging to the same pic have an identical refpic list0, 809 * all B slices that belong to the same picture have an identical refpic list1. 810 */ 811 UWORD8 u1_restricted_ref_pic_lists_flag; 812 813 /** 814 * 815 */ 816 UWORD8 u4_min_spatial_segmentation_idc; 817 /** 818 * Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units 819 * associated with any coded picture 820 */ 821 UWORD8 u1_max_bytes_per_pic_denom; 822 823 /** 824 * Indicates an upper bound for the number of bits of coding_unit() data 825 */ 826 UWORD8 u1_max_bits_per_mincu_denom; 827 828 /** 829 * Indicate the maximum absolute value of a decoded horizontal MV component 830 * in quarter-pel luma units 831 */ 832 UWORD8 u1_log2_max_mv_length_horizontal; 833 834 /** 835 * Indicate the maximum absolute value of a decoded vertical MV component 836 * in quarter-pel luma units 837 */ 838 UWORD8 u1_log2_max_mv_length_vertical; 839 840 /** 841 * HRD parameters 842 */ 843 844 845 /** 846 * Indicates the presence of the 847 * num_units_in_ticks, time_scale flag 848 */ 849 UWORD8 u1_timing_info_present_flag; 850 851 /** 852 * Number of units that 853 * correspond to one increment of the 854 * clock. Indicates the resolution 855 */ 856 UWORD32 u4_num_units_in_tick; 857 858 /** 859 * The number of time units that pass in one second 860 */ 861 UWORD32 u4_time_scale; 862 863 /** 864 * Nal- hrd parameters flag 865 */ 866 UWORD8 u1_nal_hrd_parameters_present_flag; 867 868 /** 869 * VCL- hrd parameters flag 870 */ 871 UWORD8 u1_vcl_hrd_parameters_present_flag; 872 873 /** 874 * Indicates the presence of NAL-HRD params or VCL_HRD params 875 * in the bitstream 876 */ 877 UWORD8 u1_cpbdpb_delays_present_flag; 878 879 /** 880 * specifies that sub-picture level CPB removal delay parameters are 881 * present in picture timing SEI messages 882 */ 883 UWORD8 u1_sub_pic_cpb_params_present_flag; 884 885 /** 886 * specify the clock sub-tick 887 * (the minimum interval of time that can be represented in the coded data when sub_pic_cpb_params_present_flag is equal to 1) 888 */ 889 UWORD8 u1_tick_divisor_minus2; 890 891 /** 892 * specifies the length, in bits for the du cpb delay syntax in pt_sei 893 */ 894 UWORD8 u1_du_cpb_removal_delay_increment_length_minus1; 895 896 /** 897 * Indicates presence of sub_pic_cpb_params in pic timing sei 898 */ 899 UWORD8 u1_sub_pic_cpb_params_in_pic_timing_sei_flag; 900 901 /** 902 * Indicates dpb output delay for the du 903 */ 904 UWORD8 u1_dpb_output_delay_du_length_minus1; 905 906 /** 907 * (together with bit_rate_value_minus1) specifies the 908 * maximum input bit rate of the i-th CPB 909 */ 910 UWORD8 u4_bit_rate_scale; 911 912 /** 913 * (together with cpb_size_du_value_minus1) specfies 914 * CPB size of the i-th CPB when the CPB operates 915 * at the access unit level 916 */ 917 UWORD8 u4_cpb_size_scale; 918 919 /** 920 * (together with cpb_size_du_value_minus1) specfies 921 * CPB size of the i-th CPB when the CPB operates 922 * at the sub-picture level 923 */ 924 UWORD8 u4_cpb_size_du_scale; 925 926 927 /** 928 * specifies the length, in bits for initial cpb delay (nal/vcl)sysntax in bp sei 929 */ 930 UWORD8 u1_initial_cpb_removal_delay_length_minus1; 931 932 /** 933 * specifies the length, in bits for the au cpb delay syntax in pt_sei 934 */ 935 UWORD8 u1_au_cpb_removal_delay_length_minus1; 936 937 /** 938 * specifies the length, in bits, of the pic_dpb_output_delay syntax element in the pt SEI message 939 */ 940 UWORD8 u1_dpb_output_delay_length_minus1; 941 942 /** 943 * if 1, , for the highest temporal sub-layers, the temporal distance between the HRD output times 944 * of consecutive pictures in output order is constrained refer to Table E-6 945 */ 946 UWORD8 au1_fixed_pic_rate_general_flag[6]; 947 948 UWORD8 au1_fixed_pic_rate_within_cvs_flag[6]; 949 950 /** 951 * if 1, , for the highest temporal sub-layers, the temporal distance (in clock ticks) between the 952 * element units that specify HRD output times of consecutive pictures in output order is constrained 953 * refer to Table E-6 954 */ 955 UWORD8 au1_elemental_duration_in_tc_minus1[6]; 956 957 /** 958 * specifies the HRD operational mode 959 */ 960 UWORD8 au1_low_delay_hrd_flag[6]; 961 962 /** 963 * 1 specifies the number of alternative CPB specifications in the 964 * bitstream of the cvs when HighestTid is equal to i 965 */ 966 UWORD8 au1_cpb_cnt_minus1[6]; 967 }ihevcd_cxa_ctl_get_vui_params_op_t; 968 969 #ifdef __cplusplus 970 } /* closing brace for extern "C" */ 971 #endif 972 #endif /* __IHEVCD_CXA_H__ */ 973