# HG changeset patch # User mas01cr # Date 1196763450 0 # Node ID 241bc55a1a4ee2aff1ec667b177e8d5087bfa733 # Parent 3254b15472f381a99a7aba71b30f6222c4b6036b Move some more code into set_up_query() diff -r 3254b15472f3 -r 241bc55a1a4e audioDB.h --- 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); diff -r 3254b15472f3 -r 241bc55a1a4e query.cpp --- 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; }