traverso-commit
[Top][All Lists]
Advanced

[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];




reply via email to

[Prev in Thread] Current Thread [Next in Thread]