- Timestamp:
- 4 Jun 2014, 09:57:52 (11 years ago)
- Location:
- branches/SHM-6-dev/source/Lib
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-6-dev/source/Lib/TLibCommon/SEI.h
r779 r780 106 106 TMVP_CONSTRAINTS = 146, 107 107 #endif 108 #if Q0247_FRAME_FIELD_INFO 109 FRAME_FIELD_INFO = 147, 110 #endif 108 111 }; 109 112 … … 539 542 #endif 540 543 544 #if Q0247_FRAME_FIELD_INFO 545 class SEIFrameFieldInfo: public SEI 546 { 547 public: 548 PayloadType payloadType() const { return FRAME_FIELD_INFO; } 549 550 SEIFrameFieldInfo() 551 : m_ffinfo_picStruct(0),m_ffinfo_sourceScanType(0), m_ffinfo_duplicateFlag(false) 552 {} 553 554 virtual ~SEIFrameFieldInfo() 555 { 556 } 557 558 UInt m_ffinfo_picStruct; 559 UInt m_ffinfo_sourceScanType; 560 Bool m_ffinfo_duplicateFlag; 561 }; 562 563 #endif 564 541 565 typedef std::list<SEI*> SEIMessages; 542 566 -
branches/SHM-6-dev/source/Lib/TLibCommon/TypeDef.h
r779 r780 270 270 #define P0050_KNEE_FUNCTION_SEI 1 ///< JCTVC-P0050: Knee function SEI 271 271 #define Q0189_TMVP_CONSTRAINTS 1 272 272 #define Q0247_FRAME_FIELD_INFO 1 273 273 #if VIEW_ID_RELATED_SIGNALING 274 274 /// scalability types -
branches/SHM-6-dev/source/Lib/TLibDecoder/SEIread.cpp
r779 r780 386 386 break; 387 387 #endif 388 #if Q0247_FRAME_FIELD_INFO 389 case SEI::FRAME_FIELD_INFO: 390 sei = new SEIFrameFieldInfo; 391 xParseSEIFrameFieldInfo ((SEIFrameFieldInfo&) *sei, payloadSize); 392 break; 393 #endif 388 394 #endif //SVC_EXTENSION 389 395 break; … … 1036 1042 #endif 1037 1043 1044 #if Q0247_FRAME_FIELD_INFO 1045 Void SEIReader::xParseSEIFrameFieldInfo (SEIFrameFieldInfo& sei, UInt payloadSize) 1046 { 1047 UInt code; 1048 READ_CODE( 4, code, "ffinfo_pic_struct" ); sei.m_ffinfo_picStruct = code; 1049 READ_CODE( 2, code, "ffinfo_source_scan_type" ); sei.m_ffinfo_sourceScanType = code; 1050 READ_FLAG( code, "ffinfo_duplicate_flag" ); sei.m_ffinfo_duplicateFlag = ( code == 1 ? true : false ); 1051 xParseByteAlign(); 1052 } 1053 #endif 1054 1038 1055 #if LAYERS_NOT_PRESENT_SEI 1039 1056 Void SEIReader::xParseSEIScalableNesting(SEIScalableNesting& sei, const NalUnitType nalUnitType, UInt payloadSize, TComVPS *vps, TComSPS *sps) -
branches/SHM-6-dev/source/Lib/TLibDecoder/SEIread.h
r779 r780 131 131 Void xParseSEITMVPConstraints (SEITMVPConstrains& sei, UInt payloadSize); 132 132 #endif 133 133 #if Q0247_FRAME_FIELD_INFO 134 Void xParseSEIFrameFieldInfo (SEIFrameFieldInfo& sei, UInt payloadSize); 135 #endif 134 136 Void xParseByteAlign(); 135 137 }; -
branches/SHM-6-dev/source/Lib/TLibEncoder/SEIwrite.cpp
r779 r780 250 250 break; 251 251 #endif 252 #if Q0247_FRAME_FIELD_INFO 253 case SEI::FRAME_FIELD_INFO: 254 xWriteSEIFrameFieldInfo(*static_cast<const SEIFrameFieldInfo*>(&sei)); 255 break; 256 #endif 252 257 #endif //SVC_EXTENSION 253 258 default: … … 877 882 #endif 878 883 884 #if Q0247_FRAME_FIELD_INFO 885 Void SEIWriter::xWriteSEIFrameFieldInfo (const SEIFrameFieldInfo &sei) 886 { 887 WRITE_CODE( sei.m_ffinfo_picStruct , 4, "ffinfo_pic_struct" ); 888 WRITE_CODE( sei.m_ffinfo_sourceScanType, 2, "ffinfo_source_scan_type" ); 889 WRITE_FLAG( sei.m_ffinfo_duplicateFlag ? 1 : 0, "ffinfo_duplicate_flag" ); 890 xWriteByteAlign(); 891 } 892 #endif 893 879 894 #if O0164_MULTI_LAYER_HRD 880 895 Void SEIWriter::xWriteSEIBspNesting(TComBitIf& bs, const SEIBspNesting &sei, TComVPS *vps, TComSPS *sps, const SEIScalableNesting &nestingSei) -
branches/SHM-6-dev/source/Lib/TLibEncoder/SEIwrite.h
r779 r780 98 98 Void xWriteSEITMVPConstraints (const SEITMVPConstrains &sei); 99 99 #endif 100 #if Q0247_FRAME_FIELD_INFO 101 Void xWriteSEIFrameFieldInfo (const SEIFrameFieldInfo &sei); 102 #endif 100 103 #if O0164_MULTI_LAYER_HRD 101 104 Void xWriteSEIBspNesting(TComBitIf& bs, const SEIBspNesting &sei, TComVPS *vps, TComSPS *sps, const SEIScalableNesting &nestingSei); -
branches/SHM-6-dev/source/Lib/TLibEncoder/TEncGOP.cpp
r779 r780 2337 2337 } 2338 2338 #endif 2339 #if Q0247_FRAME_FIELD_INFO 2340 if( pcSlice->getLayerId()> 0 && 2341 ( (m_pcCfg->getProgressiveSourceFlag() && m_pcCfg->getInterlacedSourceFlag()) || m_pcCfg->getFrameFieldInfoPresentFlag())) 2342 { 2343 OutputNALUnit nalu(NAL_UNIT_PREFIX_SEI); 2344 SEIFrameFieldInfo seiFFInfo; 2345 m_pcEntropyCoder->setEntropyCoder(m_pcCavlcCoder, pcSlice); 2346 m_pcEntropyCoder->setBitstream(&nalu.m_Bitstream); 2347 seiFFInfo.m_ffinfo_picStruct = (isField && pcSlice->getPic()->isTopField())? 1 : isField? 2 : 0; 2348 #if O0164_MULTI_LAYER_HRD 2349 m_seiWriter.writeSEImessage( nalu.m_Bitstream, seiFFInfo, m_pcEncTop->getVPS(), pcSlice->getSPS() ); 2350 #else 2351 m_seiWriter.writeSEImessage( nalu.m_Bitstream, seiFFInfo, pcSlice->getSPS() ); 2352 #endif 2353 writeRBSPTrailingBits(nalu.m_Bitstream); 2354 accessUnit.push_back(new NALUnitEBSP(nalu)); 2355 } 2356 #endif 2339 2357 2340 2358 if( ( m_pcCfg->getPictureTimingSEIEnabled() || m_pcCfg->getDecodingUnitInfoSEIEnabled() ) &&
Note: See TracChangeset for help on using the changeset viewer.