[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src common/defines.h core/Peak.cpp cor...
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso/src common/defines.h core/Peak.cpp cor... |
Date: |
Tue, 23 Oct 2007 17:38:29 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/10/23 17:38:29
Modified files:
src/common : defines.h
src/core : Peak.cpp Peak.h
Log message:
* Finish conversion to use peak_data_t in Peak, and make peak_data_t
signed float.
Reason: the resolution of unsigned byte has a resolution of 2^8 which
is insufficient when recorded material has a makeup gain of > 20 dB.
With 2^15 there should be sufficient amount of resolution.
End result: Audio with a lot of makeup-gain doesn't look as ugly as it
does now :)
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/common/defines.h?cvsroot=traverso&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Peak.cpp?cvsroot=traverso&r1=1.70&r2=1.71
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Peak.h?cvsroot=traverso&r1=1.25&r2=1.26
Patches:
Index: common/defines.h
===================================================================
RCS file: /sources/traverso/traverso/src/common/defines.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- common/defines.h 22 Oct 2007 18:44:00 -0000 1.3
+++ common/defines.h 23 Oct 2007 17:38:29 -0000 1.4
@@ -270,8 +270,8 @@
typedef unsigned long channel_t;
typedef float audio_sample_t;
-typedef unsigned char peak_data_t;
-// typedef short peak_data_t;
+// typedef unsigned char peak_data_t;
+typedef short peak_data_t;
typedef FastDelegate1<nframes_t, int> ProcessCallback;
Index: core/Peak.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Peak.cpp,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -b -r1.70 -r1.71
--- core/Peak.cpp 22 Oct 2007 16:49:44 -0000 1.70
+++ core/Peak.cpp 23 Oct 2007 17:38:29 -0000 1.71
@@ -42,7 +42,7 @@
#define NORMALIZE_CHUNK_SIZE 10000
#define PEAKFILE_MAJOR_VERSION 1
-#define PEAKFILE_MINOR_VERSION 0
+#define PEAKFILE_MINOR_VERSION 1
int Peak::zoomStep[] = {
// non-cached zoomlevels.
@@ -190,10 +190,10 @@
return -1;
}
- data->file.read((char*)data->headerdata.peakDataLevelOffsets,
sizeof(data->headerdata.peakDataLevelOffsets));
+ data->file.read((char*)data->headerdata.peakDataOffsets,
sizeof(data->headerdata.peakDataOffsets));
data->file.read((char*)data->headerdata.peakDataSizeForLevel,
sizeof(data->headerdata.peakDataSizeForLevel));
data->file.read((char*)&data->headerdata.normValuesDataOffset,
sizeof(data->headerdata.normValuesDataOffset));
- data->file.read((char*)&data->headerdata.peakDataOffset,
sizeof(data->headerdata.peakDataOffset));
+ data->file.read((char*)&data->headerdata.headerSize,
sizeof(data->headerdata.headerSize));
data->peakreader = new PeakDataReader(data);
data->peakdataDecodeBuffer = new DecodeBuffer;
@@ -221,10 +221,10 @@
data->file.write((char*)data->headerdata.label,
sizeof(data->headerdata.label));
data->file.write((char*)data->headerdata.version,
sizeof(data->headerdata.version));
- data->file.write((char*)data->headerdata.peakDataLevelOffsets,
sizeof(data->headerdata.peakDataLevelOffsets));
+ data->file.write((char*)data->headerdata.peakDataOffsets,
sizeof(data->headerdata.peakDataOffsets));
data->file.write((char*)data->headerdata.peakDataSizeForLevel,
sizeof(data->headerdata.peakDataSizeForLevel));
data->file.write((char*) &data->headerdata.normValuesDataOffset,
sizeof(data->headerdata.normValuesDataOffset));
- data->file.write((char*) &data->headerdata.peakDataOffset,
sizeof(data->headerdata.peakDataOffset));
+ data->file.write((char*) &data->headerdata.headerSize,
sizeof(data->headerdata.headerSize));
return 1;
}
@@ -296,7 +296,7 @@
// pixelcount =
data->headerdata.peakDataSizeForLevel[zoomLevel - SAVING_ZOOM_FACTOR] - offset;
}
- nframes_t readposition =
data->headerdata.peakDataLevelOffsets[zoomLevel - SAVING_ZOOM_FACTOR] + offset;
+ nframes_t readposition = data->headerdata.headerSize +
(data->headerdata.peakDataOffsets[zoomLevel - SAVING_ZOOM_FACTOR] + offset) *
sizeof(peak_data_t);
int read =
data->peakreader->read_from(data->peakdataDecodeBuffer, readposition,
pixelcount);
if (read != pixelcount) {
@@ -406,17 +406,17 @@
return -1;
}
- // We need to know the peakDataOffset.
- data->headerdata.peakDataOffset =
+ // We need to know the headerSize.
+ data->headerdata.headerSize =
sizeof(data->headerdata.label) +
sizeof(data->headerdata.version) +
-
sizeof(data->headerdata.peakDataLevelOffsets) +
+
sizeof(data->headerdata.peakDataOffsets) +
sizeof(data->headerdata.peakDataSizeForLevel) +
sizeof(data->headerdata.normValuesDataOffset) +
- sizeof(data->headerdata.peakDataOffset);
+ sizeof(data->headerdata.headerSize);
// Now seek to the start position, so we can write the peakdata
to it in the process function
- data->file.seek(data->headerdata.peakDataOffset);
+ data->file.seek(data->headerdata.headerSize);
data->pd = new Peak::ProcessData;
data->pd->stepSize = TimeRef(1, rate);
@@ -452,7 +452,7 @@
}
- data->file.seek(data->headerdata.peakDataOffset);
+ data->file.seek(data->headerdata.headerSize);
// The routine below uses a different total buffer size
calculation
// which might end up with a size >= totalbufferSize !!!
@@ -469,14 +469,14 @@
int prevLevelBufferPos = 0;
int nextLevelBufferPos;
data->headerdata.peakDataSizeForLevel[0] =
data->pd->processBufferSize;
- data->headerdata.peakDataLevelOffsets[0] =
data->headerdata.peakDataOffset;
+ data->headerdata.peakDataOffsets[0] = 0;
for (int i = SAVING_ZOOM_FACTOR+1; i < ZOOM_LEVELS+1; ++i) {
int prevLevelSize =
data->headerdata.peakDataSizeForLevel[i - SAVING_ZOOM_FACTOR - 1];
- data->headerdata.peakDataLevelOffsets[i -
SAVING_ZOOM_FACTOR] = data->headerdata.peakDataLevelOffsets[i -
SAVING_ZOOM_FACTOR - 1] + prevLevelSize;
- prevLevelBufferPos =
data->headerdata.peakDataLevelOffsets[i - SAVING_ZOOM_FACTOR - 1] -
data->headerdata.peakDataOffset;
- nextLevelBufferPos =
data->headerdata.peakDataLevelOffsets[i - SAVING_ZOOM_FACTOR] -
data->headerdata.peakDataOffset;
+ data->headerdata.peakDataOffsets[i -
SAVING_ZOOM_FACTOR] = data->headerdata.peakDataOffsets[i - SAVING_ZOOM_FACTOR -
1] + prevLevelSize;
+ prevLevelBufferPos = data->headerdata.peakDataOffsets[i
- SAVING_ZOOM_FACTOR - 1];
+ nextLevelBufferPos = data->headerdata.peakDataOffsets[i
- SAVING_ZOOM_FACTOR];
int count = 0;
@@ -492,7 +492,7 @@
while (count < prevLevelSize);
}
- data->file.seek(data->headerdata.peakDataOffset);
+ data->file.seek(data->headerdata.headerSize);
int written = data->file.write((char*)saveBuffer,
sizeof(peak_data_t) * totalBufferSize) / sizeof(peak_data_t);
@@ -509,7 +509,7 @@
PERROR("Could not read in all (%d) norm. data, only
%d", data->pd->normDataCount, read);
}
- data->headerdata.normValuesDataOffset =
data->headerdata.peakDataOffset + totalBufferSize;
+ data->headerdata.normValuesDataOffset =
data->headerdata.headerSize + totalBufferSize;
data->normFile.close();
@@ -570,8 +570,8 @@
PWARN("couldnt write peak data, only (%d)",
written);
}
- pd->peakUpperValue = 0.0;
- pd->peakLowerValue = 0.0;
+ pd->peakUpperValue = -1.0;
+ pd->peakLowerValue = 1.0;
pd->processBufferSize+=2;
pd->nextDataPointLocation += pd->processRange;
@@ -933,7 +933,7 @@
// PROFILE_START;
if (m_d->memory) {
- readbuffer = (peak_data_t*)(m_d->memory +
m_readPos*sizeof(peak_data_t));
+ readbuffer = (peak_data_t*)(m_d->memory + m_readPos);
framesRead = count;
} else {
framesRead = m_d->file.read((char*)buffer->readBuffer,
sizeof(peak_data_t) * count) / sizeof(peak_data_t);
Index: core/Peak.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/Peak.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- core/Peak.h 15 Oct 2007 21:03:10 -0000 1.25
+++ core/Peak.h 23 Oct 2007 17:38:29 -0000 1.26
@@ -98,7 +98,7 @@
static const int ZOOM_LEVELS = 20;
static const int SAVING_ZOOM_FACTOR = 6;
static const int MAX_ZOOM_USING_SOURCEFILE = SAVING_ZOOM_FACTOR - 1;
- static const int MAX_DB_VALUE = 120;
+ static const int MAX_DB_VALUE = 32767;
static int zoomStep[ZOOM_LEVELS + 1];
Peak(AudioSource* source);
@@ -151,9 +151,9 @@
};
struct PeakHeaderData {
- int peakDataOffset;
+ int headerSize;
int normValuesDataOffset;
- int peakDataLevelOffsets[ZOOM_LEVELS - SAVING_ZOOM_FACTOR];
+ int peakDataOffsets[ZOOM_LEVELS - SAVING_ZOOM_FACTOR];
int peakDataSizeForLevel[ZOOM_LEVELS - SAVING_ZOOM_FACTOR];
char label[6]; //TPFxxx -> Traverso Peak File version x.x.x
int version[2];
- [Traverso-commit] traverso/src common/defines.h core/Peak.cpp cor...,
Remon Sijrier <=