annotate swig/xtract.i @ 285:89fe52066db1 tip master

MSCV missing ssize_t fix
author Jamie Bullock <jamie@jamiebullock.com>
date Tue, 16 Jul 2019 18:29:20 +0100
parents 66f8547eb796
children
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@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