18 #include "midi_cplutils.h"
21 #include "midi_cplupgrade.h"
23 int timetable_to_cpltable(
const char * columname,
28 int dimen_in=0, dimen_out=0;
29 cpl_table * dummy_table=NULL;
30 cpl_errorstate prestate = cpl_errorstate_get();
35 dimen_out=cpl_table_get_nrow(outtable);
36 dimen_in =cpl_table_get_nrow(intable);
38 dummy_table=cpl_table_new(dimen_in);
39 cpl_table_duplicate_column(dummy_table, columname, intable, columname);
40 cpl_ensure_code(cpl_errorstate_is_equal(prestate), cpl_error_get_code());
46 cpl_table_insert(outtable, dummy_table, dimen_out+1);
47 if(dummy_table!=NULL){
48 cpl_table_delete(dummy_table);
50 cpl_ensure_code(cpl_errorstate_is_equal(prestate), cpl_error_get_code());
52 return (
int)cpl_error_get_code();
58 int table_to_imglst(
const char * columname,
59 cpl_imagelist * imglst,
65 cpl_array * array_data=NULL;
66 cpl_image * image_data_int=NULL;
67 cpl_errorstate prestate = cpl_errorstate_get();
72 dimenDATA=cpl_table_get_column_dimensions(table, columname);
73 cpl_ensure_code(cpl_errorstate_is_equal(prestate), cpl_error_get_code());
75 return (
int)cpl_error_set_message(cpl_func, cpl_error_get_code(),
76 "DATA has a wrong dimension");
78 ctype=cpl_table_get_column_type(table, columname);
81 counter=cpl_imagelist_get_size(imglst);
84 for (i=0; i<cpl_table_get_nrow(table);i++){
86 array_data=(cpl_array *)cpl_table_get_array(table,columname, i);
87 if(ctype&CPL_TYPE_INT){
88 image_data_int=cpl_image_wrap_int(cpl_table_get_column_dimension(table,columname,0 ), cpl_table_get_column_dimension(table,columname,1 ), cpl_array_get_data_int(array_data) );
90 if(ctype&CPL_TYPE_FLOAT){
91 image_data_int=cpl_image_wrap_float(cpl_table_get_column_dimension(table,columname,0 ), cpl_table_get_column_dimension(table,columname,1 ), cpl_array_get_data_float(array_data) );
98 cpl_imagelist_set(imglst,cpl_image_cast(image_data_int, CPL_TYPE_FLOAT),counter++);
101 if(image_data_int!=NULL){
102 cpl_image_unwrap(image_data_int);
110 return (
int)cpl_error_get_code();
121 int midi_check_sof(cpl_frameset * frameset,
const char * tag)
123 char * tag_file=NULL;
124 cpl_frame * cur_frame=NULL;
127 cur_frame = cpl_frameset_get_first(frameset);
128 if (cur_frame == NULL) {
129 return (
int)cpl_error_set_message(cpl_func, CPL_ERROR_DATA_NOT_FOUND,
130 "SOF does not have any file");
139 tag_file = (
char*)cpl_frame_get_tag(cur_frame);
141 if (strcmp(tag_file, tag)) {
142 cur_frame = cpl_frameset_get_next( frameset );
145 if (strcmp(tag_file, tag)==0) {
148 cur_frame = cpl_frameset_get_next( frameset );
151 return NumberOfFiles;
204 cpl_polynomial * midi_polynomial_fit_1d_create(
205 const cpl_vector * x_pos,
206 const cpl_vector * values,
210 cpl_polynomial * fit1d;
211 cpl_matrix * samppos;
212 cpl_vector * fitresidual;
214 cpl_size degree_tmp=0;
216 fit1d = cpl_polynomial_new(1);
217 samppos = cpl_matrix_wrap(1, cpl_vector_get_size(x_pos),
218 cpl_vector_get_data((cpl_vector *)x_pos));
219 fitresidual = cpl_vector_new(cpl_vector_get_size(x_pos));
220 cpl_polynomial_fit(fit1d, samppos, NULL, values, NULL,
221 CPL_FALSE, NULL, °ree_tmp);
223 degree=(int)(degree_tmp);
225 cpl_vector_fill_polynomial_fit_residual(fitresidual, values, NULL, fit1d,
227 cpl_matrix_unwrap(samppos);
230 *mse = cpl_vector_product(fitresidual, fitresidual)
231 /(double)(cpl_vector_get_size(fitresidual));
233 cpl_vector_delete(fitresidual);