Changeset 1089 in SHVCSoftware for branches/SHM-dev/source/Lib/TLibEncoder
- Timestamp:
- 25 Jun 2015, 16:19:05 (10 years ago)
- Location:
- branches/SHM-dev/source/Lib/TLibEncoder
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/Lib/TLibEncoder/TEncCfg.h
r1057 r1089 465 465 #endif //SVC_EXTENSION 466 466 #if Q0074_COLOUR_REMAPPING_SEI 467 Char* m_colourRemapSEIFile; ///< SEI Colour Remapping File (initialized from external file) 468 Int m_colourRemapSEIId; 469 Bool m_colourRemapSEICancelFlag; 470 Bool m_colourRemapSEIPersistenceFlag; 471 Bool m_colourRemapSEIVideoSignalInfoPresentFlag; 472 Bool m_colourRemapSEIFullRangeFlag; 473 Int m_colourRemapSEIPrimaries; 474 Int m_colourRemapSEITransferFunction; 475 Int m_colourRemapSEIMatrixCoefficients; 476 Int m_colourRemapSEIInputBitDepth; 477 Int m_colourRemapSEIBitDepth; 478 Int m_colourRemapSEIPreLutNumValMinus1[3]; 479 Int* m_colourRemapSEIPreLutCodedValue[3]; 480 Int* m_colourRemapSEIPreLutTargetValue[3]; 481 Bool m_colourRemapSEIMatrixPresentFlag; 482 Int m_colourRemapSEILog2MatrixDenom; 483 Int m_colourRemapSEICoeffs[3][3]; 484 Int m_colourRemapSEIPostLutNumValMinus1[3]; 485 Int* m_colourRemapSEIPostLutCodedValue[3]; 486 Int* m_colourRemapSEIPostLutTargetValue[3]; 467 Char* m_colourRemapSEIFileRoot; ///< SEI Colour Remapping File (initialized from external file) 487 468 #endif 488 469 … … 492 473 , m_tileRowHeight() 493 474 #if Q0074_COLOUR_REMAPPING_SEI 494 , m_colourRemapSEIFile (NULL)475 , m_colourRemapSEIFileRoot(NULL) 495 476 #endif 496 477 {} … … 1030 1011 #endif 1031 1012 #if Q0074_COLOUR_REMAPPING_SEI 1032 Void setCRISEIFile( Char* pch ) { m_colourRemapSEIFile = pch; } 1033 Char* getCRISEIFile() { return m_colourRemapSEIFile; } 1034 Void setCRISEIId(Int i) { m_colourRemapSEIId = i; } 1035 Int getCRISEIId() { return m_colourRemapSEIId; } 1036 Void setCRISEICancelFlag(Bool b) { m_colourRemapSEICancelFlag = b; } 1037 Bool getCRISEICancelFlag() { return m_colourRemapSEICancelFlag; } 1038 Void setCRISEIPersistenceFlag(Bool b) { m_colourRemapSEIPersistenceFlag = b; } 1039 Bool getCRISEIPersistenceFlag() { return m_colourRemapSEIPersistenceFlag; } 1040 Void setCRISEIVideoSignalInfoPresentFlag(Bool b) { m_colourRemapSEIVideoSignalInfoPresentFlag = b; } 1041 Bool getCRISEIVideoSignalInfoPresentFlag() { return m_colourRemapSEIVideoSignalInfoPresentFlag; } 1042 Void setCRISEIFullRangeFlag(Bool b) { m_colourRemapSEIFullRangeFlag = b; } 1043 Bool getCRISEIFullRangeFlag() { return m_colourRemapSEIFullRangeFlag; } 1044 Void setCRISEIPrimaries(Int i) { m_colourRemapSEIPrimaries = i; } 1045 Int getCRISEIPrimaries() { return m_colourRemapSEIPrimaries; } 1046 Void setCRISEITransferFunction(Int i) { m_colourRemapSEITransferFunction = i; } 1047 Int getCRISEITransferFunction() { return m_colourRemapSEITransferFunction; } 1048 Void setCRISEIMatrixCoefficients(Int i) { m_colourRemapSEIMatrixCoefficients = i; } 1049 Int getCRISEIMatrixCoefficients() { return m_colourRemapSEIMatrixCoefficients; } 1050 Void setCRISEIInputBitDepth(Int i) { m_colourRemapSEIInputBitDepth = i; } 1051 Int getCRISEIInputBitDepth() { return m_colourRemapSEIInputBitDepth; } 1052 Void setCRISEIBitDepth(Int i) { m_colourRemapSEIBitDepth = i; } 1053 Int getCRISEIBitDepth() { return m_colourRemapSEIBitDepth; } 1054 Void setCRISEIPreLutNumValMinus1(Int *i) { for(Int c=0 ; c<3 ; c++) m_colourRemapSEIPreLutNumValMinus1[c] = i[c]; } 1055 Int getCRISEIPreLutNumValMinus1(Int i) { return m_colourRemapSEIPreLutNumValMinus1[i]; } 1056 Void setCRISEIPreLutCodedValue(Int **i) { for(Int c=0 ; c<3 ; c++) m_colourRemapSEIPreLutCodedValue[c] = i[c]; } 1057 Int* getCRISEIPreLutCodedValue(Int i) { return m_colourRemapSEIPreLutCodedValue[i]; } 1058 Void setCRISEIPreLutTargetValue(Int **i) { for(Int c=0 ; c<3 ; c++) m_colourRemapSEIPreLutTargetValue[c] = i[c]; } 1059 Int* getCRISEIPreLutTargetValue(Int i) { return m_colourRemapSEIPreLutTargetValue[i]; } 1060 Void setCRISEIMatrixPresentFlag(Bool b) { m_colourRemapSEIMatrixPresentFlag = b; } 1061 Bool getCRISEIMatrixPresentFlag() { return m_colourRemapSEIMatrixPresentFlag; } 1062 Void setCRISEILog2MatrixDenom(Int i) { m_colourRemapSEILog2MatrixDenom = i; } 1063 Int getCRISEILog2MatrixDenom() { return m_colourRemapSEILog2MatrixDenom; } 1064 Void setCRISEICoeffs(Int i[3][3]) { for(Int c=0 ; c<3 ; c++) for(Int j=0 ; j<3 ; j++) m_colourRemapSEICoeffs[c][j] = i[c][j]; } 1065 Int* getCRISEICoeffs(Int i) { return m_colourRemapSEICoeffs[i]; } 1066 Void setCRISEIPostLutNumValMinus1(Int *i) { for(Int c=0 ; c<3 ; c++) m_colourRemapSEIPostLutNumValMinus1[c] = i[c]; } 1067 Int getCRISEIPostLutNumValMinus1(Int i) { return m_colourRemapSEIPostLutNumValMinus1[i]; } 1068 Void setCRISEIPostLutCodedValue(Int **i) { for(Int c=0 ; c<3 ; c++) m_colourRemapSEIPostLutCodedValue[c] = i[c]; } 1069 Int* getCRISEIPostLutCodedValue(Int i) { return m_colourRemapSEIPostLutCodedValue[i]; } 1070 Void setCRISEIPostLutTargetValue(Int **i) { for(Int c=0 ; c<3 ; c++) m_colourRemapSEIPostLutTargetValue[c] = i[c]; } 1071 Int* getCRISEIPostLutTargetValue(Int i) { return m_colourRemapSEIPostLutTargetValue[i]; } 1013 Void setCRISEIFileRoot( Char* pch ) { m_colourRemapSEIFileRoot = pch; } 1014 Char* getCRISEIFileRoot() { return m_colourRemapSEIFileRoot; } 1072 1015 #endif 1073 1016 #if SVC_EXTENSION -
branches/SHM-dev/source/Lib/TLibEncoder/TEncGOP.cpp
r1085 r1089 127 127 #endif 128 128 #endif //SVC_EXTENSION 129 130 #if Q0074_COLOUR_REMAPPING_SEI 131 for( Int c=0 ; c<3 ; c++) 132 { 133 m_colourRemapSEIPreLutCodedValue[c] = NULL; 134 m_colourRemapSEIPreLutTargetValue[c] = NULL; 135 m_colourRemapSEIPostLutCodedValue[c] = NULL; 136 m_colourRemapSEIPostLutTargetValue[c] = NULL; 137 } 138 #endif 129 139 return; 130 140 } … … 642 652 } 643 653 644 #if Q0074_COLOUR_REMAPPING_SEI645 if(m_pcCfg->getCRISEIFile() && strlen(m_pcCfg->getCRISEIFile()))646 {647 SEIColourRemappingInfo *sei = xCreateSEIColourRemappingInfo ();648 649 #if SVC_EXTENSION650 nalu = NALUnit(NAL_UNIT_PREFIX_SEI, 0, sps->getLayerId()); // SEI-CRI is applied per layer651 #else652 nalu = NALUnit(NAL_UNIT_PREFIX_SEI);653 #endif654 m_pcEntropyCoder->setBitstream(&nalu.m_Bitstream);655 #if O0164_MULTI_LAYER_HRD656 m_seiWriter.writeSEImessage(nalu.m_Bitstream, *sei, m_pcEncTop->getVPS(), sps);657 #else658 m_seiWriter.writeSEImessage(nalu.m_Bitstream, *sei, sps);659 #endif660 writeRBSPTrailingBits(nalu.m_Bitstream);661 accessUnit.push_back(new NALUnitEBSP(nalu));662 delete sei;663 }664 #endif665 666 654 #if SVC_EXTENSION 667 655 #if LAYERS_NOT_PRESENT_SEI … … 732 720 #endif //SVC_EXTENSION 733 721 } 722 723 #if Q0074_COLOUR_REMAPPING_SEI 724 Void TEncGOP::freeColourCRI() 725 { 726 for( Int c=0 ; c<3 ; c++) 727 { 728 if ( m_colourRemapSEIPreLutCodedValue[c] != NULL) 729 { 730 delete[] m_colourRemapSEIPreLutCodedValue[c]; 731 m_colourRemapSEIPreLutCodedValue[c] = NULL; 732 } 733 if ( m_colourRemapSEIPreLutTargetValue[c] != NULL) 734 { 735 delete[] m_colourRemapSEIPreLutTargetValue[c]; 736 m_colourRemapSEIPreLutTargetValue[c] = NULL; 737 } 738 if ( m_colourRemapSEIPostLutCodedValue[c] != NULL) 739 { 740 delete[] m_colourRemapSEIPostLutCodedValue[c]; 741 m_colourRemapSEIPostLutCodedValue[c] = NULL; 742 } 743 if ( m_colourRemapSEIPostLutTargetValue[c] != NULL) 744 { 745 delete[] m_colourRemapSEIPostLutTargetValue[c]; 746 m_colourRemapSEIPostLutTargetValue[c] = NULL; 747 } 748 } 749 } 750 751 Int TEncGOP::readingCRIparameters(){ 752 753 // reading external Colour Remapping Information SEI message parameters from file 754 if( m_colourRemapSEIFile.c_str() ) 755 { 756 FILE* fic; 757 Int retval; 758 if((fic = fopen(m_colourRemapSEIFile.c_str(),"r")) == (FILE*)NULL) 759 { 760 //fprintf(stderr, "Can't open Colour Remapping Information SEI parameters file %s\n", m_colourRemapSEIFile.c_str()); 761 //exit(EXIT_FAILURE); 762 return (-1); 763 } 764 Int tempCode; 765 retval = fscanf( fic, "%d", &m_colourRemapSEIId ); 766 retval = fscanf( fic, "%d", &tempCode );m_colourRemapSEICancelFlag = tempCode ? 1 : 0; 767 if( !m_colourRemapSEICancelFlag ) 768 { 769 retval = fscanf( fic, "%d", &tempCode ); m_colourRemapSEIPersistenceFlag= tempCode ? 1 : 0; 770 retval = fscanf( fic, "%d", &tempCode); m_colourRemapSEIVideoSignalInfoPresentFlag = tempCode ? 1 : 0; 771 if( m_colourRemapSEIVideoSignalInfoPresentFlag ) 772 { 773 retval = fscanf( fic, "%d", &tempCode ); m_colourRemapSEIFullRangeFlag = tempCode ? 1 : 0; 774 retval = fscanf( fic, "%d", &m_colourRemapSEIPrimaries ); 775 retval = fscanf( fic, "%d", &m_colourRemapSEITransferFunction ); 776 retval = fscanf( fic, "%d", &m_colourRemapSEIMatrixCoefficients ); 777 } 778 779 retval = fscanf( fic, "%d", &m_colourRemapSEIInputBitDepth ); 780 retval = fscanf( fic, "%d", &m_colourRemapSEIBitDepth ); 781 782 for( Int c=0 ; c<3 ; c++ ) 783 { 784 retval = fscanf( fic, "%d", &m_colourRemapSEIPreLutNumValMinus1[c] ); 785 if( m_colourRemapSEIPreLutNumValMinus1[c]>0 ) 786 { 787 m_colourRemapSEIPreLutCodedValue[c] = new Int[m_colourRemapSEIPreLutNumValMinus1[c]+1]; 788 m_colourRemapSEIPreLutTargetValue[c] = new Int[m_colourRemapSEIPreLutNumValMinus1[c]+1]; 789 for( Int i=0 ; i<=m_colourRemapSEIPreLutNumValMinus1[c] ; i++ ) 790 { 791 retval = fscanf( fic, "%d", &m_colourRemapSEIPreLutCodedValue[c][i] ); 792 retval = fscanf( fic, "%d", &m_colourRemapSEIPreLutTargetValue[c][i] ); 793 } 794 } 795 } 796 797 retval = fscanf( fic, "%d", &tempCode ); m_colourRemapSEIMatrixPresentFlag = tempCode ? 1 : 0; 798 if( m_colourRemapSEIMatrixPresentFlag ) 799 { 800 retval = fscanf( fic, "%d", &m_colourRemapSEILog2MatrixDenom ); 801 for( Int c=0 ; c<3 ; c++ ) 802 for( Int i=0 ; i<3 ; i++ ) 803 retval = fscanf( fic, "%d", &m_colourRemapSEICoeffs[c][i] ); 804 } 805 806 for( Int c=0 ; c<3 ; c++ ) 807 { 808 retval = fscanf( fic, "%d", &m_colourRemapSEIPostLutNumValMinus1[c] ); 809 if( m_colourRemapSEIPostLutNumValMinus1[c]>0 ) 810 { 811 m_colourRemapSEIPostLutCodedValue[c] = new Int[m_colourRemapSEIPostLutNumValMinus1[c]+1]; 812 m_colourRemapSEIPostLutTargetValue[c] = new Int[m_colourRemapSEIPostLutNumValMinus1[c]+1]; 813 for( Int i=0 ; i<=m_colourRemapSEIPostLutNumValMinus1[c] ; i++ ) 814 { 815 retval = fscanf( fic, "%d", &m_colourRemapSEIPostLutCodedValue[c][i] ); 816 retval = fscanf( fic, "%d", &m_colourRemapSEIPostLutTargetValue[c][i] ); 817 } 818 } 819 } 820 } 821 822 fclose( fic ); 823 if( retval != 1 ) 824 { 825 fprintf(stderr, "Error while reading Colour Remapping Information SEI parameters file\n"); 826 exit(EXIT_FAILURE); 827 } 828 } 829 return 1; 830 } 831 Bool confirmParameter(Bool bflag, const Char* message); 832 // ==================================================================================================================== 833 // Private member functions 834 // ==================================================================================================================== 835 836 Void TEncGOP::xCheckParameter() 837 { 838 Bool check_failed = false; /* abort if there is a fatal configuration problem */ 839 #define xConfirmParameter(a,b) check_failed |= confirmParameter(a,b) 840 841 if ( m_colourRemapSEIFile.c_str() && !m_colourRemapSEICancelFlag ) 842 { 843 xConfirmParameter( m_colourRemapSEIInputBitDepth < 8 || m_colourRemapSEIInputBitDepth > 16 , "colour_remap_coded_data_bit_depth shall be in the range of 8 to 16, inclusive"); 844 xConfirmParameter( m_colourRemapSEIBitDepth < 8 || (m_colourRemapSEIBitDepth > 16 && m_colourRemapSEIBitDepth < 255) , "colour_remap_target_bit_depth shall be in the range of 8 to 16, inclusive"); 845 for( Int c=0 ; c<3 ; c++) 846 { 847 xConfirmParameter( m_colourRemapSEIPreLutNumValMinus1[c] < 0 || m_colourRemapSEIPreLutNumValMinus1[c] > 32, "pre_lut_num_val_minus1[c] shall be in the range of 0 to 32, inclusive"); 848 if( m_colourRemapSEIPreLutNumValMinus1[c]>0 ) 849 for( Int i=0 ; i<=m_colourRemapSEIPreLutNumValMinus1[c] ; i++) 850 { 851 xConfirmParameter( m_colourRemapSEIPreLutCodedValue[c][i] < 0 || m_colourRemapSEIPreLutCodedValue[c][i] > ((1<<m_colourRemapSEIInputBitDepth)-1), "pre_lut_coded_value[c][i] shall be in the range of 0 to (1<<colour_remap_coded_data_bit_depth)-1, inclusive"); 852 xConfirmParameter( m_colourRemapSEIPreLutTargetValue[c][i] < 0 || m_colourRemapSEIPreLutTargetValue[c][i] > ((1<<m_colourRemapSEIBitDepth)-1), "pre_lut_target_value[c][i] shall be in the range of 0 to (1<<colour_remap_target_bit_depth)-1, inclusive"); 853 } 854 xConfirmParameter( m_colourRemapSEIPostLutNumValMinus1[c] < 0 || m_colourRemapSEIPostLutNumValMinus1[c] > 32, "post_lut_num_val_minus1[c] shall be in the range of 0 to 32, inclusive"); 855 if( m_colourRemapSEIPostLutNumValMinus1[c]>0 ) 856 for( Int i=0 ; i<=m_colourRemapSEIPostLutNumValMinus1[c] ; i++) 857 { 858 xConfirmParameter( m_colourRemapSEIPostLutCodedValue[c][i] < 0 || m_colourRemapSEIPostLutCodedValue[c][i] > ((1<<m_colourRemapSEIBitDepth)-1), "post_lut_coded_value[c][i] shall be in the range of 0 to (1<<colour_remap_target_bit_depth)-1, inclusive"); 859 xConfirmParameter( m_colourRemapSEIPostLutTargetValue[c][i] < 0 || m_colourRemapSEIPostLutTargetValue[c][i] > ((1<<m_colourRemapSEIBitDepth)-1), "post_lut_target_value[c][i] shall be in the range of 0 to (1<<colour_remap_target_bit_depth)-1, inclusive"); 860 } 861 } 862 if ( m_colourRemapSEIMatrixPresentFlag ) 863 { 864 xConfirmParameter( m_colourRemapSEILog2MatrixDenom < 0 || m_colourRemapSEILog2MatrixDenom > 15, "log2_matrix_denom shall be in the range of 0 to 15, inclusive"); 865 for( Int c=0 ; c<3 ; c++) 866 for( Int i=0 ; i<3 ; i++) 867 xConfirmParameter( m_colourRemapSEICoeffs[c][i] < -32768 || m_colourRemapSEICoeffs[c][i] > 32767, "colour_remap_coeffs[c][i] shall be in the range of -32768 and 32767, inclusive"); 868 } 869 } 870 } 871 #endif 734 872 735 873 // ==================================================================================================================== … … 2834 2972 } 2835 2973 2974 // insert one CRI by picture (if the file exist) 2975 #if Q0074_COLOUR_REMAPPING_SEI 2976 2977 freeColourCRI(); 2978 2979 // building the CRI file name with poc num in suffix "_poc.txt" 2980 char suffix[10]; 2981 sprintf(suffix, "_%d.txt", pcSlice->getPOC()); 2982 string colourRemapSEIFileWithPoc(m_pcCfg->getCRISEIFileRoot()); 2983 colourRemapSEIFileWithPoc.append(suffix); 2984 setCRISEIFile( const_cast<Char*>(colourRemapSEIFileWithPoc.c_str()) ); 2985 2986 Int ret = readingCRIparameters(); 2987 2988 if(ret != -1 && m_pcCfg->getCRISEIFileRoot()) 2989 { 2990 // check validity of input parameters 2991 xCheckParameter(); 2992 2993 SEIColourRemappingInfo *sei = xCreateSEIColourRemappingInfo (); 2994 #if SVC_EXTENSION 2995 OutputNALUnit nalu(NAL_UNIT_PREFIX_SEI, 0, pcSlice->getSPS()->getLayerId()); // SEI-CRI is applied per layer 2996 #else 2997 OutputNALUnit nalu(NAL_UNIT_PREFIX_SEI); 2998 #endif 2999 m_pcEntropyCoder->setBitstream(&nalu.m_Bitstream); 3000 #if SVC_EXTENSION 3001 m_seiWriter.writeSEImessage(nalu.m_Bitstream, *sei, m_pcEncTop->getVPS(), pcSlice->getSPS() ); 3002 #else 3003 m_seiWriter.writeSEImessage(nalu.m_Bitstream, *sei, pcSlice->getSPS() ); 3004 #endif 3005 writeRBSPTrailingBits(nalu.m_Bitstream); 3006 accessUnit.push_back(new NALUnitEBSP(nalu)); 3007 delete sei; 3008 } 3009 #endif 3010 2836 3011 /* use the main bitstream buffer for storing the marshalled picture */ 2837 3012 m_pcEntropyCoder->setBitstream(NULL); … … 4486 4661 { 4487 4662 SEIColourRemappingInfo *seiColourRemappingInfo = new SEIColourRemappingInfo(); 4488 seiColourRemappingInfo->m_colourRemapId = m_pcCfg->getCRISEIId(); 4489 seiColourRemappingInfo->m_colourRemapCancelFlag = m_pcCfg->getCRISEICancelFlag(); 4663 seiColourRemappingInfo->m_colourRemapId = m_colourRemapSEIId; 4664 seiColourRemappingInfo->m_colourRemapCancelFlag = m_colourRemapSEICancelFlag; 4665 printf("xCreateSEIColourRemappingInfo - m_colourRemapId = %d m_colourRemapCancelFlag = %d \n",seiColourRemappingInfo->m_colourRemapId, seiColourRemappingInfo->m_colourRemapCancelFlag); 4666 4490 4667 if( !seiColourRemappingInfo->m_colourRemapCancelFlag ) 4491 4668 { 4492 seiColourRemappingInfo->m_colourRemapPersistenceFlag = m_ pcCfg->getCRISEIPersistenceFlag();4493 seiColourRemappingInfo->m_colourRemapVideoSignalInfoPresentFlag = m_ pcCfg->getCRISEIVideoSignalInfoPresentFlag();4669 seiColourRemappingInfo->m_colourRemapPersistenceFlag = m_colourRemapSEIPersistenceFlag; 4670 seiColourRemappingInfo->m_colourRemapVideoSignalInfoPresentFlag = m_colourRemapSEIVideoSignalInfoPresentFlag; 4494 4671 if( seiColourRemappingInfo->m_colourRemapVideoSignalInfoPresentFlag ) 4495 4672 { 4496 seiColourRemappingInfo->m_colourRemapFullRangeFlag = m_ pcCfg->getCRISEIFullRangeFlag();4497 seiColourRemappingInfo->m_colourRemapPrimaries = m_ pcCfg->getCRISEIPrimaries();4498 seiColourRemappingInfo->m_colourRemapTransferFunction = m_ pcCfg->getCRISEITransferFunction();4499 seiColourRemappingInfo->m_colourRemapMatrixCoefficients = m_ pcCfg->getCRISEIMatrixCoefficients();4500 } 4501 seiColourRemappingInfo->m_colourRemapInputBitDepth = m_ pcCfg->getCRISEIInputBitDepth();4502 seiColourRemappingInfo->m_colourRemapBitDepth = m_ pcCfg->getCRISEIBitDepth();4673 seiColourRemappingInfo->m_colourRemapFullRangeFlag = m_colourRemapSEIFullRangeFlag; 4674 seiColourRemappingInfo->m_colourRemapPrimaries = m_colourRemapSEIPrimaries; 4675 seiColourRemappingInfo->m_colourRemapTransferFunction = m_colourRemapSEITransferFunction; 4676 seiColourRemappingInfo->m_colourRemapMatrixCoefficients = m_colourRemapSEIMatrixCoefficients; 4677 } 4678 seiColourRemappingInfo->m_colourRemapInputBitDepth = m_colourRemapSEIInputBitDepth; 4679 seiColourRemappingInfo->m_colourRemapBitDepth = m_colourRemapSEIBitDepth; 4503 4680 for( Int c=0 ; c<3 ; c++ ) 4504 4681 { 4505 seiColourRemappingInfo->m_preLutNumValMinus1[c] = m_ pcCfg->getCRISEIPreLutNumValMinus1(c);4682 seiColourRemappingInfo->m_preLutNumValMinus1[c] = m_colourRemapSEIPreLutNumValMinus1[c]; 4506 4683 if( seiColourRemappingInfo->m_preLutNumValMinus1[c]>0 ) 4507 4684 { … … 4510 4687 for( Int i=0 ; i<=seiColourRemappingInfo->m_preLutNumValMinus1[c] ; i++) 4511 4688 { 4512 seiColourRemappingInfo->m_preLutCodedValue[c][i] = (m_pcCfg->getCRISEIPreLutCodedValue(c))[i];4513 seiColourRemappingInfo->m_preLutTargetValue[c][i] = (m_pcCfg->getCRISEIPreLutTargetValue(c))[i];4514 } 4515 } 4516 } 4517 seiColourRemappingInfo->m_colourRemapMatrixPresentFlag = m_ pcCfg->getCRISEIMatrixPresentFlag();4689 seiColourRemappingInfo->m_preLutCodedValue[c][i] = m_colourRemapSEIPreLutCodedValue[c][i]; 4690 seiColourRemappingInfo->m_preLutTargetValue[c][i] = m_colourRemapSEIPreLutTargetValue[c][i]; 4691 } 4692 } 4693 } 4694 seiColourRemappingInfo->m_colourRemapMatrixPresentFlag = m_colourRemapSEIMatrixPresentFlag; 4518 4695 if( seiColourRemappingInfo->m_colourRemapMatrixPresentFlag ) 4519 4696 { 4520 seiColourRemappingInfo->m_log2MatrixDenom = m_ pcCfg->getCRISEILog2MatrixDenom();4697 seiColourRemappingInfo->m_log2MatrixDenom = m_colourRemapSEILog2MatrixDenom; 4521 4698 for( Int c=0 ; c<3 ; c++ ) 4522 4699 for( Int i=0 ; i<3 ; i++ ) 4523 seiColourRemappingInfo->m_colourRemapCoeffs[c][i] = (m_pcCfg->getCRISEICoeffs(c))[i];4700 seiColourRemappingInfo->m_colourRemapCoeffs[c][i] = m_colourRemapSEICoeffs[c][i]; 4524 4701 } 4525 4702 for( Int c=0 ; c<3 ; c++ ) 4526 4703 { 4527 seiColourRemappingInfo->m_postLutNumValMinus1[c] = m_ pcCfg->getCRISEIPostLutNumValMinus1(c);4704 seiColourRemappingInfo->m_postLutNumValMinus1[c] = m_colourRemapSEIPostLutNumValMinus1[c]; 4528 4705 if( seiColourRemappingInfo->m_postLutNumValMinus1[c]>0 ) 4529 4706 { … … 4532 4709 for( Int i=0 ; i<=seiColourRemappingInfo->m_postLutNumValMinus1[c] ; i++) 4533 4710 { 4534 seiColourRemappingInfo->m_postLutCodedValue[c][i] = (m_pcCfg->getCRISEIPostLutCodedValue(c))[i];4535 seiColourRemappingInfo->m_postLutTargetValue[c][i] = (m_pcCfg->getCRISEIPostLutTargetValue(c))[i];4711 seiColourRemappingInfo->m_postLutCodedValue[c][i] = m_colourRemapSEIPostLutCodedValue[c][i]; 4712 seiColourRemappingInfo->m_postLutTargetValue[c][i] = m_colourRemapSEIPostLutTargetValue[c][i]; 4536 4713 } 4537 4714 } … … 5433 5610 #endif //SVC_EXTENSION 5434 5611 5612 #if Q0074_COLOUR_REMAPPING_SEI 5613 Bool confirmParameter(Bool bflag, const Char* message) 5614 { 5615 if (!bflag) 5616 return false; 5617 5618 printf("Error: %s\n",message); 5619 return true; 5620 } 5621 #endif 5622 5435 5623 //! \} -
branches/SHM-dev/source/Lib/TLibEncoder/TEncGOP.h
r1037 r1089 88 88 #endif 89 89 90 #if Q0074_COLOUR_REMAPPING_SEI 91 string m_colourRemapSEIFile; 92 Int m_colourRemapSEIId; 93 Bool m_colourRemapSEICancelFlag; 94 Bool m_colourRemapSEIPersistenceFlag; 95 Bool m_colourRemapSEIVideoSignalInfoPresentFlag; 96 Bool m_colourRemapSEIFullRangeFlag; 97 Int m_colourRemapSEIPrimaries; 98 Int m_colourRemapSEITransferFunction; 99 Int m_colourRemapSEIMatrixCoefficients; 100 Int m_colourRemapSEIInputBitDepth; 101 Int m_colourRemapSEIBitDepth; 102 Int m_colourRemapSEIPreLutNumValMinus1[3]; 103 Int* m_colourRemapSEIPreLutCodedValue[3]; 104 Int* m_colourRemapSEIPreLutTargetValue[3]; 105 Bool m_colourRemapSEIMatrixPresentFlag; 106 Int m_colourRemapSEILog2MatrixDenom; 107 Int m_colourRemapSEICoeffs[3][3]; 108 Int m_colourRemapSEIPostLutNumValMinus1[3]; 109 Int* m_colourRemapSEIPostLutCodedValue[3]; 110 Int* m_colourRemapSEIPostLutTargetValue[3]; 111 #endif 90 112 // Access channel 91 113 TEncTop* m_pcEncTop; … … 245 267 246 268 #if Q0074_COLOUR_REMAPPING_SEI 269 Void setCRISEIFile( Char* pch ) { m_colourRemapSEIFile = pch; } 270 271 Void freeColourCRI(); 272 Int readingCRIparameters(); 273 Void xCheckParameter(); 274 247 275 SEIColourRemappingInfo* xCreateSEIColourRemappingInfo(); 248 276 #endif
Note: See TracChangeset for help on using the changeset viewer.