Ejemplo n.º 1
0
 // Do not call directly, even in child
 void DepthCallback(void *_depth, uint32_t timestamp)
 {
     Mutex::ScopedLock lock(m_depth_mutex);
     uint16_t* depth = static_cast<uint16_t*>(_depth);
     copy(depth, depth+getDepthBufferSize()/2, m_buffer_depth.begin());
     m_new_depth_frame = true;
 }
Ejemplo n.º 2
0
/*!
 * \brief called if usb depth event in Freenect::m_thread.
 * \param [out] _depth points buffer where to save usb incoming depth frame.
 * \param timestamp internal use to synchronize video & depth frames.
 * \see libfreenect.hpp Freenect::Freenect
 */
void Apikinect::DepthCallback(void *_depth, uint32_t timestamp)
{
    std::lock_guard<std::mutex> lock(m_depth_mutex);//lock will be destroyed when exit DepthCallback
    uint16_t* depth = static_cast<uint16_t*>(_depth);
    copy(depth, depth+getDepthBufferSize()/2, m_buffer_depth.begin());
    m_new_depth_frame = true;
}
 // Do not call directly even in child
 void DepthCallback(void* _depth, uint32_t timestamp) {
         m_depth_mutex.lock();
         uint16_t* depth = static_cast<uint16_t*>(_depth);
         // was getVideoBufferSize()
         std::copy(depth, depth+getDepthBufferSize(), m_buffer_depth.begin());
         m_new_depth_frame = true;
         m_depth_mutex.unlock();
 }
        MyFreenectDevice(freenect_context *_ctx, int _index)
                : Freenect::FreenectDevice(_ctx, _index), m_buffer_depth(getDepthBufferSize()),m_buffer_video(getVideoBufferSize()), m_gamma(2048), m_new_rgb_frame(false), m_new_depth_frame(false)
        {
    
            for( unsigned int i = 0 ; i < 2048 ; i++) {
                    float v = i/2048.0;
                    v = std::pow(v, 3)* 6;
                    m_gamma[i] = v*6*256;
            }


        }
 uint16_t getDepthBufferSize16() 
 {
     return getDepthBufferSize()/2;
 }