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
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit