ErrVal MbDataCtrl::init( const SequenceParameterSet& rcSPS ) { AOT_DBG( m_bInitDone ); UInt uiSize = rcSPS.getMbInFrame(); ROT( 0 == uiSize ); if( m_uiSize == uiSize ) { RNOK( xResetData() ); } else { RNOK( xDeleteData() ); RNOK( xCreateData( uiSize ) ); m_uiSize = uiSize; } m_iMbPerLine = rcSPS.getFrameWidthInMbs(); RNOK( m_cpDFPBuffer.init( uiSize+1 ) ); m_cpDFPBuffer.clear(); m_bInitDone = true; return Err::m_nOK; }
ErrVal RecPicBuffer::initSPS( const SequenceParameterSet& rcSPS ) { ROF( m_bInitDone ); UInt Num_Views=1; if (rcSPS.SpsMVC!=NULL) Num_Views = rcSPS.SpsMVC->getNumViewMinus1()+1; UInt mvcScaleFactor = Num_Views > 1 ? 2 : 1; UInt uiMaxFramesInDPB = rcSPS.getMaxDPBSize(mvcScaleFactor); //uiMaxFramesInDPB = min ( mvcScaleFactor*uiMaxFramesInDPB , (max(1,(UInt)ceil((double)log((double)Num_Views)/log(2.)))*16) ); uiMaxFramesInDPB = min ( uiMaxFramesInDPB , (max(1,(UInt)ceil((double)log((double)Num_Views)/log(2.)))*16) ); RNOK( xCreateData( uiMaxFramesInDPB, rcSPS ) ); m_uiNumRefFrames = rcSPS.getNumRefFrames(); m_uiMaxFrameNum = ( 1 << ( rcSPS.getLog2MaxFrameNum() ) ); return Err::m_nOK; }