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 + -
显示快捷键?