@@ -37,25 +37,24 @@ namespace libfreenect2
37
37
LIBFREENECT2_PACK (struct RawRgbPacket
38
38
{
39
39
uint32_t sequence;
40
- uint32_t magicHeader ; // is 'BBBB' equal 0x42424242
40
+ uint32_t magic_header ; // is 'BBBB' equal 0x42424242
41
41
42
42
unsigned char jpeg_buffer[0 ];
43
43
});
44
44
45
- struct RgbPacketFooter {
46
- uint32_t magicHeader ; // is '9999' equal 0x39393939
45
+ LIBFREENECT2_PACK ( struct RgbPacketFooter {
46
+ uint32_t magic_header ; // is '9999' equal 0x39393939
47
47
uint32_t sequence;
48
48
int32_t unknown1; // varies from 0 to 60 with steps of 4
49
49
int32_t unknown2; // seems 0 always
50
50
int32_t unknown3; // seems 0 always
51
51
uint32_t timestamp;
52
52
float exposure; // ? ranges from 0.5 to about 60.0 with powerfull light at camera or totally covered
53
53
float gain; // ? ranges from 1.0 when camera is clear to 1.5 when camera is covered.
54
- uint32_t magicFooter ; // is 'BBBB' equal 0x42424242
54
+ uint32_t magic_footer ; // is 'BBBB' equal 0x42424242
55
55
uint32_t packet_size;
56
- float version; // ? this seems to be consistent 1.0
57
- uint8_t unknown4[12 ]; // seems to be 0 all the time.
58
- };
56
+ uint8_t unknown4[16 ]; // seems to be 0 all the time.
57
+ });
59
58
60
59
RgbPacketStreamParser::RgbPacketStreamParser () :
61
60
processor_ (noopProcessor<RgbPacket>())
@@ -86,24 +85,25 @@ void RgbPacketStreamParser::onDataReceived(unsigned char* buffer, size_t length)
86
85
RgbPacketFooter* footer = reinterpret_cast <RgbPacketFooter *>(&buffer[i]);
87
86
88
87
// if magic markers match
89
- if (length - i >= sizeof (RgbPacketFooter) && footer->magicHeader == 0x39393939 && footer->magicFooter == 0x42424242 )
88
+ if (length - i >= sizeof (RgbPacketFooter) && footer->magic_header == 0x39393939 && footer->magic_footer == 0x42424242 )
90
89
{
91
90
memcpy (&fb.data [fb.length ], buffer, length);
92
91
fb.length += length;
93
92
94
- buffer_.swap ();
95
- Buffer &bb = buffer_.back ();
96
- RawRgbPacket *raw_packet = reinterpret_cast <RawRgbPacket *>(bb.data );
93
+ RawRgbPacket *raw_packet = reinterpret_cast <RawRgbPacket *>(fb.data );
97
94
98
- if (bb .length == footer->packet_size && raw_packet->sequence == footer->sequence )
95
+ if (fb .length == footer->packet_size && raw_packet->sequence == footer->sequence )
99
96
{
100
97
if (processor_->ready ())
101
98
{
99
+ buffer_.swap ();
100
+ Buffer &bb = buffer_.back ();
101
+
102
102
RgbPacket rgb_packet;
103
103
rgb_packet.sequence = raw_packet->sequence ;
104
104
rgb_packet.timestamp = footer->timestamp ;
105
105
rgb_packet.jpeg_buffer = raw_packet->jpeg_buffer ;
106
- rgb_packet.jpeg_buffer_length = bb.length - sizeof (RawRgbPacket);
106
+ rgb_packet.jpeg_buffer_length = bb.length - sizeof (RawRgbPacket);
107
107
108
108
// call the processor
109
109
processor_->process (rgb_packet);
0 commit comments