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@134
|
16 /*
|
jamie@133
|
17 %typemap(javabase) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [],
|
jamie@133
|
18 SWIGTYPE (CLASS::*) "SWIG"
|
jamie@133
|
19
|
jamie@133
|
20 %typemap(javacode) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [],
|
jamie@133
|
21 SWIGTYPE (CLASS::*) %{
|
jamie@133
|
22 protected long getPointer() {
|
jamie@133
|
23 return swigCPtr;
|
jamie@133
|
24 }
|
jamie@133
|
25 %}
|
jamie@134
|
26 */
|
jamie@110
|
27 /* Helper functions */
|
jamie@110
|
28 %inline %{
|
jamie@110
|
29
|
jamie@133
|
30 void *floata_to_voidp(float f[])
|
jamie@133
|
31 {
|
jamie@133
|
32 return (void *)f;
|
jamie@133
|
33 }
|
jamie@133
|
34
|
jamie@110
|
35 xtract_function_descriptor_t
|
jamie@110
|
36 *get_descriptor(xtract_function_descriptor_t *fd, int i){
|
jamie@110
|
37
|
jamie@110
|
38 return &fd[i];
|
jamie@110
|
39 }
|
jamie@110
|
40
|
jamie@110
|
41 /* Return a pointer to memory allocated for a mel filterbank */
|
jamie@110
|
42 xtract_mel_filter *create_filterbank(int n_filters, int blocksize){
|
jamie@110
|
43
|
jamie@110
|
44 float **filters;
|
jamie@110
|
45 xtract_mel_filter *mf;
|
jamie@110
|
46 int n, N;
|
jamie@110
|
47
|
jamie@110
|
48 N = blocksize;
|
jamie@110
|
49
|
jamie@110
|
50 mf = malloc(sizeof(xtract_mel_filter));
|
jamie@110
|
51 mf->n_filters = n_filters;
|
jamie@110
|
52
|
jamie@110
|
53 filters = (float **)malloc(n_filters * sizeof(float *));
|
jamie@110
|
54
|
jamie@110
|
55 for(n = 0; n < n_filters; n++)
|
jamie@110
|
56 filters[n] = (float *)malloc(N * sizeof(float));
|
jamie@110
|
57
|
jamie@110
|
58 mf->filters = filters;
|
jamie@110
|
59
|
jamie@110
|
60 return mf;
|
jamie@110
|
61
|
jamie@110
|
62 }
|
jamie@110
|
63
|
jamie@110
|
64 /* Free a mel filterbank */
|
jamie@110
|
65 void destroy_filterbank(xtract_mel_filter *filterbank){
|
jamie@110
|
66
|
jamie@110
|
67 int i = filterbank->n_filters;
|
jamie@110
|
68 float **filters;
|
jamie@110
|
69
|
jamie@110
|
70 filters = filterbank->filters;
|
jamie@110
|
71
|
jamie@110
|
72 while(i--)
|
jamie@110
|
73 free(filters[i]);
|
jamie@110
|
74
|
jamie@110
|
75 free(filters);
|
jamie@110
|
76
|
jamie@110
|
77 free(filterbank);
|
jamie@110
|
78
|
jamie@110
|
79 }
|
jamie@110
|
80
|
jamie@110
|
81 /* Eventually this should be deprecated */
|
jamie@110
|
82 /* void destroy_filterbank_explicit(float **filterbank, int n_filters){
|
jamie@110
|
83
|
jamie@110
|
84 int i = n_filters;
|
jamie@110
|
85
|
jamie@110
|
86 while(i--)
|
jamie@110
|
87 free(filterbank[i]);
|
jamie@110
|
88
|
jamie@110
|
89 free(filterbank);
|
jamie@110
|
90 }
|
jamie@110
|
91 */
|
jamie@110
|
92
|
jamie@110
|
93
|
jamie@110
|
94
|
jamie@110
|
95 %}
|
jamie@110
|
96
|
jamie@144
|
97 #ifndef SWIGJAVA
|
jamie@88
|
98 %array_class(float, floatArray);
|
jamie@110
|
99 %array_class(int, intArray);
|
jamie@144
|
100 #endif
|
jamie@87
|
101 %apply float *OUTPUT { float *result };
|
jamie@134
|
102
|
jamie@134
|
103 /* %apply float[] {const float *data}; */
|
jamie@133
|
104
|
jamie@87
|
105
|
jamie@103
|
106 %ignore xtract;
|
jamie@103
|
107
|
jamie@87
|
108 %include "xtract/xtract_scalar.h"
|
jamie@103
|
109
|
jamie@110
|
110 /* We have to put xtract_delta declarations inline because it contains a mixture of vector and scalar functions */
|
jamie@110
|
111 %inline %{
|
jamie@110
|
112
|
jamie@110
|
113 int xtract_flux(const float *data, const int N, const void *argv , float *result);
|
jamie@110
|
114 int xtract_lnorm(const float *data, const int N, const void *argv , float *result);
|
jamie@110
|
115
|
jamie@110
|
116 %}
|
jamie@110
|
117
|
jamie@103
|
118 %clear float *result;
|
jamie@103
|
119
|
jamie@110
|
120 %inline %{
|
jamie@110
|
121
|
jamie@110
|
122 int xtract_difference_vector(const float *data, const int N, const void *argv, float *result);
|
jamie@110
|
123
|
jamie@110
|
124 %}
|
jamie@110
|
125
|
jamie@103
|
126 %include "xtract/xtract_vector.h"
|
jamie@107
|
127 %include "xtract/xtract_helper.h"
|
jamie@110
|
128 %include "xtract/xtract_macros.h"
|
jamie@103
|
129 %include "xtract/libxtract.h"
|
jamie@110
|
130
|
jamie@110
|
131
|