Mercurial > hg > audiodb
changeset 117:e800eac265c3 endian-neutral
Towards endian-neutrality, step 2.
trackTable[x] is defined to be in network byte order on disk and in
memory, so access through ntohl() and htonl() as appropriate.
author | mas01cr |
---|---|
date | Fri, 12 Oct 2007 11:37:38 +0000 |
parents | 531ce5162861 |
children | c0789661f232 |
files | audioDB.cpp |
diffstat | 1 files changed, 51 insertions(+), 55 deletions(-) [+] |
line wrap: on
line diff
--- a/audioDB.cpp Fri Oct 12 11:20:35 2007 +0000 +++ b/audioDB.cpp Fri Oct 12 11:37:38 2007 +0000 @@ -574,9 +574,7 @@ memcpy (db, dbH, sizeof(dbTableHeaderT)); // Update track to file index map - //memcpy (db+trackTableOffset+(dbH->numFiles-1)*sizeof(unsigned), &numVectors, sizeof(unsigned)); - //memcpy (trackTable+dbH->numFiles-1, &numVectors, sizeof(unsigned)); - *(trackTable + ntohl(dbH->numFiles) - 1) = numVectors; + *(trackTable + ntohl(dbH->numFiles) - 1) = htonl(numVectors); // Update the feature database memcpy (db+ntohl(dbH->dataOffset)+insertoffset, indata+sizeof(int), statbuf.st_size-sizeof(int)); @@ -795,9 +793,7 @@ memcpy (db, dbH, sizeof(dbTableHeaderT)); // Update track to file index map - //memcpy (db+trackTableOffset+(dbH->numFiles-1)*sizeof(unsigned), &numVectors, sizeof(unsigned)); - //memcpy (trackTable+dbH->numFiles-1, &numVectors, sizeof(unsigned)); - *(trackTable + ntohl(dbH->numFiles) - 1) = numVectors; + *(trackTable + ntohl(dbH->numFiles) - 1) = htonl(numVectors); // Update the feature database memcpy (db+ntohl(dbH->dataOffset)+insertoffset, indata+sizeof(int), statbuf.st_size-sizeof(int)); @@ -886,9 +882,9 @@ unsigned dudCount=0; unsigned nullCount=0; for(unsigned k=0; k<ntohl(dbH->numFiles); k++){ - if(trackTable[k]<sequenceLength){ + if(ntohl(trackTable[k])<sequenceLength){ dudCount++; - if(!trackTable[k]) + if(!ntohl(trackTable[k])) nullCount++; } } @@ -923,8 +919,8 @@ initTables(dbName, 0, 0); for(unsigned k=0, j=0; k<ntohl(dbH->numFiles); k++){ - cout << fileTable+k*O2_FILETABLESIZE << " " << trackTable[k] << endl; - j+=trackTable[k]; + cout << fileTable+k*O2_FILETABLESIZE << " " << ntohl(trackTable[k]) << endl; + j+=ntohl(trackTable[k]); } status(dbName); @@ -1101,10 +1097,10 @@ // Scan for key unsigned cumTrack=0; for(l=0 ; l<ntohl(dbH->numFiles); l++){ - cumTrack+=trackTable[l]; + cumTrack+=ntohl(trackTable[l]); if(sIndexes[k]<cumTrack){ cout << fileTable+l*O2_FILETABLESIZE << " " << distances[k] << " " << qIndexes[k] << " " - << sIndexes[k]+trackTable[l]-cumTrack << endl; + << sIndexes[k]+ntohl(trackTable[l])-cumTrack << endl; break; } } @@ -1132,13 +1128,13 @@ adbQueryResult->Qpos[k]=qIndexes[k]; unsigned cumTrack=0; for(l=0 ; l<ntohl(dbH->numFiles); l++){ - cumTrack+=trackTable[l]; + cumTrack+=ntohl(trackTable[l]); if(sIndexes[k]<cumTrack){ sprintf(adbQueryResult->Rlist[k], "%s", fileTable+l*O2_FILETABLESIZE); break; } } - adbQueryResult->Spos[k]=sIndexes[k]+trackTable[l]-cumTrack; + adbQueryResult->Spos[k]=sIndexes[k]+ntohl(trackTable[l])-cumTrack; } } @@ -1229,7 +1225,7 @@ meanDBdur = new double[ntohl(dbH->numFiles)]; for(k=0; k<ntohl(dbH->numFiles); k++){ meanDBdur[k]=0.0; - for(j=0; j<trackTable[k]-1 ; j++) + for(j=0; j<ntohl(trackTable[k])-1 ; j++) meanDBdur[k]+=timesTable[j+1]-timesTable[j]; meanDBdur[k]/=j; } @@ -1252,7 +1248,7 @@ unsigned trackIndexOffset; for(k=0; k<ntohl(dbH->numFiles);k++){ trackOffsetTable[k]=cumTrack; - cumTrack+=trackTable[k]*ntohl(dbH->dim); + cumTrack+=ntohl(trackTable[k])*ntohl(dbH->dim); } char nextKey[MAXSTR]; @@ -1271,7 +1267,7 @@ trackOffset=trackOffsetTable[track]; // numDoubles offset trackIndexOffset=trackOffset/ntohl(dbH->dim); // numVectors offset if(verbosity>7) { - cerr << track << "." << trackOffset/(ntohl(dbH->dim)) << "." << trackTable[track] << " | ";cerr.flush(); + cerr << track << "." << trackOffset/(ntohl(dbH->dim)) << "." << ntohl(trackTable[track]) << " | ";cerr.flush(); } if(ntohl(dbH->flags) & O2_FLAG_L2NORM) @@ -1283,7 +1279,7 @@ else j=numVectors; while(j--){ - k=trackTable[track]; // number of vectors in track + k=ntohl(trackTable[track]); // number of vectors in track data=dataBuf+trackOffset; // data for track while(k--){ thisDist=0; @@ -1306,7 +1302,7 @@ } distances[n]=thisDist; qIndexes[n]=numVectors-j-1; - sIndexes[n]=trackTable[track]-k-1; + sIndexes[n]=ntohl(trackTable[track])-k-1; break; } } @@ -1458,14 +1454,14 @@ memcpy(sNorm, l2normTable, dbVectors*sizeof(double)); double* snPtr = sNorm; for(i=0; i<ntohl(dbH->numFiles); i++){ - if(trackTable[i]>=sequenceLength){ + if(ntohl(trackTable[i])>=sequenceLength){ tmp1=*snPtr; j=1; w=sequenceLength-1; while(w--) *snPtr+=snPtr[j++]; ps = snPtr+1; - w=trackTable[i]-sequenceLength; // +1 - 1 + w=ntohl(trackTable[i])-sequenceLength; // +1 - 1 while(w--){ tmp2=*ps; *ps=*(ps-1)-tmp1+*(ps+sequenceLength-1); @@ -1473,13 +1469,13 @@ ps++; } ps = snPtr; - w=trackTable[i]-sequenceLength+1; + w=ntohl(trackTable[i])-sequenceLength+1; while(w--){ *ps=sqrt(*ps); ps++; } } - snPtr+=trackTable[i]; + snPtr+=ntohl(trackTable[i]); } double* pn = sMeanL2; @@ -1489,18 +1485,18 @@ ps=sNorm; unsigned processedTracks=0; for(i=0; i<ntohl(dbH->numFiles); i++){ - if(trackTable[i]>sequenceLength-1){ - w = trackTable[i]-sequenceLength+1; + if(ntohl(trackTable[i])>sequenceLength-1){ + w = ntohl(trackTable[i])-sequenceLength+1; pn = sMeanL2+i; *pn=0; while(w--) if(*ps>0) *pn+=*ps++; - *pn/=trackTable[i]-sequenceLength+1; + *pn/=ntohl(trackTable[i])-sequenceLength+1; SILENCE_THRESH+=*pn; processedTracks++; } - ps = sNorm + trackTable[i]; + ps = sNorm + ntohl(trackTable[i]); } if(verbosity>1) { cerr << "processedTracks: " << processedTracks << endl; @@ -1603,7 +1599,7 @@ assert(meanDBdur); for(k=0; k<ntohl(dbH->numFiles); k++){ meanDBdur[k]=0.0; - for(j=0; j<trackTable[k]-1 ; j++) + for(j=0; j<ntohl(trackTable[k])-1 ; j++) meanDBdur[k]+=timesTable[j+1]-timesTable[j]; meanDBdur[k]/=j; } @@ -1643,7 +1639,7 @@ unsigned trackIndexOffset; for(k=0; k<ntohl(dbH->numFiles);k++){ trackOffsetTable[k]=cumTrack; - cumTrack+=trackTable[k]*ntohl(dbH->dim); + cumTrack+=ntohl(trackTable[k])*ntohl(dbH->dim); } char nextKey [MAXSTR]; @@ -1671,28 +1667,28 @@ trackOffset=trackOffsetTable[track]; // numDoubles offset trackIndexOffset=trackOffset/ntohl(dbH->dim); // numVectors offset - if(sequenceLength<=trackTable[track]){ // test for short sequences + if(sequenceLength<=ntohl(trackTable[track])){ // test for short sequences if(verbosity>7) { - cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";cerr.flush(); + cerr << track << "." << trackIndexOffset << "." << ntohl(trackTable[track]) << " | ";cerr.flush(); } // Sum products matrix for(j=0; j<numVectors;j++){ - D[j]=new double[trackTable[track]]; + D[j]=new double[ntohl(trackTable[track])]; assert(D[j]); } // Matched filter matrix for(j=0; j<numVectors;j++){ - DD[j]=new double[trackTable[track]]; + DD[j]=new double[ntohl(trackTable[track])]; assert(DD[j]); } // Dot product for(j=0; j<numVectors; j++) - for(k=0; k<trackTable[track]; k++){ + for(k=0; k<ntohl(trackTable[track]); k++){ qp=query+j*ntohl(dbH->dim); sp=dataBuf+trackOffset+k*ntohl(dbH->dim); DD[j][k]=0.0; // Initialize matched filter array @@ -1711,7 +1707,7 @@ for(j=0; j<numVectors-w; j++){ sp=DD[j]; spd=D[j+w]+w; - k=trackTable[track]-w; + k=ntohl(trackTable[track])-w; while(k--) *sp+++=*spd++; } @@ -1722,7 +1718,7 @@ for(j=0; j<numVectors-w; j+=HOP_SIZE){ sp=DD[j]; spd=D[j+w]+w; - for(k=0; k<trackTable[track]-w; k+=HOP_SIZE){ + for(k=0; k<ntohl(trackTable[track])-w; k+=HOP_SIZE){ *sp+=*spd; sp+=HOP_SIZE; spd+=HOP_SIZE; @@ -1746,7 +1742,7 @@ // Search for minimum distance by shingles (concatenated vectors) for(j=0;j<=numVectors-wL;j+=HOP_SIZE) - for(k=0;k<=trackTable[track]-wL;k+=HOP_SIZE){ + for(k=0;k<=ntohl(trackTable[track])-wL;k+=HOP_SIZE){ thisDist=2-(2/(qNorm[j]*sNorm[trackIndexOffset+k]))*DD[j][k]; if(verbosity>10) { cerr << thisDist << " " << qNorm[j] << " " << sNorm[trackIndexOffset+k] << endl; @@ -1957,14 +1953,14 @@ memcpy(sNorm, l2normTable, dbVectors*sizeof(double)); double* snPtr = sNorm; for(i=0; i<ntohl(dbH->numFiles); i++){ - if(trackTable[i]>=sequenceLength){ + if(ntohl(trackTable[i])>=sequenceLength){ tmp1=*snPtr; j=1; w=sequenceLength-1; while(w--) *snPtr+=snPtr[j++]; ps = snPtr+1; - w=trackTable[i]-sequenceLength; // +1 - 1 + w=ntohl(trackTable[i])-sequenceLength; // +1 - 1 while(w--){ tmp2=*ps; *ps=*(ps-1)-tmp1+*(ps+sequenceLength-1); @@ -1972,13 +1968,13 @@ ps++; } ps = snPtr; - w=trackTable[i]-sequenceLength+1; + w=ntohl(trackTable[i])-sequenceLength+1; while(w--){ *ps=sqrt(*ps); ps++; } } - snPtr+=trackTable[i]; + snPtr+=ntohl(trackTable[i]); } double* pn = sMeanL2; @@ -1988,18 +1984,18 @@ ps=sNorm; unsigned processedTracks=0; for(i=0; i<ntohl(dbH->numFiles); i++){ - if(trackTable[i]>sequenceLength-1){ - w = trackTable[i]-sequenceLength+1; + if(ntohl(trackTable[i])>sequenceLength-1){ + w = ntohl(trackTable[i])-sequenceLength+1; pn = sMeanL2+i; *pn=0; while(w--) if(*ps>0) *pn+=*ps++; - *pn/=trackTable[i]-sequenceLength+1; + *pn/=ntohl(trackTable[i])-sequenceLength+1; SILENCE_THRESH+=*pn; processedTracks++; } - ps = sNorm + trackTable[i]; + ps = sNorm + ntohl(trackTable[i]); } if(verbosity>1) { cerr << "processedTracks: " << processedTracks << endl; @@ -2102,7 +2098,7 @@ assert(meanDBdur); for(k=0; k<ntohl(dbH->numFiles); k++){ meanDBdur[k]=0.0; - for(j=0; j<trackTable[k]-1 ; j++) + for(j=0; j<ntohl(trackTable[k])-1 ; j++) meanDBdur[k]+=timesTable[j+1]-timesTable[j]; meanDBdur[k]/=j; } @@ -2142,7 +2138,7 @@ unsigned trackIndexOffset; for(k=0; k<ntohl(dbH->numFiles);k++){ trackOffsetTable[k]=cumTrack; - cumTrack+=trackTable[k]*ntohl(dbH->dim); + cumTrack+=ntohl(trackTable[k])*ntohl(dbH->dim); } char nextKey [MAXSTR]; @@ -2170,28 +2166,28 @@ trackOffset=trackOffsetTable[track]; // numDoubles offset trackIndexOffset=trackOffset/ntohl(dbH->dim); // numVectors offset - if(sequenceLength<=trackTable[track]){ // test for short sequences + if(sequenceLength<=ntohl(trackTable[track])){ // test for short sequences if(verbosity>7) { - cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";cerr.flush(); + cerr << track << "." << trackIndexOffset << "." << ntohl(trackTable[track]) << " | ";cerr.flush(); } // Sum products matrix for(j=0; j<numVectors;j++){ - D[j]=new double[trackTable[track]]; + D[j]=new double[ntohl(trackTable[track])]; assert(D[j]); } // Matched filter matrix for(j=0; j<numVectors;j++){ - DD[j]=new double[trackTable[track]]; + DD[j]=new double[ntohl(trackTable[track])]; assert(DD[j]); } // Dot product for(j=0; j<numVectors; j++) - for(k=0; k<trackTable[track]; k++){ + for(k=0; k<ntohl(trackTable[track]); k++){ qp=query+j*ntohl(dbH->dim); sp=dataBuf+trackOffset+k*ntohl(dbH->dim); DD[j][k]=0.0; // Initialize matched filter array @@ -2210,7 +2206,7 @@ for(j=0; j<numVectors-w; j++){ sp=DD[j]; spd=D[j+w]+w; - k=trackTable[track]-w; + k=ntohl(trackTable[track])-w; while(k--) *sp+++=*spd++; } @@ -2221,7 +2217,7 @@ for(j=0; j<numVectors-w; j+=HOP_SIZE){ sp=DD[j]; spd=D[j+w]+w; - for(k=0; k<trackTable[track]-w; k+=HOP_SIZE){ + for(k=0; k<ntohl(trackTable[track])-w; k+=HOP_SIZE){ *sp+=*spd; sp+=HOP_SIZE; spd+=HOP_SIZE; @@ -2245,7 +2241,7 @@ // Search for minimum distance by shingles (concatenated vectors) for(j=0;j<=numVectors-wL;j+=HOP_SIZE) - for(k=0;k<=trackTable[track]-wL;k+=HOP_SIZE){ + for(k=0;k<=ntohl(trackTable[track])-wL;k+=HOP_SIZE){ thisDist=2-(2/(qNorm[j]*sNorm[trackIndexOffset+k]))*DD[j][k]; if(verbosity>10) { cerr << thisDist << " " << qNorm[j] << " " << sNorm[trackIndexOffset+k] << endl;