GSOC Midterm report
With the midterm evaluation behind us I thought it would be useful to post a update on the progress on the camera module for Mac OSX. The current version on github can read a frame from the camera and copy it to the surface. There is still something wrong with the colors, this has probably something to do with the masks in surf->format. I have tried out some combination but non seem to work, so if you have suggestion on how to get the colors write please post them on the pygame mailinglist.
I have thoroughly cleaned up the camera_mac.m file and have removed all Cocoa code because it caused to many problems. Only the mac_gworld_to_nsimage used Cocoa so I didn’t have to trow away too much code. The following functions are now available:
- mac_list_cameras()
- mac_open_device ()
- mac_init_device()
- mac_close_device()
- mac_start_capturing()
- mac_stop_capturing ()
-
mac_read_raw()
note: When I try to print the string I get nothing, this is probably because of a \0 byte in the array. - mac_read_frame()
- mac_camera_idle()
-
mac_copy_gworld_to_surface()
note: This function gives
The PyCameraObject struct has altered a bit because I don’t use a ImageSequence anymore because it was easier to get the frame copy the frame directly instead of recording a frame into a sequence and then decompressing a frame out of it. In addition to removing the ImageSequence I make use of the ‘buffer struct’. Here is the current PyCameraObject struct:
typedef struct {
PyObject_HEAD
char* device_name; // unique name of the device
SeqGrabComponent component; // A type used by the Sequence Grabber API
SGChannel channel; // Channel of the Sequence Grabber
GWorldPtr gworld; // Pointer to the struct that holds the
// data of the captured image
Rect boundsRect; // bounds of the image frame
long size; // size of the image in our buffer to draw
short bytes; // number of bytes in gworld
struct buffer pixels; // pixels
} PyCameraObject;
A usual you can find the latest version on github.com/ab3 so if you would like to test the latest changes or would like to help with the color problem or the read_raw function, you are always welcome.
ToDo
Here is a list of thing I still have to do:
- fix the colors of read_frame()
- fix read_raw()
- implement set_controller() and get_controller()
- add simple computer vision stuff
- thresholding with hysteresis *…
- optimization, sbggr8_to_rgb???
- implement proof of concept game…
Conclusion
So this concludes my midterm report, feel free to post any bugs, comments and suggestions