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