Mercurial > hg > audiodb
comparison query.cpp @ 209:c9722e12acae refactoring
Make reading the data in be its own function
author | mas01cr |
---|---|
date | Thu, 29 Nov 2007 10:18:04 +0000 |
parents | cb126d467344 |
children | 50da444004fe |
comparison
equal
deleted
inserted
replaced
208:cb126d467344 | 209:c9722e12acae |
---|---|
108 | 108 |
109 // Matched Filter | 109 // Matched Filter |
110 // HOP SIZE == 1 | 110 // HOP SIZE == 1 |
111 double* spd; | 111 double* spd; |
112 if(HOP_SIZE == 1) { // HOP_SIZE = shingleHop | 112 if(HOP_SIZE == 1) { // HOP_SIZE = shingleHop |
113 for(w = 0; w < wL; w++) | 113 for(w = 0; w < wL; w++) { |
114 for(j = 0; j < numVectors - w; j++) { | 114 for(j = 0; j < numVectors - w; j++) { |
115 sp = DD[j]; | 115 sp = DD[j]; |
116 spd = D[j+w] + w; | 116 spd = D[j+w] + w; |
117 k = trackTable[track] - w; | 117 k = trackTable[track] - w; |
118 while(k--) | 118 while(k--) |
119 *sp++ += *spd++; | 119 *sp++ += *spd++; |
120 } | 120 } |
121 } | |
121 } else { // HOP_SIZE != 1 | 122 } else { // HOP_SIZE != 1 |
122 for(w = 0; w < wL; w++) | 123 for(w = 0; w < wL; w++) { |
123 for(j = 0; j < numVectors - w; j += HOP_SIZE) { | 124 for(j = 0; j < numVectors - w; j += HOP_SIZE) { |
124 sp = DD[j]; | 125 sp = DD[j]; |
125 spd = D[j+w]+w; | 126 spd = D[j+w]+w; |
126 for(k = 0; k < trackTable[track] - w; k += HOP_SIZE) { | 127 for(k = 0; k < trackTable[track] - w; k += HOP_SIZE) { |
127 *sp += *spd; | 128 *sp += *spd; |
128 sp += HOP_SIZE; | 129 sp += HOP_SIZE; |
129 spd += HOP_SIZE; | 130 spd += HOP_SIZE; |
130 } | 131 } |
131 } | 132 } |
132 } | 133 } |
134 } | |
135 } | |
136 | |
137 void audioDB::read_data(int track, double **data_buffer_p, size_t *data_buffer_size_p) { | |
138 if (trackTable[track] * sizeof(double) * dbH->dim > *data_buffer_size_p) { | |
139 if(*data_buffer_p) { | |
140 free(*data_buffer_p); | |
141 } | |
142 { | |
143 *data_buffer_size_p = trackTable[track] * sizeof(double) * dbH->dim; | |
144 void *tmp = malloc(*data_buffer_size_p); | |
145 if (tmp == NULL) { | |
146 error("error allocating data buffer"); | |
147 } | |
148 *data_buffer_p = (double *) tmp; | |
149 } | |
150 } | |
151 | |
152 read(dbfid, *data_buffer_p, trackTable[track] * sizeof(double) * dbH->dim); | |
133 } | 153 } |
134 | 154 |
135 void audioDB::trackSequenceQueryNN(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse){ | 155 void audioDB::trackSequenceQueryNN(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse){ |
136 | 156 |
137 initTables(dbName, inFile); | 157 initTables(dbName, inFile); |
367 if(sequenceLength<=trackTable[track]){ // test for short sequences | 387 if(sequenceLength<=trackTable[track]){ // test for short sequences |
368 | 388 |
369 if(verbosity>7) { | 389 if(verbosity>7) { |
370 std::cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";std::cerr.flush(); | 390 std::cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";std::cerr.flush(); |
371 } | 391 } |
372 | 392 |
373 if (trackTable[track] * sizeof(double) * dbH->dim > data_buffer_size) { | 393 read_data(track, &data_buffer, &data_buffer_size); |
374 if(data_buffer) { | |
375 free(data_buffer); | |
376 } | |
377 { | |
378 data_buffer_size = trackTable[track] * sizeof(double) * dbH->dim; | |
379 void *tmp = malloc(data_buffer_size); | |
380 if (tmp == NULL) { | |
381 error("error allocating data buffer"); | |
382 } | |
383 data_buffer = (double *) tmp; | |
384 } | |
385 } | |
386 | |
387 read(dbfid, data_buffer, trackTable[track] * sizeof(double) * dbH->dim); | |
388 | |
389 initialize_arrays(track, numVectors, query, data_buffer, D, DD); | 394 initialize_arrays(track, numVectors, query, data_buffer, D, DD); |
390 | 395 |
391 if(verbosity>3 && usingTimes) { | 396 if(verbosity>3 && usingTimes) { |
392 std::cerr << "meanQdur=" << meanQdur << " meanDBdur=" << meanDBdur[track] << std::endl; | 397 std::cerr << "meanQdur=" << meanQdur << " meanDBdur=" << meanDBdur[track] << std::endl; |
393 std::cerr.flush(); | 398 std::cerr.flush(); |
804 | 809 |
805 if(verbosity>7) { | 810 if(verbosity>7) { |
806 std::cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";std::cerr.flush(); | 811 std::cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";std::cerr.flush(); |
807 } | 812 } |
808 | 813 |
809 if (trackTable[track] * sizeof(double) * dbH->dim > data_buffer_size) { | 814 read_data(track, &data_buffer, &data_buffer_size); |
810 if(data_buffer) { | |
811 free(data_buffer); | |
812 } | |
813 { | |
814 data_buffer_size = trackTable[track] * sizeof(double) * dbH->dim; | |
815 void *tmp = malloc(data_buffer_size); | |
816 if (tmp == NULL) { | |
817 error("error allocating data buffer"); | |
818 } | |
819 data_buffer = (double *) tmp; | |
820 } | |
821 } | |
822 | |
823 read(dbfid, data_buffer, trackTable[track] * sizeof(double) * dbH->dim); | |
824 | |
825 initialize_arrays(track, numVectors, query, data_buffer, D, DD); | 815 initialize_arrays(track, numVectors, query, data_buffer, D, DD); |
826 | 816 |
827 if(verbosity>3 && usingTimes) { | 817 if(verbosity>3 && usingTimes) { |
828 std::cerr << "meanQdur=" << meanQdur << " meanDBdur=" << meanDBdur[track] << std::endl; | 818 std::cerr << "meanQdur=" << meanQdur << " meanDBdur=" << meanDBdur[track] << std::endl; |
829 std::cerr.flush(); | 819 std::cerr.flush(); |