From ad33219b84251465f72d97e753ce8e705ab95bad Mon Sep 17 00:00:00 2001 From: Chadwick Boulay Date: Wed, 11 Mar 2015 14:37:03 -0400 Subject: [PATCH 1/3] Changes to camera_control using PS3EYEDriver for Windows and OSX. Setting red and blue balance values does not work well with PS3EYEDriver. Comment out for now. --- examples/c/test_tracker.c | 5 +++++ src/tracker/platform/camera_control_macosx.c | 21 +++++++++++++++++--- src/tracker/platform/camera_control_win32.c | 18 +++++++++++++++++ src/tracker/psmove_tracker.c | 10 ++++++++-- 4 files changed, 49 insertions(+), 5 deletions(-) diff --git a/examples/c/test_tracker.c b/examples/c/test_tracker.c index 9c115c20..0afe77f2 100644 --- a/examples/c/test_tracker.c +++ b/examples/c/test_tracker.c @@ -56,6 +56,11 @@ int main(int arg, char** args) { fprintf(stderr, "Trying to init PSMoveTracker..."); PSMoveTracker* tracker = psmove_tracker_new(); + if (!tracker) + { + fprintf(stderr, "Could not init PSMoveTracker.\n"); + return 1; + } psmove_tracker_set_mirror(tracker, PSMove_True); fprintf(stderr, "OK\n"); diff --git a/src/tracker/platform/camera_control_macosx.c b/src/tracker/platform/camera_control_macosx.c index 0066414a..84a35ad5 100644 --- a/src/tracker/platform/camera_control_macosx.c +++ b/src/tracker/platform/camera_control_macosx.c @@ -27,7 +27,7 @@ **/ #include "../camera_control.h" - +#include "../camera_control_private.h" #include "psmove_osxsupport.h" void @@ -44,8 +44,23 @@ camera_control_set_parameters(CameraControl* cc, int contrast, int brightness) { #if defined(CAMERA_CONTROL_USE_PS3EYE_DRIVER) - // TODO: Implement setting those parameters on cc->eye - psmove_WARNING("Unimplemented: Setting of PS3EYEDriver parameters\n"); + //autoE... setAutoExposure not defined in ps3eye.h + ps3eye_set_parameter(cc->eye, PS3EYE_AUTO_GAIN, autoG > 0); + ps3eye_set_parameter(cc->eye, PS3EYE_AUTO_WHITEBALANCE, autoWB > 0); + ps3eye_set_parameter(cc->eye, PS3EYE_EXPOSURE, round((511 * exposure) / 0xFFFF)); + ps3eye_set_parameter(cc->eye, PS3EYE_GAIN, round((79 * gain) / 0xFFFF)); + //ps3eye_set_parameter(cc->eye, PS3EYE_REDBALANCE, round((255 * wbRed) / 0xFFFF)); + //wbGreen... setGreenBalance not defined in ps3eye.h + //ps3eye_set_parameter(cc->eye, PS3EYE_BLUEBALANCE, round((255 * wbBlue) / 0xFFFF)); + //ps3eye_set_parameter(cc->eye, PS3EYE_CONTRAST, contrast); // Transform unknown. + //ps3eye_set_parameter(cc->eye, PS3EYE_BRIGHTNESS, brightness); // Transform unknown. + + /** The following parameters could be set but are not passed into this function: + * ps3eye_set_parameter(cc->eye, PS3EYE_SHARPNESS, ??); + * ps3eye_set_parameter(cc->eye, PS3EYE_HUE, ??); + * ps3eye_set_parameter(cc->eye, PS3EYE_HFLIP, ??); + * ps3eye_set_parameter(cc->eye, PS3EYE_VFLIP, ??); + **/ #else macosx_camera_set_exposure_lock(1); #endif diff --git a/src/tracker/platform/camera_control_win32.c b/src/tracker/platform/camera_control_win32.c index 322e79c9..6b26d3c8 100644 --- a/src/tracker/platform/camera_control_win32.c +++ b/src/tracker/platform/camera_control_win32.c @@ -181,6 +181,24 @@ void camera_control_set_parameters(CameraControl* cc, int autoE, int autoG, int cvReleaseCapture(&cc->capture); } + //autoE... setAutoExposure not defined in ps3eye.h + ps3eye_set_parameter(cc->eye, PS3EYE_AUTO_GAIN, autoG > 0); + ps3eye_set_parameter(cc->eye, PS3EYE_AUTO_WHITEBALANCE, autoWB > 0); + ps3eye_set_parameter(cc->eye, PS3EYE_EXPOSURE, round((511 * exposure) / 0xFFFF)); + ps3eye_set_parameter(cc->eye, PS3EYE_GAIN, round((79 * gain) / 0xFFFF)); + //ps3eye_set_parameter(cc->eye, PS3EYE_REDBALANCE, round((255 * wbRed) / 0xFFFF)); + //wbGreen... setGreenBalance not defined in ps3eye.h + //ps3eye_set_parameter(cc->eye, PS3EYE_BLUEBALANCE, round((255 * wbBlue) / 0xFFFF)); + //ps3eye_set_parameter(cc->eye, PS3EYE_CONTRAST, contrast); // Transform unknown. + //ps3eye_set_parameter(cc->eye, PS3EYE_BRIGHTNESS, brightness); // Transform unknown. + + /** The following parameters could be set but are not passed into this function: + * ps3eye_set_parameter(cc->eye, PS3EYE_SHARPNESS, ??); + * ps3eye_set_parameter(cc->eye, PS3EYE_HUE, ??); + * ps3eye_set_parameter(cc->eye, PS3EYE_HFLIP, ??); + * ps3eye_set_parameter(cc->eye, PS3EYE_VFLIP, ??); + **/ + int width, height; get_metrics(&width, &height); diff --git a/src/tracker/psmove_tracker.c b/src/tracker/psmove_tracker.c index 4ea8139e..d13ab164 100644 --- a/src/tracker/psmove_tracker.c +++ b/src/tracker/psmove_tracker.c @@ -563,11 +563,17 @@ psmove_tracker_new_with_camera(int camera) { #endif // start the video capture device for tracking - tracker->cc = camera_control_new(camera); + tracker->cc = camera_control_new(camera); // Returns NULL if no control found. + // e.g. PS3EYE set during compile but not plugged in. + if (!tracker->cc) + { + free(tracker); + return NULL; + } char *intrinsics_xml = psmove_util_get_file_path(INTRINSICS_XML); char *distortion_xml = psmove_util_get_file_path(DISTORTION_XML); - camera_control_read_calibration(tracker->cc, intrinsics_xml, distortion_xml); + camera_control_read_calibration(tracker->cc, intrinsics_xml, distortion_xml); // Crashes if cc is NULL free(intrinsics_xml); free(distortion_xml); From 6ba182d8bde4e1da87026f7899cb326eea611020 Mon Sep 17 00:00:00 2001 From: Chadwick Boulay Date: Mon, 25 May 2015 11:47:26 -0400 Subject: [PATCH 2/3] Removed outdated comment. --- src/tracker/psmove_tracker.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tracker/psmove_tracker.c b/src/tracker/psmove_tracker.c index d13ab164..52782555 100644 --- a/src/tracker/psmove_tracker.c +++ b/src/tracker/psmove_tracker.c @@ -573,7 +573,7 @@ psmove_tracker_new_with_camera(int camera) { char *intrinsics_xml = psmove_util_get_file_path(INTRINSICS_XML); char *distortion_xml = psmove_util_get_file_path(DISTORTION_XML); - camera_control_read_calibration(tracker->cc, intrinsics_xml, distortion_xml); // Crashes if cc is NULL + camera_control_read_calibration(tracker->cc, intrinsics_xml, distortion_xml); free(intrinsics_xml); free(distortion_xml); From 1556d46d47ebd95737d344358a97c59fe73f0e5b Mon Sep 17 00:00:00 2001 From: Chadwick Boulay Date: Wed, 27 May 2015 00:02:45 -0400 Subject: [PATCH 3/3] Updating PS3EYEDriver to latest commit that includes Windows fixes and green balance. --- external/PS3EYEDriver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/PS3EYEDriver b/external/PS3EYEDriver index 39ee96f1..16b20abf 160000 --- a/external/PS3EYEDriver +++ b/external/PS3EYEDriver @@ -1 +1 @@ -Subproject commit 39ee96f1b8b6071c211bb9e1cef79f08bc207ff0 +Subproject commit 16b20abf55ba79a3bcfe041670a1fa903ec84c19