36 using clock = std::chrono::steady_clock;
123 std::shared_ptr<RingBuffer>
getRingBuffer(
const std::string&
id);
128 std::shared_ptr<RingBuffer>
getRingBuffer(
const std::string&
id)
const;
137 using ReadBindings = std::set<std::shared_ptr<RingBuffer>, std::owner_less<std::shared_ptr<RingBuffer>>>;
139 const ReadBindings* getReadBindings(
const std::string&
ringbufferId)
const;
140 ReadBindings* getReadBindings(
const std::string&
ringbufferId);
142 void removeReadBindings(
const std::string&
ringbufferId);
148 std::shared_ptr<RingBuffer> getRingBufferLocked(
const std::string&
id);
149 std::shared_ptr<RingBuffer> getRingBufferLocked(
const std::string&
id)
const;
150 void flushAllBuffersLocked();
169 std::map<std::string, std::weak_ptr<RingBuffer>> ringBufferMap_ {};
172 std::map<std::string, ReadBindings> readBindingsMap_ {};
174 mutable std::mutex stateLock_ {};
178 std::shared_ptr<RingBuffer> defaultRingBuffer_;
AudioFormat getInternalAudioFormat() const
clock::time_point time_point
std::shared_ptr< RingBuffer > createRingBuffer(const std::string &id)
Create a new ringbuffer with a default readoffset.
std::shared_ptr< RingBuffer > getRingBuffer(const std::string &id)
Obtain a shared pointer on a RingBuffer given by its ID.
size_t availableForGet(const std::string &ringbufferId) const
bool waitForDataAvailable(const std::string &ringbufferId, const duration &max_wait) const
void unBindAllHalfDuplexIn(const std::string &sourceBufferId)
Detaches a source from all its readers.
size_t discard(size_t toDiscard, const std::string &ringbufferId)
void setAudioMeterState(const std::string &id, bool state)
void bindHalfDuplexOut(const std::string &readerBufferId, const std::string &sourceBufferId)
Attaches a reader the specified source.
std::shared_ptr< AudioFrame > getAvailableData(const std::string &ringbufferId)
void unBindAllHalfDuplexOut(const std::string &ringbufferId)
Detaches a reader from all his sources.
void setInternalSamplingRate(unsigned sr)
bool isAudioMeterActive(const std::string &id)
void bindRingBuffers(const std::string &ringbufferId1, const std::string &ringbufferId2)
Bind two RingBuffer together (full duplex).
std::shared_ptr< AudioFrame > getData(const std::string &ringbufferId)
static const char *const DEFAULT_ID
void unbindRingBuffers(const std::string &ringbufferId1, const std::string &ringbufferId2)
Unbind two RingBuffer (full duplex).
void unBindAll(const std::string &ringbufferId)
std::chrono::steady_clock clock
int getInternalSamplingRate() const
void flush(const std::string &ringbufferId)
void unBindHalfDuplexOut(const std::string &readerBufferId, const std::string &sourceBufferId)
Detaches a reader from the specified source.
void setInternalAudioFormat(AudioFormat format)
void emitSignal(Args... args)
Simple macro to hide class' copy constructor and assignment operator.
#define NON_COPYABLE(ClassName)