Mercurial > hg > audiodb
changeset 217:685eb707b660 refactoring
set_up_db() analogue to set_up_query()
author | mas01cr |
---|---|
date | Tue, 04 Dec 2007 12:47:49 +0000 |
parents | cd3dced4f534 |
children | 016303fc3e1b |
files | audioDB.h query.cpp |
diffstat | 2 files changed, 46 insertions(+), 83 deletions(-) [+] |
line wrap: on
line diff
--- a/audioDB.h Tue Dec 04 10:23:28 2007 +0000 +++ b/audioDB.h Tue Dec 04 12:47:49 2007 +0000 @@ -197,6 +197,7 @@ 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, double **qpp, unsigned int *nvp); + void set_up_db(double **snp, double **spp, unsigned int *dvp); 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 10:23:28 2007 +0000 +++ b/query.cpp Tue Dec 04 12:47:49 2007 +0000 @@ -208,6 +208,39 @@ } } +void audioDB::set_up_db(double **snp, double **spp, unsigned int *dvp) { + *dvp = dbH->length / (dbH->dim * sizeof(double)); + *snp = new double[*dvp]; + + double *snpp = *snp, *sppp = 0; + memcpy(*snp, l2normTable, *dvp * sizeof(double)); + + if (usingPower) { + if (!(dbH->flags & O2_FLAG_POWER)) { + error("database not power-enabled", dbName); + } + *spp = new double[*dvp]; + sppp = *spp; + memcpy(*spp, powerTable, *dvp * sizeof(double)); + } + + for(unsigned int i = 0; i < dbH->numFiles; i++){ + if(trackTable[i] >= sequenceLength) { + sequence_sum(snpp, trackTable[i], sequenceLength); + sequence_sqrt(snpp, trackTable[i], sequenceLength); + + if (usingPower) { + sequence_sum(sppp, trackTable[i], sequenceLength); + sequence_average(sppp, trackTable[i], sequenceLength); + } + } + snpp += trackTable[i]; + if (usingPower) { + sppp += trackTable[i]; + } + } +} + void audioDB::trackSequenceQueryNN(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse){ initTables(dbName, inFile); @@ -221,47 +254,12 @@ qpPtr = qPower; qnPtr = qNorm; - unsigned dbVectors = dbH->length/(sizeof(double)*dbH->dim); + unsigned int dbVectors; + double *sNorm, *snPtr, *sPower = 0, *spPtr = 0; - 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* snPtr = sNorm; - - double *sPower = 0, *spPtr = 0; - - if (usingPower) { - if (!(dbH->flags & O2_FLAG_POWER)) { - error("database not power-enabled", dbName); - } - sPower = new double[dbVectors]; - spPtr = sPower; - memcpy(sPower, powerTable, dbVectors * sizeof(double)); - } - - for(i=0; i<dbH->numFiles; i++){ - if(trackTable[i]>=sequenceLength) { - sequence_sum(snPtr, trackTable[i], sequenceLength); - sequence_sqrt(snPtr, trackTable[i], sequenceLength); - - if (usingPower) { - sequence_sum(spPtr, trackTable[i], sequenceLength); - sequence_average(spPtr, trackTable[i], sequenceLength); - } - } - snPtr += trackTable[i]; - if (usingPower) { - spPtr += trackTable[i]; - } - } - - if(verbosity>1) { - std::cerr << "done." << std::endl; - } + set_up_db(&sNorm, &sPower, &dbVectors); + spPtr = sPower; + snPtr = sNorm; if(verbosity>1) { std::cerr << "matching tracks..." << std::endl; @@ -280,8 +278,7 @@ unsigned qIndexes[pointNN]; unsigned sIndexes[pointNN]; - - unsigned k,l,m,n,track,trackOffset=0, HOP_SIZE=sequenceHop, wL=sequenceLength; + unsigned j,k,l,m,n,track,trackOffset=0, HOP_SIZE=sequenceHop, wL=sequenceLength; double thisDist; for(k=0; k<pointNN; k++){ @@ -598,46 +595,12 @@ qpPtr = qPower; qnPtr = qNorm; - unsigned dbVectors = dbH->length/(sizeof(double)*dbH->dim); + unsigned int dbVectors; + double *sNorm, *snPtr, *sPower = 0, *spPtr = 0; - 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* snPtr = sNorm; - - double *sPower = 0, *spPtr = 0; - - if (usingPower) { - if(!(dbH->flags & O2_FLAG_POWER)) { - error("database not power-enabled", dbName); - } - sPower = new double[dbVectors]; - spPtr = sPower; - memcpy(sPower, powerTable, dbVectors * sizeof(double)); - } - - for(i=0; i<dbH->numFiles; i++){ - if(trackTable[i]>=sequenceLength) { - sequence_sum(snPtr, trackTable[i], sequenceLength); - sequence_sqrt(snPtr, trackTable[i], sequenceLength); - if (usingPower) { - sequence_sum(spPtr, trackTable[i], sequenceLength); - sequence_average(spPtr, trackTable[i], sequenceLength); - } - } - snPtr += trackTable[i]; - if (usingPower) { - spPtr += trackTable[i]; - } - } - - if(verbosity>1) { - std::cerr << "done." << std::endl; - } + set_up_db(&sNorm, &sPower, &dbVectors); + spPtr = sPower; + snPtr = sNorm; if(verbosity>1) { std::cerr << "matching tracks..." << std::endl; @@ -656,8 +619,7 @@ unsigned qIndexes[pointNN]; unsigned sIndexes[pointNN]; - - unsigned k,l,n,track,trackOffset=0; + unsigned j,k,l,n,track,trackOffset=0; unsigned const HOP_SIZE=sequenceHop; unsigned const wL=sequenceLength; double thisDist;