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@217
|
6 %include stdint.i
|
jamie@87
|
7
|
jamie@87
|
8 %{
|
jamie@87
|
9 #include "xtract/xtract_scalar.h"
|
jamie@103
|
10 #include "xtract/xtract_vector.h"
|
jamie@107
|
11 #include "xtract/xtract_helper.h"
|
jamie@110
|
12 #include "xtract/xtract_macros.h"
|
jamie@110
|
13 #include "xtract/xtract_delta.h"
|
jamie@217
|
14 #include "xtract/xtract_stateful.h"
|
jamie@103
|
15 #include "xtract/libxtract.h"
|
jamie@87
|
16 %}
|
jamie@87
|
17
|
jamie@217
|
18
|
jamie@110
|
19 /* Helper functions */
|
jamie@110
|
20 %inline %{
|
jamie@110
|
21
|
jamie@154
|
22 void *doublea_to_voidp(double f[])
|
jamie@133
|
23 {
|
jamie@133
|
24 return (void *)f;
|
jamie@133
|
25 }
|
jamie@133
|
26
|
jamie@110
|
27 xtract_function_descriptor_t
|
jamie@110
|
28 *get_descriptor(xtract_function_descriptor_t *fd, int i){
|
jamie@110
|
29
|
jamie@110
|
30 return &fd[i];
|
jamie@110
|
31 }
|
jamie@110
|
32
|
jamie@110
|
33 /* Return a pointer to memory allocated for a mel filterbank */
|
jamie@110
|
34 xtract_mel_filter *create_filterbank(int n_filters, int blocksize){
|
jamie@110
|
35
|
jamie@154
|
36 double **filters;
|
jamie@110
|
37 xtract_mel_filter *mf;
|
jamie@110
|
38 int n, N;
|
jamie@110
|
39
|
jamie@110
|
40 N = blocksize;
|
jamie@110
|
41
|
jamie@110
|
42 mf = malloc(sizeof(xtract_mel_filter));
|
jamie@110
|
43 mf->n_filters = n_filters;
|
jamie@110
|
44
|
jamie@154
|
45 filters = (double **)malloc(n_filters * sizeof(double *));
|
jamie@110
|
46
|
jamie@110
|
47 for(n = 0; n < n_filters; n++)
|
jamie@154
|
48 filters[n] = (double *)malloc(N * sizeof(double));
|
jamie@110
|
49
|
jamie@110
|
50 mf->filters = filters;
|
jamie@110
|
51
|
jamie@110
|
52 return mf;
|
jamie@110
|
53
|
jamie@110
|
54 }
|
jamie@110
|
55
|
jamie@110
|
56 /* Free a mel filterbank */
|
jamie@110
|
57 void destroy_filterbank(xtract_mel_filter *filterbank){
|
jamie@110
|
58
|
jamie@110
|
59 int i = filterbank->n_filters;
|
jamie@154
|
60 double **filters;
|
jamie@110
|
61
|
jamie@110
|
62 filters = filterbank->filters;
|
jamie@110
|
63
|
jamie@110
|
64 while(i--)
|
jamie@110
|
65 free(filters[i]);
|
jamie@110
|
66
|
jamie@110
|
67 free(filters);
|
jamie@110
|
68
|
jamie@110
|
69 free(filterbank);
|
jamie@110
|
70
|
jamie@110
|
71 }
|
jamie@110
|
72
|
jamie@110
|
73 %}
|
jamie@110
|
74
|
jamie@144
|
75 #ifndef SWIGJAVA
|
jamie@154
|
76 %array_class(double, doubleArray);
|
jamie@110
|
77 %array_class(int, intArray);
|
jamie@144
|
78 #endif
|
jamie@154
|
79 %apply double *OUTPUT { double *result };
|
jamie@133
|
80
|
jamie@87
|
81
|
jamie@103
|
82 %ignore xtract;
|
jamie@103
|
83
|
jamie@217
|
84 /* For now ignore stateful functions */
|
jamie@217
|
85 %ignore xtract_last_n;
|
jamie@217
|
86 %ignore xtract_last_n_state_new;
|
jamie@217
|
87 %ignore xtract_last_n_state_delete;
|
jamie@217
|
88
|
jamie@217
|
89
|
jamie@87
|
90 %include "xtract/xtract_scalar.h"
|
jamie@103
|
91
|
jamie@110
|
92 /* We have to put xtract_delta declarations inline because it contains a mixture of vector and scalar functions */
|
jamie@110
|
93 %inline %{
|
jamie@110
|
94
|
jamie@154
|
95 int xtract_flux(const double *data, const int N, const void *argv , double *result);
|
jamie@154
|
96 int xtract_lnorm(const double *data, const int N, const void *argv , double *result);
|
jamie@110
|
97
|
jamie@110
|
98 %}
|
jamie@110
|
99
|
jamie@154
|
100 %clear double *result;
|
jamie@103
|
101
|
jamie@110
|
102 %inline %{
|
jamie@110
|
103
|
jamie@154
|
104 int xtract_difference_vector(const double *data, const int N, const void *argv, double *result);
|
jamie@110
|
105
|
jamie@110
|
106 %}
|
jamie@110
|
107
|
jamie@217
|
108
|
jamie@103
|
109 %include "xtract/xtract_vector.h"
|
jamie@217
|
110 %include "xtract/xtract_stateful.h"
|
jamie@107
|
111 %include "xtract/xtract_helper.h"
|
jamie@110
|
112 %include "xtract/xtract_macros.h"
|
jamie@103
|
113 %include "xtract/libxtract.h"
|
jamie@110
|
114
|
jamie@110
|
115
|