Skip to content

Commit f0945e7

Browse files
committed
Pass timestamps and sequence numbers
Pass timestamps and sequence numbers from {rgb,depth} stream processors to turbojpeg rgb processor and {cpu,opengl,opencl} depth processors, then to rgb and depth frames. This commit subsumes PR #71 by @hovren and #148 by @MasWag.
1 parent 9c23155 commit f0945e7

9 files changed

+25
-0
lines changed

examples/protonect/include/libfreenect2/depth_packet_processor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace libfreenect2
4040
struct LIBFREENECT2_API DepthPacket
4141
{
4242
uint32_t sequence;
43+
uint32_t timestamp;
4344
unsigned char *buffer;
4445
size_t buffer_length;
4546
};

examples/protonect/include/libfreenect2/frame_listener.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#define FRAME_LISTENER_HPP_
2929

3030
#include <cstddef>
31+
#include <stdint.h>
3132
#include <libfreenect2/config.h>
3233

3334
namespace libfreenect2
@@ -42,6 +43,8 @@ struct LIBFREENECT2_API Frame
4243
Depth = 4
4344
};
4445

46+
uint32_t timestamp;
47+
uint32_t sequence;
4548
size_t width, height, bytes_per_pixel;
4649
unsigned char* data;
4750

examples/protonect/include/libfreenect2/rgb_packet_processor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ struct LIBFREENECT2_API RgbPacket
4141
{
4242
uint32_t sequence;
4343

44+
uint32_t timestamp;
4445
unsigned char *jpeg_buffer;
4546
size_t jpeg_buffer_length;
4647
};

examples/protonect/src/cpu_depth_packet_processor.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,11 @@ void CpuDepthPacketProcessor::process(const DepthPacket &packet)
743743

744744
impl_->startTiming();
745745

746+
impl_->ir_frame->timestamp = packet.timestamp;
747+
impl_->depth_frame->timestamp = packet.timestamp;
748+
impl_->ir_frame->sequence = packet.sequence;
749+
impl_->depth_frame->sequence = packet.sequence;
750+
746751
cv::Mat m = cv::Mat::zeros(424, 512, CV_32FC(9)), m_filtered = cv::Mat::zeros(424, 512, CV_32FC(9)), m_max_edge_test = cv::Mat::ones(424, 512, CV_8UC1);
747752

748753
float *m_ptr = m.ptr<float>();

examples/protonect/src/depth_packet_stream_parser.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ void DepthPacketStreamParser::onDataReceived(unsigned char* buffer, size_t in_le
105105

106106
DepthPacket packet;
107107
packet.sequence = current_sequence_;
108+
packet.timestamp = footer->timestamp;
108109
packet.buffer = buffer_.back().data;
109110
packet.buffer_length = buffer_.back().length;
110111

examples/protonect/src/opencl_depth_packet_processor.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,11 @@ void OpenCLDepthPacketProcessor::process(const DepthPacket &packet)
653653

654654
impl_->startTiming();
655655

656+
impl_->ir_frame->timestamp = packet.timestamp;
657+
impl_->depth_frame->timestamp = packet.timestamp;
658+
impl_->ir_frame->sequence = packet.sequence;
659+
impl_->depth_frame->sequence = packet.sequence;
660+
656661
impl_->run(packet);
657662

658663
impl_->stopTiming();

examples/protonect/src/opengl_depth_packet_processor.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,11 @@ void OpenGLDepthPacketProcessor::process(const DepthPacket &packet)
940940

941941
if(has_listener)
942942
{
943+
ir->timestamp = packet.timestamp;
944+
depth->timestamp = packet.timestamp;
945+
ir->sequence = packet.sequence;
946+
depth->sequence = packet.sequence;
947+
943948
if(!this->listener_->onNewFrame(Frame::Ir, ir))
944949
{
945950
delete ir;

examples/protonect/src/rgb_packet_stream_parser.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ void RgbPacketStreamParser::onDataReceived(unsigned char* buffer, size_t length)
146146
RawRgbPacket *raw_packet = reinterpret_cast<RawRgbPacket *>(bb.data);
147147
RgbPacket rgb_packet;
148148
rgb_packet.sequence = raw_packet->sequence;
149+
rgb_packet.timestamp = footer->timestamp;
149150
rgb_packet.jpeg_buffer = raw_packet->jpeg_buffer;
150151
rgb_packet.jpeg_buffer_length = jpeg_length;
151152

examples/protonect/src/turbo_jpeg_rgb_packet_processor.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ void TurboJpegRgbPacketProcessor::process(const RgbPacket &packet)
112112
{
113113
impl_->startTiming();
114114

115+
impl_->frame->timestamp = packet.timestamp;
116+
impl_->frame->sequence = packet.sequence;
117+
115118
int r = tjDecompress2(impl_->decompressor, packet.jpeg_buffer, packet.jpeg_buffer_length, impl_->frame->data, 1920, 1920 * tjPixelSize[TJPF_BGR], 1080, TJPF_BGR, 0);
116119

117120
if(r == 0)

0 commit comments

Comments
 (0)