Mercurial > hg > audiodb
changeset 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 |
files | audioDB.h query.cpp |
diffstat | 2 files changed, 26 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/audioDB.h Wed Nov 28 17:46:02 2007 +0000 +++ b/audioDB.h Thu Nov 29 10:18:04 2007 +0000 @@ -196,6 +196,7 @@ void sequence_average(double *buffer, int length, int seqlen); void initialize_arrays(int track, unsigned int numVectors, double *query, double *data_buffer, double **D, double **DD); + void read_data(int track, double **data_buffer_p, size_t *data_buffer_size_p); void trackSequenceQueryNN(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse=0); void trackSequenceQueryRad(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse=0);
--- a/query.cpp Wed Nov 28 17:46:02 2007 +0000 +++ b/query.cpp Thu Nov 29 10:18:04 2007 +0000 @@ -110,7 +110,7 @@ // HOP SIZE == 1 double* spd; if(HOP_SIZE == 1) { // HOP_SIZE = shingleHop - for(w = 0; w < wL; w++) + for(w = 0; w < wL; w++) { for(j = 0; j < numVectors - w; j++) { sp = DD[j]; spd = D[j+w] + w; @@ -118,8 +118,9 @@ while(k--) *sp++ += *spd++; } + } } else { // HOP_SIZE != 1 - for(w = 0; w < wL; w++) + for(w = 0; w < wL; w++) { for(j = 0; j < numVectors - w; j += HOP_SIZE) { sp = DD[j]; spd = D[j+w]+w; @@ -129,9 +130,28 @@ spd += HOP_SIZE; } } + } } } +void audioDB::read_data(int track, double **data_buffer_p, size_t *data_buffer_size_p) { + if (trackTable[track] * sizeof(double) * dbH->dim > *data_buffer_size_p) { + if(*data_buffer_p) { + free(*data_buffer_p); + } + { + *data_buffer_size_p = trackTable[track] * sizeof(double) * dbH->dim; + void *tmp = malloc(*data_buffer_size_p); + if (tmp == NULL) { + error("error allocating data buffer"); + } + *data_buffer_p = (double *) tmp; + } + } + + read(dbfid, *data_buffer_p, trackTable[track] * sizeof(double) * dbH->dim); +} + void audioDB::trackSequenceQueryNN(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse){ initTables(dbName, inFile); @@ -369,23 +389,8 @@ if(verbosity>7) { std::cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";std::cerr.flush(); } - - if (trackTable[track] * sizeof(double) * dbH->dim > data_buffer_size) { - if(data_buffer) { - free(data_buffer); - } - { - data_buffer_size = trackTable[track] * sizeof(double) * dbH->dim; - void *tmp = malloc(data_buffer_size); - if (tmp == NULL) { - error("error allocating data buffer"); - } - data_buffer = (double *) tmp; - } - } - - read(dbfid, data_buffer, trackTable[track] * sizeof(double) * dbH->dim); - + + read_data(track, &data_buffer, &data_buffer_size); initialize_arrays(track, numVectors, query, data_buffer, D, DD); if(verbosity>3 && usingTimes) { @@ -806,22 +811,7 @@ std::cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";std::cerr.flush(); } - if (trackTable[track] * sizeof(double) * dbH->dim > data_buffer_size) { - if(data_buffer) { - free(data_buffer); - } - { - data_buffer_size = trackTable[track] * sizeof(double) * dbH->dim; - void *tmp = malloc(data_buffer_size); - if (tmp == NULL) { - error("error allocating data buffer"); - } - data_buffer = (double *) tmp; - } - } - - read(dbfid, data_buffer, trackTable[track] * sizeof(double) * dbH->dim); - + read_data(track, &data_buffer, &data_buffer_size); initialize_arrays(track, numVectors, query, data_buffer, D, DD); if(verbosity>3 && usingTimes) {