spectrum: Fix min and max for bands property
authorNicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Mon, 16 Feb 2015 02:34:28 +0000 (21:34 -0500)
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Mon, 16 Feb 2015 02:34:28 +0000 (21:34 -0500)
The number of FFTs is calculated with the following formula:

  guint nfft = 2 * bands - 2;

nfft is passed to gst_fft_f32_new() as the len argument and is of type
unsigned integer. This method required that len is at leas 1, then
maximum G_MAXINT, as other values would be negative. If we extrapolate
from the formula above it means we need "bands" to be between 2 and
((guint)G_MAXINT + 2) / 2).

https://bugzilla.gnome.org/show_bug.cgi?id=744213

gst/spectrum/gstspectrum.c

index 72242dc..563c4f0 100644 (file)
@@ -201,7 +201,7 @@ gst_spectrum_class_init (GstSpectrumClass * klass)
 
   g_object_class_install_property (gobject_class, PROP_BANDS,
       g_param_spec_uint ("bands", "Bands", "Number of frequency bands",
-          0, G_MAXUINT, DEFAULT_BANDS,
+          2, ((guint) G_MAXINT + 2) / 2, DEFAULT_BANDS,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_THRESHOLD,