Revision: 7611
http://playerstage.svn.sourceforge.net/playerstage/?rev=7611&view=rev
Author: gbiggs
Date: 2009-05-01 07:53:14 +0000 (Fri, 01 May 2009)
Log Message:
-----------
Applied patch #2781201
Modified Paths:
--------------
code/player/trunk/server/drivers/blobfinder/cmvision/P2CMV.cc
Modified: code/player/trunk/server/drivers/blobfinder/cmvision/P2CMV.cc
===================================================================
--- code/player/trunk/server/drivers/blobfinder/cmvision/P2CMV.cc
2009-05-01 07:51:31 UTC (rev 7610)
+++ code/player/trunk/server/drivers/blobfinder/cmvision/P2CMV.cc
2009-05-01 07:53:14 UTC (rev 7611)
@@ -115,6 +115,7 @@
#include <stdlib.h> /* for atexit(3),atoi(3) */
#include <pthread.h> /* for pthread stuff */
#include <math.h> /* for rint */
+#include <stddef.h> /* for size_t and NULL */
#include <libplayercore/playercore.h>
#include <libplayercore/error.h>
@@ -421,9 +422,18 @@
//assert(hdr->size == sizeof(player_camera_data_t));
player_camera_data_t* camera_data = reinterpret_cast<player_camera_data_t
*>(data);
uint8_t* ptr;
+ uint8_t* ptr1;
+ size_t mSize;
+ int i;
assert(camera_data);
+ if (camera_data->format != PLAYER_CAMERA_FORMAT_RGB888)
+ {
+ PLAYER_ERROR("No support for formats other than
PLAYER_CAMERA_FORMAT_RGB888");
+ return(-1);
+ }
+
#if !HAVE_JPEG
if (camera_data->compression == PLAYER_CAMERA_COMPRESS_JPEG)
{
@@ -432,7 +442,6 @@
}
#endif
- assert(camera_data->bpp == 24);
if ((camera_data->width) && (camera_data->height))
{
if ((mWidth != camera_data->width) || (mHeight != camera_data->height)
|| (!mImg) || (!mTmp))
@@ -442,21 +451,46 @@
if (mImg) delete []mImg; mImg = NULL;
if (mTmp) delete []mTmp; mTmp = NULL;
// we need to allocate some memory
- if (!mImg) mImg = new uint8_t[mWidth*mHeight*2];
- if (!mTmp) mTmp = new uint8_t[mWidth*mHeight*3];
+ if (!mImg) mImg = new uint8_t[mWidth * mHeight * 2];
+ if (!mTmp) mTmp = new uint8_t[mWidth * mHeight * 3];
}
- ptr = camera_data->image;
+ ptr = NULL;
if (camera_data->compression == PLAYER_CAMERA_COMPRESS_JPEG)
{
+ assert(camera_data->bpp == 24);
#if HAVE_JPEG
- jpeg_decompress((unsigned char*)mTmp,
- mWidth*mHeight*3,
+ jpeg_decompress(reinterpret_cast<unsigned char *>(mTmp),
+ mWidth * mHeight * 3,
camera_data->image,
camera_data->image_count
);
#endif
ptr = mTmp;
+ } else switch (camera_data->bpp)
+ {
+ case 24:
+ ptr = camera_data->image;
+ break;
+ case 32:
+ ptr = camera_data->image;
+ ptr1 = mTmp;
+ mSize = camera_data->width * camera_data->height;
+ for (i = 0; i < static_cast<int>(mSize); i++)
+ {
+ ptr1[0] = ptr[0];
+ ptr1[1] = ptr[1];
+ ptr1[2] = ptr[2];
+ ptr += 4;
+ ptr1 += 3;
+ }
+ ptr = mTmp;
+ break;
+ default:
+ PLAYER_ERROR1("Unsupported depth %u", camera_data->bpp);
+ return(-1);
}
+ assert(ptr);
+
// now deal with the data
rgb2uyvy(ptr, mImg, mWidth*mHeight);
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations
Conference from O'Reilly Media. Velocity features a full day of
expert-led, hands-on workshops and two days of sessions from industry
leaders in dedicated Performance & Operations tracks. Use code vel09scf
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit