sei.cpp

来自「JMVM MPEG MVC/3DAV 测试平台 国际通用标准」· C++ 代码 · 共 1,519 行 · 第 1/5 页

CPP
1,519
字号
	return Err::m_nOK;
}

ErrVal
SEI::FullframeSnapshotSei::destroy()
{
    delete this;
	return Err::m_nOK;
}

ErrVal
SEI::FullframeSnapshotSei::write( HeaderSymbolWriteIf *pcWriteIf )
{
	UInt uiStart = pcWriteIf->getNumberOfWrittenBits();
	UInt uiPayloadSize = 0;
	UInt m_uiSnapShotId = getSnapShotId();
	RNOK( pcWriteIf->writeUvlc( m_uiSnapShotId, "FullframeSnapshotSei: SnapshotId" ) );

	uiPayloadSize = ( pcWriteIf->getNumberOfWrittenBits() - uiStart + 7 )/8;

	return Err::m_nOK;
}

ErrVal
SEI::FullframeSnapshotSei::read( HeaderSymbolReadIf *pcReadIf )
{
	RNOK( pcReadIf->getUvlc( m_uiSnapShotId, "FullframeSnapshotSei: SnapShotId" ) );

	return Err::m_nOK;
}
//////////////////////////////////////////////////////////////////////////
//
//			ACTIVE VIEW INFORMATION SEI MESSAGE
//
//////////////////////////////////////////////////////////////////////////
ErrVal
SEI::ActiveViewInfoSei::create( ActiveViewInfoSei*& rpcSeiMessage )
{
    rpcSeiMessage = new ActiveViewInfoSei();
	ROT( NULL == rpcSeiMessage );
	return Err::m_nOK;
}
ErrVal
SEI::ActiveViewInfoSei::destroy()
{
    delete this;
	return Err::m_nOK;
}

ErrVal
SEI::ActiveViewInfoSei::write( HeaderSymbolWriteIf *pcWriteIf )
{
    UInt uiStartBits  = pcWriteIf->getNumberOfWrittenBits();
	UInt uiPayloadSize = 0;
	UInt uiIndex;
	RNOK( pcWriteIf->writeFlag( m_bOpPresentFlag, " ActiveViewInfoSei:OpPresentFlag " ) );
	if( m_bOpPresentFlag )
	{
		RNOK( pcWriteIf->writeUvlc( m_uiOperationPointId, "ActiveViewInfoSei:OperationPointId" ) );
	}
	else
	{
		RNOK( pcWriteIf->writeUvlc( m_uiNumActiveViewsMinus1, "ActiveViewInfoSei:NumActiveViewsMinus1" ) );

		for( uiIndex = 0; uiIndex <= m_uiNumActiveViewsMinus1; uiIndex++ )
		{
			RNOK( pcWriteIf->writeUvlc( m_uiViewId[uiIndex], " ActiveViewInfoSei:ViewId " ) );
		}
	}
	UInt uiBits = pcWriteIf->getNumberOfWrittenBits()-uiStartBits;

	uiPayloadSize = (uiBits+7)/8;

	return Err::m_nOK;
}

ErrVal
SEI::ActiveViewInfoSei::read( HeaderSymbolReadIf *pcReadIf )
{
	RNOK( pcReadIf->getFlag( m_bOpPresentFlag, " ActiveViewInfoSei:OpPresentFlag " ) );
	if( m_bOpPresentFlag )
	{
		RNOK( pcReadIf->getUvlc( m_uiOperationPointId, "ActiveViewInfoSei:OperationPointId" ) );
	}
	else
	{
		RNOK( pcReadIf->getUvlc( m_uiNumActiveViewsMinus1, "ActiveViewInfoSei:NumActiveViewsMinus1" ) );
		for( UInt uiIndex = 0; uiIndex <= m_uiNumActiveViewsMinus1; uiIndex++ )
		{
			RNOK( pcReadIf->getUvlc( m_uiViewId[uiIndex], " ActiveViewInfoSei:ViewId " ) );
		}	

	}

	return Err::m_nOK;
}

