Mercurial > hg > audiodb
changeset 215:241bc55a1a4e refactoring
Move some more code into set_up_query()
author | mas01cr |
---|---|
date | Tue, 04 Dec 2007 10:17:30 +0000 |
parents | 3254b15472f3 |
children | cd3dced4f534 |
files | audioDB.h query.cpp |
diffstat | 2 files changed, 34 insertions(+), 56 deletions(-) [+] |
line wrap: on
line diff
--- a/audioDB.h Tue Dec 04 09:40:55 2007 +0000 +++ b/audioDB.h Tue Dec 04 10:17:30 2007 +0000 @@ -196,7 +196,7 @@ void initialize_arrays(int track, unsigned int numVectors, double *query, double *data_buffer, double **D, double **DD); void delete_arrays(int track, unsigned int numVectors, double **D, double **DD); void read_data(int track, double **data_buffer_p, size_t *data_buffer_size_p); - void set_up_query(double **qp, double **qnp, unsigned int *nvp); + void set_up_query(double **qp, double **qnp, double **qpp, unsigned int *nvp); 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 Tue Dec 04 09:40:55 2007 +0000 +++ b/query.cpp Tue Dec 04 10:17:30 2007 +0000 @@ -165,7 +165,7 @@ read(dbfid, *data_buffer_p, trackTable[track] * sizeof(double) * dbH->dim); } -void audioDB::set_up_query(double **qp, double **qnp, unsigned *nvp) { +void audioDB::set_up_query(double **qp, double **qnp, double **qpp, unsigned *nvp) { *nvp = (statbuf.st_size - sizeof(int)) / (dbH->dim * sizeof(double)); if(!(dbH->flags & O2_FLAG_L2NORM)) { @@ -184,6 +184,26 @@ memcpy(*qp, indata+sizeof(int), *nvp * dbH->dim * sizeof(double)); *qnp = new double[*nvp]; unitNorm(*qp, dbH->dim, *nvp, *qnp); + + sequence_sum(*qnp, *nvp, sequenceLength); + sequence_sqrt(*qnp, *nvp, sequenceLength); + + if (usingPower) { + *qpp = new double[*nvp]; + if (lseek(powerfd, sizeof(int), SEEK_SET) == (off_t) -1) { + error("error seeking to data", powerFileName, "lseek"); + } + int count = read(powerfd, *qpp, *nvp * sizeof(double)); + if (count == -1) { + error("error reading data", powerFileName, "read"); + } + if ((unsigned) count != *nvp * sizeof(double)) { + error("short read", powerFileName); + } + + sequence_sum(*qpp, *nvp, sequenceLength); + sequence_average(*qpp, *nvp, sequenceLength); + } } void audioDB::trackSequenceQueryNN(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse){ @@ -192,25 +212,25 @@ unsigned int numVectors; double *query, *query_data; - double *qNorm, *sNorm; + double *qNorm, *qnPtr, *qPower = 0, *qpPtr = 0; - set_up_query(&query, &qNorm, &numVectors); + set_up_query(&query, &qNorm, &qPower, &numVectors); query_data = query; + qpPtr = qPower; + qnPtr = qNorm; unsigned dbVectors = dbH->length/(sizeof(double)*dbH->dim); - sNorm = new double[dbVectors]; + double *sNorm = new double[dbVectors]; // Make norm measurements relative to sequenceLength unsigned i,j; // Copy the L2 norm values to core to avoid disk random access later on memcpy(sNorm, l2normTable, dbVectors*sizeof(double)); - double* qnPtr = qNorm; double* snPtr = sNorm; - double *sPower = 0, *qPower = 0; - double *spPtr = 0, *qpPtr = 0; + double *sPower = 0, *spPtr = 0; if (usingPower) { if (!(dbH->flags & O2_FLAG_POWER)) { @@ -237,27 +257,6 @@ } } - sequence_sum(qnPtr, numVectors, sequenceLength); - sequence_sqrt(qnPtr, numVectors, sequenceLength); - - if (usingPower) { - qPower = new double[numVectors]; - qpPtr = qPower; - if (lseek(powerfd, sizeof(int), SEEK_SET) == (off_t) -1) { - error("error seeking to data", powerFileName, "lseek"); - } - int count = read(powerfd, qPower, numVectors * sizeof(double)); - if (count == -1) { - error("error reading data", powerFileName, "read"); - } - if ((unsigned) count != numVectors * sizeof(double)) { - error("short read", powerFileName); - } - - sequence_sum(qpPtr, numVectors, sequenceLength); - sequence_average(qpPtr, numVectors, sequenceLength); - } - if(verbosity>1) { std::cerr << "done." << std::endl; } @@ -590,14 +589,16 @@ unsigned int numVectors; double *query, *query_data; - double *qNorm, *sNorm; + double *qNorm, *qnPtr, *qPower = 0, *qpPtr = 0; - set_up_query(&query, &qNorm, &numVectors); + set_up_query(&query, &qNorm, &qPower, &numVectors); query_data = query; + qpPtr = qPower; + qnPtr = qNorm; unsigned dbVectors = dbH->length/(sizeof(double)*dbH->dim); - sNorm = new double[dbVectors]; + double *sNorm = new double[dbVectors]; // Make norm measurements relative to sequenceLength unsigned i,j; @@ -605,10 +606,8 @@ // Copy the L2 norm values to core to avoid disk random access later on memcpy(sNorm, l2normTable, dbVectors*sizeof(double)); double* snPtr = sNorm; - double* qnPtr = qNorm; - double *sPower = 0, *qPower = 0; - double *spPtr = 0, *qpPtr = 0; + double *sPower = 0, *spPtr = 0; if (usingPower) { if(!(dbH->flags & O2_FLAG_POWER)) { @@ -634,27 +633,6 @@ } } - sequence_sum(qnPtr, numVectors, sequenceLength); - sequence_sqrt(qnPtr, numVectors, sequenceLength); - - if (usingPower) { - qPower = new double[numVectors]; - qpPtr = qPower; - if (lseek(powerfd, sizeof(int), SEEK_SET) == (off_t) -1) { - error("error seeking to data", powerFileName, "lseek"); - } - int count = read(powerfd, qPower, numVectors * sizeof(double)); - if (count == -1) { - error("error reading data", powerFileName, "read"); - } - if ((unsigned) count != numVectors * sizeof(double)) { - error("short read", powerFileName); - } - - sequence_sum(qpPtr, numVectors, sequenceLength); - sequence_average(qpPtr, numVectors, sequenceLength); - } - if(verbosity>1) { std::cerr << "done." << std::endl; }