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