⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scalabletestcode.cpp

📁 JMVM MPEG MVC/3DAV 测试平台 国际通用标准
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -