diff -up ./utils/playercam/playercam.c.fixplayercam ./utils/playercam/playercam.c --- ./utils/playercam/playercam.c.fixplayercam 2010-10-03 23:22:45.197406018 -0400 +++ ./utils/playercam/playercam.c 2011-01-08 09:23:56.329551970 -0500 @@ -21,7 +21,7 @@ * Desc: PlayerCam * Author: Brad Kratochvil * Date: 20050902 - * CVS: $Id: playercam.c 8799 2010-06-28 04:12:42Z jpgr87 $ + * CVS: $Id: playercam.c 8968 2010-11-15 03:06:34Z jpgr87 $ *************************************************************************/ /** @ingroup utils */ @@ -413,17 +413,20 @@ player_init(int argc, char *argv[]) // Decompress the image csize = g_camera->image_count; playerc_camera_decompress(g_camera); - usize = g_camera->image_count; + usize = g_camera->image_count; + g_print("camera: [w %d h %d d %d] [%d/%d bytes]\n", g_camera->width, g_camera->height, g_camera->bpp, csize, usize); g_width = g_camera->width; g_height = g_camera->height; - if (allocated_size != usize) + + int buffsize = g_camera->width * g_camera->height * 3; + if (allocated_size != buffsize) { - g_img = realloc(g_img, usize); - allocated_size = usize; + g_img = realloc(g_img, buffsize); + allocated_size = buffsize; } } else // try the blobfinder @@ -467,7 +470,7 @@ player_update() { // Decompress the image if necessary playerc_camera_decompress(g_camera); - assert(allocated_size > g_camera->image_count*3); + assert(allocated_size >= g_camera->image_count); // figure out the colorspace switch (g_camera->format) { @@ -485,11 +488,11 @@ player_update() { int j = 0; // Transform to MONO8 - for (i = 0; i < g_camera->image_count; i++, j+=2) + for (i = 0; i < g_camera->image_count/2; i++, j+=2) { - g_img[i*3+1] = g_img[i*3+2] = g_img[i*3+3] = - ((unsigned char)(g_camera->image[j]) << 8) + - (unsigned char)(g_camera->image[j+1]); + g_img[i*3] = g_img[i*3+1] = g_img[i*3+2] = + ((unsigned char)(g_camera->image[j]));// << 8) + +// (unsigned char)(g_camera->image[j+1]); } break; }