/* GStreamer moodbar plugin globals * Copyright (C) 2006 Joseph Rabinoff */ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef __SPECTRUM_H__ #define __SPECTRUM_H__ /* Since fftwspectrum and fftwunspectrum are supposed to be * opposites, they'll be using the same caps: */ #define SPECTRUM_SIGNAL_CAPS "audio/x-raw-float, " \ "rate = (int) [ 1, MAX ], " \ "channels = (int) 1, " \ "endianness = (int) BYTE_ORDER, " \ "width = (int) 64, " \ "signed = (boolean) true" /* audio/x-spectrum-complex-float is an array of complex floats. A * complex float is just a pair (r, i) of a real float and an * imaginary float, each with the specified width. The properties * are as follows: * rate: the rate of the original signal * size: the number of signals processed to make the current buffer * step: the number of signals advanced after the current buffer * width: the size of the real & imaginary parts of the data * endianness: ditto * * Each audio/x-spectrum-complex-float buffer represents the Fourier * transform of size samples, and hence _must_ have exactly * floor(size/2) + 1 complex floats in it; in other words, its * buffer size must be (floor(size/2) + 1) * 2 * sizeof(gfloat) */ #define SPECTRUM_FREQ_CAPS "audio/x-spectrum-complex-float, " \ "rate = (int) [ 1, MAX ], " \ "endianness = (int) BYTE_ORDER, " \ "width = (int) 64, " \ "size = (int) [ 1, MAX ], " \ "step = (int) [ 1, MAX ]" /* Given a band number from a spectrum made from size audio * samples at the given rate, return the frequency that band * corresponds to. */ #define GST_SPECTRUM_BAND_FREQ(band, size, rate) \ (((gfloat)(band))*((gfloat)(rate))/((gfloat)(size))) #ifdef __cplusplus extern "C" { #endif void gstmoodbar_register_static(); #ifdef __cplusplus } #endif #endif /* __SPECTRUM_H__ */