Improve ThreeSixtyFaceConcatenation and ThreeSixtyFaceExtraction

This commit is contained in:
jfmcarreira committed 2019-10-21 15:07:53 +01:00
1 parent 20b6edd667
commit 2933269ea4
4 files changed
+45 -16

No files matched your search

+21 -9
View File
@@ -45,13 +45,17 @@ ThreeSixtyFaceConcatenation::ThreeSixtyFaceConcatenation()
m_uiNumberOfFrames = 1;
m_uiModuleRequirements = CLP_MODULE_REQUIRES_SKIP_WHILE_PLAY | CLP_MODULES_VARIABLE_NUM_FRAMES;
m_cModuleOptions.addOptions() /**/
( "projection", m_uiProjectionType, "Projection [1] \n 1: Cubemap" ) /**/
m_cModuleOptions.addOptions() /**/
( "projection", m_uiProjectionType, "Projection [1] \n 1: Cubemap (6 faces)" ) /**/
( "partitions", m_uiNumberOfPartitionsPerFace, "Number of partitions per face [1]" ) /**/
;
m_uiProjectionType = 1;
m_uiNumberOfPartitionsPerFace = 1;
m_uiFacesX = 0;
m_uiFacesY = 0;
m_pcTmpFrame = NULL;
}
bool ThreeSixtyFaceConcatenation::create( std::vector<CalypFrame*> apcFrameList )
@@ -69,8 +73,8 @@ bool ThreeSixtyFaceConcatenation::create( std::vector<CalypFrame*> apcFrameList
switch( m_uiProjectionType )
{
case 1:
m_uiFacesX = 3;
m_uiFacesY = 2;
m_uiFacesX = 3 * m_uiNumberOfPartitionsPerFace;
m_uiFacesY = 2 * m_uiNumberOfPartitionsPerFace;
break;
default:
assert( 0 );
@@ -88,13 +92,21 @@ CalypFrame* ThreeSixtyFaceConcatenation::process( std::vector<CalypFrame*> apcFr
{
m_pcOutputFrame->reset();
for( unsigned i = 0; i < m_uiFacesX * m_uiFacesY; i++ )
switch( m_uiProjectionType )
{
CalypFrame* pcFrame = apcFrameList[i];
unsigned x = i % m_uiFacesX * pcFrame->getWidth();
unsigned y = i / m_uiFacesX * pcFrame->getHeight();
m_pcOutputFrame->copyTo( pcFrame, x, y );
case 1: // Cube-map
for( unsigned i = 0; i < m_uiFacesX * m_uiFacesY; i++ )
{
CalypFrame* pcFrame = apcFrameList[i];
unsigned x = i % m_uiFacesX * pcFrame->getWidth();
unsigned y = i / m_uiFacesX * pcFrame->getHeight();
m_pcOutputFrame->copyTo( pcFrame, x, y );
}
break;
default:
assert( 0 );
}
return m_pcOutputFrame;
}
+1
View File
@@ -34,6 +34,7 @@ class ThreeSixtyFaceConcatenation : public CalypModuleIf
private:
CalypFrame* m_pcTmpFrame;
unsigned m_uiProjectionType;
unsigned m_uiNumberOfPartitionsPerFace;
unsigned m_uiFacesX;
unsigned m_uiFacesY;
+22 -7
View File
@@ -45,15 +45,19 @@ ThreeSixtyFaceExtraction::ThreeSixtyFaceExtraction()
m_uiNumberOfFrames = 1;
m_uiModuleRequirements = CLP_MODULE_REQUIRES_SKIP_WHILE_PLAY;
m_cModuleOptions.addOptions() /**/
( "faceNum", m_uiFaceNum, "360 proejction face to be outputed [0]" ) /**/
( "projection", m_uiProjectionType, "Projection [1] \n 1: Cubemap" ) /**/
m_cModuleOptions.addOptions() /**/
( "faceNum", m_uiFaceNum, "360 proejction face to be outputed [0]" ) /**/
( "projection", m_uiProjectionType, "Projection [1] \n 1: Cubemap" ) /**/
( "partitions", m_uiNumberOfPartitionsPerFace, "Number of partitions per face [1]" ) /**/
;
m_uiFaceNum = 2;
m_uiProjectionType = 1;
m_uiNumberOfPartitionsPerFace = 1;
m_uiFacesX = 0;
m_uiFacesY = 0;
m_pcTmpFrame = NULL;
}
bool ThreeSixtyFaceExtraction::create( std::vector<CalypFrame*> apcFrameList )
@@ -63,8 +67,8 @@ bool ThreeSixtyFaceExtraction::create( std::vector<CalypFrame*> apcFrameList )
switch( m_uiProjectionType )
{
case 1:
m_uiFacesX = 3;
m_uiFacesY = 2;
m_uiFacesX = 3 * m_uiNumberOfPartitionsPerFace;
m_uiFacesY = 2 * m_uiNumberOfPartitionsPerFace;
break;
default:
assert( 0 );
@@ -82,8 +86,19 @@ CalypFrame* ThreeSixtyFaceExtraction::process( std::vector<CalypFrame*> apcFrame
{
m_pcOutputFrame->reset();
unsigned x = m_uiFaceNum % m_uiFacesX * m_pcOutputFrame->getWidth();
unsigned y = ( m_uiFaceNum / m_uiFacesX ) * m_pcOutputFrame->getHeight();
unsigned x = -1;
unsigned y = -1;
switch( m_uiProjectionType )
{
case 1: // Cube-map
x = m_uiFaceNum % m_uiFacesX * m_pcOutputFrame->getWidth();
y = ( m_uiFaceNum / m_uiFacesX ) * m_pcOutputFrame->getHeight();
break;
default:
assert( 0 );
}
m_pcOutputFrame->copyFrom( apcFrameList[0], x, y );
return m_pcOutputFrame;
}
+1
View File
@@ -35,6 +35,7 @@ private:
CalypFrame* m_pcTmpFrame;
unsigned m_uiFaceNum;
unsigned m_uiProjectionType;
unsigned m_uiNumberOfPartitionsPerFace;
unsigned m_uiFacesX;
unsigned m_uiFacesY;