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
00080 bool
00081 trigger (int relative_offset = 0);
00082
00083 bool isStreaming () const throw ();
00084
00086 inline bool
00087 hasDataLeft ()
00088 {
00089 return (!player_.IsEOF ());
00090 }
00091
00092 protected:
00093 virtual boost::shared_ptr<Image> getCurrentImage (boost::shared_ptr<xn::ImageMetaData> image_meta_data) const throw ();
00094
00095 void PlayerThreadFunction ();
00096 static void __stdcall NewONIDepthDataAvailable (xn::ProductionNode& node, void* cookie) throw ();
00097 static void __stdcall NewONIImageDataAvailable (xn::ProductionNode& node, void* cookie) throw ();
00098 static void __stdcall NewONIIRDataAvailable (xn::ProductionNode& node, void* cookie) throw ();
00099
00100 xn::Player player_;
00101 boost::thread player_thread_;
00102 mutable boost::mutex player_mutex_;
00103 boost::condition_variable player_condition_;
00104 bool streaming_;
00105 bool depth_stream_running_;
00106 bool image_stream_running_;
00107 bool ir_stream_running_;
00108 };
00109 }
00110 #endif //__OPENNI_DEVICE_ONI__
00111 #endif //HAVE_OPENNI
00112