annotate xtract/xtract_vector.h @ 21:44e1a5363745

Further documentation improvements
author Jamie Bullock <jamie@postlude.co.uk>
date Thu, 12 Oct 2006 11:59:11 +0000
parents 8b8d4f1c5fb6
children 4df9012cebf1
rev   line source
jamie@1 1 /* libxtract feature extraction library
jamie@1 2 *
jamie@1 3 * Copyright (C) 2006 Jamie Bullock
jamie@1 4 *
jamie@1 5 * This program is free software; you can redistribute it and/or modify
jamie@1 6 * it under the terms of the GNU General Public License as published by
jamie@1 7 * the Free Software Foundation; either version 2 of the License, or
jamie@1 8 * (at your option) any later version.
jamie@1 9 *
jamie@1 10 * This program is distributed in the hope that it will be useful,
jamie@1 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
jamie@1 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
jamie@1 13 * GNU General Public License for more details.
jamie@1 14 *
jamie@1 15 * You should have received a copy of the GNU General Public License
jamie@1 16 * along with this program; if not, write to the Free Software
jamie@1 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
jamie@1 18 * USA.
jamie@1 19 */
jamie@1 20
jamie@1 21 /* xtract_scalar.h: declares functions that extract a feature as a vector from an input vector */
jamie@1 22
jamie@1 23 #ifndef XTRACT_VECTOR
jamie@1 24 #define XTRACT_VECTOR
jamie@1 25
jamie@1 26 #ifdef __cplusplus
jamie@1 27 extern "C" {
jamie@1 28 #endif
jamie@20 29
jamie@20 30 /**
jamie@20 31 * \defgroup vector extraction functions
jamie@20 32 *
jamie@20 33 * Defines vectorr extraction functions, and their parameters.
jamie@20 34 * @{
jamie@20 35 */
jamie@1 36
jamie@2 37 /** \brief Extract normalized (0-1) frequency domain magnitude spectrum from time domain signal
jamie@2 38 *
jamie@2 39 * \param *data: a pointer to the first element in an array of floats representing an audio vector
jamie@2 40 * \param N: the number of array elements to be considered
jamie@2 41 * \param *argv: a pointer to NULL
jamie@2 42 * \param *result: the magnitude spectrum of N values from the array pointed to by *data
jamie@2 43 */
jamie@1 44 int xtract_magnitude_spectrum(float *data, int N, void *argv, float *result);
jamie@1 45
jamie@1 46
jamie@2 47 /** \brief Extract autocorrelation from time domain signal using time-domain autocorrelation technique
jamie@2 48 *
jamie@2 49 * \param *data: a pointer to the first element in an array of floats representing an audio vector
jamie@2 50 * \param N: the number of array elements to be considered
jamie@2 51 * \param *argv: a pointer to NULL
jamie@2 52 * \param *result: the autocorrelation of N values from the array pointed to by *data
jamie@2 53 */
jamie@1 54 int xtract_autocorrelation(float *data, int N, void *argv, float *result);
jamie@1 55
jamie@2 56 /** \brief Extract autocorrelation from time domain signal using FFT based method
jamie@2 57 *
jamie@2 58 * \param *data: a pointer to the first element in an array of floats representing an audio vector
jamie@2 59 * \param N: the number of array elements to be considered
jamie@2 60 * \param *argv: a pointer to NULL
jamie@2 61 * \param *result: the autocorrelation of N values from the array pointed to by *data
jamie@2 62 */
jamie@1 63 int xtract_autocorrelation_fft(float *data, int N, void *argv, float *result);
jamie@1 64
jamie@2 65 /** \brief Extract Average Magnitude Difference Function from time domain signal
jamie@2 66 *
jamie@2 67 * \param *data: a pointer to the first element in an array of floats
jamie@2 68 * \param N: the number of array elements to be considered
jamie@2 69 * \param *argv: a pointer to NULL
jamie@2 70 * \param *result: the AMDF of N values from the array pointed to by *data
jamie@2 71 */
jamie@1 72 int xtract_amdf(float *data, int N, void *argv, float *result);
jamie@1 73
jamie@2 74 /** \brief Extract Average Squared Difference Function from time domain signal
jamie@2 75 *
jamie@2 76 * \param *data: a pointer to the first element in an array of floats representing an audio vector
jamie@2 77 * \param N: the number of array elements to be considered
jamie@2 78 * \param *argv: a pointer to NULL
jamie@2 79 * \param *result: the ASDF of N values from the array pointed to by *data
jamie@2 80 */
jamie@1 81 int xtract_asdf(float *data, int N, void *argv, float *result);
jamie@1 82
jamie@2 83 /** \brief Extract Mel Frequency Cepstral Coefficients based on a method described by Rabiner
jamie@2 84 *
jamie@2 85 * \param *data: a pointer to the first element in an array of floats
jamie@2 86 * \param N: the number of array elements to be considered
jamie@2 87 * \param *argv: a pointer to a data structure of type xtract_mel_filter, containing n_filters coefficient tables to make up a mel-spaced filterbank
jamie@2 88 * \param *result: a pointer to an array containing the resultant MFCC
jamie@2 89 *
jamie@2 90 * The data structure pointed to by *argv must be obtained by first calling xtract_init_mfcc
jamie@2 91 */
jamie@1 92 int xtract_mfcc(float *data, int N, void *argv, float *result);
jamie@1 93
jamie@2 94 /** \brief Extract Bark band coefficients based on a method
jamie@2 95 * \param *data: a pointer to the first element in an array of floats representing the magnitude spectrum of an audio vector
jamie@2 96 * \param N: the number of array elements to be considered
jamie@2 97 * \param *argv: a pointer to an array of ints representing the limits of each bark band
jamie@2 98 * \param *result: a pointer to an array containing resultant bark coefficients
jamie@2 99 *
jamie@2 100 * The limits array pointed to by *argv must be obtained by first calling xtract_init_bark
jamie@2 101 *
jamie@2 102 */
jamie@1 103 int xtract_bark_coefficients(float *data, int N, void *argv, float *result);
jamie@1 104
jamie@2 105 /** \brief Extract the Discrete Cosine transform of a time domain signal
jamie@2 106 * \param *data: a pointer to the first element in an array of floats representing an audio vector
jamie@2 107 * \param N: the number of array elements to be considered
jamie@2 108 * \param *argv: a pointer to NULL
jamie@2 109 * \param *result: a pointer to an array containing resultant dct coefficients
jamie@2 110 */
jamie@1 111 int xtract_dct(float *data, int N, void *argv, float *result);
jamie@1 112
jamie@2 113 /** \brief Extract the frequency and amplitude of spectral peaks from a of a magnitude spectrum
jamie@2 114 * \param *data: a pointer to the first element in an array of floats representing the magnitude spectrum of an audio vector
jamie@2 115 * \param N: the number of array elements to be considered
jamie@2 116 * \param *argv: a pointer to an array containing peak threshold as percentage below max peak, and sample rate
jamie@2 117 * \param *result: a pointer to an array of size N, containing N/2 freqs and N/2 amplitudes, amplitudes are on a decibel scale with dbFS = 0
jamie@2 118 */
jamie@1 119 int xtract_peaks(float *data, int N, void *argv, float *result);
jamie@20 120
jamie@20 121 /** @} */
jamie@20 122
jamie@1 123 #ifdef __cplusplus
jamie@1 124 }
jamie@1 125 #endif
jamie@1 126
jamie@1 127 #endif