Revision: 8408
          http://playerstage.svn.sourceforge.net/playerstage/?rev=8408&view=rev
Author:   thjc
Date:     2009-11-15 13:06:46 +0000 (Sun, 15 Nov 2009)

Log Message:
-----------
applied patch 2893433: camerav4l2 RGBP mode

Modified Paths:
--------------
    code/player/trunk/server/drivers/camera/v4l2/camerav4l2.cc
    code/player/trunk/server/drivers/camera/v4l2/v4l2.c

Modified: code/player/trunk/server/drivers/camera/v4l2/camerav4l2.cc
===================================================================
--- code/player/trunk/server/drivers/camera/v4l2/camerav4l2.cc  2009-11-15 
13:01:09 UTC (rev 8407)
+++ code/player/trunk/server/drivers/camera/v4l2/camerav4l2.cc  2009-11-15 
13:06:46 UTC (rev 8408)
@@ -65,7 +65,7 @@
 
 - norm (string)
   - Default: "NTSC"
-  - Capture format; "NTSC" or "PAL"
+  - Capture format; "NTSC", "PAL" or "UNKNOWN"
   - Case sensitive!
 
 - size (integer tuple)
@@ -80,6 +80,7 @@
   - Default: "BGR3"
   - Desired capture mode.  Can be one of:
     - GREY (8-bit monochrome)
+    - RGBP (16-bit packed; will produce 24-bit color images)
     - BGR3, RGB3 (24-bit RGB)
     - BGR4, RGB4 (32-bit RGB; will produce 24-bit color images)
     - BA81 (for sn9c1xx-based USB webcams)
@@ -336,6 +337,10 @@
   {
     this->format = PLAYER_CAMERA_FORMAT_MONO8;
     this->bpp = 8;
+  } else if (!(strcmp(this->mode, "RGBP")))
+  {
+    this->format = PLAYER_CAMERA_FORMAT_RGB888;
+    this->bpp = 24;
   } else if (!(strcmp(this->mode, "BGR3")))
   {
     this->format = PLAYER_CAMERA_FORMAT_RGB888;

Modified: code/player/trunk/server/drivers/camera/v4l2/v4l2.c
===================================================================
--- code/player/trunk/server/drivers/camera/v4l2/v4l2.c 2009-11-15 13:01:09 UTC 
(rev 8407)
+++ code/player/trunk/server/drivers/camera/v4l2/v4l2.c 2009-11-15 13:06:46 UTC 
(rev 8408)
@@ -165,6 +165,8 @@
  const unsigned char * buf;
  unsigned char * img;
  int count, insize;
+ unsigned char table5[] = { 0, 8, 16, 25, 33, 41, 49,  58, 66, 74, 82, 90, 99, 
107, 115, 123, 132, 140, 148, 156, 165, 173, 181, 189,  197, 206, 214, 222, 
230, 239, 247, 255 };
+ unsigned char table6[] = { 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 45, 49, 
53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97, 101,  105, 109, 113, 117, 121, 
125, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 
190, 194, 198, 202, 206, 210, 215, 219, 223, 227, 231, 235, 239, 243, 247, 251, 
255 };
 
  if ((!(FG(fg)->grabbing)) || (!(FG(fg)->image))) return NULL;
  memset(&(FG(fg)->buffers[FG(fg)->grab_number].buffer), 0, sizeof 
FG(fg)->buffers[FG(fg)->grab_number].buffer);
@@ -188,6 +190,19 @@
   bayer2rgb24(FG(fg)->bayerbuf, 
FG(fg)->buffers[FG(fg)->grab_number].video_map, FG(fg)->width, FG(fg)->height);
   buf = FG(fg)->bayerbuf;
   grabdepth = 3;
+ } else if ((FG(fg)->pixformat) == v4l2_fmtbyname("RGBP"))
+ {
+  if (!(FG(fg)->bayerbuf)) return NULL;
+  img = FG(fg)->bayerbuf;
+  for (i = 0; i < (FG(fg)->pixels); i++)
+  {
+    img[0] = table5[(buf[1]) >> 3];
+    img[1] = table6[(((buf[1]) & 7) << 3) | ((buf[0]) >> 5)];
+    img[2] = table5[(buf[0]) & 0xe0];
+    img += 3; buf += 2;
+  }
+  buf = FG(fg)->bayerbuf;
+  grabdepth = 3;
  }
  img = FG(fg)->image;
  if ((FG(fg)->pixformat) == v4l2_fmtbyname("MJPG"))
@@ -342,6 +357,19 @@
  {
   fg->r = 0; fg->g = 0; fg->b = 0;
   fg->depth = 1;
+ } else if ((fg->pixformat) == v4l2_fmtbyname("RGBP"))
+ {
+  fg->depth = 2;
+  fg->r = 0; fg->g = 1; fg->b = 2;
+  fg->bayerbuf_size = width * height * 3;
+  fg->bayerbuf = malloc(fg->bayerbuf_size);
+  if (!(fg->bayerbuf))
+  {
+   fprintf(stderr, "out of memory\n");
+   fg->bayerbuf_size = 0;
+   free(fg);
+   return NULL;
+  }
  } else if ((fg->pixformat) == v4l2_fmtbyname("BGR3"))
  {
   fg->r = 2; fg->g = 1; fg->b = 0;


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Playerstage-commit mailing list
Playerstage-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to