Audaspace 1.8.0
A high level audio library.
Loading...
Searching...
No Matches
RingBuffer.h
Go to the documentation of this file.
1/*******************************************************************************
2 * Copyright 2009-2021 Jörg Müller
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 ******************************************************************************/
16
17#pragma once
18
24
25#include "Audaspace.h"
26#include "Buffer.h"
27
28#include <cstddef>
29
31
36class AUD_API RingBuffer
37{
38private:
40 Buffer m_buffer;
41
43 volatile size_t m_read;
44
46 volatile size_t m_write;
47
48 // delete copy constructor and operator=
49 RingBuffer(const RingBuffer&) = delete;
50 RingBuffer& operator=(const RingBuffer&) = delete;
51
52public:
57 RingBuffer(int size = 0);
58
62 const sample_t* getBuffer() const;
63
68
72 int getSize() const;
73
74 size_t getReadSize() const;
75
76 size_t getWriteSize() const;
77
78 size_t read(data_t* target, size_t size);
79
80 size_t write(data_t* source, size_t size);
81
82 void clear();
83
87 void reset();
88
93 void resize(int size);
94
101 void assureSize(int size);
102};
103
The main header file of the library defining the namespace and basic data types.
#define AUD_NAMESPACE_END
Closes the audaspace namespace aud.
Definition Audaspace.h:119
float sample_t
Sample type.(float samples).
Definition Audaspace.h:126
#define AUD_NAMESPACE_BEGIN
Opens the audaspace namespace aud.
Definition Audaspace.h:116
#define AUD_API
Used for exporting symbols in the shared library.
Definition Audaspace.h:93
unsigned char data_t
Sample data type (format samples).
Definition Audaspace.h:129
The Buffer class.
This class is a simple buffer in RAM which is 32 Byte aligned and provides resize functionality.
Definition Buffer.h:34
RingBuffer(int size=0)
Creates a new ring buffer.
void reset()
Resets the ring buffer to a state where nothing has been written or read.
const sample_t * getBuffer() const
Returns the pointer to the ring buffer in memory.
int getSize() const
Returns the size of the ring buffer in bytes.
void assureSize(int size)
Makes sure the ring buffer has a minimum size.
sample_t * getBuffer()
Returns the pointer to the ring buffer in memory.
void resize(int size)
Resizes the ring buffer.