Skip to content

Commit 9b533d4

Browse files
committed
cameras.c: disable depth and IR camera hflip by default
OpenNI sometimes enables the depth camera horizontal flip and leaves the device in that state on close, so then anything using libfreenect gets an hflipped image. This is subpar. The same thing can happen to the IR camera, so I disabled it too. Signed-off-by: Drew Fisher <drew.m.fisher@gmail.com>
1 parent 687b2da commit 9b533d4

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/cameras.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -687,6 +687,7 @@ int freenect_start_depth(freenect_device *dev)
687687
write_register(dev, 0x13, 0x01);
688688
write_register(dev, 0x14, 0x1e);
689689
write_register(dev, 0x06, 0x02); // start depth stream
690+
write_register(dev, 0x17, 0x00); // disable depth hflip
690691

691692
dev->depth.running = 1;
692693
return 0;
@@ -707,6 +708,7 @@ int freenect_start_video(freenect_device *dev)
707708
uint16_t mode_reg, mode_value;
708709
uint16_t res_reg, res_value;
709710
uint16_t fps_reg, fps_value;
711+
uint16_t hflip_reg;
710712

711713
switch(dev->video_format) {
712714
case FREENECT_VIDEO_RGB:
@@ -726,6 +728,7 @@ int freenect_start_video(freenect_device *dev)
726728
mode_reg = 0x0c;
727729
res_reg = 0x0d;
728730
fps_reg = 0x0e;
731+
hflip_reg = 0x47;
729732
break;
730733
case FREENECT_VIDEO_IR_8BIT:
731734
case FREENECT_VIDEO_IR_10BIT:
@@ -758,6 +761,7 @@ int freenect_start_video(freenect_device *dev)
758761
mode_reg = 0x19;
759762
res_reg = 0x1a;
760763
fps_reg = 0x1b;
764+
hflip_reg = 0x48;
761765
break;
762766
case FREENECT_VIDEO_YUV_RGB:
763767
case FREENECT_VIDEO_YUV_RAW:
@@ -772,6 +776,7 @@ int freenect_start_video(freenect_device *dev)
772776
mode_reg = 0x0c;
773777
res_reg = 0x0d;
774778
fps_reg = 0x0e;
779+
hflip_reg = 0x47;
775780
break;
776781
default:
777782
FN_ERROR("freenect_start_video(): called with invalid video format %d\n", dev->video_format);
@@ -825,7 +830,7 @@ int freenect_start_video(freenect_device *dev)
825830
write_register(dev, 0x05, 0x03); // start video stream
826831
break;
827832
}
828-
write_register(dev, 0x47, 0x00); // disable Hflip
833+
write_register(dev, hflip_reg, 0x00); // disable Hflip
829834

830835
dev->video.running = 1;
831836
return 0;

0 commit comments

Comments
 (0)