@@ -39,13 +39,28 @@ PacketPipeline::~PacketPipeline()
3939{
4040}
4141
42- void BasePacketPipeline::initialize ()
42+ class BasePacketPipelineComponents
43+ {
44+ public:
45+ RgbPacketStreamParser *rgb_parser_;
46+ DepthPacketStreamParser *depth_parser_;
47+
48+ RgbPacketProcessor *rgb_processor_;
49+ BaseRgbPacketProcessor *async_rgb_processor_;
50+ DepthPacketProcessor *depth_processor_;
51+ BaseDepthPacketProcessor *async_depth_processor_;
52+
53+ ~BasePacketPipelineComponents ();
54+ void initialize (RgbPacketProcessor *rgb, DepthPacketProcessor *depth);
55+ };
56+
57+ void BasePacketPipelineComponents::initialize (RgbPacketProcessor *rgb, DepthPacketProcessor *depth)
4358{
4459 rgb_parser_ = new RgbPacketStreamParser ();
4560 depth_parser_ = new DepthPacketStreamParser ();
4661
47- rgb_processor_ = new TurboJpegRgbPacketProcessor () ;
48- depth_processor_ = createDepthPacketProcessor () ;
62+ rgb_processor_ = rgb ;
63+ depth_processor_ = depth ;
4964
5065 async_rgb_processor_ = new AsyncPacketProcessor<RgbPacket>(rgb_processor_);
5166 async_depth_processor_ = new AsyncPacketProcessor<DepthPacket>(depth_processor_);
@@ -54,7 +69,7 @@ void BasePacketPipeline::initialize()
5469 depth_parser_->setPacketProcessor (async_depth_processor_);
5570}
5671
57- BasePacketPipeline ::~BasePacketPipeline ()
72+ BasePacketPipelineComponents ::~BasePacketPipelineComponents ()
5873{
5974 delete async_rgb_processor_;
6075 delete async_depth_processor_;
@@ -64,72 +79,58 @@ BasePacketPipeline::~BasePacketPipeline()
6479 delete depth_parser_;
6580}
6681
82+ BasePacketPipeline::BasePacketPipeline (): comp_(new BasePacketPipelineComponents()) {}
83+
84+ BasePacketPipeline::~BasePacketPipeline ()
85+ {
86+ delete comp_;
87+ }
88+
6789BasePacketPipeline::PacketParser *BasePacketPipeline::getRgbPacketParser () const
6890{
69- return rgb_parser_;
91+ return comp_-> rgb_parser_ ;
7092}
7193
7294BasePacketPipeline::PacketParser *BasePacketPipeline::getIrPacketParser () const
7395{
74- return depth_parser_;
96+ return comp_-> depth_parser_ ;
7597}
7698
7799RgbPacketProcessor *BasePacketPipeline::getRgbPacketProcessor () const
78100{
79- return rgb_processor_;
101+ return comp_-> rgb_processor_ ;
80102}
81103
82104DepthPacketProcessor *BasePacketPipeline::getDepthPacketProcessor () const
83105{
84- return depth_processor_;
106+ return comp_-> depth_processor_ ;
85107}
86108
87109CpuPacketPipeline::CpuPacketPipeline ()
88110{
89- initialize ();
111+ comp_-> initialize (new TurboJpegRgbPacketProcessor (), new CpuDepthPacketProcessor () );
90112}
91113
92114CpuPacketPipeline::~CpuPacketPipeline () { }
93115
94- DepthPacketProcessor *CpuPacketPipeline::createDepthPacketProcessor ()
95- {
96- CpuDepthPacketProcessor *depth_processor = new CpuDepthPacketProcessor ();
97-
98- return depth_processor;
99- }
100-
101116#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
102117OpenGLPacketPipeline::OpenGLPacketPipeline (void *parent_opengl_context, bool debug) : parent_opengl_context_(parent_opengl_context), debug_(debug)
103118{
104- initialize ();
119+ comp_-> initialize (new TurboJpegRgbPacketProcessor (), new OpenGLDepthPacketProcessor (parent_opengl_context_, debug_) );
105120}
106121
107122OpenGLPacketPipeline::~OpenGLPacketPipeline () { }
108-
109- DepthPacketProcessor *OpenGLPacketPipeline::createDepthPacketProcessor ()
110- {
111- OpenGLDepthPacketProcessor *depth_processor = new OpenGLDepthPacketProcessor (parent_opengl_context_, debug_);
112-
113- return depth_processor;
114- }
115123#endif // LIBFREENECT2_WITH_OPENGL_SUPPORT
116124
117125
118126#ifdef LIBFREENECT2_WITH_OPENCL_SUPPORT
119127
120128OpenCLPacketPipeline::OpenCLPacketPipeline (const int deviceId) : deviceId(deviceId)
121129{
122- initialize ();
130+ comp_-> initialize (new TurboJpegRgbPacketProcessor (), new OpenCLDepthPacketProcessor (deviceId) );
123131}
124132
125133OpenCLPacketPipeline::~OpenCLPacketPipeline () { }
126-
127- DepthPacketProcessor *OpenCLPacketPipeline::createDepthPacketProcessor ()
128- {
129- OpenCLDepthPacketProcessor *depth_processor = new OpenCLDepthPacketProcessor (deviceId);
130-
131- return depth_processor;
132- }
133134#endif // LIBFREENECT2_WITH_OPENCL_SUPPORT
134135
135136} /* namespace libfreenect2 */
0 commit comments