Changeset 780 in SHVCSoftware for branches


Ignore:
Timestamp:
4 Jun 2014, 09:57:52 (11 years ago)
Author:
nokia
Message:

software implementation for JCTVC-Q0247

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  
    106106    TMVP_CONSTRAINTS                     = 146,
    107107#endif
     108#if Q0247_FRAME_FIELD_INFO
     109    FRAME_FIELD_INFO                     = 147,
     110#endif
    108111  };
    109112 
     
    539542#endif
    540543
     544#if Q0247_FRAME_FIELD_INFO
     545class SEIFrameFieldInfo: public SEI
     546{
     547public:
     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
    541565typedef std::list<SEI*> SEIMessages;
    542566
  • branches/SHM-6-dev/source/Lib/TLibCommon/TypeDef.h

    r779 r780  
    270270#define P0050_KNEE_FUNCTION_SEI          1      ///< JCTVC-P0050: Knee function SEI
    271271#define Q0189_TMVP_CONSTRAINTS           1
    272 
     272#define Q0247_FRAME_FIELD_INFO           1
    273273#if VIEW_ID_RELATED_SIGNALING
    274274/// scalability types
  • branches/SHM-6-dev/source/Lib/TLibDecoder/SEIread.cpp

    r779 r780  
    386386     break;
    387387#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
    388394#endif //SVC_EXTENSION
    389395      break;
     
    10361042#endif
    10371043
     1044#if Q0247_FRAME_FIELD_INFO
     1045Void 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
    10381055#if LAYERS_NOT_PRESENT_SEI
    10391056Void SEIReader::xParseSEIScalableNesting(SEIScalableNesting& sei, const NalUnitType nalUnitType, UInt payloadSize, TComVPS *vps, TComSPS *sps)
  • branches/SHM-6-dev/source/Lib/TLibDecoder/SEIread.h

    r779 r780  
    131131  Void xParseSEITMVPConstraints    (SEITMVPConstrains& sei, UInt payloadSize);
    132132#endif
    133 
     133#if Q0247_FRAME_FIELD_INFO
     134  Void xParseSEIFrameFieldInfo    (SEIFrameFieldInfo& sei, UInt payloadSize);
     135#endif
    134136  Void xParseByteAlign();
    135137};
  • branches/SHM-6-dev/source/Lib/TLibEncoder/SEIwrite.cpp

    r779 r780  
    250250     break;
    251251#endif
     252#if Q0247_FRAME_FIELD_INFO
     253   case SEI::FRAME_FIELD_INFO:
     254     xWriteSEIFrameFieldInfo(*static_cast<const SEIFrameFieldInfo*>(&sei));
     255     break;
     256#endif
    252257#endif //SVC_EXTENSION
    253258  default:
     
    877882#endif
    878883
     884#if Q0247_FRAME_FIELD_INFO
     885Void 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
    879894#if O0164_MULTI_LAYER_HRD
    880895Void 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  
    9898Void xWriteSEITMVPConstraints (const SEITMVPConstrains &sei);
    9999#endif
     100#if Q0247_FRAME_FIELD_INFO
     101  Void xWriteSEIFrameFieldInfo  (const SEIFrameFieldInfo &sei);
     102#endif
    100103#if O0164_MULTI_LAYER_HRD
    101104  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  
    23372337   }
    23382338#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
    23392357
    23402358    if( ( m_pcCfg->getPictureTimingSEIEnabled() || m_pcCfg->getDecodingUnitInfoSEIEnabled() ) &&
Note: See TracChangeset for help on using the changeset viewer.