Changeset 1342 in 3DVCSoftware for branches/HTM-15.1-dev0-Disney/source/Lib/TLibCommon
- Timestamp:
- 1 Oct 2015, 15:54:17 (10 years ago)
- Location:
- branches/HTM-15.1-dev0-Disney/source/Lib/TLibCommon
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-15.1-dev0-Disney/source/Lib/TLibCommon/SEI.cpp
r1339 r1342 234 234 case SEI::SUB_BITSTREAM_PROPERTY : return new SEISubBitstreamProperty; 235 235 case SEI::ALPHA_CHANNEL_INFO : return new SEIAlphaChannelInfo; 236 #if NH_MV_SEI_TBD237 236 case SEI::OVERLAY_INFO : return new SEIOverlayInfo; 238 #endif239 237 case SEI::TEMPORAL_MV_PREDICTION_CONSTRAINTS : return new SEITemporalMvPredictionConstraints; 240 238 #if NH_MV_SEI_TBD … … 740 738 741 739 }; 742 #if NH_MV_SEI_TBD 743 Void SEIOverlayInfo::setupFromSlice ( const TComSlice* slice ) 744 { 745 sei.m_overlayInfoCancelFlag = TBD ; 746 if( !sei.m_overlayInfoCancelFlag ) 747 { 748 sei.m_overlayContentAuxIdMinus128 = TBD ; 749 sei.m_overlayLabelAuxIdMinus128 = TBD ; 750 sei.m_overlayAlphaAuxIdMinus128 = TBD ; 751 sei.m_overlayElementLabelValueLengthMinus8 = TBD ; 752 sei.m_numOverlaysMinus1 = TBD ; 753 for( Int i = 0; i <= NumOverlaysMinus1( ); i++ ) 740 741 SEIOverlayInfo::SEIOverlayInfo ( ) 742 : m_numOverlaysMax(16) 743 , m_numOverlayElementsMax(256) 744 , m_numStringBytesMax(256) //incl. null termination byte 745 { }; 746 747 Void SEIOverlayInfo::initStringElements ( ) 748 { 749 // Set some string values for syntax elements of declarator type st(v) 750 m_overlayLanguage.resize(m_numOverlaysMax); 751 m_overlayName.resize(m_numOverlaysMax); 752 m_overlayElementName.resize(m_numOverlaysMax); 753 char* cstr = new char[m_numStringBytesMax]; 754 for ( Int i=0 ; i<m_numOverlaysMax ; i++ ) 755 { 756 sprintf(cstr, "LanguageTag%02d", i); 757 m_overlayLanguage[i] = std::string(cstr); 758 sprintf(cstr, "Overlay%02dName", i); 759 m_overlayName[i] = std::string(cstr); 760 761 m_overlayElementName[i].resize(m_numOverlayElementsMax); 762 for ( Int j=0 ; j<m_numOverlayElementsMax ; j++ ) 754 763 { 755 sei.m_overlayIdx[i] = TBD ; 756 sei.m_languageOverlayPresentFlag[i] = TBD ; 757 sei.m_overlayContentLayerId[i] = TBD ; 758 sei.m_overlayLabelPresentFlag[i] = TBD ; 759 if( sei.m_overlayLabelPresentFlag( i ) ) 760 { 761 sei.m_overlayLabelLayerId[i] = TBD ; 762 } 763 sei.m_overlayAlphaPresentFlag[i] = TBD ; 764 if( sei.m_overlayAlphaPresentFlag( i ) ) 765 { 766 sei.m_overlayAlphaLayerId[i] = TBD ; 767 } 768 if( sei.m_overlayLabelPresentFlag( i ) ) 769 { 770 sei.m_numOverlayElementsMinus1[i] = TBD ; 771 for( Int j = 0; j <= sei.m_numOverlayElementsMinus1( i ); j++ ) 772 { 773 sei.m_overlayElementLabelMin[i][j] = TBD ; 774 sei.m_overlayElementLabelMax[i][j] = TBD ; 775 } 776 } 764 sprintf(cstr, "Overlay%02dElement%03dName", i, j); 765 m_overlayElementName[i][j] = std::string(cstr); 777 766 } 778 while( !ByteaLigned(() ) ); 779 { 780 sei.m_overlayZeroBit = TBD ; 781 } 782 for( Int i = 0; i <= NumOverlaysMinus1( ); i++ ) 783 { 784 if( sei.m_languageOverlayPresentFlag( i ) ) 785 { 786 sei.m_overlayLanguage[i] = TBD ; 787 } 788 sei.m_overlayName[i] = TBD ; 789 if( sei.m_overlayLabelPresentFlag( i ) ) 790 { 791 for( Int j = 0; j <= sei.m_numOverlayElementsMinus1( i ); j++ ) 792 { 793 sei.m_overlayElementName[i][j] = TBD ; 794 } 795 } 796 } 797 sei.m_overlayInfoPersistenceFlag = TBD ; 798 } 767 } 768 delete [] cstr; 799 769 }; 800 770 … … 804 774 IntAry1d defAppLayerIds, defAppPocs, defAppTids, defAppVclNaluTypes; 805 775 806 // TBD:Add default values for which layers, POCS, Tids or Nalu types the SEI should be send.807 defAppLayerIds . push_back( TBD);808 defAppPocs .push_back( TBD);809 defAppTids .push_back( TBD);810 defAppVclNaluTypes .push_back( TBD );776 // Add default values for which layers, POCS, Tids or Nalu types the SEI should be send. 777 defAppLayerIds .clear(); 778 defAppPocs .push_back( 0 ); 779 defAppTids .push_back( 0 ); 780 defAppVclNaluTypes = IDR_NAL_UNIT_TYPES; 811 781 812 782 Int defSeiNaluId = 0; 813 783 Int defPositionInSeiNalu = 0; 814 Bool defModifyByEncoder = TBD;784 Bool defModifyByEncoder = false; 815 785 816 786 // Setup config file options … … 819 789 820 790 opts.addOptions() 821 ("OverlayInfoCancelFlag" , m_overlayInfoCancelFlag , false , "OverlayInfoCancelFlag" ) 822 ("OverlayContentAuxIdMinus128" , m_overlayContentAuxIdMinus128 , 0 , "OverlayContentAuxIdMinus128" ) 823 ("OverlayLabelAuxIdMinus128" , m_overlayLabelAuxIdMinus128 , 0 , "OverlayLabelAuxIdMinus128" ) 824 ("OverlayAlphaAuxIdMinus128" , m_overlayAlphaAuxIdMinus128 , 0 , "OverlayAlphaAuxIdMinus128" ) 825 ("OverlayElementLabelValueLengthMinus8", m_overlayElementLabelValueLengthMinus8, 0 , "OverlayElementLabelValueLengthMinus8") 826 ("NumOverlaysMinus1" , m_numOverlaysMinus1 , 0 , "NumOverlaysMinus1" ) 827 ("OverlayIdx" , m_overlayIdx , IntAry1d (1,0) , "OverlayIdx" ) 828 ("LanguageOverlayPresentFlag" , m_languageOverlayPresentFlag , BoolAry1d(1,0) , "LanguageOverlayPresentFlag" ) 829 ("OverlayContentLayerId" , m_overlayContentLayerId , IntAry1d (1,0) , "OverlayContentLayerId" ) 830 ("OverlayLabelPresentFlag" , m_overlayLabelPresentFlag , BoolAry1d(1,0) , "OverlayLabelPresentFlag" ) 831 ("OverlayLabelLayerId" , m_overlayLabelLayerId , IntAry1d (1,0) , "OverlayLabelLayerId" ) 832 ("OverlayAlphaPresentFlag" , m_overlayAlphaPresentFlag , BoolAry1d(1,0) , "OverlayAlphaPresentFlag" ) 833 ("OverlayAlphaLayerId" , m_overlayAlphaLayerId , IntAry1d (1,0) , "OverlayAlphaLayerId" ) 834 ("NumOverlayElementsMinus1" , m_numOverlayElementsMinus1 , IntAry1d (1,0) , "NumOverlayElementsMinus1" ) 835 ("OverlayElementLabelMin_%d" , m_overlayElementLabelMin , IntAry1d (1,0) ,ADDNUM , "OverlayElementLabelMin" ) 836 ("OverlayElementLabelMax_%d" , m_overlayElementLabelMax , IntAry1d (1,0) ,ADDNUM , "OverlayElementLabelMax" ) 837 ("OverlayZeroBit" , m_overlayZeroBit , 0 , "OverlayZeroBit" ) 838 ("OverlayLanguage" , m_overlayLanguage , IntAry1d (1,0) , "OverlayLanguage" ) 839 ("OverlayName" , m_overlayName , IntAry1d (1,0) , "OverlayName" ) 840 ("OverlayElementName_%d" , m_overlayElementName , IntAry1d (1,0) ,ADDNUM , "OverlayElementName" ) 841 ("OverlayInfoPersistenceFlag" , m_overlayInfoPersistenceFlag , false , "OverlayInfoPersistenceFlag" ) 842 ; 791 ("OverlayInfoCancelFlag" , m_overlayInfoCancelFlag , false , "OverlayInfoCancelFlag" ) 792 ("OverlayContentAuxIdMinus128" , m_overlayContentAuxIdMinus128 , 0 , "OverlayContentAuxIdMinus128" ) 793 ("OverlayLabelAuxIdMinus128" , m_overlayLabelAuxIdMinus128 , 0 , "OverlayLabelAuxIdMinus128" ) 794 ("OverlayAlphaAuxIdMinus128" , m_overlayAlphaAuxIdMinus128 , 0 , "OverlayAlphaAuxIdMinus128" ) 795 ("OverlayElementLabelValueLengthMinus8", m_overlayElementLabelValueLengthMinus8, 0 , "OverlayElementLabelValueLengthMinus8") 796 ("NumOverlaysMinus1" , m_numOverlaysMinus1 , 0 , "NumOverlaysMinus1" ) 797 ("OverlayIdx" , m_overlayIdx , IntAry1d (16,0) , "OverlayIdx" ) 798 ("LanguageOverlayPresentFlag" , m_languageOverlayPresentFlag , BoolAry1d(16,0) , "LanguageOverlayPresentFlag" ) 799 ("OverlayContentLayerId" , m_overlayContentLayerId , IntAry1d (16,0) , "OverlayContentLayerId" ) 800 ("OverlayLabelPresentFlag" , m_overlayLabelPresentFlag , BoolAry1d(16,0) , "OverlayLabelPresentFlag" ) 801 ("OverlayLabelLayerId" , m_overlayLabelLayerId , IntAry1d (16,0) , "OverlayLabelLayerId" ) 802 ("OverlayAlphaPresentFlag" , m_overlayAlphaPresentFlag , BoolAry1d(16,0) , "OverlayAlphaPresentFlag" ) 803 ("OverlayAlphaLayerId" , m_overlayAlphaLayerId , IntAry1d (16,0) , "OverlayAlphaLayerId" ) 804 ("NumOverlayElementsMinus1" , m_numOverlayElementsMinus1 , IntAry1d (16,0) , "NumOverlayElementsMinus1" ) 805 ("OverlayElementLabelMin_%d" , m_overlayElementLabelMin , IntAry1d (256,0) ,16 , "OverlayElementLabelMin" ) 806 ("OverlayElementLabelMax_%d" , m_overlayElementLabelMax , IntAry1d (256,0) ,16 , "OverlayElementLabelMax" ) 807 ("OverlayInfoPersistenceFlag" , m_overlayInfoPersistenceFlag , false , "OverlayInfoPersistenceFlag" ) 808 ; 843 809 844 810 po::setDefaults(opts); … … 847 813 po::ErrorReporter err; 848 814 po::parseConfigFile( opts, cfgFile, err ); 849 }; 815 816 // Initialize some values for syntax elements with declaration type st(v) (i.e. string type syntax elements) 817 initStringElements(); 818 }; 819 850 820 851 821 Bool SEIOverlayInfo::checkCfg( const TComSlice* slice ) 852 822 { 853 823 // Check config values 854 Bool wrongConfig = false; 855 856 // TBD: Add constraints on presence of SEI here. 857 xCheckCfg ( wrongConfig, TBD , "TBD" ); 858 xCheckCfg ( wrongConfig, TBD , "TBD" ); 859 860 // TBD: Modify constraints according to the SEI semantics. 861 xCheckCfgRange( wrongConfig, m_overlayInfoCancelFlag , MINVAL , MAXVAL, "overlay_info_cancel_flag" ); 862 xCheckCfgRange( wrongConfig, m_overlayContentAuxIdMinus128 , MINVAL , MAXVAL, "overlay_content_aux_id_minus128" ); 863 xCheckCfgRange( wrongConfig, m_overlayLabelAuxIdMinus128 , MINVAL , MAXVAL, "overlay_label_aux_id_minus128" ); 864 xCheckCfgRange( wrongConfig, m_overlayAlphaAuxIdMinus128 , MINVAL , MAXVAL, "overlay_alpha_aux_id_minus128" ); 865 xCheckCfgRange( wrongConfig, m_overlayElementLabelValueLengthMinus8, MINVAL , MAXVAL, "overlay_element_label_value_length_minus8"); 866 xCheckCfgRange( wrongConfig, m_numOverlaysMinus1 , MINVAL , MAXVAL, "num_overlays_minus1" ); 867 xCheckCfgRange( wrongConfig, m_overlayIdx[i] , MINVAL , MAXVAL, "overlay_idx" ); 868 xCheckCfgRange( wrongConfig, m_languageOverlayPresentFlag[i] , MINVAL , MAXVAL, "language_overlay_present_flag" ); 869 xCheckCfgRange( wrongConfig, m_overlayContentLayerId[i] , MINVAL , MAXVAL, "overlay_content_layer_id" ); 870 xCheckCfgRange( wrongConfig, m_overlayLabelPresentFlag[i] , MINVAL , MAXVAL, "overlay_label_present_flag" ); 871 xCheckCfgRange( wrongConfig, m_overlayLabelLayerId[i] , MINVAL , MAXVAL, "overlay_label_layer_id" ); 872 xCheckCfgRange( wrongConfig, m_overlayAlphaPresentFlag[i] , MINVAL , MAXVAL, "overlay_alpha_present_flag" ); 873 xCheckCfgRange( wrongConfig, m_overlayAlphaLayerId[i] , MINVAL , MAXVAL, "overlay_alpha_layer_id" ); 874 xCheckCfgRange( wrongConfig, m_numOverlayElementsMinus1[i] , MINVAL , MAXVAL, "num_overlay_elements_minus1" ); 875 xCheckCfgRange( wrongConfig, m_overlayElementLabelMin[i][j] , MINVAL , MAXVAL, "overlay_element_label_min" ); 876 xCheckCfgRange( wrongConfig, m_overlayElementLabelMax[i][j] , MINVAL , MAXVAL, "overlay_element_label_max" ); 877 xCheckCfgRange( wrongConfig, m_overlayZeroBit , MINVAL , MAXVAL, "overlay_zero_bit" ); 878 xCheckCfgRange( wrongConfig, m_overlayLanguage[i] , MINVAL , MAXVAL, "overlay_language" ); 879 xCheckCfgRange( wrongConfig, m_overlayName[i] , MINVAL , MAXVAL, "overlay_name" ); 880 xCheckCfgRange( wrongConfig, m_overlayElementName[i][j] , MINVAL , MAXVAL, "overlay_element_name" ); 881 xCheckCfgRange( wrongConfig, m_overlayInfoPersistenceFlag , MINVAL , MAXVAL, "overlay_info_persistence_flag" ); 824 Bool wrongConfig = false; 825 826 xCheckCfgRange( wrongConfig, m_overlayInfoCancelFlag , 0 , 1, "overlay_info_cancel_flag" ); 827 xCheckCfgRange( wrongConfig, m_overlayContentAuxIdMinus128 , 0 , 31, "overlay_content_aux_id_minus128" ); 828 xCheckCfgRange( wrongConfig, m_overlayLabelAuxIdMinus128 , 0 , 31, "overlay_label_aux_id_minus128" ); 829 xCheckCfgRange( wrongConfig, m_overlayAlphaAuxIdMinus128 , 0 , 31, "overlay_alpha_aux_id_minus128" ); 830 xCheckCfgRange( wrongConfig, m_numOverlaysMinus1 , 0 , m_numOverlaysMax-1, "num_overlays_minus1" ); 831 for (Int i=0 ; i<=m_numOverlaysMinus1 ; ++i) 832 { 833 xCheckCfgRange( wrongConfig, m_overlayIdx[i] , 0 , 255, "overlay_idx" ); 834 xCheckCfgRange( wrongConfig, m_languageOverlayPresentFlag[i] , 0 , 1, "language_overlay_present_flag" ); 835 xCheckCfgRange( wrongConfig, m_overlayLabelPresentFlag[i] , 0 , 1, "overlay_label_present_flag" ); 836 xCheckCfgRange( wrongConfig, m_overlayAlphaPresentFlag[i] , 0 , 1, "overlay_alpha_present_flag" ); 837 xCheckCfgRange( wrongConfig, m_overlayContentLayerId[i] , 0 , 63, "overlay_content_layer_id" ); 838 xCheckCfgRange( wrongConfig, m_overlayLabelLayerId[i] , 0 , 63, "overlay_label_layer_id" ); 839 xCheckCfgRange( wrongConfig, m_overlayAlphaLayerId[i] , 0 , 63, "overlay_alpha_layer_id" ); 840 xCheckCfgRange( wrongConfig, m_numOverlayElementsMinus1[i] , 0 , m_numOverlayElementsMax-1, "num_overlay_elements_minus1" ); 841 for (Int j=0 ; j<=m_numOverlayElementsMinus1[i] ; ++j) 842 { 843 Int maxLabelMinMaxValue = ( 1 << ( m_overlayElementLabelValueLengthMinus8 + 8 ) )-1; 844 xCheckCfgRange( wrongConfig, m_overlayElementLabelMin[i][j] , 0 , maxLabelMinMaxValue , "overlay_element_label_min" ); 845 xCheckCfgRange( wrongConfig, m_overlayElementLabelMax[i][j] , 0 , maxLabelMinMaxValue , "overlay_element_label_max" ); 846 } 847 } 848 xCheckCfgRange( wrongConfig, m_overlayInfoPersistenceFlag , 0 , 1, "overlay_info_persistence_flag" ); 882 849 883 850 return wrongConfig; 884 851 885 852 }; 886 #endif 853 887 854 888 855 Void SEITemporalMvPredictionConstraints::setupFromCfgFile(const Char* cfgFile) -
branches/HTM-15.1-dev0-Disney/source/Lib/TLibCommon/SEI.h
r1339 r1342 803 803 }; 804 804 805 #if NH_MV_SEI_TBD806 805 class SEIOverlayInfo : public SEI 807 806 { 808 807 public: 809 808 PayloadType payloadType( ) const { return OVERLAY_INFO; } 810 SEIOverlayInfo ( ) { };809 SEIOverlayInfo ( ); 811 810 ~SEIOverlayInfo( ) { }; 812 811 SEI* getCopy( ) const { return new SEIOverlayInfo(*this); }; 813 812 814 Void setupFromCfgFile( const Char* cfgFile ); 815 Void setupFromSlice ( const TComSlice* slice ); 816 Bool checkCfg ( const TComSlice* slice ); 817 813 Void setupFromCfgFile( const Char* cfgFile ); 814 Bool checkCfg ( const TComSlice* slice ); 815 Void initStringElements ( ); 816 817 const Int m_numOverlaysMax; 818 const Int m_numOverlayElementsMax; 819 const Int m_numStringBytesMax; //incl. null termination byte 820 818 821 Bool m_overlayInfoCancelFlag; 819 822 Int m_overlayContentAuxIdMinus128; … … 831 834 IntAry1d m_numOverlayElementsMinus1; 832 835 IntAry2d m_overlayElementLabelMin; 833 IntAry2d m_overlayElementLabelMax; 834 Int m_overlayZeroBit; 835 IntAry1d m_overlayLanguage; 836 IntAry1d m_overlayName; 837 IntAry2d m_overlayElementName; 836 IntAry2d m_overlayElementLabelMax; 837 std::vector< std::string > m_overlayLanguage; 838 std::vector< std::string > m_overlayName; 839 std::vector< std::vector< std::string > > m_overlayElementName; 838 840 Bool m_overlayInfoPersistenceFlag; 839 841 }; 840 841 #endif842 842 843 843 class SEITemporalMvPredictionConstraints : public SEI
Note: See TracChangeset for help on using the changeset viewer.