annotate swig/xtract.i @ 185:03f1045e1911

Add noise test source to simpletest. Add xtract_flux() example to simpletest
author Jamie Bullock <jamie@jamiebullock.com>
date Tue, 16 Jul 2013 20:52:45 +0100
parents 826eb46b2f91
children 66f8547eb796
rev   line source
jamie@87 1 %module xtract
jamie@133 2 %include typemaps.i
jamie@144 3 #ifndef SWIGJAVA
jamie@144 4 %include carrays.i
jamie@144 5 #endif
jamie@87 6
jamie@87 7 %{
jamie@87 8 #include "xtract/xtract_scalar.h"
jamie@103 9 #include "xtract/xtract_vector.h"
jamie@107 10 #include "xtract/xtract_helper.h"
jamie@110 11 #include "xtract/xtract_macros.h"
jamie@110 12 #include "xtract/xtract_delta.h"
jamie@103 13 #include "xtract/libxtract.h"
jamie@87 14 %}
jamie@87 15
jamie@110 16 /* Helper functions */
jamie@110 17 %inline %{
jamie@110 18
jamie@154 19 void *doublea_to_voidp(double f[])
jamie@133 20 {
jamie@133 21 return (void *)f;
jamie@133 22 }
jamie@133 23
jamie@110 24 xtract_function_descriptor_t
jamie@110 25 *get_descriptor(xtract_function_descriptor_t *fd, int i){
jamie@110 26
jamie@110 27 return &fd[i];
jamie@110 28 }
jamie@110 29
jamie@110 30 /* Return a pointer to memory allocated for a mel filterbank */
jamie@110 31 xtract_mel_filter *create_filterbank(int n_filters, int blocksize){
jamie@110 32
jamie@154 33 double **filters;
jamie@110 34 xtract_mel_filter *mf;
jamie@110 35 int n, N;
jamie@110 36
jamie@110 37 N = blocksize;
jamie@110 38
jamie@110 39 mf = malloc(sizeof(xtract_mel_filter));
jamie@110 40 mf->n_filters = n_filters;
jamie@110 41
jamie@154 42 filters = (double **)malloc(n_filters * sizeof(double *));
jamie@110 43
jamie@110 44 for(n = 0; n < n_filters; n++)
jamie@154 45 filters[n] = (double *)malloc(N * sizeof(double));
jamie@110 46
jamie@110 47 mf->filters = filters;
jamie@110 48
jamie@110 49 return mf;
jamie@110 50
jamie@110 51 }
jamie@110 52
jamie@110 53 /* Free a mel filterbank */
jamie@110 54 void destroy_filterbank(xtract_mel_filter *filterbank){
jamie@110 55
jamie@110 56 int i = filterbank->n_filters;
jamie@154 57 double **filters;
jamie@110 58
jamie@110 59 filters = filterbank->filters;
jamie@110 60
jamie@110 61 while(i--)
jamie@110 62 free(filters[i]);
jamie@110 63
jamie@110 64 free(filters);
jamie@110 65
jamie@110 66 free(filterbank);
jamie@110 67
jamie@110 68 }
jamie@110 69
jamie@110 70 %}
jamie@110 71
jamie@144 72 #ifndef SWIGJAVA
jamie@154 73 %array_class(double, doubleArray);
jamie@110 74 %array_class(int, intArray);
jamie@144 75 #endif
jamie@154 76 %apply double *OUTPUT { double *result };
jamie@133 77
jamie@87 78
jamie@103 79 %ignore xtract;
jamie@103 80
jamie@87 81 %include "xtract/xtract_scalar.h"
jamie@103 82
jamie@110 83 /* We have to put xtract_delta declarations inline because it contains a mixture of vector and scalar functions */
jamie@110 84 %inline %{
jamie@110 85
jamie@154 86 int xtract_flux(const double *data, const int N, const void *argv , double *result);
jamie@154 87 int xtract_lnorm(const double *data, const int N, const void *argv , double *result);
jamie@110 88
jamie@110 89 %}
jamie@110 90
jamie@154 91 %clear double *result;
jamie@103 92
jamie@110 93 %inline %{
jamie@110 94
jamie@154 95 int xtract_difference_vector(const double *data, const int N, const void *argv, double *result);
jamie@110 96
jamie@110 97 %}
jamie@110 98
jamie@103 99 %include "xtract/xtract_vector.h"
jamie@107 100 %include "xtract/xtract_helper.h"
jamie@110 101 %include "xtract/xtract_macros.h"
jamie@103 102 %include "xtract/libxtract.h"
jamie@110 103
jamie@110 104