diff audioio/AudioCallbackPlaySource.h @ 4:5865094175ea

* Fix update and play limits for play-selection mode when not looping * Fix playback in loop mode when no selection -- but the GUI update for this is still wrong on the flyback * Various fixes and improvements to making selections, particularly during playback * Draw selection under non-opaque non-scrollable layers, so as to improve cacheing * Show selection limits as text when drawing selection * Allow user to find missing audio files when loading session * Cross-fade selections when in play-selection mode -- mostly. We don't cross-fade on a processing block boundary, and unfortunately with short selections the selection boundary is quite likely to coincide with a block boundary.
author Chris Cannam
date Wed, 25 Jan 2006 17:46:28 +0000
parents 75c3ea1c3a32
children f3d777b693f7
line wrap: on
line diff
--- a/audioio/AudioCallbackPlaySource.h	Tue Jan 24 16:20:58 2006 +0000
+++ b/audioio/AudioCallbackPlaySource.h	Wed Jan 25 17:46:28 2006 +0000
@@ -164,6 +164,8 @@
 signals:
     void modelReplaced();
 
+    void playStatusChanged(bool isPlaying);
+
     /// Just a warning
     void sampleRateMismatch(size_t requested, size_t available);
 
@@ -186,6 +188,7 @@
     bool                             m_playing;
     bool                             m_exiting;
     size_t                           m_bufferedToFrame;
+    size_t                           m_lastModelEndFrame;
     static const size_t              m_ringBufferSize;
     float                            m_outputLeft;
     float                            m_outputRight;
@@ -222,7 +225,10 @@
     TimeStretcherData *m_timeStretcher;
     Scavenger<TimeStretcherData> m_timeStretcherScavenger;
 
-    void fillBuffers(); // Called from fill thread, m_playing true, mutex held
+    // Called from fill thread, m_playing true, mutex held
+    void fillBuffers();
+    
+    // Called from fillBuffers
     bool mixModels(size_t &frame, size_t count, float **buffers);
 
     class AudioCallbackPlaySourceFillThread : public QThread