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

Reply via email to