Skip to content

Commit 7b83c7f

Browse files
smokhovxlz
authored andcommitted
Add envvar LIBFREENECT2_PIPELINE to select pipeline
1 parent bc4b9a2 commit 7b83c7f

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

src/libfreenect2.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -898,8 +898,37 @@ bool Freenect2DeviceImpl::close()
898898
return true;
899899
}
900900

901+
PacketPipeline *createPacketPipelineByName(std::string name)
902+
{
903+
#if defined(LIBFREENECT2_WITH_OPENGL_SUPPORT)
904+
if (name == "gl")
905+
return new OpenGLPacketPipeline();
906+
#endif
907+
#if defined(LIBFREENECT2_WITH_CUDA_SUPPORT)
908+
if (name == "cuda")
909+
return new CudaPacketPipeline();
910+
#endif
911+
#if defined(LIBFREENECT2_WITH_OPENCL_SUPPORT)
912+
if (name == "cl")
913+
return new OpenCLPacketPipeline();
914+
#endif
915+
if (name == "cpu")
916+
return new CpuPacketPipeline();
917+
return NULL;
918+
}
919+
901920
PacketPipeline *createDefaultPacketPipeline()
902921
{
922+
const char *pipeline_env = std::getenv("LIBFREENECT2_PIPELINE");
923+
if (pipeline_env)
924+
{
925+
PacketPipeline *pipeline = createPacketPipelineByName(pipeline_env);
926+
if (pipeline)
927+
return pipeline;
928+
else
929+
LOG_WARNING << "`" << pipeline_env << "' pipeline is not available.";
930+
}
931+
903932
#if defined(LIBFREENECT2_WITH_OPENGL_SUPPORT)
904933
return new OpenGLPacketPipeline();
905934
#elif defined(LIBFREENECT2_WITH_CUDA_SUPPORT)

src/openni2/DeviceDriver.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,9 @@ namespace Freenect2Driver
500500
WriteMessage("Opening device " + std::string(uri));
501501
int id = uri_to_devid(iter->first.uri);
502502
DeviceImpl* device = new DeviceImpl(id);
503-
device->setFreenect2Device(freenect2.openDevice(id)); // XXX, detault pipeline // const PacketPipeline *factory);
503+
// The LIBFREENECT2_PIPELINE variable allows to select
504+
// the non-default pipeline
505+
device->setFreenect2Device(freenect2.openDevice(id));
504506
device->setConfigStrings(config);
505507
iter->second = device;
506508
return device;

0 commit comments

Comments
 (0)