本文整理汇总了C++中MbDataAccess::getMbMotionData方法的典型用法代码示例。如果您正苦于以下问题:C++ MbDataAccess::getMbMotionData方法的具体用法?C++ MbDataAccess::getMbMotionData怎么用?C++ MbDataAccess::getMbMotionData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MbDataAccess
的用法示例。
在下文中一共展示了MbDataAccess::getMbMotionData方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: calcMv
ErrVal MbDecoder::calcMv( MbDataAccess& rcMbDataAccess,
MbDataAccess* pcMbDataAccessBaseMotion )
{
if( rcMbDataAccess.getMbData().getBLSkipFlag() )
{
return Err::m_nOK;
}
if( rcMbDataAccess.getMbData().getMbMode() == INTRA_4X4 )
{
//----- intra prediction -----
rcMbDataAccess.getMbMotionData( LIST_0 ).setRefIdx( BLOCK_NOT_PREDICTED );
rcMbDataAccess.getMbMotionData( LIST_0 ).setAllMv ( Mv::ZeroMv() );
rcMbDataAccess.getMbMotionData( LIST_1 ).setRefIdx( BLOCK_NOT_PREDICTED );
rcMbDataAccess.getMbMotionData( LIST_1 ).setAllMv ( Mv::ZeroMv() );
}
else
{
if( rcMbDataAccess.getMbData().getMbMode() == MODE_8x8 || rcMbDataAccess.getMbData().getMbMode() == MODE_8x8ref0 )
{
for( B8x8Idx c8x8Idx; c8x8Idx.isLegal(); c8x8Idx++ )
{
//----- motion compensated prediction -----
RNOK( m_pcMotionCompensation->calcMvSubMb( c8x8Idx, rcMbDataAccess, pcMbDataAccessBaseMotion ) );
}
}
else
{
//----- motion compensated prediction -----
RNOK( m_pcMotionCompensation->calcMvMb( rcMbDataAccess, pcMbDataAccessBaseMotion ) );
}
}
return Err::m_nOK;
}
示例2: copyTo
Void IntMbTempData::copyTo( MbDataAccess& rcMbDataAccess )
{
rcMbDataAccess.getMbData() .copyFrom( *this );
rcMbDataAccess.getMbTCoeffs() .copyFrom( *this );
rcMbDataAccess.getMbMvdData(LIST_0) .copyFrom( m_acMbMvdData[LIST_0] );
rcMbDataAccess.getMbMotionData(LIST_0).copyFrom( m_acMbMotionData[LIST_0] );
if( rcMbDataAccess.getSH().isBSlice() )
{
rcMbDataAccess.getMbMvdData(LIST_1) .copyFrom( m_acMbMvdData[LIST_1] );
rcMbDataAccess.getMbMotionData(LIST_1).copyFrom( m_acMbMotionData[LIST_1] );
}
}
示例3: RNOK
ErrVal
MbParser::xSkipMb( MbDataAccess& rcMbDataAccess )
{
if( rcMbDataAccess.getSH().isBSlice() )
{
RNOK( rcMbDataAccess.setConvertMbType( 0 ) );
}
else
{
rcMbDataAccess.getMbMotionData( LIST_0 ).setRefIdx( 1 );
RNOK( rcMbDataAccess.setConvertMbType( MSYS_UINT_MAX ) );
}
rcMbDataAccess.getMbData().setMbCbp( 0 );
return Err::m_nOK;
}
示例4: ROFRS
Bool
MbParser::xCheckSkipSliceMb( MbDataAccess& rcMbDataAccess, UInt uiNumMbRead, Bool& rbEndOfSlice )
{
ROFRS( rcMbDataAccess.getSH().getSliceSkipFlag(), false );
MbData& rcMbData = rcMbDataAccess.getMbData();
rcMbData.setSkipFlag ( false );
rcMbData.setBLSkipFlag ( true );
rcMbData.setResidualPredFlag ( true );
rcMbData.setMbExtCbp ( 0 );
rcMbData.setFwdBwd ( 0 );
rcMbDataAccess.resetQp ();
rcMbDataAccess.getMbMotionData( LIST_0 ).clear( BLOCK_NOT_PREDICTED );
rcMbDataAccess.getMbMotionData( LIST_1 ).clear( BLOCK_NOT_PREDICTED );
rcMbDataAccess.getMbMvdData ( LIST_0 ).clear();
rcMbDataAccess.getMbMvdData ( LIST_1 ).clear();
rbEndOfSlice = ( uiNumMbRead >= rcMbDataAccess.getSH().getNumMbsInSliceMinus1() );
return true;
}
示例5: ROF
ErrVal ControlMngH264AVCEncoder::initMbForCoding( MbDataAccess& rcMbDataAccess, UInt uiMbY, UInt uiMbX, Bool bMbAff, Bool bFieldFlag )
{
ROF( m_uiCurrLayer < MAX_LAYERS );
if( bMbAff )
{
rcMbDataAccess.setFieldMode( bFieldFlag );
}
else
{
//rpcMbDataAccess->getMbData().setFieldFlag( false ); // now: done above
rcMbDataAccess.getMbMotionData( LIST_0 ).setFieldMode( false );
rcMbDataAccess.getMbMotionData( LIST_1 ).setFieldMode( false );
}
RNOK( m_apcYuvFullPelBufferCtrl[m_uiCurrLayer]->initMb( uiMbY, uiMbX, bMbAff ) );
RNOK( m_apcYuvHalfPelBufferCtrl[m_uiCurrLayer]->initMb( uiMbY, uiMbX, bMbAff ) );
RNOK( m_pcMotionEstimation->initMb( uiMbY, uiMbX, rcMbDataAccess ) );
return Err::m_nOK;
}
示例6: switch
ErrVal
MbCoder::xWriteReferenceFrames( MbDataAccess& rcMbDataAccess,
MbMode eMbMode,
ListIdx eLstIdx )
{
AOT_DBG( rcMbDataAccess.getMbData().isIntra() );
if( 1 == rcMbDataAccess.getNumActiveRef( eLstIdx ) )
{
return Err::m_nOK;
}
Bool bPred = rcMbDataAccess.getSH().getAdaptivePredictionFlag();
MbMotionData& rcMot = rcMbDataAccess.getMbMotionData( eLstIdx );
switch( eMbMode )
{
case MODE_SKIP:
{
break;
}
case MODE_16x16:
{
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_0, eLstIdx) && ( ! bPred || ! rcMot.getMotPredFlag() ) )
{
RNOK( m_pcMbSymbolWriteIf->refFrame( rcMbDataAccess, eLstIdx ) );
}
break;
}
case MODE_16x8:
{
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_0, eLstIdx) && ( ! bPred || ! rcMot.getMotPredFlag( PART_16x8_0 ) ) )
{
RNOK( m_pcMbSymbolWriteIf->refFrame( rcMbDataAccess, eLstIdx, PART_16x8_0 ) );
}
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_2, eLstIdx) && ( ! bPred || ! rcMot.getMotPredFlag( PART_16x8_1 ) ) )
{
RNOK( m_pcMbSymbolWriteIf->refFrame( rcMbDataAccess, eLstIdx, PART_16x8_1 ) );
}
break;
}
case MODE_8x16:
{
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_0, eLstIdx) && ( ! bPred || ! rcMot.getMotPredFlag( PART_8x16_0 ) ) )
{
RNOK( m_pcMbSymbolWriteIf->refFrame( rcMbDataAccess, eLstIdx, PART_8x16_0 ) );
}
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_1, eLstIdx) && ( ! bPred || ! rcMot.getMotPredFlag( PART_8x16_1 ) ) )
{
RNOK( m_pcMbSymbolWriteIf->refFrame( rcMbDataAccess, eLstIdx, PART_8x16_1 ) );
}
break;
}
case MODE_8x8:
case MODE_8x8ref0:
{
for( B8x8Idx c8x8Idx; c8x8Idx.isLegal(); c8x8Idx++ )
{
if( BLK_SKIP != rcMbDataAccess.getMbData().getBlkMode( c8x8Idx.b8x8Index() ) &&
rcMbDataAccess.getMbData().isBlockFwdBwd( c8x8Idx.b8x8Index(), eLstIdx ) && ( ! bPred || ! rcMot.getMotPredFlag( c8x8Idx.b8x8() ) ) )
{
RNOK( m_pcMbSymbolWriteIf->refFrame( rcMbDataAccess, eLstIdx, c8x8Idx.b8x8() ) );
}
}
break;
}
default:
{
AF();
return Err::m_nERR;
}
}
return Err::m_nOK;
}
示例7: encode
ErrVal MbCoder::encode( MbDataAccess& rcMbDataAccess,
MbDataAccess* pcMbDataAccessBase,
Int iSpatialScalabilityType,
Bool bTerminateSlice )
{
ROF( m_bInitDone );
//===== skip flag =====
Bool bIsCoded = ! rcMbDataAccess.isSkippedMb();
RNOK( m_pcMbSymbolWriteIf->skipFlag( rcMbDataAccess, false ) );
if( bIsCoded )
{
//===== base layer mode flag and base layer refinement flag =====
if( rcMbDataAccess.getSH().getBaseLayerId() != MSYS_UINT_MAX )
{
if ( pcMbDataAccessBase->getMbData().getInCropWindowFlag() == true )// TMM_ESS
{
if( rcMbDataAccess.getSH().getAdaptivePredictionFlag() )
{
RNOK ( m_pcMbSymbolWriteIf->BLSkipFlag( rcMbDataAccess ) );
}
else
{
ROF( rcMbDataAccess.getMbData().getBLSkipFlag () );
}
// TMM_ESS {
}
else // of if ( rcMbDataAccess.getMbData().getInCropWindowFlag() == true )
{
ROT ( rcMbDataAccess.getMbData().getBLSkipFlag () );
}
// TMM_ESS }
}
else
{
ROT ( rcMbDataAccess.getMbData().getBLSkipFlag () );
}
//===== macroblock mode =====
if( ! rcMbDataAccess.getMbData().getBLSkipFlag() )
{
MbMode eMbModeOrg = rcMbDataAccess.getMbData().getMbMode();
MbMode eMbModeSet = ( eMbModeOrg == INTRA_BL ? INTRA_4X4 : eMbModeOrg );
rcMbDataAccess.getMbData().setMbMode( eMbModeSet );
RNOK( m_pcMbSymbolWriteIf->mbMode( rcMbDataAccess ) );
rcMbDataAccess.getMbData().setMbMode( eMbModeOrg );
}
//--- reset motion pred flags ---
if( rcMbDataAccess.getMbData().getBLSkipFlag()
|| rcMbDataAccess.getMbData().isIntra() || rcMbDataAccess.getMbData().getMbMode() == MODE_SKIP )
{
rcMbDataAccess.getMbMotionData( LIST_0 ).setMotPredFlag( false );
rcMbDataAccess.getMbMotionData( LIST_1 ).setMotPredFlag( false );
}
else if( rcMbDataAccess.getSH().isInterB() )
{
for( B8x8Idx c8x8Idx; c8x8Idx.isLegal(); c8x8Idx++ )
{
if( BLK_SKIP == rcMbDataAccess.getMbData().getBlkMode ( c8x8Idx.b8x8Index() ) ||
!rcMbDataAccess .getMbData().isBlockFwdBwd( c8x8Idx.b8x8Index(), LIST_0 ) )
{
rcMbDataAccess.getMbMotionData( LIST_0 ).setMotPredFlag( false, c8x8Idx );
}
if( BLK_SKIP == rcMbDataAccess.getMbData().getBlkMode ( c8x8Idx.b8x8Index() ) ||
!rcMbDataAccess .getMbData().isBlockFwdBwd( c8x8Idx.b8x8Index(), LIST_1 ) )
{
rcMbDataAccess.getMbMotionData( LIST_1 ).setMotPredFlag( false, c8x8Idx );
}
}
}
//===== prediction info =====
if( ! rcMbDataAccess.getMbData().getBLSkipFlag() )
{
//===== BLOCK MODES =====
if( rcMbDataAccess.getMbData().isInter8x8() )
{
RNOK( m_pcMbSymbolWriteIf->blockModes( rcMbDataAccess ) );
}
if( rcMbDataAccess.getMbData().isPCM() )
{
//===== PCM SAMPLES =====
RNOK( m_pcMbSymbolWriteIf->samplesPCM( rcMbDataAccess ) );
}
else if( rcMbDataAccess.getMbData().isIntra() )
{
//===== INTRA PREDICTION MODES =====
RNOK( xWriteIntraPredModes( rcMbDataAccess ) );
}
else
{
//===== MOTION INFORMATION =====
MbMode eMbMode = rcMbDataAccess.getMbData().getMbMode();
if( rcMbDataAccess.getSH().isInterB() )
//.........这里部分代码省略.........
示例8: if
ErrVal
MbParser::read( MbDataAccess& rcMbDataAccess,
UInt uiNumMbRead,
Bool& rbEndOfSlice,
UInt& ruiNextSkippedVLC )
{
const CommonMainH264* pcMainH264 = CommonMain::getMainH264();
// FIXME:
if (pcMainH264->getCurrentPictureId() == 1 && pcMainH264->getCurrentLayerId() == 16 && rcMbDataAccess.getMbData().getMbAddr() == 76)
{
int a = 0;
}
ROF( m_bInitDone );
ROTRS( xCheckSkipSliceMb( rcMbDataAccess, uiNumMbRead, rbEndOfSlice ), Err::m_nOK );
Bool bIsCoded = true;
if( m_pcMbSymbolReadIf->isMbSkipped( rcMbDataAccess, ruiNextSkippedVLC ) )
{
bIsCoded = false;
rcMbDataAccess.getMbTCoeffs().clear();
rcMbDataAccess.getMbData().clearIntraPredictionModes( true );
RNOK( xSkipMb( rcMbDataAccess ) );
rcMbDataAccess.getMbData().setBLSkipFlag( false );
rcMbDataAccess.getMbData().setResidualPredFlag( rcMbDataAccess.getMbData().getInCropWindowFlag() ? rcMbDataAccess.getSH().getDefaultResidualPredictionFlag() : false );
if( rcMbDataAccess.getSH().isBSlice() )
{
rcMbDataAccess.getMbData().setFwdBwd( 0x3333 );
rcMbDataAccess.getMbMotionData( LIST_0 ).clear( RefIdxValues(1) );
rcMbDataAccess.getMbMvdData ( LIST_0 ).clear();
rcMbDataAccess.getMbMotionData( LIST_1 ).clear( RefIdxValues(1) );
rcMbDataAccess.getMbMvdData ( LIST_1 ).clear();
}
else
{
rcMbDataAccess.getMbData().setFwdBwd( 0x1111 );
rcMbDataAccess.getMbMotionData( LIST_0 ).clear( RefIdxValues(1) );
rcMbDataAccess.getMbMvdData ( LIST_0 ).clear();
}
rcMbDataAccess.resetQp(); // set QP to that of the last macroblock
}
if( bIsCoded )
{
if( rcMbDataAccess.getSH().isMbaffFrame() && ( rcMbDataAccess.isTopMb() || m_bPrevIsSkipped ) )
{
RNOK( m_pcMbSymbolReadIf->fieldFlag( rcMbDataAccess) );
}
Bool bBaseLayerAvailable = ! rcMbDataAccess.getSH().getNoInterLayerPredFlag();
//===== base layer mode flag and base layer refinement flag =====
if( bBaseLayerAvailable )
{
if ( rcMbDataAccess.getMbData().getInCropWindowFlag() == true )
{
if( rcMbDataAccess.getSH().getAdaptiveBaseModeFlag() )
{
m_pcMbSymbolReadIf->isBLSkipped( rcMbDataAccess );
}
else
{
rcMbDataAccess.getMbData().setBLSkipFlag( rcMbDataAccess.getSH().getDefaultBaseModeFlag() );
}
}
else
{
rcMbDataAccess.getMbData().setBLSkipFlag( false );
}
}
else
{
rcMbDataAccess.getMbData().setBLSkipFlag( false );
}
if( rcMbDataAccess.getSH().getStoreRefBasePicFlag() && rcMbDataAccess.getSH().getQualityId() > 0 && rcMbDataAccess.getMbData().getBLSkipFlag() == false )
{
printf("Conformance Issue: base_mode_flag = 0 in enhancement layer MGS key picture\n");
}
//===== macroblock mode =====
if( ! rcMbDataAccess.getMbData().getBLSkipFlag() )
{
DECRNOK( m_pcMbSymbolReadIf->mbMode( rcMbDataAccess ) );
}
if( rcMbDataAccess.getMbData().getBLSkipFlag() )
{
//===== copy motion data from base layer ======
rcMbDataAccess.getMbMvdData( LIST_0 ).clear();
rcMbDataAccess.getMbMvdData( LIST_1 ).clear();
rcMbDataAccess.getMbData().setBLSkipFlag( true );
}
else
{
//===== BLOCK MODES =====
if( rcMbDataAccess.getMbData().isInter8x8() )
{
//.........这里部分代码省略.........
示例9: ROTRS
ErrVal
MbParser::xReadMotionPredFlags( MbDataAccess& rcMbDataAccess,
MbMode eMbMode,
ListIdx eLstIdx )
{
ROTRS( rcMbDataAccess.getSH ().getNoInterLayerPredFlag(), Err::m_nOK );
ROFRS( rcMbDataAccess.getMbData ().getInCropWindowFlag(), Err::m_nOK );
MbMotionData& rcMbMotionData = rcMbDataAccess.getMbMotionData( eLstIdx );
rcMbMotionData.setMotPredFlag( rcMbDataAccess.getSH().getDefaultMotionPredictionFlag() );
ROFRS ( rcMbDataAccess.getSH().getAdaptiveMotionPredictionFlag(), Err::m_nOK );
//--- clear ---
rcMbMotionData.setMotPredFlag( false );
if( rcMbDataAccess.getMbData().isIntra() )
{
return Err::m_nOK;
}
switch( eMbMode )
{
case MODE_SKIP:
{
break;
}
case MODE_16x16:
{
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_0, eLstIdx ) )
{
DECRNOK( m_pcMbSymbolReadIf->motionPredFlag( rcMbDataAccess, eLstIdx ) );
}
break;
}
case MODE_16x8:
{
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_0, eLstIdx ) )
{
DECRNOK( m_pcMbSymbolReadIf->motionPredFlag( rcMbDataAccess, eLstIdx, PART_16x8_0 ) );
}
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_2, eLstIdx ) )
{
DECRNOK( m_pcMbSymbolReadIf->motionPredFlag( rcMbDataAccess, eLstIdx, PART_16x8_1 ) );
}
break;
}
case MODE_8x16:
{
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_0, eLstIdx ) )
{
DECRNOK( m_pcMbSymbolReadIf->motionPredFlag( rcMbDataAccess, eLstIdx, PART_8x16_0 ) );
}
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_1, eLstIdx ) )
{
DECRNOK( m_pcMbSymbolReadIf->motionPredFlag( rcMbDataAccess, eLstIdx, PART_8x16_1 ) );
}
break;
}
case MODE_8x8:
case MODE_8x8ref0:
{
for( B8x8Idx c8x8Idx; c8x8Idx.isLegal(); c8x8Idx++ )
{
if( BLK_SKIP != rcMbDataAccess.getMbData().getBlkMode ( c8x8Idx.b8x8Index() ) &&
rcMbDataAccess .getMbData().isBlockFwdBwd( c8x8Idx.b8x8Index(), eLstIdx ) )
{
DECRNOK( m_pcMbSymbolReadIf->motionPredFlag( rcMbDataAccess, eLstIdx, c8x8Idx.b8x8() ) );
}
}
break;
}
default:
{
AF();
return Err::m_nERR;
}
}
return Err::m_nOK;
}
示例10: switch
ErrVal
MbParser::xReadReferenceIndices( MbDataAccess& rcMbDataAccess, MbMode eMbMode, ListIdx eLstIdx )
{
MbMotionData& rcMbMotionData = rcMbDataAccess.getMbMotionData( eLstIdx );
if( rcMbDataAccess.getMbData().isIntra() )
{
rcMbMotionData.setRefIdx( -1 );
return Err::m_nOK;
}
switch( eMbMode )
{
case MODE_SKIP:
{
break;
}
case MODE_16x16:
{
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_0, eLstIdx ) )
{
if( !rcMbMotionData.getMotPredFlag() )
{
if( 1 == rcMbDataAccess.getNumActiveRef( eLstIdx ) )
{
rcMbMotionData.setRefIdx( 1 );
}
else
{
DECRNOK( m_pcMbSymbolReadIf->refFrame( rcMbDataAccess, eLstIdx ) );
}
}
}
else
{
rcMbMotionData.setRefIdx( BLOCK_NOT_PREDICTED );
}
break;
}
case MODE_16x8:
{
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_0, eLstIdx ) )
{
if( !rcMbMotionData.getMotPredFlag(PART_16x8_0) )
{
if( 1 == rcMbDataAccess.getNumActiveRef( eLstIdx ) )
{
rcMbMotionData.setRefIdx( 1, PART_16x8_0 );
}
else
{
DECRNOK( m_pcMbSymbolReadIf->refFrame( rcMbDataAccess, eLstIdx, PART_16x8_0 ) );
}
}
}
else
{
rcMbMotionData.setRefIdx( BLOCK_NOT_PREDICTED, PART_16x8_0 );
}
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_2, eLstIdx ) )
{
if( !rcMbMotionData.getMotPredFlag(PART_16x8_1) )
{
if( 1 == rcMbDataAccess.getNumActiveRef( eLstIdx ) )
{
rcMbMotionData.setRefIdx( 1, PART_16x8_1 );
}
else
{
DECRNOK( m_pcMbSymbolReadIf->refFrame( rcMbDataAccess, eLstIdx, PART_16x8_1 ) );
}
}
}
else
{
rcMbMotionData.setRefIdx( BLOCK_NOT_PREDICTED, PART_16x8_1 );
}
break;
}
case MODE_8x16:
{
if( rcMbDataAccess.getMbData().isBlockFwdBwd( B_8x8_0, eLstIdx ) )
{
if( !rcMbMotionData.getMotPredFlag(PART_8x16_0) )
{
if( 1 == rcMbDataAccess.getNumActiveRef( eLstIdx ) )
{
rcMbMotionData.setRefIdx( 1, PART_8x16_0 );
}
else
{
DECRNOK( m_pcMbSymbolReadIf->refFrame( rcMbDataAccess, eLstIdx, PART_8x16_0 ) );
}
}
}
else
{
rcMbMotionData.setRefIdx( BLOCK_NOT_PREDICTED, PART_8x16_0 );
}
//.........这里部分代码省略.........