Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include <pcl/pcl_config.h>
00038 #ifdef HAVE_OPENNI
00039
00040 #ifndef __OPENNI_DEVICE_ONI__
00041 #define __OPENNI_DEVICE_ONI__
00042
00043 #include "openni_device.h"
00044 #include "openni_driver.h"
00045
00046 namespace openni_wrapper
00047 {
00048
00055 class DeviceONI : public OpenNIDevice
00056 {
00057 friend class OpenNIDriver;
00058 public:
00059 DeviceONI (xn::Context& context, const std::string& file_name, bool repeat = false, bool streaming = true);
00060 virtual ~DeviceONI () throw ();
00061
00062 virtual void startImageStream ();
00063 virtual void stopImageStream ();
00064
00065 virtual void startDepthStream ();
00066 virtual void stopDepthStream ();
00067
00068 virtual void startIRStream ();
00069 virtual void stopIRStream ();
00070
00071 virtual bool isImageStreamRunning () const throw ();
00072 virtual bool isDepthStreamRunning () const throw ();
00073 virtual bool isIRStreamRunning () const throw ();
00074
00075 virtual bool isImageResizeSupported (unsigned input_width, unsigned input_height, unsigned output_width, unsigned output_height) const throw ();
00076
00077 bool trigger ();
00078 bool isStreaming () const throw ();
00079 protected:
00080 virtual boost::shared_ptr<Image> getCurrentImage (boost::shared_ptr<xn::ImageMetaData> image_meta_data) const throw ();
00081
00082 void PlayerThreadFunction ();
00083 static void __stdcall NewONIDepthDataAvailable (xn::ProductionNode& node, void* cookie) throw ();
00084 static void __stdcall NewONIImageDataAvailable (xn::ProductionNode& node, void* cookie) throw ();
00085 static void __stdcall NewONIIRDataAvailable (xn::ProductionNode& node, void* cookie) throw ();
00086
00087 xn::Player player_;
00088 boost::thread player_thread_;
00089 mutable boost::mutex player_mutex_;
00090 boost::condition_variable player_condition_;
00091 bool streaming_;
00092 bool depth_stream_running_;
00093 bool image_stream_running_;
00094 bool ir_stream_running_;
00095 } ;
00096
00097 }
00098 #endif //__OPENNI_DEVICE_ONI__
00099 #endif //HAVE_OPENNI
00100