X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4d6306eb4da8cdac4b5dee9784959672c233eec8..2356708db31b737c6eae53c2316b642aa5a2e68d:/utils/wxMMedia/sndfrag.h diff --git a/utils/wxMMedia/sndfrag.h b/utils/wxMMedia/sndfrag.h index 8acb31f9cf..520f48ee4a 100644 --- a/utils/wxMMedia/sndfrag.h +++ b/utils/wxMMedia/sndfrag.h @@ -32,63 +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();