]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxMMedia/sndfrag.h
fixed somebody's poorly done StreamSize-->GetSize transition
[wxWidgets.git] / utils / wxMMedia / sndfrag.h
index d0679087e45224f5f5e7753fde6eee68014efd34..520f48ee4adc946a6db79a1f1ff51e3d18b8c29f 100644 (file)
@@ -32,65 +32,60 @@ protected:
   typedef enum {
     wxBUFFER_FREE,
     wxBUFFER_FFILLED,
-    wxBUFFER_TOFREE
+    wxBUFFER_TOFREE,
+    wxBUFFER_PLAYING
   } BufState;
 public: 
   ///
   typedef struct {
-    char *data;
-    ///
+    // Local stream buffer for this fragment.
+    wxStreamBuffer *sndbuf;
+    // Data the driver would like to pass to the callback.
     char *user_data;
-    ///
-    wxUint32 size, ptr;
-    ///
+    // Buffers included in this fragment.
     wxList *buffers;
-    ///
+    // State of the fragment.
     BufState state;
   } wxFragBufPtr;
 protected:
-  ///
+  //
   wxFragBufPtr *m_optrs, *m_iptrs;
-  ///
+  //
   wxFragBufPtr *m_lstoptrs, *m_lstiptrs;
-  ///
+  //
   bool m_buf2free, m_dontq, m_freeing;
-  ///
+  //
   wxSoundDataFormat m_drvformat;
 public:
-  ///
   wxFragmentBuffer(wxSound& io_drv);
-  ///
   virtual ~wxFragmentBuffer();
 
-  ///
+  // These functions initializes the fragments. They must initialize 
+  // m_lstoptrs, m_lstiptrs, m_maxoq, m_maxiq.
   virtual void AllocIOBuffer() = 0;
-  ///
   virtual void FreeIOBuffer() = 0;
 
-  ///
   void AbortBuffer(wxSndBuffer *buf);
   
-  ///
+  // Find a free (or partly free) fragment.
   wxFragBufPtr *FindFreeBuffer(wxFragBufPtr *list, wxUint8 max_queue);
-  ///
+  // Add this sound buffer to an "OUTPUT" fragment.
   bool NotifyOutputBuffer(wxSndBuffer *buf);
-  ///
+  // Add this sound buffer to an "INPUT" fragment.
   bool NotifyInputBuffer(wxSndBuffer *buf);
 
-  ///
+  // Called when a fragment is finished.
   void OnBufferFinished(wxFragBufPtr *ptr);
 
-  ///
+  // Called when a fragment is full and it should be flushed in the sound card.
   virtual bool OnBufferFilled(wxFragBufPtr *ptr, wxSndMode mode) = 0;
 
-  ///
   inline wxSndBuffer *LastBuffer() {
     wxNode *node = m_iodrv->m_buffers.Last();
 
     if (!node) return NULL;
     return (wxSndBuffer *)node->Data();
   }
-  ///
   inline wxSndBuffer *FirstBuffer() {
     wxNode *node = m_iodrv->m_buffers.First();