📄 scalabletestcode.cpp
字号:
pcScalableTestCode->WriteFlag( pcScalableSei->getBitrateInfoPresentFlag( uiLayer ) );
pcScalableTestCode->WriteFlag( pcScalableSei->getFrmRateInfoPresentFlag( uiLayer ) );
pcScalableTestCode->WriteFlag( pcScalableSei->getFrmSizeInfoPresentFlag( uiLayer ) );
pcScalableTestCode->WriteFlag( pcScalableSei->getLayerDependencyInfoPresentFlag( uiLayer ) );
pcScalableTestCode->WriteFlag( pcScalableSei->getInitParameterSetsInfoPresentFlag( uiLayer ) );
pcScalableTestCode->WriteFlag( pcScalableSei->getExactInterlayerPredFlag( uiLayer ) ); //JVT-S036 lsj
if( pcScalableSei->getProfileLevelInfoPresentFlag( uiLayer ) )
{
pcScalableTestCode->WriteCode( pcScalableSei->getLayerProfileIdc( uiLayer ), 8 );
pcScalableTestCode->WriteFlag( pcScalableSei->getLayerConstraintSet0Flag( uiLayer ) );
pcScalableTestCode->WriteFlag( pcScalableSei->getLayerConstraintSet1Flag( uiLayer ) );
pcScalableTestCode->WriteFlag( pcScalableSei->getLayerConstraintSet2Flag( uiLayer ) );
pcScalableTestCode->WriteFlag( pcScalableSei->getLayerConstraintSet3Flag( uiLayer ) );
pcScalableTestCode->WriteCode( 0, 4 );
pcScalableTestCode->WriteCode( pcScalableSei->getLayerLevelIdc( uiLayer ), 8 );
}
else
{//JVT-S036 lsj
pcScalableTestCode->WriteUVLC( pcScalableSei->getProfileLevelInfoSrcLayerIdDelta( uiLayer ) );
}
/* if( pcScalableSei->getDecodingDependencyInfoPresentFlag( uiLayer ) )
{
pcScalableTestCode->WriteCode( pcScalableSei->getSimplePriorityId( uiLayer ), 6 );
pcScalableTestCode->WriteFlag( pcScalableSei->getDiscardableFlag( uiLayer ) );
pcScalableTestCode->WriteCode( pcScalableSei->getTemporalLevel( uiLayer ), 3 );
pcScalableTestCode->WriteCode( pcScalableSei->getDependencyId( uiLayer ), 3 );
pcScalableTestCode->WriteCode( pcScalableSei->getQualityLevel( uiLayer ), 2 );
}
JVT-S036 lsj*/
if( pcScalableSei->getBitrateInfoPresentFlag( uiLayer ) )
{
pcScalableTestCode->WriteCode( pcScalableSei->getAvgBitrate( uiLayer ), 16 );
//JVT-S036 lsj start
pcScalableTestCode->WriteCode( pcScalableSei->getMaxBitrateLayer( uiLayer ), 16 );
pcScalableTestCode->WriteCode( pcScalableSei->getMaxBitrateDecodedPicture( uiLayer ), 16 );
pcScalableTestCode->WriteCode( pcScalableSei->getMaxBitrateCalcWindow( uiLayer ), 16 );
//JVT-S036 lsj end
}
if( pcScalableSei->getFrmRateInfoPresentFlag( uiLayer ) )
{
pcScalableTestCode->WriteCode( pcScalableSei->getConstantFrmRateIdc( uiLayer ), 2 );
pcScalableTestCode->WriteCode( pcScalableSei->getAvgFrmRate( uiLayer ), 16 );
}
else
{//JVT-S036 lsj
pcScalableTestCode->WriteUVLC( pcScalableSei->getFrmRateInfoSrcLayerIdDelta( uiLayer ) );
}
if( pcScalableSei->getFrmSizeInfoPresentFlag( uiLayer ) )
{
pcScalableTestCode->WriteUVLC( pcScalableSei->getFrmWidthInMbsMinus1( uiLayer ) );
pcScalableTestCode->WriteUVLC( pcScalableSei->getFrmHeightInMbsMinus1( uiLayer ) );
}
else
{//JVT-S036 lsj
pcScalableTestCode->WriteUVLC( pcScalableSei->getFrmSizeInfoSrcLayerIdDelta( uiLayer ) );
}
if( pcScalableSei->getSubRegionLayerFlag( uiLayer ) )
{
pcScalableTestCode->WriteCode( pcScalableSei->getBaseRegionLayerId( uiLayer ), 8 );
pcScalableTestCode->WriteFlag( pcScalableSei->getDynamicRectFlag( uiLayer ) );
if( pcScalableSei->getDynamicRectFlag( uiLayer ) )
{
pcScalableTestCode->WriteCode( pcScalableSei->getHorizontalOffset( uiLayer ), 16 );
pcScalableTestCode->WriteCode( pcScalableSei->getVerticalOffset( uiLayer ), 16 );
pcScalableTestCode->WriteCode( pcScalableSei->getRegionWidth( uiLayer ), 16 );
pcScalableTestCode->WriteCode( pcScalableSei->getRegionHeight( uiLayer ), 16 );
}
}
else
{//JVT-S036 lsj
pcScalableTestCode->WriteUVLC( pcScalableSei->getSubRegionInfoSrcLayerIdDelta( uiLayer ) );
}
//JVT-S036 lsj start
if( pcScalableSei->getSubPicLayerFlag( uiLayer ) )
{
pcScalableTestCode->WriteCode( pcScalableSei->getRoiId( uiLayer ), 3 );
}
if( pcScalableSei->getIroiSliceDivisionInfoPresentFlag( uiLayer ) )
{
pcScalableTestCode->WriteCode( pcScalableSei->getIroiSliceDivisionType( uiLayer ) , 2 );
if( pcScalableSei->getIroiSliceDivisionType(uiLayer) == 0 )
{
pcScalableTestCode->WriteUVLC( pcScalableSei->getGridSliceWidthInMbsMinus1( uiLayer ) );
pcScalableTestCode->WriteUVLC( pcScalableSei->getGridSliceHeightInMbsMinus1( uiLayer ) );
}
else if( pcScalableSei->getIroiSliceDivisionType(uiLayer) == 1 )
{
pcScalableTestCode->WriteUVLC( pcScalableSei->getNumSliceMinus1( uiLayer ) );
for (UInt nslice = 0; nslice <= pcScalableSei->getNumSliceMinus1( uiLayer ) ; nslice ++ )
{
pcScalableTestCode->WriteUVLC( pcScalableSei->getFirstMbInSlice( uiLayer, nslice ) );
pcScalableTestCode->WriteUVLC( pcScalableSei->getSliceWidthInMbsMinus1( uiLayer, nslice ) );
pcScalableTestCode->WriteUVLC( pcScalableSei->getSliceHeightInMbsMinus1( uiLayer, nslice ) );
}
}
else if( pcScalableSei->getIroiSliceDivisionType(uiLayer) == 2 )
{
// JVT-S054 (REPLACE) ->
/*
pcScalableTestCode->WriteUVLC( pcScalableSei->getNumSliceMinus1( uiLayer ) );
UInt uiFrameHeightInMb = pcScalableSei->getFrmHeightInMbsMinus1( uiLayer ) + 1;
UInt uiFrameWidthInMb = pcScalableSei->getFrmWidthInMbsMinus1( uiLayer ) + 1;
UInt uiPicSizeInMbs = uiFrameHeightInMb * uiFrameWidthInMb;
for( UInt j = 0; j < uiPicSizeInMbs; j++ )
{
pcScalableTestCode->WriteUVLC( pcScalableSei->getSliceId( uiLayer, j ) );
}
*/
pcScalableTestCode->WriteUVLC( pcScalableSei->getNumSliceMinus1( uiLayer ) );
UInt uiFrameHeightInMb = pcScalableSei->getFrmHeightInMbsMinus1( uiLayer ) + 1;
UInt uiFrameWidthInMb = pcScalableSei->getFrmWidthInMbsMinus1( uiLayer ) + 1;
UInt uiPicSizeInMbs = uiFrameHeightInMb * uiFrameWidthInMb;
UInt uiWriteBits = (UInt) ceil( log( (Double) (pcScalableSei->getNumSliceMinus1( uiLayer ) + 1) ) / log(2.) );
if (uiWriteBits == 0)
uiWriteBits = 1;
for( UInt j = 0; j < uiPicSizeInMbs; j++ )
{
pcScalableTestCode->WriteCode( pcScalableSei->getSliceId( uiLayer, j ), uiWriteBits );
}
// JVT-S054 (REPLACE) <-
}
}
//JVT-S036 lsj end
if( pcScalableSei->getLayerDependencyInfoPresentFlag( uiLayer ) )
{
pcScalableTestCode->WriteUVLC( pcScalableSei->getNumDirectlyDependentLayers( uiLayer ) );
for( UInt ui = 0; ui < pcScalableSei->getNumDirectlyDependentLayers( uiLayer ); ui++ )
{
//BUG_FIX liuhui 0603
pcScalableTestCode->WriteUVLC( pcScalableSei->getNumDirectlyDependentLayerIdDeltaMinus1(uiLayer, ui ) ); //JVT-S036 lsj
//
}
}
else
{//JVT-S036 lsj
pcScalableTestCode->WriteUVLC( pcScalableSei->getLayerDependencyInfoSrcLayerIdDelta( uiLayer ) );
}
if( pcScalableSei->getInitParameterSetsInfoPresentFlag( uiLayer ) )
{
pcScalableTestCode->WriteUVLC( pcScalableSei->getNumInitSPSMinus1( uiLayer ) );
UInt ui;
for( ui = 0; ui <= pcScalableSei->getNumInitSPSMinus1( uiLayer ); ui++ )
{
//BUG_FIX liuhui 0603
pcScalableTestCode->WriteUVLC( pcScalableSei->getInitSPSIdDelta( uiLayer, ui ) );
//
}
pcScalableTestCode->WriteUVLC( pcScalableSei->getNumInitPPSMinus1( uiLayer ) );
for( ui = 0; ui <= pcScalableSei->getNumInitPPSMinus1( uiLayer ); ui++ )
{
//BUG_FIX liuhui 0603
pcScalableTestCode->WriteUVLC( pcScalableSei->getInitPPSIdDelta( uiLayer, ui ) );
//
}
}
else
{//JVT-S036 lsj
pcScalableTestCode->WriteUVLC( pcScalableSei->getInitParameterSetsInfoSrcLayerIdDelta( uiLayer ) );
}
}// for
return Err::m_nOK;
}
//JVT-S080 LMI {
ErrVal
ScalableTestCode::SEICode( h264::SEI::ScalableSeiLayersNotPresent* pcScalableSeiLayersNotPresent, ScalableTestCode *pcScalableTestCode )
{
UInt uiNumScalableLayers = pcScalableSeiLayersNotPresent->getNumLayers();
pcScalableTestCode->WriteUVLC( uiNumScalableLayers );
for( UInt uiLayer = 0; uiLayer < uiNumScalableLayers; uiLayer++ )
{
pcScalableTestCode->WriteCode( pcScalableSeiLayersNotPresent->getLayerId( uiLayer ), 8);
}
return Err::m_nOK;
}
ErrVal
ScalableTestCode::SEICode ( h264::SEI::ScalableSeiDependencyChange* pcScalableSeiDependencyChange, ScalableTestCode *pcScalableTestCode )
{
UInt uiNumScalableLayersMinus1 = pcScalableSeiDependencyChange->getNumLayersMinus1();
UInt uiLayer, uiDirectLayer;
pcScalableTestCode->WriteUVLC( uiNumScalableLayersMinus1 );
for( uiLayer = 0; uiLayer <= uiNumScalableLayersMinus1; uiLayer++ )
{
pcScalableTestCode->WriteCode( pcScalableSeiDependencyChange->getLayerId( uiLayer ), 8);
pcScalableTestCode->WriteFlag( pcScalableSeiDependencyChange->getLayerDependencyInfoPresentFlag( uiLayer ) );
if ( pcScalableSeiDependencyChange->getLayerDependencyInfoPresentFlag( uiLayer ) )
{
pcScalableTestCode->WriteUVLC( pcScalableSeiDependencyChange->getNumDirectDependentLayers( uiLayer ) );
for ( uiDirectLayer = 0; uiDirectLayer < pcScalableSeiDependencyChange->getNumDirectDependentLayers( uiLayer ); uiDirectLayer++)
pcScalableTestCode->WriteUVLC(pcScalableSeiDependencyChange->getDirectDependentLayerIdDeltaMinus1( uiLayer, uiDirectLayer ));
}
else
pcScalableTestCode->WriteUVLC(pcScalableSeiDependencyChange->getLayerDependencyInfoSrcLayerIdDeltaMinus1( uiLayer ) );
}
return Err::m_nOK;
}
//JVT-S080 LMI }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -