1 /****************************************************************************** 2 * 3 * Copyright (C) 2022 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 * isvcd.h 24 * 25 * @brief 26 * This file contains all the necessary structure and enumeration definitions 27 * needed for the Application. 28 * Program Interface(API) of the Ittiam SVC ASP 29 * Decoder on Cortex A8 - Neon platform 30 * 31 * @author 32 * Kishore 33 * 34 * @remarks 35 * None 36 * 37 ******************************************************************************* 38 */ 39 40 #ifndef _ISVCD_H_ 41 #define _ISVCD_H_ 42 #ifdef __cplusplus 43 extern "C" 44 { 45 #endif 46 47 #include "iv.h" 48 #include "ivd.h" 49 50 /*****************************************************************************/ 51 /* Constant Macros */ 52 /*****************************************************************************/ 53 #define IVD_ERROR_MASK 0xFF 54 55 /*****************************************************************************/ 56 /* Function Macros */ 57 /*****************************************************************************/ 58 #define IS_IVD_CONCEALMENT_APPLIED(x) (x & (1 << IVD_APPLIEDCONCEALMENT)) 59 #define IS_IVD_INSUFFICIENTDATA_ERROR(x) (x & (1 << IVD_INSUFFICIENTDATA)) 60 #define IS_IVD_CORRUPTEDDATA_ERROR(x) (x & (1 << IVD_CORRUPTEDDATA)) 61 #define IS_IVD_CORRUPTEDHEADER_ERROR(x) (x & (1 << IVD_CORRUPTEDHEADER)) 62 #define IS_IVD_UNSUPPORTEDINPUT_ERROR(x) (x & (1 << IVD_UNSUPPORTEDINPUT)) 63 #define IS_IVD_UNSUPPORTEDPARAM_ERROR(x) (x & (1 << IVD_UNSUPPORTEDPARAM)) 64 #define IS_IVD_FATAL_ERROR(x) (x & (1 << IVD_FATALERROR)) 65 #define IS_IVD_INVALID_BITSTREAM_ERROR(x) (x & (1 << IVD_INVALID_BITSTREAM)) 66 #define IS_IVD_INCOMPLETE_BITSTREAM_ERROR(x) (x & (1 << IVD_INCOMPLETE_BITSTREAM)) 67 68 /*****************************************************************************/ 69 /* API Function Prototype */ 70 /*****************************************************************************/ 71 IV_API_CALL_STATUS_T isvcd_api_function(iv_obj_t *ps_handle, void *pv_api_ip, void *pv_api_op); 72 73 /*****************************************************************************/ 74 /* Enums */ 75 /*****************************************************************************/ 76 /* Codec Error codes for SVC ASP Decoder */ 77 78 typedef enum 79 { 80 81 ISVCD_VID_HDR_DEC_NUM_FRM_BUF_NOT_SUFFICIENT = IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS + 1, 82 ISVCD_FRAME_INFO_OP_BUF_NULL, 83 ISVCD_INSUFFICIENT_METADATA_BUFFER, 84 85 } ISVCD_ERROR_CODES_T; 86 87 /*****************************************************************************/ 88 /* Extended Structures */ 89 /*****************************************************************************/ 90 91 /*****************************************************************************/ 92 /* Delete Codec */ 93 /*****************************************************************************/ 94 95 typedef struct 96 { 97 ivd_delete_ip_t s_ivd_delete_ip_t; 98 } isvcd_delete_ip_t; 99 100 typedef struct 101 { 102 ivd_delete_op_t s_ivd_delete_op_t; 103 } isvcd_delete_op_t; 104 105 /*****************************************************************************/ 106 /* Initialize decoder */ 107 /*****************************************************************************/ 108 109 typedef struct 110 { 111 ivd_create_ip_t s_ivd_create_ip_t; 112 /** 113 * enable_frm_info 114 */ 115 UWORD32 u4_enable_frame_info; 116 } isvcd_create_ip_t; 117 118 typedef struct 119 { 120 ivd_create_op_t s_ivd_create_op_t; 121 } isvcd_create_op_t; 122 123 /*****************************************************************************/ 124 /* Video Decode */ 125 /*****************************************************************************/ 126 127 typedef struct 128 { 129 ivd_video_decode_ip_t s_ivd_video_decode_ip_t; 130 /** 131 * 8x8 block QP map size 132 */ 133 UWORD32 u4_8x8_blk_qp_map_size; 134 135 /** 136 * 8x8 block QP map 137 */ 138 UWORD8 *pu1_8x8_blk_qp_map; 139 140 /** 141 * 8x8 block type map size 142 */ 143 UWORD32 u4_8x8_blk_type_map_size; 144 145 /** 146 * 8x8 block type map 147 */ 148 UWORD8 *pu1_8x8_blk_type_map; 149 } isvcd_video_decode_ip_t; 150 151 /*****************************************************************************/ 152 /* QP and block type maps are defined for each 8x8 MB sub-block. */ 153 /* QP can range from <0, 51> and block type can be INTER/INTRA/SKIP. */ 154 /* */ 155 /* Let’s say, a frame has a total of ‘m’ MBs (each 16x16). Since the QP */ 156 /* and block type are defined for each 8x8 block, hence each MB has */ 157 /* 4 entries giving m x 4 total entires for QP and block type map each. */ 158 /* */ 159 /* For example, for a frame of size 60x60 shown in the figure down, both */ 160 /* maps (QP and MB type) have the same layout. */ 161 /* Each block represents an 8x8 sub-block. Both width and height are aligned */ 162 /* to next largest multiple of 8, 64 in this case. */ 163 /* */ 164 /* 0 8 16 24 32 40 48 56 64 */ 165 /* 0 ------------------------------------------------ */ 166 /* | 0th | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | */ 167 /* 8 ------------------------------------------------ */ 168 /* | 8th | 9th | 10th | - | - | - | - | - | */ 169 /* 16 ------------------------------------------------ */ 170 /* | - | - | - | - | - | - | - | - | */ 171 /* 24 ------------------------------------------------ */ 172 /* | - | - | - | - | - | - | - | - | */ 173 /* 32 ------------------------------------------------ */ 174 /* | - | - | - | - | - | - | - | - | */ 175 /* 40 ------------------------------------------------ */ 176 /* | - | - | - | - | - | - | - | - | */ 177 /* 48 ------------------------------------------------ */ 178 /* | - | - | - | - | - | - | - | - | */ 179 /* 56 ------------------------------------------------ */ 180 /* | - | - | - | - | - | - | - | - | */ 181 /* 64 ------------------------------------------------ */ 182 /* */ 183 /*****************************************************************************/ 184 185 typedef struct 186 { 187 ivd_video_decode_op_t s_ivd_video_decode_op_t; 188 189 /** 190 * 8x8 block QP map size 191 */ 192 UWORD32 u4_8x8_blk_qp_map_size; 193 194 /** 195 * 8x8 block QP map 196 */ 197 UWORD8 *pu1_8x8_blk_qp_map; 198 199 /** 200 * 8x8 block type map size 201 */ 202 UWORD32 u4_8x8_blk_type_map_size; 203 204 /** 205 * 8x8 block type map 206 */ 207 UWORD8 *pu1_8x8_blk_type_map; 208 209 } isvcd_video_decode_op_t; 210 211 /*****************************************************************************/ 212 /* Get Display Frame */ 213 /*****************************************************************************/ 214 215 typedef struct 216 { 217 ivd_get_display_frame_ip_t s_ivd_get_display_frame_ip_t; 218 } isvcd_get_display_frame_ip_t; 219 220 typedef struct 221 { 222 ivd_get_display_frame_op_t s_ivd_get_display_frame_op_t; 223 } isvcd_get_display_frame_op_t; 224 225 /*****************************************************************************/ 226 /* Set Display Frame */ 227 /*****************************************************************************/ 228 229 typedef struct 230 { 231 ivd_set_display_frame_ip_t s_ivd_set_display_frame_ip_t; 232 } isvcd_set_display_frame_ip_t; 233 234 typedef struct 235 { 236 ivd_set_display_frame_op_t s_ivd_set_display_frame_op_t; 237 } isvcd_set_display_frame_op_t; 238 239 /*****************************************************************************/ 240 /* Release Display Buffers */ 241 /*****************************************************************************/ 242 243 typedef struct 244 { 245 ivd_rel_display_frame_ip_t s_ivd_rel_display_frame_ip_t; 246 } isvcd_rel_display_frame_ip_t; 247 248 typedef struct 249 { 250 ivd_rel_display_frame_op_t s_ivd_rel_display_frame_op_t; 251 } isvcd_rel_display_frame_op_t; 252 253 /*****************************************************************************/ 254 /* Set Target Layer for SVC */ 255 /*****************************************************************************/ 256 257 /* IVD_API_COMMAND_TYPE_T::e_cmd = ISVCD_CMD_CTL_SET_TGT_LAYER */ 258 259 typedef struct 260 { 261 /** 262 * u4_size of the structure 263 */ 264 UWORD32 u4_size; 265 266 /** 267 * e_cmd 268 */ 269 IVD_API_COMMAND_TYPE_T e_cmd; 270 271 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 272 273 /** 274 * set the tgt dependency id 275 */ 276 UWORD8 u1_tgt_dep_id; 277 278 /** 279 * set the tgt quality id 280 */ 281 UWORD8 u1_tgt_quality_id; 282 283 /** 284 * set the tgt temporal id 285 */ 286 UWORD8 u1_tgt_temp_id; 287 288 /** 289 * set the tgt priority id 290 */ 291 UWORD8 u1_tgt_priority_id; 292 293 } isvcd_set_target_layer_ip_t; 294 295 typedef struct 296 { 297 /** 298 * u4_size of the structure 299 */ 300 UWORD32 u4_size; 301 302 /** 303 * error code 304 */ 305 UWORD32 u4_error_code; 306 307 } isvcd_set_target_layer_op_t; 308 309 typedef enum 310 { 311 312 /* Set TGT Layer for SVC */ 313 ISVCD_CMD_CTL_SET_TGT_LAYER = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x305 314 315 } ISVCD_CMD_CTL_SUB_CMDS; 316 /*****************************************************************************/ 317 /* Video control Flush */ 318 /*****************************************************************************/ 319 320 typedef struct 321 { 322 ivd_ctl_flush_ip_t s_ivd_ctl_flush_ip_t; 323 } isvcd_ctl_flush_ip_t; 324 325 typedef struct 326 { 327 ivd_ctl_flush_op_t s_ivd_ctl_flush_op_t; 328 } isvcd_ctl_flush_op_t; 329 330 /*****************************************************************************/ 331 /* Video control reset */ 332 /*****************************************************************************/ 333 334 typedef struct 335 { 336 ivd_ctl_reset_ip_t s_ivd_ctl_reset_ip_t; 337 } isvcd_ctl_reset_ip_t; 338 339 typedef struct 340 { 341 ivd_ctl_reset_op_t s_ivd_ctl_reset_op_t; 342 } isvcd_ctl_reset_op_t; 343 344 /*****************************************************************************/ 345 /* Video control Set Params */ 346 /*****************************************************************************/ 347 348 typedef struct 349 { 350 ivd_ctl_set_config_ip_t s_ivd_ctl_set_config_ip_t; 351 } isvcd_ctl_set_config_ip_t; 352 353 typedef struct 354 { 355 ivd_ctl_set_config_op_t s_ivd_ctl_set_config_op_t; 356 } isvcd_ctl_set_config_op_t; 357 358 /*****************************************************************************/ 359 /* Video control:Get Buf Info */ 360 /*****************************************************************************/ 361 362 typedef struct 363 { 364 ivd_ctl_getbufinfo_ip_t s_ivd_ctl_getbufinfo_ip_t; 365 } isvcd_ctl_getbufinfo_ip_t; 366 367 typedef struct 368 { 369 ivd_ctl_getbufinfo_op_t s_ivd_ctl_getbufinfo_op_t; 370 } isvcd_ctl_getbufinfo_op_t; 371 372 /*****************************************************************************/ 373 /* Video control:Getstatus Call */ 374 /*****************************************************************************/ 375 376 typedef struct 377 { 378 ivd_ctl_getstatus_ip_t s_ivd_ctl_getstatus_ip_t; 379 } isvcd_ctl_getstatus_ip_t; 380 381 typedef struct 382 { 383 ivd_ctl_getstatus_op_t s_ivd_ctl_getstatus_op_t; 384 } isvcd_ctl_getstatus_op_t; 385 386 /*****************************************************************************/ 387 /* Video control:Get Version Info */ 388 /*****************************************************************************/ 389 390 typedef struct 391 { 392 ivd_ctl_getversioninfo_ip_t s_ivd_ctl_getversioninfo_ip_t; 393 } isvcd_ctl_getversioninfo_ip_t; 394 395 typedef struct 396 { 397 ivd_ctl_getversioninfo_op_t s_ivd_ctl_getversioninfo_op_t; 398 } isvcd_ctl_getversioninfo_op_t; 399 400 typedef struct 401 { 402 /** 403 * u4_size 404 */ 405 UWORD32 u4_size; 406 407 /** 408 * cmd 409 */ 410 IVD_API_COMMAND_TYPE_T e_cmd; 411 412 /** 413 * sub_cmd 414 */ 415 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 416 417 /** 418 * Pictures that are are degraded 419 * 0 : No degrade 420 * 1 : Only on non-reference frames 421 * 2 : Use interval specified by u4_nondegrade_interval 422 * 3 : All non-key frames 423 * 4 : All frames 424 */ 425 WORD32 i4_degrade_pics; 426 427 /** 428 * Interval for pictures which are completely decoded without any degradation 429 */ 430 WORD32 i4_nondegrade_interval; 431 432 /** 433 * bit position (lsb is zero): Type of degradation 434 * 1 : Disable deblocking 435 * 2 : Faster inter prediction filters 436 * 3 : Fastest inter prediction filters 437 */ 438 WORD32 i4_degrade_type; 439 440 } isvcd_ctl_degrade_ip_t; 441 442 typedef struct 443 { 444 /** 445 * u4_size 446 */ 447 UWORD32 u4_size; 448 449 /** 450 * error_code 451 */ 452 UWORD32 u4_error_code; 453 } isvcd_ctl_degrade_op_t; 454 455 typedef struct 456 { 457 UWORD32 u4_size; 458 IVD_API_COMMAND_TYPE_T e_cmd; 459 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 460 UWORD32 u4_disable_deblk_level; 461 } isvcd_ctl_disable_deblock_ip_t; 462 463 typedef struct 464 { 465 UWORD32 u4_size; 466 UWORD32 u4_error_code; 467 } isvcd_ctl_disable_deblock_op_t; 468 469 typedef struct 470 { 471 UWORD32 u4_size; 472 IVD_API_COMMAND_TYPE_T e_cmd; 473 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 474 UWORD32 u4_num_cores; 475 } isvcd_ctl_set_num_cores_ip_t; 476 477 typedef struct 478 { 479 UWORD32 u4_size; 480 UWORD32 u4_error_code; 481 } isvcd_ctl_set_num_cores_op_t; 482 483 typedef struct 484 { 485 /** 486 * i4_size 487 */ 488 UWORD32 u4_size; 489 /** 490 * cmd 491 */ 492 IVD_API_COMMAND_TYPE_T e_cmd; 493 /** 494 * sub cmd 495 */ 496 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 497 /** 498 * Processor type 499 */ 500 UWORD32 u4_arch; 501 /** 502 * SOC type 503 */ 504 UWORD32 u4_soc; 505 506 /** 507 * num_cores 508 */ 509 UWORD32 u4_num_cores; 510 511 } isvcd_ctl_set_processor_ip_t; 512 513 typedef struct 514 { 515 /** 516 * i4_size 517 */ 518 UWORD32 u4_size; 519 /** 520 * error_code 521 */ 522 UWORD32 u4_error_code; 523 } isvcd_ctl_set_processor_op_t; 524 525 typedef struct 526 { 527 UWORD32 u4_size; 528 IVD_API_COMMAND_TYPE_T e_cmd; 529 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 530 } isvcd_ctl_get_frame_dimensions_ip_t; 531 532 typedef struct 533 { 534 UWORD32 u4_size; 535 UWORD32 u4_error_code; 536 UWORD32 u4_x_offset[3]; 537 UWORD32 u4_y_offset[3]; 538 UWORD32 u4_disp_wd[3]; 539 UWORD32 u4_disp_ht[3]; 540 UWORD32 u4_buffer_wd[3]; 541 UWORD32 u4_buffer_ht[3]; 542 } isvcd_ctl_get_frame_dimensions_op_t; 543 544 typedef struct 545 { 546 UWORD32 u4_size; 547 IVD_API_COMMAND_TYPE_T e_cmd; 548 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 549 } isvcd_ctl_get_vui_params_ip_t; 550 551 typedef struct 552 { 553 UWORD32 u4_size; 554 UWORD32 u4_error_code; 555 UWORD8 u1_aspect_ratio_idc; 556 UWORD16 u2_sar_width; 557 UWORD16 u2_sar_height; 558 UWORD8 u1_overscan_appropriate_flag; 559 UWORD8 u1_video_format; 560 UWORD8 u1_video_full_range_flag; 561 UWORD8 u1_colour_primaries; 562 UWORD8 u1_tfr_chars; 563 UWORD8 u1_matrix_coeffs; 564 UWORD8 u1_cr_top_field; 565 UWORD8 u1_cr_bottom_field; 566 UWORD32 u4_num_units_in_tick; 567 UWORD32 u4_time_scale; 568 UWORD8 u1_fixed_frame_rate_flag; 569 UWORD8 u1_nal_hrd_params_present; 570 UWORD8 u1_vcl_hrd_params_present; 571 UWORD8 u1_low_delay_hrd_flag; 572 UWORD8 u1_pic_struct_present_flag; 573 UWORD8 u1_bitstream_restriction_flag; 574 UWORD8 u1_mv_over_pic_boundaries_flag; 575 UWORD32 u4_max_bytes_per_pic_denom; 576 UWORD32 u4_max_bits_per_mb_denom; 577 UWORD32 u4_log2_max_mv_length_horz; 578 UWORD32 u4_log2_max_mv_length_vert; 579 UWORD32 u4_num_reorder_frames; 580 UWORD32 u4_max_dec_frame_buffering; 581 } isvcd_ctl_get_vui_params_op_t; 582 583 typedef struct 584 { 585 /** 586 * u4_size 587 */ 588 UWORD32 u4_size; 589 590 /** 591 * cmd 592 */ 593 IVD_API_COMMAND_TYPE_T e_cmd; 594 595 /** 596 * sub_cmd 597 */ 598 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 599 } isvcd_ctl_get_sei_mdcv_params_ip_t; 600 601 typedef struct 602 { 603 /** 604 * u4_size 605 */ 606 UWORD32 u4_size; 607 608 /** 609 * error_code 610 */ 611 UWORD32 u4_error_code; 612 613 /** 614 * Array to store the display_primaries_x values 615 */ 616 UWORD16 au2_display_primaries_x[NUM_SEI_MDCV_PRIMARIES]; 617 618 /** 619 * Array to store the display_primaries_y values 620 */ 621 UWORD16 au2_display_primaries_y[NUM_SEI_MDCV_PRIMARIES]; 622 623 /** 624 * Variable to store the white point x value 625 */ 626 UWORD16 u2_white_point_x; 627 628 /** 629 * Variable to store the white point y value 630 */ 631 UWORD16 u2_white_point_y; 632 633 /** 634 * Variable to store the max display mastering luminance value 635 */ 636 UWORD32 u4_max_display_mastering_luminance; 637 638 /** 639 * Variable to store the min display mastering luminance value 640 */ 641 UWORD32 u4_min_display_mastering_luminance; 642 } isvcd_ctl_get_sei_mdcv_params_op_t; 643 644 typedef struct 645 { 646 /** 647 * u4_size 648 */ 649 UWORD32 u4_size; 650 651 /** 652 * cmd 653 */ 654 IVD_API_COMMAND_TYPE_T e_cmd; 655 656 /** 657 * sub_cmd 658 */ 659 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 660 } isvcd_ctl_get_sei_cll_params_ip_t; 661 662 typedef struct 663 { 664 /** 665 * u4_size 666 */ 667 UWORD32 u4_size; 668 669 /** 670 * error_code 671 */ 672 UWORD32 u4_error_code; 673 674 /** 675 * The maximum pixel intensity of all samples 676 */ 677 UWORD16 u2_max_content_light_level; 678 679 /** 680 * The average pixel intensity of all samples 681 */ 682 UWORD16 u2_max_pic_average_light_level; 683 } isvcd_ctl_get_sei_cll_params_op_t; 684 685 typedef struct 686 { 687 /** 688 * u4_size 689 */ 690 UWORD32 u4_size; 691 692 /** 693 * cmd 694 */ 695 IVD_API_COMMAND_TYPE_T e_cmd; 696 697 /** 698 * sub_cmd 699 */ 700 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 701 } isvcd_ctl_get_sei_ave_params_ip_t; 702 703 typedef struct 704 { 705 /** 706 * u4_size 707 */ 708 UWORD32 u4_size; 709 710 /** 711 * error_code 712 */ 713 UWORD32 u4_error_code; 714 715 /** 716 * specifies the environmental illluminance of the ambient viewing environment 717 */ 718 UWORD32 u4_ambient_illuminance; 719 720 /* 721 * specify the normalized x chromaticity coordinates of the 722 * environmental ambient light in the nominal viewing environment 723 */ 724 UWORD16 u2_ambient_light_x; 725 726 /* 727 * specify the normalized y chromaticity coordinates of the 728 * environmental ambient light in the nominal viewing environment 729 */ 730 UWORD16 u2_ambient_light_y; 731 } isvcd_ctl_get_sei_ave_params_op_t; 732 733 typedef struct 734 { 735 /** 736 * u4_size 737 */ 738 UWORD32 u4_size; 739 740 /** 741 * cmd 742 */ 743 IVD_API_COMMAND_TYPE_T e_cmd; 744 745 /** 746 * sub_cmd 747 */ 748 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 749 } isvcd_ctl_get_sei_ccv_params_ip_t; 750 751 typedef struct 752 { 753 /** 754 * u4_size 755 */ 756 UWORD32 u4_size; 757 758 /** 759 * error_code 760 */ 761 UWORD32 u4_error_code; 762 763 /* 764 * Flag used to control persistence of CCV SEI messages 765 */ 766 UWORD8 u1_ccv_cancel_flag; 767 768 /* 769 * specifies the persistence of the CCV SEI message for the current layer 770 */ 771 UWORD8 u1_ccv_persistence_flag; 772 773 /* 774 * specifies the presence of syntax elements ccv_primaries_x and 775 * ccv_primaries_y 776 */ 777 UWORD8 u1_ccv_primaries_present_flag; 778 779 /* 780 * specifies that the syntax element ccv_min_luminance_value is present 781 */ 782 UWORD8 u1_ccv_min_luminance_value_present_flag; 783 784 /* 785 * specifies that the syntax element ccv_max_luminance_value is present 786 */ 787 UWORD8 u1_ccv_max_luminance_value_present_flag; 788 789 /* 790 * specifies that the syntax element ccv_avg_luminance_value is present 791 */ 792 UWORD8 u1_ccv_avg_luminance_value_present_flag; 793 794 /* 795 * shall be equal to 0 in bitstreams conforming to this version. Other values 796 * for reserved_zero_2bits are reserved for future use 797 */ 798 UWORD8 u1_ccv_reserved_zero_2bits; 799 800 /* 801 * specify the normalized x chromaticity coordinates of the colour 802 * primary component c of the nominal content colour volume 803 */ 804 WORD32 ai4_ccv_primaries_x[NUM_SEI_CCV_PRIMARIES]; 805 806 /* 807 * specify the normalized y chromaticity coordinates of the colour 808 * primary component c of the nominal content colour volume 809 */ 810 WORD32 ai4_ccv_primaries_y[NUM_SEI_CCV_PRIMARIES]; 811 812 /* 813 * specifies the normalized minimum luminance value 814 */ 815 UWORD32 u4_ccv_min_luminance_value; 816 817 /* 818 * specifies the normalized maximum luminance value 819 */ 820 UWORD32 u4_ccv_max_luminance_value; 821 822 /* 823 * specifies the normalized average luminance value 824 */ 825 UWORD32 u4_ccv_avg_luminance_value; 826 } isvcd_ctl_get_sei_ccv_params_op_t; 827 828 #ifdef __cplusplus 829 } /* closing brace for extern "C" */ 830 #endif 831 #endif /* _ISVCD_H_ */ 832