Changeset 1412 in 3DVCSoftware for branches/HTM-16.2-dev/source/Lib/TLibCommon/SEI.h
- Timestamp:
- 12 Apr 2018, 11:12:21 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-16.2-dev/source/Lib/TLibCommon/SEI.h
r1405 r1412 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-201 6, ITU/ISO/IEC6 * Copyright (c) 2010-2017, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 68 68 BUFFERING_PERIOD = 0, 69 69 PICTURE_TIMING = 1, 70 PAN_SCAN_RECT = 2, 71 FILLER_PAYLOAD = 3, 72 USER_DATA_REGISTERED_ITU_T_T35 = 4, 73 USER_DATA_UNREGISTERED = 5, 70 PAN_SCAN_RECT = 2, // TODO: add encoder command line control to create these messages 71 FILLER_PAYLOAD = 3, // TODO: add encoder command line control to create these messages 72 USER_DATA_REGISTERED_ITU_T_T35 = 4, // TODO: add encoder command line control to create these messages 73 USER_DATA_UNREGISTERED = 5, // TODO: add encoder command line control to create these messages 74 74 RECOVERY_POINT = 6, 75 SCENE_INFO = 9, 76 FULL_FRAME_SNAPSHOT = 15,77 PROGRESSIVE_REFINEMENT_SEGMENT_START = 16, 78 PROGRESSIVE_REFINEMENT_SEGMENT_END = 17, 79 FILM_GRAIN_CHARACTERISTICS = 19, 80 POST_FILTER_HINT = 22, 75 SCENE_INFO = 9, // TODO: add encoder command line control to create these messages 76 PICTURE_SNAPSHOT = 15, // TODO: add encoder command line control to create these messages 77 PROGRESSIVE_REFINEMENT_SEGMENT_START = 16, // TODO: add encoder command line control to create these messages 78 PROGRESSIVE_REFINEMENT_SEGMENT_END = 17, // TODO: add encoder command line control to create these messages 79 FILM_GRAIN_CHARACTERISTICS = 19, // TODO: add encoder command line control to create these messages 80 POST_FILTER_HINT = 22, // TODO: add encoder command line control to create these messages 81 81 TONE_MAPPING_INFO = 23, 82 82 FRAME_PACKING = 45, 83 83 DISPLAY_ORIENTATION = 47, 84 GREEN_METADATA = 56, 84 85 SOP_DESCRIPTION = 128, 85 86 ACTIVE_PARAMETER_SETS = 129, … … 97 98 KNEE_FUNCTION_INFO = 141, 98 99 COLOUR_REMAPPING_INFO = 142, 99 #if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI 100 ALTERNATIVE_TRANSFER_CHARACTERISTICS = 182, 101 #endif 102 DEINTERLACED_FIELD_IDENTIFICATION = 143, 100 DEINTERLACE_FIELD_IDENTIFICATION = 143, // TODO: add encoder command line control to create these messages 101 CONTENT_LIGHT_LEVEL_INFO = 144, // TODO: add encoder command line control to create these messages 102 DEPENDENT_RAP_INDICATION = 145, // TODO: add encoder command line control to create these messages 103 CODED_REGION_COMPLETION = 146, // TODO: add encoder command line control to create these messages 104 ALTERNATIVE_TRANSFER_CHARACTERISTICS = 147, 105 AMBIENT_VIEWING_ENVIRONMENT = 148, // TODO: add encoder command line control to create these messages 106 #if NH_MV 103 107 LAYERS_NOT_PRESENT = 160, 104 108 INTER_LAYER_CONSTRAINED_TILE_SETS = 161, … … 118 122 ,ALTERNATIVE_DEPTH_INFO = 181 119 123 #endif 124 #endif 120 125 121 126 }; … … 165 170 }; 166 171 167 static const UInt ISO_IEC_11578_LEN=16; 168 169 class SEIuserDataUnregistered : public SEI 170 { 171 public: 172 PayloadType payloadType() const { return USER_DATA_UNREGISTERED; } 173 174 SEIuserDataUnregistered() 175 : userData(0) 176 {} 177 178 virtual ~SEIuserDataUnregistered() 179 { 180 delete userData; 181 } 182 183 UChar uuid_iso_iec_11578[ISO_IEC_11578_LEN]; 184 UInt userDataLength; 185 UChar *userData; 186 }; 187 188 class SEIDecodedPictureHash : public SEI 189 { 190 public: 191 PayloadType payloadType() const { return DECODED_PICTURE_HASH; } 192 193 SEIDecodedPictureHash() {} 194 virtual ~SEIDecodedPictureHash() {} 195 196 HashType method; 197 198 TComPictureHash m_pictureHash; 199 }; 200 201 class SEIActiveParameterSets : public SEI 202 { 203 public: 204 PayloadType payloadType() const { return ACTIVE_PARAMETER_SETS; } 205 206 SEIActiveParameterSets() 207 : activeVPSId (0) 208 , m_selfContainedCvsFlag (false) 209 , m_noParameterSetUpdateFlag (false) 210 , numSpsIdsMinus1 (0) 211 {} 212 virtual ~SEIActiveParameterSets() {} 213 214 Int activeVPSId; 215 Bool m_selfContainedCvsFlag; 216 Bool m_noParameterSetUpdateFlag; 217 Int numSpsIdsMinus1; 218 std::vector<Int> activeSeqParameterSetId; 219 }; 172 173 typedef std::list<SEI*> SEIMessages; 174 175 /// output a selection of SEI messages by payload type. Ownership stays in original message list. 176 SEIMessages getSeisByType(SEIMessages &seiList, SEI::PayloadType seiType); 177 178 /// remove a selection of SEI messages by payload type from the original list and return them in a new list. 179 SEIMessages extractSeisByType(SEIMessages &seiList, SEI::PayloadType seiType); 180 181 /// delete list of SEI messages (freeing the referenced objects) 182 Void deleteSEIs (SEIMessages &seiList); 183 220 184 221 185 class SEIBufferingPeriod : public SEI … … 279 243 }; 280 244 281 class SEIDecodingUnitInfo : public SEI 282 { 283 public: 284 PayloadType payloadType() const { return DECODING_UNIT_INFO; } 285 286 SEIDecodingUnitInfo() 287 : m_decodingUnitIdx(0) 288 , m_duSptCpbRemovalDelay(0) 289 , m_dpbOutputDuDelayPresentFlag(false) 290 , m_picSptDpbOutputDuDelay(0) 291 {} 292 virtual ~SEIDecodingUnitInfo() {} 293 Int m_decodingUnitIdx; 294 Int m_duSptCpbRemovalDelay; 295 Bool m_dpbOutputDuDelayPresentFlag; 296 Int m_picSptDpbOutputDuDelay; 297 }; 245 class SEIPanScanRect : public SEI 246 { 247 public: 248 PayloadType payloadType() const { return PAN_SCAN_RECT; } 249 250 SEIPanScanRect() {} 251 virtual ~SEIPanScanRect() {} 252 253 struct PanScanRect 254 { 255 Int leftOffset; 256 Int rightOffset; 257 Int topOffset; 258 Int bottomOffset; 259 }; 260 261 UInt m_panScanRectId; 262 Bool m_panScanRectCancelFlag; 263 std::vector<PanScanRect> m_panScanRectRegions; 264 Bool m_panScanRectPersistenceFlag; 265 }; 266 267 268 class SEIFillerPayload : public SEI 269 { 270 public: 271 PayloadType payloadType() const { return FILLER_PAYLOAD; } 272 273 SEIFillerPayload() {} 274 virtual ~SEIFillerPayload() {} 275 276 UInt m_numFillerFFBytes; 277 }; 278 279 280 class SEIUserDataRegistered : public SEI 281 { 282 public: 283 PayloadType payloadType() const { return USER_DATA_REGISTERED_ITU_T_T35; } 284 285 SEIUserDataRegistered() {} 286 virtual ~SEIUserDataRegistered() {} 287 288 UShort m_ituCountryCode; 289 std::vector<UChar> m_userData; 290 }; 291 292 293 static const UInt ISO_IEC_11578_LEN=16; 294 295 class SEIUserDataUnregistered : public SEI 296 { 297 public: 298 PayloadType payloadType() const { return USER_DATA_UNREGISTERED; } 299 300 SEIUserDataUnregistered() {} 301 virtual ~SEIUserDataUnregistered() { } 302 303 UChar m_uuid_iso_iec_11578[ISO_IEC_11578_LEN]; 304 std::vector<UChar> m_userData; 305 }; 306 298 307 299 308 class SEIRecoveryPoint : public SEI … … 310 319 }; 311 320 312 class SEIFramePacking : public SEI 313 { 314 public: 315 PayloadType payloadType() const { return FRAME_PACKING; } 316 317 SEIFramePacking() {} 318 virtual ~SEIFramePacking() {} 319 320 Int m_arrangementId; 321 Bool m_arrangementCancelFlag; 322 Int m_arrangementType; 323 Bool m_quincunxSamplingFlag; 324 Int m_contentInterpretationType; 325 Bool m_spatialFlippingFlag; 326 Bool m_frame0FlippedFlag; 327 Bool m_fieldViewsFlag; 328 Bool m_currentFrameIsFrame0Flag; 329 Bool m_frame0SelfContainedFlag; 330 Bool m_frame1SelfContainedFlag; 331 Int m_frame0GridPositionX; 332 Int m_frame0GridPositionY; 333 Int m_frame1GridPositionX; 334 Int m_frame1GridPositionY; 335 Int m_arrangementReservedByte; 336 Bool m_arrangementPersistenceFlag; 337 Bool m_upsampledAspectRatio; 338 }; 339 340 class SEISegmentedRectFramePacking : public SEI 341 { 342 public: 343 PayloadType payloadType() const { return SEGM_RECT_FRAME_PACKING; } 344 345 SEISegmentedRectFramePacking() {} 346 virtual ~SEISegmentedRectFramePacking() {} 347 348 Bool m_arrangementCancelFlag; 349 Int m_contentInterpretationType; 350 Bool m_arrangementPersistenceFlag; 351 }; 352 353 class SEIDisplayOrientation : public SEI 354 { 355 public: 356 PayloadType payloadType() const { return DISPLAY_ORIENTATION; } 357 358 SEIDisplayOrientation() 359 : cancelFlag(true) 360 , persistenceFlag(0) 361 , extensionFlag(false) 362 {} 363 virtual ~SEIDisplayOrientation() {} 364 365 Bool cancelFlag; 366 Bool horFlip; 367 Bool verFlip; 368 369 UInt anticlockwiseRotation; 370 Bool persistenceFlag; 371 Bool extensionFlag; 372 }; 373 374 class SEITemporalLevel0Index : public SEI 375 { 376 public: 377 PayloadType payloadType() const { return TEMPORAL_LEVEL0_INDEX; } 378 379 SEITemporalLevel0Index() 380 : tl0Idx(0) 381 , rapIdx(0) 382 {} 383 virtual ~SEITemporalLevel0Index() {} 384 385 UInt tl0Idx; 386 UInt rapIdx; 387 }; 388 389 class SEIGradualDecodingRefreshInfo : public SEI 390 { 391 public: 392 PayloadType payloadType() const { return REGION_REFRESH_INFO; } 393 394 SEIGradualDecodingRefreshInfo() 395 : m_gdrForegroundFlag(0) 396 {} 397 virtual ~SEIGradualDecodingRefreshInfo() {} 398 399 Bool m_gdrForegroundFlag; 400 }; 401 402 class SEINoDisplay : public SEI 403 { 404 public: 405 PayloadType payloadType() const { return NO_DISPLAY; } 406 407 SEINoDisplay() 408 : m_noDisplay(false) 409 {} 410 virtual ~SEINoDisplay() {} 411 412 Bool m_noDisplay; 413 }; 414 415 class SEISOPDescription : public SEI 416 { 417 public: 418 PayloadType payloadType() const { return SOP_DESCRIPTION; } 419 420 SEISOPDescription() {} 421 virtual ~SEISOPDescription() {} 422 423 UInt m_sopSeqParameterSetId; 424 UInt m_numPicsInSopMinus1; 425 426 UInt m_sopDescVclNaluType[MAX_NUM_PICS_IN_SOP]; 427 UInt m_sopDescTemporalId[MAX_NUM_PICS_IN_SOP]; 428 UInt m_sopDescStRpsIdx[MAX_NUM_PICS_IN_SOP]; 429 Int m_sopDescPocDelta[MAX_NUM_PICS_IN_SOP]; 321 class SEISceneInfo : public SEI 322 { 323 public: 324 PayloadType payloadType() const { return SCENE_INFO; } 325 326 SEISceneInfo() {} 327 virtual ~SEISceneInfo() {} 328 329 Bool m_bSceneInfoPresentFlag; 330 Bool m_bPrevSceneIdValidFlag; 331 UInt m_sceneId; 332 UInt m_sceneTransitionType; 333 UInt m_secondSceneId; 334 }; 335 336 class SEIPictureSnapshot : public SEI 337 { 338 public: 339 PayloadType payloadType() const { return PICTURE_SNAPSHOT; } 340 341 SEIPictureSnapshot() {} 342 virtual ~SEIPictureSnapshot() {} 343 344 UInt m_snapshotId; 345 }; 346 347 348 class SEIProgressiveRefinementSegmentStart : public SEI 349 { 350 public: 351 PayloadType payloadType() const { return PROGRESSIVE_REFINEMENT_SEGMENT_START; } 352 353 SEIProgressiveRefinementSegmentStart() {} 354 virtual ~SEIProgressiveRefinementSegmentStart() {} 355 356 UInt m_progressiveRefinementId; 357 UInt m_picOrderCntDelta; 358 }; 359 360 361 class SEIProgressiveRefinementSegmentEnd: public SEI 362 { 363 public: 364 PayloadType payloadType() const { return PROGRESSIVE_REFINEMENT_SEGMENT_END; } 365 366 SEIProgressiveRefinementSegmentEnd() {} 367 virtual ~SEIProgressiveRefinementSegmentEnd() {} 368 369 UInt m_progressiveRefinementId; 370 }; 371 372 373 class SEIFilmGrainCharacteristics: public SEI 374 { 375 public: 376 PayloadType payloadType() const { return FILM_GRAIN_CHARACTERISTICS; } 377 378 SEIFilmGrainCharacteristics() {} 379 virtual ~SEIFilmGrainCharacteristics() {} 380 381 Bool m_filmGrainCharacteristicsCancelFlag; 382 UChar m_filmGrainModelId; 383 Bool m_separateColourDescriptionPresentFlag; 384 UChar m_filmGrainBitDepthLumaMinus8; 385 UChar m_filmGrainBitDepthChromaMinus8; 386 Bool m_filmGrainFullRangeFlag; 387 UChar m_filmGrainColourPrimaries; 388 UChar m_filmGrainTransferCharacteristics; 389 UChar m_filmGrainMatrixCoeffs; 390 UChar m_blendingModeId; 391 UChar m_log2ScaleFactor; 392 393 struct CompModelIntensityValues 394 { 395 UChar intensityIntervalLowerBound; 396 UChar intensityIntervalUpperBound; 397 std::vector<Int> compModelValue; 398 }; 399 400 struct CompModel 401 { 402 Bool bPresentFlag; 403 UChar numModelValues; // this must be the same as intensityValues[*].compModelValue.size() 404 std::vector<CompModelIntensityValues> intensityValues; 405 }; 406 407 CompModel m_compModel[MAX_NUM_COMPONENT]; 408 Bool m_filmGrainCharacteristicsPersistenceFlag; 409 410 }; 411 412 413 class SEIPostFilterHint: public SEI 414 { 415 public: 416 PayloadType payloadType() const { return POST_FILTER_HINT; } 417 418 SEIPostFilterHint() {} 419 virtual ~SEIPostFilterHint() {} 420 421 UInt m_filterHintSizeY; 422 UInt m_filterHintSizeX; 423 UInt m_filterHintType; 424 Bool m_bIsMonochrome; 425 std::vector<Int> m_filterHintValues; // values stored in linear array, [ ( ( component * sizeY + y ) * SizeX ) + x ] 430 426 }; 431 427 … … 465 461 }; 466 462 463 class SEIFramePacking : public SEI 464 { 465 public: 466 PayloadType payloadType() const { return FRAME_PACKING; } 467 468 SEIFramePacking() {} 469 virtual ~SEIFramePacking() {} 470 471 Int m_arrangementId; 472 Bool m_arrangementCancelFlag; 473 Int m_arrangementType; 474 Bool m_quincunxSamplingFlag; 475 Int m_contentInterpretationType; 476 Bool m_spatialFlippingFlag; 477 Bool m_frame0FlippedFlag; 478 Bool m_fieldViewsFlag; 479 Bool m_currentFrameIsFrame0Flag; 480 Bool m_frame0SelfContainedFlag; 481 Bool m_frame1SelfContainedFlag; 482 Int m_frame0GridPositionX; 483 Int m_frame0GridPositionY; 484 Int m_frame1GridPositionX; 485 Int m_frame1GridPositionY; 486 Int m_arrangementReservedByte; 487 Bool m_arrangementPersistenceFlag; 488 Bool m_upsampledAspectRatio; 489 }; 490 491 class SEIDisplayOrientation : public SEI 492 { 493 public: 494 PayloadType payloadType() const { return DISPLAY_ORIENTATION; } 495 496 SEIDisplayOrientation() 497 : cancelFlag(true) 498 , persistenceFlag(0) 499 , extensionFlag(false) 500 {} 501 virtual ~SEIDisplayOrientation() {} 502 503 Bool cancelFlag; 504 Bool horFlip; 505 Bool verFlip; 506 507 UInt anticlockwiseRotation; 508 Bool persistenceFlag; 509 Bool extensionFlag; 510 }; 511 512 513 class SEIGreenMetadataInfo : public SEI 514 { 515 public: 516 PayloadType payloadType() const { return GREEN_METADATA; } 517 SEIGreenMetadataInfo() {} 518 519 virtual ~SEIGreenMetadataInfo() {} 520 521 UInt m_greenMetadataType; 522 UInt m_xsdMetricType; 523 UInt m_xsdMetricValue; 524 }; 525 526 527 class SEISOPDescription : public SEI 528 { 529 public: 530 PayloadType payloadType() const { return SOP_DESCRIPTION; } 531 532 SEISOPDescription() {} 533 virtual ~SEISOPDescription() {} 534 535 UInt m_sopSeqParameterSetId; 536 UInt m_numPicsInSopMinus1; 537 538 UInt m_sopDescVclNaluType[MAX_NUM_PICS_IN_SOP]; 539 UInt m_sopDescTemporalId[MAX_NUM_PICS_IN_SOP]; 540 UInt m_sopDescStRpsIdx[MAX_NUM_PICS_IN_SOP]; 541 Int m_sopDescPocDelta[MAX_NUM_PICS_IN_SOP]; 542 }; 543 544 545 class SEIActiveParameterSets : public SEI 546 { 547 public: 548 PayloadType payloadType() const { return ACTIVE_PARAMETER_SETS; } 549 550 SEIActiveParameterSets() 551 : activeVPSId (0) 552 , m_selfContainedCvsFlag (false) 553 , m_noParameterSetUpdateFlag (false) 554 , numSpsIdsMinus1 (0) 555 {} 556 virtual ~SEIActiveParameterSets() {} 557 558 Int activeVPSId; 559 Bool m_selfContainedCvsFlag; 560 Bool m_noParameterSetUpdateFlag; 561 Int numSpsIdsMinus1; 562 std::vector<Int> activeSeqParameterSetId; 563 }; 564 565 class SEIDecodingUnitInfo : public SEI 566 { 567 public: 568 PayloadType payloadType() const { return DECODING_UNIT_INFO; } 569 570 SEIDecodingUnitInfo() 571 : m_decodingUnitIdx(0) 572 , m_duSptCpbRemovalDelay(0) 573 , m_dpbOutputDuDelayPresentFlag(false) 574 , m_picSptDpbOutputDuDelay(0) 575 {} 576 virtual ~SEIDecodingUnitInfo() {} 577 Int m_decodingUnitIdx; 578 Int m_duSptCpbRemovalDelay; 579 Bool m_dpbOutputDuDelayPresentFlag; 580 Int m_picSptDpbOutputDuDelay; 581 }; 582 583 class SEITemporalLevel0Index : public SEI 584 { 585 public: 586 PayloadType payloadType() const { return TEMPORAL_LEVEL0_INDEX; } 587 588 SEITemporalLevel0Index() 589 : tl0Idx(0) 590 , rapIdx(0) 591 {} 592 virtual ~SEITemporalLevel0Index() {} 593 594 UInt tl0Idx; 595 UInt rapIdx; 596 }; 597 598 599 class SEIDecodedPictureHash : public SEI 600 { 601 public: 602 PayloadType payloadType() const { return DECODED_PICTURE_HASH; } 603 604 SEIDecodedPictureHash() {} 605 virtual ~SEIDecodedPictureHash() {} 606 607 HashType method; 608 609 TComPictureHash m_pictureHash; 610 }; 611 612 613 class SEIScalableNesting : public SEI 614 { 615 public: 616 PayloadType payloadType() const { return SCALABLE_NESTING; } 617 618 SEIScalableNesting() {} 619 620 virtual ~SEIScalableNesting() 621 { 622 deleteSEIs(m_nestedSEIs); 623 } 624 625 Bool m_bitStreamSubsetFlag; 626 Bool m_nestingOpFlag; 627 Bool m_defaultOpFlag; //value valid if m_nestingOpFlag != 0 628 UInt m_nestingNumOpsMinus1; // -"- 629 UInt m_nestingMaxTemporalIdPlus1[MAX_TLAYER]; // -"- 630 UInt m_nestingOpIdx[MAX_NESTING_NUM_OPS]; // -"- 631 632 Bool m_allLayersFlag; //value valid if m_nestingOpFlag == 0 633 UInt m_nestingNoOpMaxTemporalIdPlus1; //value valid if m_nestingOpFlag == 0 and m_allLayersFlag == 0 634 UInt m_nestingNumLayersMinus1; //value valid if m_nestingOpFlag == 0 and m_allLayersFlag == 0 635 UChar m_nestingLayerId[MAX_NESTING_NUM_LAYER]; //value valid if m_nestingOpFlag == 0 and m_allLayersFlag == 0. This can e.g. be a static array of 64 UChar values 636 637 SEIMessages m_nestedSEIs; 638 }; 639 640 641 class SEIRegionRefreshInfo : public SEI 642 { 643 public: 644 PayloadType payloadType() const { return REGION_REFRESH_INFO; } 645 646 SEIRegionRefreshInfo() 647 : m_gdrForegroundFlag(0) 648 {} 649 virtual ~SEIRegionRefreshInfo() {} 650 651 Bool m_gdrForegroundFlag; 652 }; 653 654 655 class SEINoDisplay : public SEI 656 { 657 public: 658 PayloadType payloadType() const { return NO_DISPLAY; } 659 660 SEINoDisplay() 661 : m_noDisplay(false) 662 {} 663 virtual ~SEINoDisplay() {} 664 665 Bool m_noDisplay; 666 }; 667 668 669 class SEITimeCode : public SEI 670 { 671 public: 672 PayloadType payloadType() const { return TIME_CODE; } 673 SEITimeCode() {} 674 virtual ~SEITimeCode(){} 675 676 UInt numClockTs; 677 TComSEITimeSet timeSetArray[MAX_TIMECODE_SEI_SETS]; 678 }; 679 680 681 class SEIMasteringDisplayColourVolume : public SEI 682 { 683 public: 684 PayloadType payloadType() const { return MASTERING_DISPLAY_COLOUR_VOLUME; } 685 SEIMasteringDisplayColourVolume() {} 686 virtual ~SEIMasteringDisplayColourVolume(){} 687 688 TComSEIMasteringDisplay values; 689 }; 690 691 692 class SEISegmentedRectFramePacking : public SEI 693 { 694 public: 695 PayloadType payloadType() const { return SEGM_RECT_FRAME_PACKING; } 696 697 SEISegmentedRectFramePacking() {} 698 virtual ~SEISegmentedRectFramePacking() {} 699 700 Bool m_arrangementCancelFlag; 701 Int m_contentInterpretationType; 702 Bool m_arrangementPersistenceFlag; 703 }; 704 705 706 //definition according to P1005_v1; 707 class SEITempMotionConstrainedTileSets: public SEI 708 { 709 class TileSetData 710 { 711 protected: 712 std::vector<Int> m_top_left_tile_index; //[tileSetIdx][tileIdx]; 713 std::vector<Int> m_bottom_right_tile_index; 714 715 public: 716 Int m_mcts_id; 717 Bool m_display_tile_set_flag; 718 Int m_num_tile_rects_in_set; //_minus1; 719 Bool m_exact_sample_value_match_flag; 720 Bool m_mcts_tier_level_idc_present_flag; 721 Bool m_mcts_tier_flag; 722 Int m_mcts_level_idc; 723 724 Void setNumberOfTileRects(const Int number) 725 { 726 m_top_left_tile_index .resize(number); 727 m_bottom_right_tile_index.resize(number); 728 } 729 730 Int getNumberOfTileRects() const 731 { 732 assert(m_top_left_tile_index.size() == m_bottom_right_tile_index.size()); 733 return Int(m_top_left_tile_index.size()); 734 } 735 736 Int &topLeftTileIndex (const Int tileRectIndex) { return m_top_left_tile_index [tileRectIndex]; } 737 Int &bottomRightTileIndex(const Int tileRectIndex) { return m_bottom_right_tile_index[tileRectIndex]; } 738 const Int &topLeftTileIndex (const Int tileRectIndex) const { return m_top_left_tile_index [tileRectIndex]; } 739 const Int &bottomRightTileIndex(const Int tileRectIndex) const { return m_bottom_right_tile_index[tileRectIndex]; } 740 }; 741 742 protected: 743 std::vector<TileSetData> m_tile_set_data; 744 745 public: 746 747 Bool m_mc_all_tiles_exact_sample_value_match_flag; 748 Bool m_each_tile_one_tile_set_flag; 749 Bool m_limited_tile_set_display_flag; 750 Bool m_max_mcs_tier_level_idc_present_flag; 751 Bool m_max_mcts_tier_flag; 752 Int m_max_mcts_level_idc; 753 754 PayloadType payloadType() const { return TEMP_MOTION_CONSTRAINED_TILE_SETS; } 755 SEITempMotionConstrainedTileSets() { } 756 virtual ~SEITempMotionConstrainedTileSets() { } 757 758 Void setNumberOfTileSets(const Int number) { m_tile_set_data.resize(number); } 759 Int getNumberOfTileSets() const { return Int(m_tile_set_data.size()); } 760 761 TileSetData &tileSetData (const Int index) { return m_tile_set_data[index]; } 762 const TileSetData &tileSetData (const Int index) const { return m_tile_set_data[index]; } 763 764 }; 765 766 767 class SEIChromaResamplingFilterHint : public SEI 768 { 769 public: 770 PayloadType payloadType() const {return CHROMA_RESAMPLING_FILTER_HINT;} 771 SEIChromaResamplingFilterHint() {} 772 virtual ~SEIChromaResamplingFilterHint() {} 773 774 Int m_verChromaFilterIdc; 775 Int m_horChromaFilterIdc; 776 Bool m_verFilteringFieldProcessingFlag; 777 Int m_targetFormatIdc; 778 Bool m_perfectReconstructionFlag; 779 std::vector<std::vector<Int> > m_verFilterCoeff; 780 std::vector<std::vector<Int> > m_horFilterCoeff; 781 }; 782 783 467 784 class SEIKneeFunctionInfo : public SEI 468 785 { … … 484 801 }; 485 802 803 486 804 class SEIColourRemappingInfo : public SEI 487 805 { … … 503 821 504 822 Void copyFrom( const SEIColourRemappingInfo &seiCriInput) 505 823 { 506 824 (*this) = seiCriInput; 507 825 } … … 526 844 }; 527 845 528 class SEIChromaResamplingFilterHint : public SEI 529 { 530 public: 531 PayloadType payloadType() const {return CHROMA_RESAMPLING_FILTER_HINT;} 532 SEIChromaResamplingFilterHint() {} 533 virtual ~SEIChromaResamplingFilterHint() {} 534 535 Int m_verChromaFilterIdc; 536 Int m_horChromaFilterIdc; 537 Bool m_verFilteringFieldProcessingFlag; 538 Int m_targetFormatIdc; 539 Bool m_perfectReconstructionFlag; 540 std::vector<std::vector<Int> > m_verFilterCoeff; 541 std::vector<std::vector<Int> > m_horFilterCoeff; 542 }; 543 544 class SEIMasteringDisplayColourVolume : public SEI 545 { 546 public: 547 PayloadType payloadType() const { return MASTERING_DISPLAY_COLOUR_VOLUME; } 548 SEIMasteringDisplayColourVolume() {} 549 virtual ~SEIMasteringDisplayColourVolume(){} 550 551 TComSEIMasteringDisplay values; 552 }; 553 554 typedef std::list<SEI*> SEIMessages; 555 556 /// output a selection of SEI messages by payload type. Ownership stays in original message list. 557 SEIMessages getSeisByType(SEIMessages &seiList, SEI::PayloadType seiType); 558 559 /// remove a selection of SEI messages by payload type from the original list and return them in a new list. 560 SEIMessages extractSeisByType(SEIMessages &seiList, SEI::PayloadType seiType); 561 562 /// delete list of SEI messages (freeing the referenced objects) 563 Void deleteSEIs (SEIMessages &seiList); 564 565 class SEIScalableNesting : public SEI 566 { 567 public: 568 PayloadType payloadType() const { return SCALABLE_NESTING; } 569 570 SEIScalableNesting() {} 571 572 virtual ~SEIScalableNesting() 573 { 574 deleteSEIs(m_nestedSEIs); 575 } 576 577 Bool m_bitStreamSubsetFlag; 578 Bool m_nestingOpFlag; 579 Bool m_defaultOpFlag; //value valid if m_nestingOpFlag != 0 580 UInt m_nestingNumOpsMinus1; // -"- 581 UInt m_nestingMaxTemporalIdPlus1[MAX_TLAYER]; // -"- 582 UInt m_nestingOpIdx[MAX_NESTING_NUM_OPS]; // -"- 583 584 Bool m_allLayersFlag; //value valid if m_nestingOpFlag == 0 585 UInt m_nestingNoOpMaxTemporalIdPlus1; //value valid if m_nestingOpFlag == 0 and m_allLayersFlag == 0 586 UInt m_nestingNumLayersMinus1; //value valid if m_nestingOpFlag == 0 and m_allLayersFlag == 0 587 UChar m_nestingLayerId[MAX_NESTING_NUM_LAYER]; //value valid if m_nestingOpFlag == 0 and m_allLayersFlag == 0. This can e.g. be a static array of 64 UChar values 588 589 SEIMessages m_nestedSEIs; 590 }; 591 592 class SEITimeCode : public SEI 593 { 594 public: 595 PayloadType payloadType() const { return TIME_CODE; } 596 SEITimeCode() {} 597 virtual ~SEITimeCode(){} 598 599 UInt numClockTs; 600 TComSEITimeSet timeSetArray[MAX_TIMECODE_SEI_SETS]; 601 }; 602 603 //definition according to P1005_v1; 604 class SEITempMotionConstrainedTileSets: public SEI 605 { 606 struct TileSetData 607 { 608 protected: 609 std::vector<Int> m_top_left_tile_index; //[tileSetIdx][tileIdx]; 610 std::vector<Int> m_bottom_right_tile_index; 611 612 public: 613 Int m_mcts_id; 614 Bool m_display_tile_set_flag; 615 Int m_num_tile_rects_in_set; //_minus1; 616 Bool m_exact_sample_value_match_flag; 617 Bool m_mcts_tier_level_idc_present_flag; 618 Bool m_mcts_tier_flag; 619 Int m_mcts_level_idc; 620 621 Void setNumberOfTileRects(const Int number) 622 { 623 m_top_left_tile_index .resize(number); 624 m_bottom_right_tile_index.resize(number); 625 } 626 627 Int getNumberOfTileRects() const 628 { 629 assert(m_top_left_tile_index.size() == m_bottom_right_tile_index.size()); 630 return Int(m_top_left_tile_index.size()); 631 } 632 633 Int &topLeftTileIndex (const Int tileRectIndex) { return m_top_left_tile_index [tileRectIndex]; } 634 Int &bottomRightTileIndex(const Int tileRectIndex) { return m_bottom_right_tile_index[tileRectIndex]; } 635 const Int &topLeftTileIndex (const Int tileRectIndex) const { return m_top_left_tile_index [tileRectIndex]; } 636 const Int &bottomRightTileIndex(const Int tileRectIndex) const { return m_bottom_right_tile_index[tileRectIndex]; } 637 }; 638 639 protected: 640 std::vector<TileSetData> m_tile_set_data; 641 642 public: 643 644 Bool m_mc_all_tiles_exact_sample_value_match_flag; 645 Bool m_each_tile_one_tile_set_flag; 646 Bool m_limited_tile_set_display_flag; 647 Bool m_max_mcs_tier_level_idc_present_flag; 648 Bool m_max_mcts_tier_flag; 649 Int m_max_mcts_level_idc; 650 651 PayloadType payloadType() const { return TEMP_MOTION_CONSTRAINED_TILE_SETS; } 652 653 Void setNumberOfTileSets(const Int number) { m_tile_set_data.resize(number); } 654 Int getNumberOfTileSets() const { return Int(m_tile_set_data.size()); } 655 656 TileSetData &tileSetData (const Int index) { return m_tile_set_data[index]; } 657 const TileSetData &tileSetData (const Int index) const { return m_tile_set_data[index]; } 658 659 }; 660 661 #if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI 846 847 class SEIDeinterlaceFieldIdentification : public SEI 848 { 849 public: 850 PayloadType payloadType() const { return DEINTERLACE_FIELD_IDENTIFICATION; } 851 SEIDeinterlaceFieldIdentification() { } 852 853 virtual ~SEIDeinterlaceFieldIdentification() {} 854 855 Bool m_deinterlacedPictureSourceParityFlag; 856 }; 857 858 859 class SEIContentLightLevelInfo : public SEI 860 { 861 public: 862 PayloadType payloadType() const { return CONTENT_LIGHT_LEVEL_INFO; } 863 SEIContentLightLevelInfo() { } 864 865 virtual ~SEIContentLightLevelInfo() { } 866 867 UInt m_maxContentLightLevel; 868 UInt m_maxPicAverageLightLevel; 869 }; 870 871 872 class SEIDependentRAPIndication : public SEI 873 { 874 public: 875 PayloadType payloadType() const { return DEPENDENT_RAP_INDICATION; } 876 SEIDependentRAPIndication() { } 877 878 virtual ~SEIDependentRAPIndication() { } 879 }; 880 881 882 class SEICodedRegionCompletion : public SEI 883 { 884 public: 885 PayloadType payloadType() const { return CODED_REGION_COMPLETION; } 886 SEICodedRegionCompletion() { } 887 888 virtual ~SEICodedRegionCompletion() { } 889 890 UInt m_nextSegmentAddress; 891 Bool m_independentSliceSegmentFlag; 892 }; 893 894 662 895 class SEIAlternativeTransferCharacteristics : public SEI 663 896 { … … 672 905 UInt m_preferredTransferCharacteristics; 673 906 }; 674 #endif 907 908 909 class SEIAmbientViewingEnvironment : public SEI 910 { 911 public: 912 PayloadType payloadType() const { return AMBIENT_VIEWING_ENVIRONMENT; } 913 SEIAmbientViewingEnvironment() { } 914 915 virtual ~SEIAmbientViewingEnvironment() { } 916 917 UInt m_ambientIlluminance; 918 UShort m_ambientLightX; 919 UShort m_ambientLightY; 920 }; 675 921 676 922
Note: See TracChangeset for help on using the changeset viewer.