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;