//////////////////////////////////////////////////////////////////////////
//
//			MULTIVIEW_SCENE_INFO SEI MESSAGE // SEI JVT-W060
//
//////////////////////////////////////////////////////////////////////////
ErrVal
SEI::MultiviewSceneInfoSei::create( MultiviewSceneInfoSei*& rpcSeiMessage )
{
    rpcSeiMessage = new MultiviewSceneInfoSei();
	ROT( NULL == rpcSeiMessage );
	return Err::m_nOK;
}
ErrVal
SEI::MultiviewSceneInfoSei::destroy()
{
    delete this;
	return Err::m_nOK;
}

ErrVal
SEI::MultiviewSceneInfoSei::write( HeaderSymbolWriteIf *pcWriteIf )
{
    UInt uiStartBits  = pcWriteIf->getNumberOfWrittenBits();
	UInt uiPayloadSize = 0;
		
	RNOK( pcWriteIf->writeUvlc( m_uiMaxDisparity, "MultiviewSceneInfoSei:MaxDisparity" ) );
		
	UInt uiBits = pcWriteIf->getNumberOfWrittenBits()-uiStartBits;

	uiPayloadSize = (uiBits+7)/8;

	return Err::m_nOK;
}

ErrVal
SEI::MultiviewSceneInfoSei::read( HeaderSymbolReadIf *pcReadIf )
{
	RNOK( pcReadIf->getUvlc( m_uiMaxDisparity, "MultiviewSceneInfoSei:MaxDisparity" ) );
	
	return Err::m_nOK;
}
//////////////////////////////////////////////////////////////////////////
//
//			MULTIVIEW_ACQUISITION_INFO SEI MESSAGE // SEI JVT-W060
//
//////////////////////////////////////////////////////////////////////////
ErrVal
SEI::MultiviewAcquisitionInfoSei::create( MultiviewAcquisitionInfoSei*& rpcSeiMessage )
{
    rpcSeiMessage = new MultiviewAcquisitionInfoSei();
	ROT( NULL == rpcSeiMessage );
	return Err::m_nOK;
}
ErrVal
SEI::MultiviewAcquisitionInfoSei::destroy()
{
    delete this;
	return Err::m_nOK;
}


