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