Changeset 1544 in SHVCSoftware


Ignore:
Timestamp:
22 Mar 2016, 23:36:21 (8 years ago)
Author:
seregin
Message:

port rev 4718 and remove TEMPORAL_SUBSAMPLE macro

Location:
branches/SHM-dev/source
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp

    r1541 r1544  
    11671167#endif
    11681168  ("FrameSkip,-fs",                                   m_FrameSkip,                                         0u, "Number of frames to skip at start of input YUV")
     1169  ("TemporalSubsampleRatio,-ts",                      m_temporalSubsampleRatio,                            1u, "Temporal sub-sample ratio when reading input YUV")
    11691170  ("FramesToBeEncoded,f",                             m_framesToBeEncoded,                                  0, "Number of frames to be encoded (default=all)")
    11701171  ("ClipInputVideoToRec709Range",                     m_bClipInputVideoToRec709Range,                   false, "If true then clip input video to the Rec. 709 Range on loading when InternalBitDepth is less than MSBExtendedBitDepth")
     
    17591760   */
    17601761
     1762  m_framesToBeEncoded = ( m_framesToBeEncoded + m_temporalSubsampleRatio - 1 ) / m_temporalSubsampleRatio;
    17611763  m_adIntraLambdaModifier = cfg_adIntraLambdaModifier.values;
    17621764  if(m_isField)
     
    33763378  xConfirmPara( m_InputChromaFormatIDC >= NUM_CHROMA_FORMAT,                                "InputChromaFormatIDC must be either 400, 420, 422 or 444" );
    33773379  xConfirmPara( m_iFrameRate <= 0,                                                          "Frame rate must be more than 1" );
     3380  xConfirmPara( m_temporalSubsampleRatio < 1,                                               "Temporal subsample rate must be no less than 1" );
    33783381  xConfirmPara( m_framesToBeEncoded <= 0,                                                   "Total Number Of Frames encoded must be more than 0" );
    33793382  xConfirmPara( m_iGOPSize < 1 ,                                                            "GOP Size must be greater or equal to 1" );
     
    42964299 
    42974300  printf("Reconstruction File                    : %s\n", m_reconFileName.c_str()          );
    4298   printf("Real     Format                        : %dx%d %dHz\n", m_iSourceWidth - m_confWinLeft - m_confWinRight, m_iSourceHeight - m_confWinTop - m_confWinBottom, m_iFrameRate );
    4299   printf("Internal Format                        : %dx%d %dHz\n", m_iSourceWidth, m_iSourceHeight, m_iFrameRate );
     4301  printf("Real     Format                        : %dx%d %gHz\n", m_iSourceWidth - m_confWinLeft - m_confWinRight, m_iSourceHeight - m_confWinTop - m_confWinBottom, (Double)m_iFrameRate/m_temporalSubsampleRatio );
     4302  printf("Internal Format                        : %dx%d %gHz\n", m_iSourceWidth, m_iSourceHeight, (Double)m_iFrameRate/m_temporalSubsampleRatio );
    43004303
    43014304#if SVC_EXTENSION
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h

    r1538 r1544  
    152152  Int       m_iFrameRate;                                     ///< source frame-rates (Hz)
    153153#endif
    154   UInt      m_FrameSkip;                                   ///< number of skipped frames from the beginning
     154  UInt      m_FrameSkip;                                      ///< number of skipped frames from the beginning
     155  UInt      m_temporalSubsampleRatio;                         ///< temporal subsample ratio, 2 means code every two frames
    155156#if !SVC_EXTENSION
    156157  Int       m_iSourceWidth;                                   ///< source width in pixel
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncTop.cpp

    r1538 r1544  
    563563  m_cTEncTop.setFrameRate                                         ( m_iFrameRate );
    564564  m_cTEncTop.setFrameSkip                                         ( m_FrameSkip );
     565  m_cTEncTop.setTemporalSubsampleRatio                            ( m_temporalSubsampleRatio );
    565566  m_cTEncTop.setSourceWidth                                       ( m_iSourceWidth );
    566567  m_cTEncTop.setSourceHeight                                      ( m_iSourceHeight );
     
    17301731      }
    17311732      m_apcTEncTop[layer]->setNumPicRcvd( 0 );
     1733
     1734      // temporally skip frames
     1735      if( m_temporalSubsampleRatio > 1 )
     1736      {
     1737        m_apcTVideoIOYuvInputFile[layer]->skipFrames(m_temporalSubsampleRatio-1, m_apcTEncTop[layer]->getSourceWidth() - m_apcTEncTop[layer]->getPad(0), m_apcTEncTop[layer]->getSourceHeight() - m_apcTEncTop[layer]->getPad(1), m_apcLayerCfg[layer]->m_InputChromaFormatIDC);
     1738      }
    17321739    }
    17331740
     
    19711978      xWriteOutput(bitstreamFile, iNumEncoded, outputAccessUnits);
    19721979      outputAccessUnits.clear();
     1980    }
     1981    // temporally skip frames
     1982    if( m_temporalSubsampleRatio > 1 )
     1983    {
     1984      m_cTVideoIOYuvInputFile.skipFrames(m_temporalSubsampleRatio-1, m_iSourceWidth - m_aiPad[0], m_iSourceHeight - m_aiPad[1], m_InputChromaFormatIDC);
    19731985    }
    19741986  }
     
    22802292{
    22812293#if SVC_EXTENSION
    2282   Double time = (Double) m_iFrameRcvd / m_apcLayerCfg[m_numLayers-1]->m_iFrameRate;
     2294  Double time = (Double) m_iFrameRcvd / m_apcLayerCfg[m_numLayers-1]->m_iFrameRate * m_temporalSubsampleRatio;
    22832295#else
    2284   Double time = (Double) m_iFrameRcvd / m_iFrameRate;
     2296  Double time = (Double) m_iFrameRcvd / m_iFrameRate * m_temporalSubsampleRatio;
    22852297#endif
    22862298  printf("Bytes written to file: %u (%.3f kbps)\n", m_totalBytes, 0.008 * m_totalBytes / time);
  • branches/SHM-dev/source/Lib/TLibEncoder/TEncCfg.h

    r1538 r1544  
    103103  Int       m_iFrameRate;
    104104  Int       m_FrameSkip;
     105  UInt      m_temporalSubsampleRatio;
    105106  Int       m_iSourceWidth;
    106107  Int       m_iSourceHeight;
     
    509510
    510511  Void      setFrameRate                    ( Int   i )      { m_iFrameRate = i; }
    511   Void      setFrameSkip                    ( UInt i ) { m_FrameSkip = i; }
     512  Void      setFrameSkip                    ( UInt  i )      { m_FrameSkip = i; }
     513  Void      setTemporalSubsampleRatio       ( UInt  i )      { m_temporalSubsampleRatio = i; }
    512514  Void      setSourceWidth                  ( Int   i )      { m_iSourceWidth = i; }
    513515  Void      setSourceHeight                 ( Int   i )      { m_iSourceHeight = i; }
     
    610612  Int       getFrameRate                    ()      { return  m_iFrameRate; }
    611613  UInt      getFrameSkip                    ()      { return  m_FrameSkip; }
     614  UInt      getTemporalSubsampleRatio       ()      { return  m_temporalSubsampleRatio; }
    612615  Int       getSourceWidth                  ()      { return  m_iSourceWidth; }
    613616  Int       getSourceHeight                 ()      { return  m_iSourceHeight; }
  • branches/SHM-dev/source/Lib/TLibEncoder/TEncGOP.cpp

    r1542 r1544  
    28312831  //--CFG_KDY
    28322832  const Int rateMultiplier=(isField?2:1);
    2833   m_gcAnalyzeAll.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier );
    2834   m_gcAnalyzeI.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier );
    2835   m_gcAnalyzeP.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier );
    2836   m_gcAnalyzeB.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier );
     2833  m_gcAnalyzeAll.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier / (Double)m_pcCfg->getTemporalSubsampleRatio());
     2834  m_gcAnalyzeI.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier / (Double)m_pcCfg->getTemporalSubsampleRatio());
     2835  m_gcAnalyzeP.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier / (Double)m_pcCfg->getTemporalSubsampleRatio());
     2836  m_gcAnalyzeB.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier / (Double)m_pcCfg->getTemporalSubsampleRatio());
    28372837  const ChromaFormat chFmt = m_pcCfg->getChromaFormatIdc();
    28382838
     
    28652865  {
    28662866    //-- interlaced summary
    2867     m_gcAnalyzeAll_in.setFrmRate( m_pcCfg->getFrameRate());
     2867    m_gcAnalyzeAll_in.setFrmRate( m_pcCfg->getFrameRate() / (Double)m_pcCfg->getTemporalSubsampleRatio());
    28682868    m_gcAnalyzeAll_in.setBits(m_gcAnalyzeAll.getBits());
    28692869    // prior to the above statement, the interlace analyser does not contain the correct total number of bits.
  • branches/SHM-dev/source/Lib/TLibEncoder/TEncTop.cpp

    r1534 r1544  
    135135  if ( m_RCEnableRateControl )
    136136  {
    137     m_cRateCtrl.init( m_framesToBeEncoded, m_RCTargetBitrate, m_iFrameRate, m_iGOPSize, m_iSourceWidth, m_iSourceHeight,
    138         m_maxCUWidth, m_maxCUHeight, m_RCKeepHierarchicalBit, m_RCUseLCUSeparateModel, m_GOPList );
     137    m_cRateCtrl.init( m_framesToBeEncoded, m_RCTargetBitrate, (Int)( (Double)m_iFrameRate/m_temporalSubsampleRatio + 0.5), m_iGOPSize, m_iSourceWidth, m_iSourceHeight,
     138                      m_maxCUWidth, m_maxCUHeight,m_RCKeepHierarchicalBit, m_RCUseLCUSeparateModel, m_GOPList );
    139139  }
    140140
     
    11061106  }
    11071107
     1108  if (getTemporalSubsampleRatio()>1)
     1109  {
     1110    UInt temporalSubsampleRatio = getTemporalSubsampleRatio();
     1111    if ( Double(timingInfo->getNumUnitsInTick()) * temporalSubsampleRatio > std::numeric_limits<UInt>::max() )
     1112    {
     1113      timingInfo->setTimeScale( timingInfo->getTimeScale() / temporalSubsampleRatio );
     1114    }
     1115    else
     1116    {
     1117      timingInfo->setNumUnitsInTick( timingInfo->getNumUnitsInTick() * temporalSubsampleRatio );
     1118    }
     1119  }
     1120
    11081121  Bool rateCnt = ( bitRate > 0 );
    11091122  hrd->setNalHrdParametersPresentFlag( rateCnt );
Note: See TracChangeset for help on using the changeset viewer.