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();