Changeset 776 in SHVCSoftware for branches/SHM-6-dev/source/Lib/TLibEncoder
- Timestamp:
- 21 May 2014, 02:18:44 (11 years ago)
- Location:
- branches/SHM-6-dev/source/Lib/TLibEncoder
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
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.