* Stream: update in doc, fix in code.
* wxMMedia: various fixes, WAV and AIFF should work on Linux, preparing it for Windows. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1692 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -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();
|
||||
|
||||
|
Reference in New Issue
Block a user