Changeset 776 in SHVCSoftware for branches/SHM-6-dev/source/Lib
- Timestamp:
- 21 May 2014, 02:18:44 (11 years ago)
- Location:
- branches/SHM-6-dev/source/Lib
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-6-dev/source/Lib/TLibCommon/SEI.h
r698 r776 66 66 POST_FILTER_HINT = 22, 67 67 TONE_MAPPING_INFO = 23, 68 #if P0050_KNEE_FUNCTION_SEI 69 KNEE_FUNCTION_INFO = 24, 70 #endif 68 71 FRAME_PACKING = 45, 69 72 DISPLAY_ORIENTATION = 47, … … 407 410 Int m_extendedWhiteLevelLumaCodeValue; 408 411 }; 409 412 #if P0050_KNEE_FUNCTION_SEI 413 class SEIKneeFunctionInfo : public SEI 414 { 415 public: 416 PayloadType payloadType() const { return KNEE_FUNCTION_INFO; } 417 SEIKneeFunctionInfo() {} 418 virtual ~SEIKneeFunctionInfo() {} 419 420 Int m_kneeId; 421 Bool m_kneeCancelFlag; 422 Bool m_kneePersistenceFlag; 423 Bool m_kneeMappingFlag; 424 Int m_kneeInputDrange; 425 Int m_kneeInputDispLuminance; 426 Int m_kneeOutputDrange; 427 Int m_kneeOutputDispLuminance; 428 Int m_kneeNumKneePointsMinus1; 429 std::vector<Int> m_kneeInputKneePoint; 430 std::vector<Int> m_kneeOutputKneePoint; 431 }; 432 #endif 410 433 #if Q0074_SEI_COLOR_MAPPING 411 434 class SEIColorMappingInfo : public SEI -
branches/SHM-6-dev/source/Lib/TLibCommon/TypeDef.h
r773 r776 100 100 #define Q0048_CGS_3D_ASYMLUT 1 ///< JCTVC-Q0048: Colour gamut scalability with look-up table 101 101 #if Q0048_CGS_3D_ASYMLUT 102 102 103 #define CGS_GCC_NO_VECTORIZATION 1 103 104 #define O0194_WEIGHTED_PREDICTION_CGS 0 … … 264 265 #define LAYER_DECPICBUFF_PARAM 1 ///< JCTVC-Q0102 Proposal 2 infer value from layer DPB param 265 266 #define HRD_BPB 1 ///< JCTVC-Q0101 Bitstream Partition Buffering Proposals 267 268 #define P0050_KNEE_FUNCTION_SEI 1 ///< JCTVC-P0050: Knee function SEI 269 266 270 #if VIEW_ID_RELATED_SIGNALING 267 271 /// scalability types -
branches/SHM-6-dev/source/Lib/TLibDecoder/SEIread.cpp
r775 r776 93 93 fprintf( g_hTrace, "===========Tone Mapping Info SEI message ===========\n"); 94 94 break; 95 #if P0050_KNEE_FUNCTION_SEI 96 case SEI::KNEE_FUNCTION_INFO: 97 fprintf( g_hTrace, "=========== Knee Function Information SEI message ===========\n"); 98 break; 99 #endif 95 100 #if Q0074_SEI_COLOR_MAPPING 96 101 case SEI::COLOR_MAPPING_INFO: … … 285 290 xParseSEIToneMappingInfo((SEIToneMappingInfo&) *sei, payloadSize); 286 291 break; 292 #if P0050_KNEE_FUNCTION_SEI 293 case SEI::KNEE_FUNCTION_INFO: 294 sei = new SEIKneeFunctionInfo; 295 xParseSEIKneeFunctionInfo((SEIKneeFunctionInfo&) *sei, payloadSize); 296 break; 297 #endif 287 298 #if Q0074_SEI_COLOR_MAPPING 288 299 case SEI::COLOR_MAPPING_INFO: … … 849 860 } 850 861 862 #if P0050_KNEE_FUNCTION_SEI 863 Void SEIReader::xParseSEIKneeFunctionInfo(SEIKneeFunctionInfo& sei, UInt /*payloadSize*/){ 864 Int i; 865 UInt val; 866 READ_UVLC( val, "knee_function_id" ); sei.m_kneeId = val; 867 READ_FLAG( val, "knee_function_cancel_flag" ); sei.m_kneeCancelFlag = val; 868 if ( !sei.m_kneeCancelFlag ) 869 { 870 READ_FLAG( val, "knee_function_persistence_flag" ); sei.m_kneePersistenceFlag = val; 871 READ_FLAG( val, "mapping_flag" ); sei.m_kneeMappingFlag = val; 872 READ_CODE( 32, val, "input_d_range" ); sei.m_kneeInputDrange = val; 873 READ_CODE( 32, val, "input_disp_luminance" ); sei.m_kneeInputDispLuminance = val; 874 READ_CODE( 32, val, "output_d_range" ); sei.m_kneeOutputDrange = val; 875 READ_CODE( 32, val, "output_disp_luminance" ); sei.m_kneeOutputDispLuminance = val; 876 READ_UVLC( val, "num_knee_points_minus1" ); sei.m_kneeNumKneePointsMinus1 = val; 877 assert( sei.m_kneeNumKneePointsMinus1 > 0 ); 878 sei.m_kneeInputKneePoint.resize(sei.m_kneeNumKneePointsMinus1+1); 879 sei.m_kneeOutputKneePoint.resize(sei.m_kneeNumKneePointsMinus1+1); 880 for(i = 0; i <= sei.m_kneeNumKneePointsMinus1; i++ ) 881 { 882 READ_CODE( 10, val, "input_knee_point" ); sei.m_kneeInputKneePoint[i] = val; 883 READ_CODE( 10, val, "output_knee_point" ); sei.m_kneeOutputKneePoint[i] = val; 884 } 885 } 886 } 887 #endif 888 851 889 #if Q0074_SEI_COLOR_MAPPING 852 890 Void SEIReader::xParseSEIColorMappingInfo(SEIColorMappingInfo& sei, UInt /*payloadSize*/) -
branches/SHM-6-dev/source/Lib/TLibDecoder/SEIread.h
r694 r776 90 90 Void xParseSEIGradualDecodingRefreshInfo (SEIGradualDecodingRefreshInfo &sei, UInt payloadSize); 91 91 Void xParseSEIToneMappingInfo (SEIToneMappingInfo& sei, UInt payloadSize); 92 #if P0050_KNEE_FUNCTION_SEI 93 Void xParseSEIKneeFunctionInfo (SEIKneeFunctionInfo& sei, UInt payloadSize); 94 #endif 92 95 #if Q0074_SEI_COLOR_MAPPING 93 96 Void xParseSEIColorMappingInfo (SEIColorMappingInfo& sei, UInt payloadSize); -
branches/SHM-6-dev/source/Lib/TLibEncoder/SEIwrite.cpp
r774 r776 87 87 fprintf( g_hTrace, "=========== Tone Mapping Info SEI message ===========\n"); 88 88 break; 89 #if P0050_KNEE_FUNCTION_SEI 90 case SEI::KNEE_FUNCTION_INFO: 91 fprintf( g_hTrace, "=========== Knee Function Information SEI message ===========\n"); 92 break; 93 #endif 89 94 #if Q0074_SEI_COLOR_MAPPING 90 95 case SEI::COLOR_MAPPING_INFO: … … 177 182 xWriteSEIToneMappingInfo(*static_cast<const SEIToneMappingInfo*>(&sei)); 178 183 break; 184 #if P0050_KNEE_FUNCTION_SEI 185 case SEI::KNEE_FUNCTION_INFO: 186 xWriteSEIKneeFunctionInfo(*static_cast<const SEIKneeFunctionInfo*>(&sei)); 187 break; 188 #endif 179 189 #if Q0074_SEI_COLOR_MAPPING 180 190 case SEI::COLOR_MAPPING_INFO: … … 575 585 xWriteByteAlign(); 576 586 } 577 587 #if P0050_KNEE_FUNCTION_SEI 588 Void SEIWriter::xWriteSEIKneeFunctionInfo(const SEIKneeFunctionInfo &sei) 589 { 590 WRITE_UVLC( sei.m_kneeId, "knee_function_id" ); 591 WRITE_FLAG( sei.m_kneeCancelFlag, "knee_function_cancel_flag" ); 592 if ( !sei.m_kneeCancelFlag ) 593 { 594 WRITE_FLAG( sei.m_kneePersistenceFlag, "knee_function_persistence_flag" ); 595 WRITE_FLAG( sei.m_kneeMappingFlag, "mapping_flag" ); 596 WRITE_CODE( (UInt)sei.m_kneeInputDrange , 32, "input_d_range" ); 597 WRITE_CODE( (UInt)sei.m_kneeInputDispLuminance, 32, "input_disp_luminance" ); 598 WRITE_CODE( (UInt)sei.m_kneeOutputDrange, 32, "output_d_range" ); 599 WRITE_CODE( (UInt)sei.m_kneeOutputDispLuminance, 32, "output_disp_luminance" ); 600 WRITE_UVLC( sei.m_kneeNumKneePointsMinus1, "num_knee_points_minus1" ); 601 for(Int i = 0; i <= sei.m_kneeNumKneePointsMinus1; i++ ) 602 { 603 WRITE_CODE( (UInt)sei.m_kneeInputKneePoint[i], 10,"input_knee_point" ); 604 WRITE_CODE( (UInt)sei.m_kneeOutputKneePoint[i], 10, "output_knee_point" ); 605 } 606 } 607 xWriteByteAlign(); 608 } 609 #endif 578 610 #if Q0074_SEI_COLOR_MAPPING 579 611 Void SEIWriter::xWriteSEIColorMappingInfo(const SEIColorMappingInfo& sei) -
branches/SHM-6-dev/source/Lib/TLibEncoder/SEIwrite.h
r697 r776 72 72 Void xWriteSEIGradualDecodingRefreshInfo(const SEIGradualDecodingRefreshInfo &sei); 73 73 Void xWriteSEIToneMappingInfo(const SEIToneMappingInfo& sei); 74 #if P0050_KNEE_FUNCTION_SEI 75 Void xWriteSEIKneeFunctionInfo(const SEIKneeFunctionInfo &sei); 76 #endif 74 77 #if Q0074_SEI_COLOR_MAPPING 75 78 Void xWriteSEIColorMappingInfo(const SEIColorMappingInfo& sei); -
branches/SHM-6-dev/source/Lib/TLibEncoder/TEncCfg.h
r756 r776 248 248 Int* m_codedPivotValue; 249 249 Int* m_targetPivotValue; 250 #if P0050_KNEE_FUNCTION_SEI 251 Bool m_kneeSEIEnabled; 252 Int m_kneeSEIId; 253 Bool m_kneeSEICancelFlag; 254 Bool m_kneeSEIPersistenceFlag; 255 Bool m_kneeSEIMappingFlag; 256 Int m_kneeSEIInputDrange; 257 Int m_kneeSEIInputDispLuminance; 258 Int m_kneeSEIOutputDrange; 259 Int m_kneeSEIOutputDispLuminance; 260 Int m_kneeSEINumKneePointsMinus1; 261 Int* m_kneeSEIInputKneePoint; 262 Int* m_kneeSEIOutputKneePoint; 263 #endif 250 264 #if Q0074_SEI_COLOR_MAPPING 251 265 Char* m_seiColorMappingFile; … … 668 682 Void setTMISEIExtendedWhiteLevelLumaCodeValue(Int b) { m_extendedWhiteLevelLumaCodeValue =b; } 669 683 Int getTMISEIExtendedWhiteLevelLumaCodeValue() { return m_extendedWhiteLevelLumaCodeValue; } 684 #if P0050_KNEE_FUNCTION_SEI 685 Void setKneeSEIEnabled(Int b) { m_kneeSEIEnabled = b; } 686 Bool getKneeSEIEnabled() { return m_kneeSEIEnabled; } 687 Void setKneeSEIId(Int b) { m_kneeSEIId = b; } 688 Int getKneeSEIId() { return m_kneeSEIId; } 689 Void setKneeSEICancelFlag(Bool b) { m_kneeSEICancelFlag=b; } 690 Bool getKneeSEICancelFlag() { return m_kneeSEICancelFlag; } 691 Void setKneeSEIPersistenceFlag(Bool b) { m_kneeSEIPersistenceFlag = b; } 692 Bool getKneeSEIPersistenceFlag() { return m_kneeSEIPersistenceFlag; } 693 Void setKneeSEIMappingFlag(Bool b) { m_kneeSEIMappingFlag = b; } 694 Bool getKneeSEIMappingFlag() { return m_kneeSEIMappingFlag; } 695 Void setKneeSEIInputDrange(Int b) { m_kneeSEIInputDrange = b; } 696 Int getKneeSEIInputDrange() { return m_kneeSEIInputDrange; } 697 Void setKneeSEIInputDispLuminance(Int b) { m_kneeSEIInputDispLuminance = b; } 698 Int getKneeSEIInputDispLuminance() { return m_kneeSEIInputDispLuminance; } 699 Void setKneeSEIOutputDrange(Int b) { m_kneeSEIOutputDrange = b; } 700 Int getKneeSEIOutputDrange() { return m_kneeSEIOutputDrange; } 701 Void setKneeSEIOutputDispLuminance(Int b) { m_kneeSEIOutputDispLuminance = b; } 702 Int getKneeSEIOutputDispLuminance() { return m_kneeSEIOutputDispLuminance; } 703 Void setKneeSEINumKneePointsMinus1(Int b) { m_kneeSEINumKneePointsMinus1 = b; } 704 Int getKneeSEINumKneePointsMinus1() { return m_kneeSEINumKneePointsMinus1; } 705 Void setKneeSEIInputKneePoint(Int *p) { m_kneeSEIInputKneePoint = p; } 706 Int* getKneeSEIInputKneePoint() { return m_kneeSEIInputKneePoint; } 707 Void setKneeSEIOutputKneePoint(Int *p) { m_kneeSEIOutputKneePoint = p; } 708 Int* getKneeSEIOutputKneePoint() { return m_kneeSEIOutputKneePoint; } 709 #endif 670 710 #if Q0074_SEI_COLOR_MAPPING 671 711 Void setColorMappingInfoSEIFile( Char* nameFile ) { m_seiColorMappingFile = nameFile; } -
branches/SHM-6-dev/source/Lib/TLibEncoder/TEncGOP.cpp
r771 r776 325 325 } 326 326 327 #if P0050_KNEE_FUNCTION_SEI 328 SEIKneeFunctionInfo* TEncGOP::xCreateSEIKneeFunctionInfo() 329 { 330 SEIKneeFunctionInfo *seiKneeFunctionInfo = new SEIKneeFunctionInfo(); 331 seiKneeFunctionInfo->m_kneeId = m_pcCfg->getKneeSEIId(); 332 seiKneeFunctionInfo->m_kneeCancelFlag = m_pcCfg->getKneeSEICancelFlag(); 333 if ( !seiKneeFunctionInfo->m_kneeCancelFlag ) 334 { 335 seiKneeFunctionInfo->m_kneePersistenceFlag = m_pcCfg->getKneeSEIPersistenceFlag(); 336 seiKneeFunctionInfo->m_kneeMappingFlag = m_pcCfg->getKneeSEIMappingFlag(); 337 seiKneeFunctionInfo->m_kneeInputDrange = m_pcCfg->getKneeSEIInputDrange(); 338 seiKneeFunctionInfo->m_kneeInputDispLuminance = m_pcCfg->getKneeSEIInputDispLuminance(); 339 seiKneeFunctionInfo->m_kneeOutputDrange = m_pcCfg->getKneeSEIOutputDrange(); 340 seiKneeFunctionInfo->m_kneeOutputDispLuminance = m_pcCfg->getKneeSEIOutputDispLuminance(); 341 342 seiKneeFunctionInfo->m_kneeNumKneePointsMinus1 = m_pcCfg->getKneeSEINumKneePointsMinus1(); 343 Int* piInputKneePoint = m_pcCfg->getKneeSEIInputKneePoint(); 344 Int* piOutputKneePoint = m_pcCfg->getKneeSEIOutputKneePoint(); 345 if(piInputKneePoint&&piOutputKneePoint) 346 { 347 seiKneeFunctionInfo->m_kneeInputKneePoint.resize(seiKneeFunctionInfo->m_kneeNumKneePointsMinus1+1); 348 seiKneeFunctionInfo->m_kneeOutputKneePoint.resize(seiKneeFunctionInfo->m_kneeNumKneePointsMinus1+1); 349 for(Int i=0; i<=seiKneeFunctionInfo->m_kneeNumKneePointsMinus1; i++) 350 { 351 seiKneeFunctionInfo->m_kneeInputKneePoint[i] = piInputKneePoint[i]; 352 seiKneeFunctionInfo->m_kneeOutputKneePoint[i] = piOutputKneePoint[i]; 353 } 354 } 355 } 356 return seiKneeFunctionInfo; 357 } 358 #endif 359 327 360 #if Q0074_SEI_COLOR_MAPPING 328 361 SEIColorMappingInfo* TEncGOP::xCreateSEIColorMappingInfo( Char* file ) … … 475 508 delete sei; 476 509 } 510 #if P0050_KNEE_FUNCTION_SEI 511 if(m_pcCfg->getKneeSEIEnabled()) 512 { 513 SEIKneeFunctionInfo *sei = xCreateSEIKneeFunctionInfo(); 514 515 nalu = NALUnit(NAL_UNIT_PREFIX_SEI); 516 m_pcEntropyCoder->setBitstream(&nalu.m_Bitstream); 517 #if O0164_MULTI_LAYER_HRD 518 m_seiWriter.writeSEImessage(nalu.m_Bitstream, *sei, m_pcEncTop->getVPS(), sps); 519 #else 520 m_seiWriter.writeSEImessage(nalu.m_Bitstream, *sei, sps); 521 #endif 522 writeRBSPTrailingBits(nalu.m_Bitstream); 523 accessUnit.push_back(new NALUnitEBSP(nalu)); 524 delete sei; 525 } 526 #endif 477 527 #if Q0074_SEI_COLOR_MAPPING 478 528 if(m_pcCfg->getColorMappingInfoSEIFile()) -
branches/SHM-6-dev/source/Lib/TLibEncoder/TEncGOP.h
r754 r776 207 207 208 208 SEIToneMappingInfo* xCreateSEIToneMappingInfo(); 209 #if P0050_KNEE_FUNCTION_SEI 210 SEIKneeFunctionInfo* xCreateSEIKneeFunctionInfo(); 211 #endif 209 212 #if Q0074_SEI_COLOR_MAPPING 210 213 SEIColorMappingInfo* xCreateSEIColorMappingInfo( Char* file );
Note: See TracChangeset for help on using the changeset viewer.