Update of /cvsroot/playerstage/code/player/server/drivers/camera/compress
In directory
sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18421/server/drivers/camera/compress
Modified Files:
cameracompress.cc
Log Message:
applied patch 1815600
Index: cameracompress.cc
===================================================================
RCS file:
/cvsroot/playerstage/code/player/server/drivers/camera/compress/cameracompress.cc,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** cameracompress.cc 23 Aug 2007 19:58:43 -0000 1.16
--- cameracompress.cc 18 Oct 2007 22:33:27 -0000 1.17
***************
*** 118,121 ****
--- 118,122 ----
// Output (compressed) camera data
private: player_camera_data_t data;
+ private: int valid;
// Image quality for JPEG compression
***************
*** 155,158 ****
--- 156,160 ----
this->save = cf->ReadInt(section,"save",0);
this->quality = cf->ReadFloat(section, "image_quality", 0.8);
+ this->valid = 0;
return;
***************
*** 206,209 ****
--- 208,212 ----
assert(hdr->size >= sizeof(player_camera_data_t));
player_camera_data_t * recv = reinterpret_cast<player_camera_data_t * >
(data);
+ /* now we can deal with already compressed camera images
if (recv->compression != PLAYER_CAMERA_COMPRESS_RAW)
{
***************
*** 211,214 ****
--- 214,218 ----
return -1;
}
+ */
ProcessImage(*recv);
return 0;
***************
*** 240,303 ****
int i, l;
! switch (rawdata.bpp)
{
! case 8:
! l = (rawdata.width) * (rawdata.height);
! ptr = this->converted;
! ptr1 = (char *)(rawdata.image);
! for (i = 0; i < l; i++)
! {
! ptr[0] = *ptr1;
! ptr[1] = *ptr1;
! ptr[2] = *ptr1;
! ptr += 3; ptr1++;
! }
! ptr = this->converted;
! break;
! case 24:
! ptr = (char *)(rawdata.image);
! break;
! case 32:
! l = (rawdata.width) * (rawdata.height);
! ptr = this->converted;
! ptr1 = (char *)(rawdata.image);
! for (i = 0; i < l; i++)
{
! ptr[0] = ptr1[0];
! ptr[1] = ptr1[1];
! ptr[2] = ptr1[2];
! ptr += 3; ptr1 += 4;
}
! ptr = this->converted;
! break;
! default:
! PLAYER_WARN("unsupported image depth (not good)");
! return;
}
- this->data.image_count = jpeg_compress( (char*)this->data.image,
- ptr,
- rawdata.width,
- rawdata.height,
- PLAYER_CAMERA_IMAGE_SIZE,
- (int)(this->quality*100));
-
if (this->save)
{
! snprintf(filename, sizeof(filename), "click-%04d.ppm",this->frameno++);
FILE *fp = fopen(filename, "w+");
! fwrite (this->data.image, 1, this->data.image_count, fp);
fclose(fp);
}
size = sizeof(this->data) - sizeof(this->data.image) +
this->data.image_count;
-
- this->data.width = (rawdata.width);
- this->data.height = (rawdata.height);
- this->data.bpp = 24;
- this->data.format = PLAYER_CAMERA_FORMAT_RGB888;
- this->data.compression = PLAYER_CAMERA_COMPRESS_JPEG;
- this->data.image_count = (this->data.image_count);
Publish(device_addr, PLAYER_MSGTYPE_DATA, PLAYER_CAMERA_DATA_STATE, (void*)
&this->data, size, &this->camera_time);
!
}
--- 244,320 ----
int i, l;
! if ((rawdata.width <= 0) || (rawdata.height <= 0))
{
! if (!(this->valid)) return;
! } else if (rawdata.compression == PLAYER_CAMERA_COMPRESS_RAW)
! {
! switch (rawdata.bpp)
{
! case 8:
! l = (rawdata.width) * (rawdata.height);
! ptr = this->converted;
! ptr1 = (char *)(rawdata.image);
! for (i = 0; i < l; i++)
! {
! ptr[0] = *ptr1;
! ptr[1] = *ptr1;
! ptr[2] = *ptr1;
! ptr += 3; ptr1++;
! }
! ptr = this->converted;
! break;
! case 24:
! ptr = (char *)(rawdata.image);
! break;
! case 32:
! l = (rawdata.width) * (rawdata.height);
! ptr = this->converted;
! ptr1 = (char *)(rawdata.image);
! for (i = 0; i < l; i++)
! {
! ptr[0] = ptr1[0];
! ptr[1] = ptr1[1];
! ptr[2] = ptr1[2];
! ptr += 3; ptr1 += 4;
! }
! ptr = this->converted;
! break;
! default:
! PLAYER_WARN("unsupported image depth (not good)");
! return;
}
! this->data.image_count = jpeg_compress( (char*)this->data.image,
! ptr,
! rawdata.width,
! rawdata.height,
! PLAYER_CAMERA_IMAGE_SIZE,
! (int)(this->quality*100));
! this->data.width = (rawdata.width);
! this->data.height = (rawdata.height);
! this->data.bpp = 24;
! this->data.format = PLAYER_CAMERA_FORMAT_RGB888;
! this->data.compression = PLAYER_CAMERA_COMPRESS_JPEG;
! this->data.image_count = (this->data.image_count);
! } else
! {
! memcpy(this->data.image, rawdata.image, rawdata.image_count);
! this->data.width = (rawdata.width);
! this->data.height = (rawdata.height);
! this->data.bpp = (rawdata.bpp);
! this->data.format = (rawdata.format);
! this->data.compression = (rawdata.compression);
! this->data.image_count = (rawdata.image_count);
}
if (this->save)
{
! snprintf(filename, sizeof(filename), "click-%04d.jpeg",this->frameno++);
FILE *fp = fopen(filename, "w+");
! fwrite(this->data.image, 1, this->data.image_count, fp);
fclose(fp);
}
size = sizeof(this->data) - sizeof(this->data.image) +
this->data.image_count;
Publish(device_addr, PLAYER_MSGTYPE_DATA, PLAYER_CAMERA_DATA_STATE, (void*)
&this->data, size, &this->camera_time);
! this->valid = !0;
}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit