📄 gopencoder.cpp
字号:
return Err::m_nOK;
}
ErrVal
MCTFEncoder::xDeleteData()
{
UInt uiIndex;
//========== DELETE FRAME MEMORIES ==========
if( m_papcFrame )
{
for( uiIndex = 0; uiIndex <= m_uiMaxGOPSize; uiIndex++ )
{
if( m_papcFrame[ uiIndex ] )
{
//JVT-R057 LA-RDO{
if(m_bLARDOEnable)
m_papcFrame[uiIndex]->uninitChannelDistortion();
//JVT-R057 LA-RDO}
RNOK( m_papcFrame[ uiIndex ]->uninit() );
RNOK( m_papcFrame[ uiIndex ]->destroy() );
m_papcFrame[ uiIndex ] = 0;
}
}
delete [] m_papcFrame;
m_papcFrame = 0;
}
if( m_papcOrgFrame )
{
for( uiIndex = 0; uiIndex <= m_uiMaxGOPSize; uiIndex++ )
{
if( m_papcOrgFrame[ uiIndex ] )
{
RNOK( m_papcOrgFrame[ uiIndex ]->uninit() );
RNOK( m_papcOrgFrame[ uiIndex ]->destroy() );
}
}
delete [] m_papcOrgFrame;
m_papcOrgFrame = 0;
}
if( m_papcBQFrame )
{
for( uiIndex = 0; uiIndex <= m_uiMaxGOPSize; uiIndex++ )
{
if( m_papcBQFrame[ uiIndex ] )
{
RNOK( m_papcBQFrame[ uiIndex ]->uninit() );
RNOK( m_papcBQFrame[ uiIndex ]->destroy() );
m_papcBQFrame[ uiIndex ] = 0;
}
}
delete [] m_papcBQFrame;
m_papcBQFrame = 0;
}
if( m_papcCLRecFrame )
{
for( uiIndex = 0; uiIndex <= m_uiMaxGOPSize; uiIndex++ )
{
if( m_papcCLRecFrame[ uiIndex ] )
{
RNOK( m_papcCLRecFrame[ uiIndex ]->uninit() );
RNOK( m_papcCLRecFrame[ uiIndex ]->destroy() );
m_papcCLRecFrame[ uiIndex ] = 0;
}
}
delete [] m_papcCLRecFrame;
m_papcCLRecFrame = 0;
}
if( m_papcELFrame )
{
for( uiIndex = 0; uiIndex <= m_uiMaxGOPSize; uiIndex++ )
{
if( m_papcELFrame[ uiIndex ] )
{
RNOK( m_papcELFrame[ uiIndex ]->uninit() );
RNOK( m_papcELFrame[ uiIndex ]->destroy() );
m_papcELFrame[ uiIndex ] = 0;
}
}
delete [] m_papcELFrame;
m_papcELFrame = 0;
}
//-- JVT-R091
if ( m_papcSmoothedFrame )
{
for( uiIndex = 0; uiIndex <= m_uiMaxGOPSize; uiIndex++ )
{
if( m_papcSmoothedFrame[ uiIndex ] )
{
RNOK( m_papcSmoothedFrame[ uiIndex ]->uninit() );
RNOK( m_papcSmoothedFrame[ uiIndex ]->destroy() );
m_papcSmoothedFrame[ uiIndex ] = 0;
}
}
delete [] m_papcSmoothedFrame;
m_papcSmoothedFrame = 0;
}
//--
if( m_papcResidual )
{
for( uiIndex = 0; uiIndex <= m_uiMaxGOPSize; uiIndex++ )
{
if( m_papcResidual[ uiIndex ] )
{
RNOK( m_papcResidual[ uiIndex ]->uninit() );
RNOK( m_papcResidual[ uiIndex ]->destroy() );
m_papcResidual[ uiIndex ] = 0;
}
}
delete [] m_papcResidual;
m_papcResidual = 0;
}
if( m_papcSubband )
{
for( uiIndex = 0; uiIndex <= m_uiMaxGOPSize; uiIndex++ )
{
if( m_papcSubband[ uiIndex ] )
{
RNOK( m_papcSubband[ uiIndex ]->uninit() );
RNOK( m_papcSubband[ uiIndex ]->destroy() );
m_papcSubband[ uiIndex ] = 0;
}
}
delete [] m_papcSubband;
m_papcSubband = 0;
}
for( uiIndex = 0; uiIndex < NUM_TMP_FRAMES; uiIndex++ )
{
if( m_apcFrameTemp[ uiIndex ] )
{
RNOK( m_apcFrameTemp[ uiIndex ]->uninit() );
RNOK( m_apcFrameTemp[ uiIndex ]->destroy() );
m_apcFrameTemp[ uiIndex ] = 0;
}
}
for( uiIndex = 0; uiIndex < 2; uiIndex ++ )
{
for( UInt uiLayerIdx = 0; uiLayerIdx < 4; uiLayerIdx++ )
{
if( m_aapcFGSRecon[uiIndex][uiLayerIdx] )
{
RNOK( m_aapcFGSRecon[uiIndex][uiLayerIdx]->uninit() );
RNOK( m_aapcFGSRecon[uiIndex][uiLayerIdx]->destroy() );
m_aapcFGSRecon[uiIndex][uiLayerIdx] = 0;
}
}
}
if( m_aapcFGSPredFrame)
{
RNOK( m_aapcFGSPredFrame->uninit() );
RNOK( m_aapcFGSPredFrame->destroy());
m_aapcFGSPredFrame = 0;
}
if( m_pcLowPassBaseReconstruction )
{
// JVT-R057 LA-RDO{
if(m_bLARDOEnable)
m_pcLowPassBaseReconstruction->uninitChannelDistortion();
// JVT-R057 LA-RDO}
RNOK( m_pcLowPassBaseReconstruction->uninit() );
RNOK( m_pcLowPassBaseReconstruction->destroy() );
m_pcLowPassBaseReconstruction = 0;
}
if( m_pcAnchorFrameOriginal )
{
RNOK( m_pcAnchorFrameOriginal->uninit() );
RNOK( m_pcAnchorFrameOriginal->destroy() );
m_pcAnchorFrameOriginal = 0;
}
if( m_pcAnchorFrameReconstructed )
{
RNOK( m_pcAnchorFrameReconstructed->uninit() );
RNOK( m_pcAnchorFrameReconstructed->destroy() );
m_pcAnchorFrameReconstructed = 0;
}
if( m_pcBaseLayerFrame )
{
RNOK( m_pcBaseLayerFrame->uninit() );
RNOK( m_pcBaseLayerFrame->destroy() );
m_pcBaseLayerFrame = 0;
}
if( m_pcBaseLayerResidual )
{
RNOK( m_pcBaseLayerResidual->uninit() );
RNOK( m_pcBaseLayerResidual->destroy() );
m_pcBaseLayerResidual = 0;
}
//========== DELETE MACROBLOCK DATA MEMORIES (and SLICE HEADER) ==========
if( m_pacControlData )
{
for( uiIndex = 0; uiIndex <= m_uiMaxGOPSize; uiIndex++ )
{
RNOK( m_pacControlData[ uiIndex ].uninitBQData() );
RNOK( m_pacControlData[ uiIndex ].uninitFGSData() );
RNOK( m_pacControlData[ uiIndex ].getMbDataCtrl()->uninitFgsBQData() );
MbDataCtrl* pcMbDataCtrl = m_pacControlData[ uiIndex ].getMbDataCtrl ();
if( pcMbDataCtrl )
{
RNOK( pcMbDataCtrl->uninit() );
}
delete pcMbDataCtrl;
pcMbDataCtrl = 0 ;
SliceHeader* pcSliceHeader = m_pacControlData[ uiIndex ].getSliceHeader( FRAME );
delete pcSliceHeader;
pcSliceHeader = 0 ;
if( m_uiPaff )
{
pcSliceHeader = m_pacControlData[ uiIndex ].getSliceHeader( BOT_FIELD );
delete pcSliceHeader;
pcSliceHeader = 0;
}
if( m_pbFieldPicFlag )
{
delete [] m_pbFieldPicFlag;
m_pbFieldPicFlag = 0;
}
}
delete [] m_pacControlData;
m_pacControlData = 0;
}
// ICU/ETRI FGS_MOT_USE
if( m_pacControlDataEL )
{
for( uiIndex = 0; uiIndex <= m_uiMaxGOPSize; uiIndex++ )
{
RNOK( m_pacControlDataEL[ uiIndex ].uninitBQData() );
RNOK( m_pacControlDataEL[ uiIndex ].uninitFGSData() );
RNOK( m_pacControlDataEL[ uiIndex ].getMbDataCtrl()->uninitFgsBQData() );
MbDataCtrl* pcMbDataCtrlEL = m_pacControlDataEL[ uiIndex ].getMbDataCtrl ();
SliceHeader* pcSliceHeaderEL = m_pacControlDataEL[ uiIndex ].getSliceHeader ();
if( pcMbDataCtrlEL )
{
RNOK( pcMbDataCtrlEL->uninit() );
}
delete pcMbDataCtrlEL;
delete pcSliceHeaderEL;
}
delete [] m_pacControlDataEL;
m_pacControlDataEL = 0;
}
if( m_pcBaseLayerCtrl )
{
RNOK( m_pcBaseLayerCtrl->uninit() );
delete m_pcBaseLayerCtrl;
m_pcBaseLayerCtrl = 0;
}
if( m_pcBaseLayerCtrlField )
{
RNOK( m_pcBaseLayerCtrlField->uninit() );
delete m_pcBaseLayerCtrlField;
m_pcBaseLayerCtrlField = 0;
}
// ICU/ETRI FGS_MOT_USE
if( m_pcBaseLayerCtrlEL )
{
RNOK( m_pcBaseLayerCtrlEL->uninit() );
delete m_pcBaseLayerCtrlEL;
m_pcBaseLayerCtrlEL = 0;
}
//========== DELETE UPDATE WEIGHTS ARRAY and WRITE BUFFER ==========
delete [] m_pucWriteBuffer;
m_pucWriteBuffer = 0;
m_uiWriteBufferSize = 0;
//S051{
delete[] m_auiFrameBits;
//S051}
return Err::m_nOK;
}
ErrVal
MCTFEncoder::uninit()
{
m_bInitDone = false;
xDeleteData();
if( m_pMotionInfoFile )
{
::fclose( m_pMotionInfoFile );
}
if( m_pFGSFile )
{
::fclose( m_pFGSFile );
}
// JVT-S054 (ADD) ->
if( m_puiFirstMbInSlice )
{
free(m_puiFirstMbInSlice);
m_puiFirstMbInSlice = 0;
}
if( m_puiLastMbInSlice )
{
free(m_puiLastMbInSlice);
m_puiLastMbInSlice = 0;
}
// JVT-S054 (ADD) <-
//JVT-U106 Behaviour at slice boundaries{
if(m_pbIntraBLFlag)
{
delete[] m_pbIntraBLFlag;
m_pbIntraBLFlag=NULL;
}
//JVT-U106 Behaviour at slice boundaries{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -