@@ -55,8 +55,8 @@ static int stream_process(freenect_context *ctx, packet_stream *strm, uint8_t *p
55
55
int datalen = len - sizeof (* hdr );
56
56
57
57
if (hdr -> magic [0 ] != 'R' || hdr -> magic [1 ] != 'B' ) {
58
- // this is currently expected on init
59
- FN_DEBUG ( "[Stream %02x] Invalid magic %02x%02x\n" , strm -> flag , hdr -> magic [0 ], hdr -> magic [1 ]);
58
+ FN_LOG ( strm -> valid_frames < 2 ? LL_SPEW : LL_NOTICE , \
59
+ "[Stream %02x] Invalid magic %02x%02x\n" , strm -> flag , hdr -> magic [0 ], hdr -> magic [1 ]);
60
60
return 0 ;
61
61
}
62
62
@@ -84,9 +84,11 @@ static int stream_process(freenect_context *ctx, packet_stream *strm, uint8_t *p
84
84
// handle lost packets
85
85
if (strm -> seq != hdr -> seq ) {
86
86
uint8_t lost = strm -> seq - hdr -> seq ;
87
- FN_INFO ("[Stream %02x] Lost %d packets\n" , strm -> flag , lost );
87
+ FN_LOG (strm -> valid_frames < 2 ? LL_SPEW : LL_INFO , \
88
+ "[Stream %02x] Lost %d packets\n" , strm -> flag , lost );
88
89
if (lost > 5 ) {
89
- FN_NOTICE ("[Stream %02x] Lost too many packets, resyncing...\n" , strm -> flag );
90
+ FN_LOG (strm -> valid_frames < 2 ? LL_SPEW : LL_NOTICE , \
91
+ "[Stream %02x] Lost too many packets, resyncing...\n" , strm -> flag );
90
92
strm -> synced = 0 ;
91
93
return 0 ;
92
94
}
@@ -98,6 +100,7 @@ static int stream_process(freenect_context *ctx, packet_stream *strm, uint8_t *p
98
100
strm -> got_pkts = 0 ;
99
101
got_frame = 1 ;
100
102
strm -> timestamp = strm -> last_timestamp ;
103
+ strm -> valid_frames ++ ;
101
104
} else {
102
105
strm -> pkt_num += lost ;
103
106
}
@@ -107,20 +110,23 @@ static int stream_process(freenect_context *ctx, packet_stream *strm, uint8_t *p
107
110
if (!(strm -> pkt_num == 0 && hdr -> flag == sof ) &&
108
111
!(strm -> pkt_num == strm -> pkts_per_frame - 1 && hdr -> flag == eof ) &&
109
112
!(strm -> pkt_num > 0 && strm -> pkt_num < strm -> pkts_per_frame - 1 && hdr -> flag == mof )) {
110
- FN_NOTICE ("[Stream %02x] Inconsistent flag %02x with %d packets in buf (%d total), resyncing...\n" ,
113
+ FN_LOG (strm -> valid_frames < 2 ? LL_SPEW : LL_NOTICE , \
114
+ "[Stream %02x] Inconsistent flag %02x with %d packets in buf (%d total), resyncing...\n" ,
111
115
strm -> flag , hdr -> flag , strm -> pkt_num , strm -> pkts_per_frame );
112
116
strm -> synced = 0 ;
113
- return 0 ;
117
+ return got_frame ;
114
118
}
115
119
116
120
// copy data
117
121
if (datalen > strm -> pkt_size ) {
118
- FN_WARNING ("[Stream %02x] Expected %d data bytes, but got %d. Dropping...\n" , strm -> flag , strm -> pkt_size , datalen );
119
- return 0 ;
122
+ FN_LOG (strm -> valid_frames < 2 ? LL_SPEW : LL_WARNING , \
123
+ "[Stream %02x] Expected %d data bytes, but got %d. Dropping...\n" , strm -> flag , strm -> pkt_size , datalen );
124
+ return got_frame ;
120
125
}
121
126
122
127
if (datalen != strm -> pkt_size && hdr -> flag != eof )
123
- FN_WARNING ("[Stream %02x] Expected %d data bytes, but got only %d\n" , strm -> flag , strm -> pkt_size , datalen );
128
+ FN_LOG (strm -> valid_frames < 2 ? LL_SPEW : LL_WARNING , \
129
+ "[Stream %02x] Expected %d data bytes, but got only %d\n" , strm -> flag , strm -> pkt_size , datalen );
124
130
125
131
uint8_t * dbuf = strm -> buf + strm -> pkt_num * strm -> pkt_size ;
126
132
memcpy (dbuf , data , datalen );
@@ -136,6 +142,7 @@ static int stream_process(freenect_context *ctx, packet_stream *strm, uint8_t *p
136
142
strm -> valid_pkts = strm -> got_pkts ;
137
143
strm -> got_pkts = 0 ;
138
144
strm -> timestamp = hdr -> timestamp ;
145
+ strm -> valid_frames ++ ;
139
146
return 1 ;
140
147
} else {
141
148
return got_frame ;
@@ -386,6 +393,7 @@ int freenect_start_depth(freenect_device *dev)
386
393
dev -> depth_stream .pkt_size = DEPTH_PKTDSIZE ;
387
394
dev -> depth_stream .synced = 0 ;
388
395
dev -> depth_stream .flag = 0x70 ;
396
+ dev -> depth_stream .valid_frames = 0 ;
389
397
390
398
res = fnusb_start_iso (& dev -> usb_cam , & dev -> depth_isoc , depth_process , 0x82 , NUM_XFERS , PKTS_PER_XFER , DEPTH_PKTBUF );
391
399
if (res < 0 )
@@ -423,6 +431,7 @@ int freenect_start_rgb(freenect_device *dev)
423
431
dev -> rgb_stream .pkt_size = RGB_PKTDSIZE ;
424
432
dev -> rgb_stream .synced = 0 ;
425
433
dev -> rgb_stream .flag = 0x80 ;
434
+ dev -> rgb_stream .valid_frames = 0 ;
426
435
427
436
res = fnusb_start_iso (& dev -> usb_cam , & dev -> rgb_isoc , rgb_process , 0x81 , NUM_XFERS , PKTS_PER_XFER , RGB_PKTBUF );
428
437
if (res < 0 )
0 commit comments