[Gimp-developer] Is ~30 seconds for 750 × 1200 pixels slow or fast?

2009-12-28 Thread Louise Hoffman
Dear developers,

I am now more or less finished with my plugin which draws spectrograms
from audio signals.

It takes about 30 seconds to draw 750 × 1200 pixels on my 3Ghz.

Is that slow or fast?

The code that does the drawing is this one:

  gboolean s;
  guint8 pixel[] = { 0x00 };

  double d;
  for (int n = 0; n  data-width; n++) {
for (int m = 0; m  data-height; m++) {
  /* make coef_db start from zero */
  d = (data-coef_db)[m+n*data-M] + data-coef_db_min;
  /* quantize so values are from 0 to 255 */
  /* The absolut value of min is added to max */
  pixel[0] = quantize(d, fabs(data-coef_db_min) + data-coef_db_max);
  /* set the pixel */
  /* coef_db have x=0,y=0 at buttom left corner and gimp have 0,0
at top left corner */
  s = gimp_drawable_set_pixel(data-layer, n, data-height - m, 1,
(guint8 *)pixel );
}
  }

  data-display = gimp_display_new(data-image);


...

/* quantize double to 8bit int */
unsigned char quantize(double d, double max) {
  return (unsigned char)((d / max) * 255.0);
}


Hugs,
Louise
___
Gimp-developer mailing list
Gimp-developer@lists.XCF.Berkeley.EDU
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer


Re: [Gimp-developer] Is ~30 seconds for 750 × 1200 pixels slow or fast?

2009-12-28 Thread Tim Chen
I think using gimp_pixel_rgn functions could improve its performance a lot

Please take a look at

http://developer.gimp.org/writing-a-plug-in/2/index.html

HiH,
Tim

On Tue, Dec 29, 2009 at 8:49 AM, Louise Hoffman louise.hoff...@gmail.comwrote:

 Dear developers,

 I am now more or less finished with my plugin which draws spectrograms
 from audio signals.

 It takes about 30 seconds to draw 750 × 1200 pixels on my 3Ghz.

 Is that slow or fast?

 The code that does the drawing is this one:

  gboolean s;
  guint8 pixel[] = { 0x00 };

  double d;
  for (int n = 0; n  data-width; n++) {
for (int m = 0; m  data-height; m++) {
  /* make coef_db start from zero */
  d = (data-coef_db)[m+n*data-M] + data-coef_db_min;
  /* quantize so values are from 0 to 255 */
  /* The absolut value of min is added to max */
  pixel[0] = quantize(d, fabs(data-coef_db_min) + data-coef_db_max);
  /* set the pixel */
  /* coef_db have x=0,y=0 at buttom left corner and gimp have 0,0
 at top left corner */
  s = gimp_drawable_set_pixel(data-layer, n, data-height - m, 1,
 (guint8 *)pixel );
}
  }

  data-display = gimp_display_new(data-image);


 ...

 /* quantize double to 8bit int */
 unsigned char quantize(double d, double max) {
  return (unsigned char)((d / max) * 255.0);
 }


 Hugs,
 Louise
 ___
 Gimp-developer mailing list
 Gimp-developer@lists.XCF.Berkeley.EDU
 https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer

___
Gimp-developer mailing list
Gimp-developer@lists.XCF.Berkeley.EDU
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer