changeset 450:0c1c8726a79b api-inversion

No more trackOffsetTable (except in sample.cpp, but that one was always a local variable. We'll get round to removing that one when we APIze sampling.) Also deconfuse things slightly by having the trackOffset variable be exactly the relevant entry from track_offsets.
author mas01cr
date Wed, 24 Dec 2008 10:57:01 +0000
parents bc5a69e81036
children ef9ef130e27b
files audioDB.cpp audioDB.h common.cpp query.cpp sample.cpp
diffstat 5 files changed, 9 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/audioDB.cpp	Wed Dec 24 10:56:56 2008 +0000
+++ b/audioDB.cpp	Wed Dec 24 10:57:01 2008 +0000
@@ -217,8 +217,6 @@
     munmap(timesFileNameTable, fileTableLength);
   if(powerFileNameTable)
     munmap(powerFileNameTable, fileTableLength);
-  if(trackOffsetTable)
-    delete [] trackOffsetTable;
   if(reporter)
     delete reporter;
   if(accumulator)
--- a/audioDB.h	Wed Dec 24 10:56:56 2008 +0000
+++ b/audioDB.h	Wed Dec 24 10:57:01 2008 +0000
@@ -262,7 +262,6 @@
   
   char* fileTable;
   unsigned* trackTable;
-  off_t* trackOffsetTable;
   double* l2normTable;
   double* timesTable;
   double* powerTable;
@@ -440,7 +439,6 @@
     rng(0),                                     \
     fileTable(0),				\
     trackTable(0),				\
-    trackOffsetTable(0),                        \
     l2normTable(0),				\
     timesTable(0),				\
     powerTable(0),                              \
--- a/common.cpp	Wed Dec 24 10:56:56 2008 +0000
+++ b/common.cpp	Wed Dec 24 10:57:01 2008 +0000
@@ -146,14 +146,6 @@
     }
   }
 
-  // build track offset table
-  trackOffsetTable = new off_t[dbH->numFiles];
-  Uns32T cumTrack=0;
-  for(Uns32T k = 0; k < dbH->numFiles; k++){
-    trackOffsetTable[k] = cumTrack;
-    cumTrack += trackTable[k] * dbH->dim;
-  }
-
   // Assign correct number of point bits per track in LSH indexing / retrieval
   lsh_n_point_bits = dbH->flags >> 28;
   if( !lsh_n_point_bits )
--- a/query.cpp	Wed Dec 24 10:56:56 2008 +0000
+++ b/query.cpp	Wed Dec 24 10:57:01 2008 +0000
@@ -645,8 +645,8 @@
     }
     else{
       // These offsets are w.r.t. the entire database of feature vectors and auxillary variables
-      trackOffset=trackOffsetTable[pp.trackID]; // num data elements offset
-      trackIndexOffset=trackOffset/dbH->dim;    // num vectors offset
+      trackOffset = (*adb->track_offsets)[pp.trackID];
+      trackIndexOffset = trackOffset/(dbH->dim * sizeof(double)); // num vectors offset
     }    
     Uns32T qPos = usingQueryPoint?0:pp.qpos;// index for query point
     Uns32T sPos = trackIndexOffset+pp.spos; // index into l2norm table
@@ -657,7 +657,7 @@
       if( !(dbH->flags & O2_FLAG_LARGE_ADB) && (currentTrack!=pp.trackID) ){
 	// On currentTrack change, allocate and load track data
 	currentTrack=pp.trackID;
-	lseek(dbfid, dbH->dataOffset + trackOffset * sizeof(double), SEEK_SET);
+	lseek(dbfid, dbH->dataOffset + trackOffset, SEEK_SET);
 	if(audiodb_read_data(adb, dbfid, currentTrack, &data_buffer, &data_buffer_size))
           error("failed to read data");
       }
@@ -727,7 +727,7 @@
 
   for(processedTracks=0, track=0 ; processedTracks < dbH->numFiles ; track++, processedTracks++) {
 
-    trackOffset = trackOffsetTable[track];     // numDoubles offset
+    trackOffset = (*adb->track_offsets)[track];
 
     // get trackID from file if using a control file
     if(trackFile) {
@@ -737,8 +737,8 @@
         if(track == (uint32_t) -1) {
           error("key not found", nextKey);
         }
-        trackOffset = trackOffsetTable[track];
-        lseek(dbfid, dbH->dataOffset + trackOffset * sizeof(double), SEEK_SET);
+        trackOffset = (*adb->track_offsets)[track];
+        lseek(dbfid, dbH->dataOffset + trackOffset, SEEK_SET);
       } else {
 	break;
       }
@@ -748,15 +748,15 @@
     if( query_from_key && (track == queryIndex) ) {
       if(queryIndex!=dbH->numFiles-1){
 	track++;
-	trackOffset = trackOffsetTable[track];
-	lseek(dbfid, dbH->dataOffset + trackOffset * sizeof(double), SEEK_SET);
+	trackOffset = (*adb->track_offsets)[track];
+	lseek(dbfid, dbH->dataOffset + trackOffset, SEEK_SET);
       }
       else{
 	break;
       }
     }
 
-    trackIndexOffset=trackOffset/dbH->dim; // qpointers.nvectors offset
+    trackIndexOffset = trackOffset / (dbH->dim * sizeof(double)); // dbpointers.nvectors offset
 
     if(audiodb_read_data(adb, dbfid, track, &data_buffer, &data_buffer_size))
       error("failed to read data");
--- a/sample.cpp	Wed Dec 24 10:56:56 2008 +0000
+++ b/sample.cpp	Wed Dec 24 10:57:01 2008 +0000
@@ -60,7 +60,6 @@
     error("error: sample not yet supported for LARGE_ADB");
   }
     
-  // build track offset table (FIXME: cut'n'pasted from query.cpp)
   off_t *trackOffsetTable = new off_t[dbH->numFiles];
   unsigned cumTrack=0;
   for(unsigned int k = 0; k < dbH->numFiles; k++){