From: <sl...@ke...> - 2009-01-14 15:44:43
|
CVS Root: /cvs/gstreamer Module: gst-plugins-good Changes by: slomo Date: Wed Jan 14 2009 15:44:32 UTC Log message: * gst/spectrum/gstspectrum.c: (gst_spectrum_transform_ip): * gst/spectrum/gstspectrum.h: Use correct types for frame/fft counters and some minor cleanup. Modified files: . : ChangeLog gst/spectrum : gstspectrum.c gstspectrum.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/ChangeLog.diff?r1=1.3898&r2=1.3899 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/gst/spectrum/gstspectrum.c.diff?r1=1.51&r2=1.52 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/gst/spectrum/gstspectrum.h.diff?r1=1.15&r2=1.16 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/ChangeLog,v retrieving revision 1.3898 retrieving revision 1.3899 diff -u -d -r1.3898 -r1.3899 --- ChangeLog 14 Jan 2009 15:37:05 -0000 1.3898 +++ ChangeLog 14 Jan 2009 15:44:15 -0000 1.3899 @@ -1,5 +1,12 @@ 2009-01-14 Sebastian Dröge <seb...@co...> + * gst/spectrum/gstspectrum.c: (gst_spectrum_transform_ip): + * gst/spectrum/gstspectrum.h: + Use correct types for frame/fft counters and some minor + cleanup. + +2009-01-14 Sebastian Dröge <seb...@co...> Patch by: Lennart Poettering <lennart at poettering dot net> * ext/pulse/pulseprobe.c: (gst_pulseprobe_new), Index: gstspectrum.c RCS file: /cvs/gstreamer/gst-plugins-good/gst/spectrum/gstspectrum.c,v retrieving revision 1.51 retrieving revision 1.52 diff -u -d -r1.51 -r1.52 --- gstspectrum.c 14 Jan 2009 10:46:53 -0000 1.51 +++ gstspectrum.c 14 Jan 2009 15:44:18 -0000 1.52 @@ -482,6 +482,8 @@ gfloat *spect_magnitude; gfloat *spect_phase; GstFFTF32 *fft_ctx; + const guint8 *data = GST_BUFFER_DATA (buffer); + guint size = GST_BUFFER_SIZE (buffer); GST_LOG_OBJECT (spectrum, "input size: %d bytes", GST_BUFFER_SIZE (buffer)); @@ -490,9 +492,6 @@ gst_spectrum_reset_state (spectrum); } - /* Create a subbuffer to allow us to overwrite the buffer metadata later */ - buffer = gst_buffer_create_sub (buffer, 0, GST_BUFFER_SIZE (buffer)); - /* If we don't have a FFT context yet get one and * allocate memory for everything */ @@ -521,26 +520,26 @@ spect_phase = spectrum->spect_phase; fft_ctx = spectrum->fft_ctx; - while (GST_BUFFER_SIZE (buffer) >= width * channels) { + while (size >= width * channels) { /* Move the current frame into our ringbuffer and * take the average of all channels */ spectrum->input[spectrum->input_pos] = 0.0; if (fp && width == 4) { - gfloat *in = (gfloat *) GST_BUFFER_DATA (buffer); + gfloat *in = (gfloat *) data; for (i = 0; i < channels; i++) spectrum->input[spectrum->input_pos] += in[i]; } else if (fp && width == 8) { - gdouble *in = (gdouble *) GST_BUFFER_DATA (buffer); + gdouble *in = (gdouble *) data; } else if (!fp && width == 4) { - gint32 *in = (gint32 *) GST_BUFFER_DATA (buffer); + gint32 *in = (gint32 *) data; spectrum->input[spectrum->input_pos] += ((gfloat) in[i]) / G_MAXINT32; } else if (!fp && width == 2) { - gint16 *in = (gint16 *) GST_BUFFER_DATA (buffer); + gint16 *in = (gint16 *) data; spectrum->input[spectrum->input_pos] += ((gfloat) in[i]) / G_MAXINT16; } else { @@ -548,8 +547,8 @@ } spectrum->input[spectrum->input_pos] /= channels; - GST_BUFFER_DATA (buffer) += width * channels; - GST_BUFFER_SIZE (buffer) -= width * channels; + data += width * channels; + size -= width * channels; spectrum->input_pos = (spectrum->input_pos + 1) % nfft; spectrum->num_frames++; @@ -612,9 +611,7 @@ - g_assert (GST_BUFFER_SIZE (buffer) == 0); - gst_buffer_unref (buffer); + g_assert (size == 0); return GST_FLOW_OK; } Index: gstspectrum.h RCS file: /cvs/gstreamer/gst-plugins-good/gst/spectrum/gstspectrum.h,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- gstspectrum.h 14 Jan 2009 10:46:54 -0000 1.15 +++ gstspectrum.h 14 Jan 2009 15:44:18 -0000 1.16 @@ -49,9 +49,9 @@ guint bands; /* number of spectrum bands */ gint threshold; /* energy level treshold */ - guint num_frames; /* frame count (1 sample per channel) + guint64 num_frames; /* frame count (1 sample per channel) * since last emit */ - guint num_fft; /* number of FFTs since last emit */ + guint64 num_fft; /* number of FFTs since last emit */ GstClockTime message_ts; /* starttime for next message */ /* <private> */ |