Add module to reverse transform from video to cube map projection

Add module and fix bug in CalypFrame and add new feature to modules API 3
This commit is contained in:
2019-02-20 23:26:28 +00:00
parent ca562ae9f4
commit c47192f5f3
9 changed files with 196 additions and 34 deletions
+20 -22
View File
@@ -36,19 +36,17 @@ ThreeSixtySpatialtoTemporal::ThreeSixtySpatialtoTemporal()
m_uiNumberOfFrames = 1;
m_uiModuleRequirements = CLP_MODULE_REQUIRES_SKIP_WHILE_PLAY;
m_pcFrameProcessed = NULL;
uiFacesX = 3;
uiFacesY = 2;
m_uiFacesX = 3;
m_uiFacesY = 2;
flush();
}
bool ThreeSixtySpatialtoTemporal::flush()
{
m_iFrameBufferCount = 0;
uiCopyX = 0;
uiCopyY = 0;
CalypModuleIf::flush();
m_uiCopyX = 0;
m_uiCopyY = 0;
return true;
};
@@ -68,10 +66,10 @@ bool ThreeSixtySpatialtoTemporal::create( std::vector<CalypFrame*> apcFrameList
unsigned int iWidth;
unsigned int iHeight;
iWidth = apcFrameList[0]->getWidth() / uiFacesX;
iHeight = apcFrameList[0]->getHeight() / uiFacesY;
iWidth = apcFrameList[0]->getWidth() / m_uiFacesX;
iHeight = apcFrameList[0]->getHeight() / m_uiFacesY;
m_pcFrameProcessed = new CalypFrame( iWidth, iHeight, apcFrameList[0]->getPelFormat(),
m_pcOutputFrame = new CalypFrame( iWidth, iHeight, apcFrameList[0]->getPelFormat(),
apcFrameList[0]->getBitsPel() );
m_pcTmpFrame = new CalypFrame( apcFrameList[0]->getWidth(), apcFrameList[0]->getHeight(), apcFrameList[0]->getPelFormat(),
@@ -86,30 +84,30 @@ CalypFrame* ThreeSixtySpatialtoTemporal::process( std::vector<CalypFrame*> apcFr
if( m_iFrameBufferCount == 0 )
{
m_pcTmpFrame->copyFrom( apcFrameList[0] );
uiCopyX = 0;
uiCopyY = 0;
m_uiCopyX = 0;
m_uiCopyY = 0;
m_iFrameBufferCount = uiFacesX * uiFacesY;
m_iFrameBufferCount = m_uiFacesX * m_uiFacesY;
}
m_pcFrameProcessed->copyFrom( m_pcTmpFrame, uiCopyX, uiCopyY );
m_pcOutputFrame->copyFrom( m_pcTmpFrame, m_uiCopyX, m_uiCopyY );
m_iFrameBufferCount--;
uiCopyX += m_pcFrameProcessed->getWidth();
if( uiCopyX >= m_pcTmpFrame->getWidth() )
m_uiCopyX += m_pcOutputFrame->getWidth();
if( m_uiCopyX >= m_pcTmpFrame->getWidth() )
{
uiCopyX = 0;
uiCopyY += m_pcFrameProcessed->getHeight();
m_uiCopyX = 0;
m_uiCopyY += m_pcOutputFrame->getHeight();
}
return m_pcFrameProcessed;
return m_pcOutputFrame;
}
void ThreeSixtySpatialtoTemporal::destroy()
{
if( m_pcFrameProcessed )
delete m_pcFrameProcessed;
m_pcFrameProcessed = NULL;
if( m_pcOutputFrame )
delete m_pcOutputFrame;
m_pcOutputFrame = NULL;
if( m_pcTmpFrame )
delete m_pcTmpFrame;
m_pcTmpFrame = NULL;