ErrVal
SEI::MultiviewAcquisitionInfoSei::write( HeaderSymbolWriteIf *pcWriteIf )// JVT-Z038
{
    UInt uiStartBits  = pcWriteIf->getNumberOfWrittenBits();
	UInt uiPayloadSize = 0;
	UInt uiIndex;
	UInt var_length=0;
	int i,j;
	
	RNOK( pcWriteIf->writeUvlc( m_uiNumViewMinus1, " MultiviewAcquisitionInfoSei:NumViewMinus1 " ) );	
	RNOK( pcWriteIf->writeFlag( m_bIntrinsicParamFlag, " MultiviewAcquisitionInfoSei:IntrinsicParamFlag " ) );
	if ( m_bIntrinsicParamFlag ) {
		RNOK( pcWriteIf->writeFlag( m_bIntrinsicParamsEqual, " MultiviewAcquisitionInfoSei:IntrinsicParamsEqual " ) );
		RNOK( pcWriteIf->writeUvlc( m_uiPrecFocalLength, " MultiviewAcquisitionInfoSei:PrecFocalLength " ) );
		RNOK( pcWriteIf->writeUvlc( m_uiPrecPrincipalPoint, " MultiviewAcquisitionInfoSei:PrecPrincipalPoint " ) );
		RNOK( pcWriteIf->writeUvlc( m_uiPrecRadialDistortion, " MultiviewAcquisitionInfoSei:PrecRadialDistortion " ) );
		for( uiIndex = 0; uiIndex <= m_uiNumViewMinus1; uiIndex++ )
		{ 
			RNOK( pcWriteIf->writeFlag( m_bSignFocalLengthX[uiIndex], " MultiviewAcquisitionInfoSei:SignFocalLengthX " ) );
			RNOK( pcWriteIf->writeCode(m_uiExponentFocalLengthX[uiIndex],6, " MultiviewAcquisitionInfoSei:ExponentFocalLengthX " ) );
			var_length = getVarLength(m_uiExponentFocalLengthX[uiIndex],m_uiPrecFocalLength);
			RNOK( pcWriteIf->writeCode(m_uiMantissaFocalLengthX[uiIndex],var_length, " MultiviewAcquisitionInfoSei:MantissaFocalLengthX " ) );
			RNOK( pcWriteIf->writeFlag( m_bSignFocalLengthY[uiIndex], " MultiviewAcquisitionInfoSei:SignFocalLengthY " ) );
			RNOK( pcWriteIf->writeCode(m_uiExponentFocalLengthY[uiIndex],6, " MultiviewAcquisitionInfoSei:ExponentFocalLengthY " ) );
			var_length = getVarLength(m_uiExponentFocalLengthY[uiIndex],m_uiPrecFocalLength);
			RNOK( pcWriteIf->writeCode(m_uiMantissaFocalLengthY[uiIndex],var_length, " MultiviewAcquisitionInfoSei:MantissaFocalLengthY " ) );
			
			RNOK( pcWriteIf->writeFlag( m_bSignPrincipalPointX[uiIndex], " MultiviewAcquisitionInfoSei:SignPrincipalPointX " ) );
			RNOK( pcWriteIf->writeCode(m_uiExponentPrincipalPointX[uiIndex],6, " MultiviewAcquisitionInfoSei:ExponentPrincipalPointX " ) );
			var_length = getVarLength(m_uiExponentPrincipalPointX[uiIndex],m_uiPrecPrincipalPoint);
			RNOK( pcWriteIf->writeCode(m_uiMantissaPrincipalPointX[uiIndex],var_length, " MultiviewAcquisitionInfoSei:MantissaPrincipalPointX " ) );
			RNOK( pcWriteIf->writeFlag( m_bSignPrincipalPointY[uiIndex], " MultiviewAcquisitionInfoSei:SignPrincipalPointY " ) );
			RNOK( pcWriteIf->writeCode(m_uiExponentPrincipalPointY[uiIndex],6, " MultiviewAcquisitionInfoSei:ExponentPrincipalPointY " ) );
			var_length = getVarLength(m_uiExponentPrincipalPointY[uiIndex],m_uiPrecPrincipalPoint);
			RNOK( pcWriteIf->writeCode(m_uiMantissaPrincipalPointY[uiIndex],var_length, " MultiviewAcquisitionInfoSei:MantissaPrincipalPointY " ) );

			RNOK( pcWriteIf->writeFlag( m_bSignRadialDistortion[uiIndex], " MultiviewAcquisitionInfoSei:SignRadialDistortion " ) );
			RNOK( pcWriteIf->writeCode(m_uiExponentRadialDistortion[uiIndex],6, " MultiviewAcquisitionInfoSei:ExponentRadialDistortion " ) );
			var_length = getVarLength(m_uiExponentRadialDistortion[uiIndex],m_uiPrecRadialDistortion);
			RNOK( pcWriteIf->writeCode(m_uiMantissaRadialDistortion[uiIndex],var_length, " MultiviewAcquisitionInfoSei:MantissaRadialDistortion " ) );
		}
	} 

	RNOK( pcWriteIf->writeFlag( m_bExtrinsicParamFlag, " MultiviewAcquisitionInfoSei:ExtrinsicParamFlag " ) );
	if (m_bExtrinsicParamFlag) {
		RNOK( pcWriteIf->writeUvlc( m_uiPrecRotationParam, " MultiviewAcquisitionInfoSei:PrecRotationParam " ) );
		RNOK( pcWriteIf->writeUvlc( m_uiPrecTranslationParam, " MultiviewAcquisitionInfoSei:PrecTranslationParam " ) );

		for( uiIndex = 0; uiIndex <= m_uiNumViewMinus1; uiIndex++ )
		{			
			for (i=0;i<3;i++)
			{
				RNOK( pcWriteIf->writeFlag( m_bSignTranslationParam[uiIndex][i], " MultiviewAcquisitionInfoSei:SignTranslationParam " ) );
				RNOK( pcWriteIf->writeCode(m_uiExponentTranslationParam[uiIndex][i],6, " MultiviewAcquisitionInfoSei:ExponentTranslationParam " ) );
				var_length = getVarLength(m_uiExponentTranslationParam[uiIndex][i],m_uiPrecTranslationParam);
				RNOK( pcWriteIf->writeCode(m_uiMantissaTranslationParam[uiIndex][i],var_length, " MultiviewAcquisitionInfoSei:MantissaTranslationParam " ) );
				
				for (j=0;j<3;j++) {
					RNOK( pcWriteIf->writeFlag( m_bSignRotationParam[uiIndex][i][j], " MultiviewAcquisitionInfoSei:SignRotationParam " ) );
					RNOK( pcWriteIf->writeCode(m_uiExponentRotationParam[uiIndex][i][j],6, " MultiviewAcquisitionInfoSei:ExponentRotationParam " ) );
					var_length = getVarLength(m_uiExponentRotationParam[uiIndex][i][j],m_uiPrecRotationParam);
					RNOK( pcWriteIf->writeCode(m_uiMantissaRotationParam[uiIndex][i][j],var_length, " MultiviewAcquisitionInfoSei:MantissaRotationParam " ) );				
				}
			}
			
		}	
	}
	
	UInt uiBits = pcWriteIf->getNumberOfWrittenBits()-uiStartBits;

	uiPayloadSize = (uiBits+7)/8;

	return Err::m_nOK;
}
ErrVal
SEI::MultiviewAcquisitionInfoSei::read( HeaderSymbolReadIf *pcReadIf )// JVT-Z038
{
		
	UInt uiIndex;
	UInt var_length;
	int i,j;
		
	
	RNOK( pcReadIf->getUvlc( m_uiNumViewMinus1, " MultiviewAcquisitionInfoSei:NumViewsMinus1 " ) );
	this->initialize_memory( m_uiNumViewMinus1+1);
		
	RNOK( pcReadIf->getFlag( m_bIntrinsicParamFlag, " MultiviewAcquisitionInfoSei:IntrinsicParamFlag " ) );
	if ( m_bIntrinsicParamFlag ) {
		RNOK( pcReadIf->getFlag( m_bIntrinsicParamsEqual, " MultiviewAcquisitionInfoSei:IntrinsicParamsEqual " ) );
		RNOK( pcReadIf->getUvlc( m_uiPrecFocalLength, " MultiviewAcquisitionInfoSei:PrecFocalLength " ) );
		RNOK( pcReadIf->getUvlc( m_uiPrecPrincipalPoint, " MultiviewAcquisitionInfoSei:PrecPrincipalPoint " ) );
		RNOK( pcReadIf->getUvlc( m_uiPrecRadialDistortion, " MultiviewAcquisitionInfoSei:PrecRadialDistortion " ) );	
		for( uiIndex = 0; uiIndex <= m_uiNumViewMinus1; uiIndex++ )
		{
			RNOK( pcReadIf->getFlag( m_bSignFocalLengthX[uiIndex], " MultiviewAcquisitionInfoSei:SignFocalLengthX " ) );
			RNOK( pcReadIf->getCode(m_uiExponentFocalLengthX[uiIndex],6, " MultiviewAcquisitionInfoSei:ExponentFocalLengthX " ) );
			var_length = getVarLength(m_uiExponentFocalLengthX[uiIndex],m_uiPrecFocalLength);
			RNOK( pcReadIf->getCode(m_uiMantissaFocalLengthX[uiIndex],var_length, " MultiviewAcquisitionInfoSei:MantissaFocalLengthX " ) );
			RNOK( pcReadIf->getFlag( m_bSignFocalLengthY[uiIndex], " MultiviewAcquisitionInfoSei:SignFocalLengthY " ) );
			RNOK( pcReadIf->getCode(m_uiExponentFocalLengthY[uiIndex],6, " MultiviewAcquisitionInfoSei:ExponentFocalLengthY " ) );
			var_length = getVarLength(m_uiExponentFocalLengthY[uiIndex],m_uiPrecFocalLength);
			RNOK( pcReadIf->getCode(m_uiMantissaFocalLengthY[uiIndex],var_length, " MultiviewAcquisitionInfoSei:MantissaFocalLengthY " ) );
			
			RNOK( pcReadIf->getFlag( m_bSignPrincipalPointX[uiIndex], " MultiviewAcquisitionInfoSei:SignPrincipalPointX " ) );
			RNOK( pcReadIf->getCode(m_uiExponentPrincipalPointX[uiIndex],6, " MultiviewAcquisitionInfoSei:ExponentPrincipalPointX " ) );
			var_length = getVarLength(m_uiExponentPrincipalPointX[uiIndex],m_uiPrecPrincipalPoint);
			RNOK( pcReadIf->getCode(m_uiMantissaPrincipalPointX[uiIndex],var_length, " MultiviewAcquisitionInfoSei:MantissaPrincipalPointX " ) );
			RNOK( pcReadIf->getFlag( m_bSignPrincipalPointY[uiIndex], " MultiviewAcquisitionInfoSei:SignPrincipalPointY " ) );
			RNOK( pcReadIf->getCode(m_uiExponentPrincipalPointY[uiIndex],6, " MultiviewAcquisitionInfoSei:ExponentPrincipalPointY " ) );
			var_length = getVarLength(m_uiExponentPrincipalPointY[uiIndex],m_uiPrecPrincipalPoint);
			RNOK( pcReadIf->getCode(m_uiMantissaPrincipalPointY[uiIndex],var_length, " MultiviewAcquisitionInfoSei:MantissaPrincipalPointY " ) );

			RNOK( pcReadIf->getFlag( m_bSignRadialDistortion[uiIndex], " MultiviewAcquisitionInfoSei:SignRadialDistortion " ) );
			RNOK( pcReadIf->getCode(m_uiExponentRadialDistortion[uiIndex],6, " MultiviewAcquisitionInfoSei:ExponentRadialDistortion " ) );
			var_length = getVarLength(m_uiExponentRadialDistortion[uiIndex],m_uiPrecRadialDistortion);
			RNOK( pcReadIf->getCode(m_uiMantissaRadialDistortion[uiIndex],var_length, " MultiviewAcquisitionInfoSei:MantissaRadialDistortion " ) );
		}
	}
	RNOK( pcReadIf->getFlag( m_bExtrinsicParamFlag, " MultiviewAcquisitionInfoSei:ExtrinsicParamFlag " ) );
	if (m_bExtrinsicParamFlag) {
		RNOK( pcReadIf->getUvlc( m_uiPrecRotationParam, " MultiviewAcquisitionInfoSei:PrecRotationParam " ) );
		RNOK( pcReadIf->getUvlc( m_uiPrecTranslationParam, " MultiviewAcquisitionInfoSei:PrecTranslationParam " ) );

		for( uiIndex = 0; uiIndex <= m_uiNumViewMinus1; uiIndex++ )
		{			
			for (i=0; i<3; i++) {
				RNOK( pcReadIf->getFlag( m_bSignTranslationParam[uiIndex][i], " MultiviewAcquisitionInfoSei:SignTranslationParam " ) );
				RNOK( pcReadIf->getCode(m_uiExponentTranslationParam[uiIndex][i],6, " MultiviewAcquisitionInfoSei:ExponentTranslationParam " ) );
				var_length = getVarLength(m_uiExponentTranslationParam[uiIndex][i],m_uiPrecTranslationParam);
				RNOK( pcReadIf->getCode(m_uiMantissaTranslationParam[uiIndex][i],var_length, " MultiviewAcquisitionInfoSei:MantissaTranslationParam " ) );
				
				for (j=0; j<3; j++) {
					RNOK( pcReadIf->getFlag( m_bSignRotationParam[uiIndex][i][j], " MultiviewAcquisitionInfoSei:SignRotationParam " ) );
					RNOK( pcReadIf->getCode(m_uiExponentRotationParam[uiIndex][i][j],6, " MultiviewAcquisitionInfoSei:ExponentRotationParam " ) );
					var_length = getVarLength(m_uiExponentRotationParam[uiIndex][i][j],m_uiPrecRotationParam);
					RNOK( pcReadIf->getCode(m_uiMantissaRotationParam[uiIndex][i][j],var_length, " MultiviewAcquisitionInfoSei:MantissaRotationParam " ) );				
				}

			}

		}	
	}
	
	return Err::m_nOK;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?