当前位置: 首页>>代码示例>>C++>>正文


C++ SliceHeader::getRefListSize方法代码示例

本文整理汇总了C++中SliceHeader::getRefListSize方法的典型用法代码示例。如果您正苦于以下问题:C++ SliceHeader::getRefListSize方法的具体用法?C++ SliceHeader::getRefListSize怎么用?C++ SliceHeader::getRefListSize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SliceHeader的用法示例。


在下文中一共展示了SliceHeader::getRefListSize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: initSlice

ErrVal MbDataCtrl::initSlice( SliceHeader& rcSH, ProcessingState eProcessingState, Bool bDecoder, MbDataCtrl* pcMbDataCtrl )
{
  AOF_DBG( m_bInitDone );

  m_eProcessingState  = eProcessingState;
  m_pcMbDataCtrl0L1   = NULL;

  m_iColocatedOffset  = 0;
  m_bUseTopField      = false;
  m_bPicCodedField    = rcSH.getFieldPicFlag();

  if( rcSH.isInterB() )
  {
    if( ((rcSH.getNalUnitType() != NAL_UNIT_CODED_SLICE_IDR_SCALABLE &&
          rcSH.getNalUnitType() != NAL_UNIT_CODED_SLICE_SCALABLE) || (!rcSH.getSvcMvcFlag()) ) && bDecoder
          && rcSH.getRefListSize( LIST_1 )
		  )
    {
      const RefPic& rcRefPic0L1 = rcSH.getRefPic( 1, rcSH.getPicType(), LIST_1 );
      AOF_DBG( rcRefPic0L1.isAvailable() );
      const FrameUnit* pcFU = rcRefPic0L1.getPic().getFrameUnit();
      Int iCurrPoc    = rcSH.getPoc();
      Int iTopDiffPOC = iCurrPoc - pcFU->getTopField().getPOC();
      Int iBotDiffPOC = iCurrPoc - pcFU->getBotField().getPOC();

      m_bUseTopField    = (abs( iTopDiffPOC ) < abs( iBotDiffPOC ) );

      m_pcMbDataCtrl0L1 = pcFU->getMbDataCtrl();

      if( FRAME != rcSH.getPicType() )
      {
          if( rcRefPic0L1.getFrame()->getPicType() != rcSH.getPicType() && m_pcMbDataCtrl0L1->isPicCodedField() )
          {
              m_iColocatedOffset = m_iMbPerLine;
          }
      }
	 

    }

    if( pcMbDataCtrl )
    {
      m_pcMbDataCtrl0L1 = pcMbDataCtrl;
    }

    if(!bDecoder)
    { // Fix by [email protected] & Dong
      if (eProcessingState == ENCODE_PROCESS)
      {
        if( (rcSH.getNalUnitType() != NAL_UNIT_CODED_SLICE_IDR_SCALABLE &&
          rcSH.getNalUnitType() != NAL_UNIT_CODED_SLICE_SCALABLE) || (!rcSH.getSvcMvcFlag()) )
        {
          PicType picType = rcSH.getPicType();
          RefFrameList* pRefFrameList1 = rcSH.getRefFrameList(picType, LIST_1);

          Int iCurrPoc    = rcSH.getPoc();
          Int iTopDiffPOC = iCurrPoc - pRefFrameList1->getEntry( 0 )->getTopFieldPoc();
          Int iBotDiffPOC = iCurrPoc - pRefFrameList1->getEntry( 0 )->getBotFieldPoc();

          m_bUseTopField    = (abs( iTopDiffPOC ) < abs( iBotDiffPOC ) );

          if( FRAME != rcSH.getPicType() )
          {
            if( pRefFrameList1->getEntry( 0 )->getPicType() != rcSH.getPicType() && m_pcMbDataCtrl0L1->isPicCodedField() )
            {
              m_iColocatedOffset = m_iMbPerLine;
            }
          }
        }
      }
      else
      {
        m_bUseTopField = true;//lufeng: default
      }
    }
  }

  if( PARSE_PROCESS == m_eProcessingState || ENCODE_PROCESS == m_eProcessingState )
  {
    m_uiSliceId++;

    //[email protected] : memory leak fix
    if( m_cpDFPBuffer.get( m_uiSliceId ) )
    {
      delete m_cpDFPBuffer.get( m_uiSliceId );
      m_cpDFPBuffer.set( m_uiSliceId, NULL );
    }
    //--

    m_cpDFPBuffer.set( m_uiSliceId, rcSH.getDeblockingFilterParameter().getCopy() );
    m_bDirect8x8InferenceFlag = rcSH.getSPS().getDirect8x8InferenceFlag();
  }
  m_pcSliceHeader = &rcSH;


  Int iMbPerColumn  = rcSH.getSPS().getFrameHeightInMbs ();
  m_iMbPerLine      = rcSH.getSPS().getFrameWidthInMbs  ();

  m_uiMbOffset      = rcSH.getBottomFieldFlag() ? 1 * m_iMbPerLine : 0;
  m_uiMbStride      = rcSH.getFieldPicFlag()    ? 2 * m_iMbPerLine : m_iMbPerLine;
//.........这里部分代码省略.........
开发者ID:Moutarde,项目名称:3DWebcam,代码行数:101,代码来源:MbDataCtrl.cpp


注:本文中的SliceHeader::getRefListSize方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。