traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso/src/core AudioClip.cpp ReadSource.cpp ...


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src/core AudioClip.cpp ReadSource.cpp ...
Date: Thu, 29 Nov 2007 13:17:30 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       07/11/29 13:17:30

Modified files:
        src/core       : AudioClip.cpp ReadSource.cpp ReadSource.h 

Log message:
        * ReadSource: assign error values to m_error, fixes detection of file 
name changed or removed problem.
        * only create m_peak if the readsource was valid

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/AudioClip.cpp?cvsroot=traverso&r1=1.155&r2=1.156
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ReadSource.cpp?cvsroot=traverso&r1=1.82&r2=1.83
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ReadSource.h?cvsroot=traverso&r1=1.43&r2=1.44

Patches:
Index: AudioClip.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/AudioClip.cpp,v
retrieving revision 1.155
retrieving revision 1.156
diff -u -b -r1.155 -r1.156
--- AudioClip.cpp       29 Nov 2007 11:04:07 -0000      1.155
+++ AudioClip.cpp       29 Nov 2007 13:17:30 -0000      1.156
@@ -713,8 +713,10 @@
                if (m_peak) {
                        m_peak->close();
                }
+               if (m_isReadSourceValid) {
                m_peak = new Peak(rs);
        }
+       }
 
        emit stateChanged();
 }

Index: ReadSource.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/ReadSource.cpp,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -b -r1.82 -r1.83
--- ReadSource.cpp      24 Nov 2007 15:56:15 -0000      1.82
+++ ReadSource.cpp      29 Nov 2007 13:17:30 -0000      1.83
@@ -214,6 +214,10 @@
                return (m_error = INVALID_CHANNEL_COUNT);
        }
        
+       if ( ! QFile::exists(m_fileName)) {
+               return (m_error = FILE_DOES_NOT_EXIST);
+       }
+       
        m_rbReady = 0;
        m_needSync = 0;
        m_syncInProgress = 0;
@@ -227,7 +231,7 @@
                PERROR("ReadSource:: audio reader is not valid! (reader channel 
count: %d, nframes: %d", m_audioReader->get_num_channels(), 
m_audioReader->get_nframes());
                delete m_audioReader;
                m_audioReader = 0;
-               return COULD_NOT_OPEN_FILE;
+               return (m_error = COULD_NOT_OPEN_FILE);
        }
        
        int converter_type = config().get_property("Conversion", 
"RTResamplingConverterType", 2).toInt();
@@ -244,7 +248,7 @@
                PERROR("ReadAudioSource: file contains %d channels; only 2 
channels are supported", m_channelCount);
                delete m_audioReader;
                m_audioReader = 0;
-               return INVALID_CHANNEL_COUNT;
+               return (m_error = INVALID_CHANNEL_COUNT);
        }
 
        // Never reached, it's allready checked in 
AbstractAudioReader::is_valid() which was allready called!
@@ -252,7 +256,7 @@
                PERROR("ReadAudioSource: not a valid channel count: %d", 
m_channelCount);
                delete m_audioReader;
                m_audioReader = 0;
-               return ZERO_CHANNELS;
+               return (m_error = ZERO_CHANNELS);
        }
        
        m_rate = m_audioReader->get_file_rate();
@@ -363,17 +367,27 @@
 
 int ReadSource::rb_read(audio_sample_t** dst, TimeRef& start, nframes_t count)
 {
+//     static int runcount;
+//     runcount++;
 
        if ( ! m_rbReady ) {
 //             printf("ringbuffer not ready\n");
                return 0;
        }
 
+       TimeRef diff = m_rbRelativeFileReadPos - start;
+       if (diff.universal_frame() > 0 && diff.to_frame(m_outputRate) == 0) {
+               m_rbRelativeFileReadPos = start;
+//             printf("diff == %d\n", diff.to_frame(m_outputRate));
+       }
+       
        if (start != m_rbRelativeFileReadPos) {
                
                TimeRef availabletime(m_buffers.at(0)->read_space(), 
m_outputRate);
+/*             printf("rb_read:: m_rbRelativeFileReadPos, start: %lld, 
%lld\n", m_rbRelativeFileReadPos.universal_frame(), start.universal_frame());
+               printf("rb_read:: availabletime %d\n", 
availabletime.to_frame(m_outputRate));*/
                
-               if ( (start > m_rbRelativeFileReadPos) && 
(m_rbRelativeFileReadPos + availabletime) > (start + TimeRef(count, 
m_outputRate))) {
+               if ( (start > m_rbRelativeFileReadPos) && 
((m_rbRelativeFileReadPos + availabletime) > (start + TimeRef(count, 
m_outputRate))) ) {
                        
                        TimeRef advance = start - m_rbRelativeFileReadPos;
                        if (availabletime < advance) {
@@ -384,6 +398,8 @@
                        }
                        
                        m_rbRelativeFileReadPos += advance;
+//                     printf("rb_read:: advance %d\n", 
advance.to_frame(m_outputRate));
+//                     printf("rb_read:: m_rbRelativeFileReadPos after advance 
%d\n", m_rbRelativeFileReadPos.to_frame(m_outputRate));
                } else {
                        TimeRef synclocation = start + 
m_clip->get_track_start_location() + m_clip->get_source_start_location();
                        start_resync(synclocation);
@@ -404,6 +420,8 @@
        }
 
        m_rbRelativeFileReadPos.add_frames(readcount, m_outputRate);
+/*     if (runcount < 20)
+               printf("rb_read:: m_rbRelativeFileReadPos after add_frames 
%lld\n", m_rbRelativeFileReadPos.universal_frame());*/
        
        return readcount;
 }
@@ -457,6 +475,7 @@
        
        m_rbFileReadPos = fileposition;
        m_rbRelativeFileReadPos = fileposition;
+//     printf("rb_seek_to_file_position:: m_rbRelativeFileReadPos, 
synclocation: %d, %d\n", m_rbRelativeFileReadPos.to_frame(m_outputRate), 
fileposition.to_frame(m_outputRate));
 }
 
 

Index: ReadSource.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/ReadSource.h,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- ReadSource.h        29 Nov 2007 11:09:08 -0000      1.43
+++ ReadSource.h        29 Nov 2007 13:17:30 -0000      1.44
@@ -47,7 +47,7 @@
                COULD_NOT_OPEN_FILE = -1,
                INVALID_CHANNEL_COUNT = -2,
                ZERO_CHANNELS = -3,
-               CHANNELCOUNT_FILECOUNT_MISMATCH = -4
+               FILE_DOES_NOT_EXIST = -4
        };
        
        ReadSource* deep_copy();




reply via email to

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