Qmmp
recycler_p.h
1 // Copyright (c) 2000-2001 Brad Hughes <bhughes@trolltech.com>
2 //
3 // Use, modification and distribution is allowed without limitation,
4 // warranty, or liability of any kind.
5 //
6 
7 #ifndef RECYCLER_P_H
8 #define RECYCLER_P_H
9 
10 #include <QMutex>
11 #include <QWaitCondition>
12 #include "qmmp.h"
13 #include "buffer.h"
14 
19 class Recycler
20 {
21 public:
25  Recycler();
29  ~Recycler();
35  void configure(quint32 freq, int chan);
39  bool full() const;
43  bool empty() const;
47  int available() const;
51  int used() const;
55  Buffer *next();
59  Buffer *get(); // get next in recycle
63  void add(); // add to queue
67  void done(); // add to recycle
71  void clear(); // clear queue
75  size_t samples() const; // size in samples
79  size_t blockSamples() const; // size in samples
80 
84  QMutex *mutex()
85  {
86  return &m_mtx;
87  }
91  QWaitCondition *cond()
92  {
93  return &m_cnd;
94  }
98  bool blocked();
99 
100 private:
101  unsigned int m_buffer_count, m_add_index, m_done_index, m_current_count;
102  size_t m_block_samples;
103  Buffer **m_buffers;
104  QMutex m_mtx;
105  QWaitCondition m_cnd;
106  Buffer *m_blocked;
107 };
108 
109 #endif // __recycler_h
Audio buffer class.
Definition: buffer.h:20