Qmmp
Loading...
Searching...
No Matches
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
19class Recycler
20{
21public:
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
100private:
101 unsigned int m_buffer_count = 0, m_add_index = 0, m_done_index = 0, m_current_count = 0;
102 size_t m_block_samples = 0;
103 Buffer **m_buffers = nullptr;
104 QMutex m_mtx;
105 QWaitCondition m_cnd;
106 Buffer *m_blocked = nullptr;
107};
108
109#endif // __recycler_h
Audio buffer class.
Definition buffer.h:21