arduino-audio-tools
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
DynamicMemoryStream Class Reference

MemoryStream which is written and read using the internal RAM. For each write the data is allocated on the heap. More...

#include <BaseStream.h>

Inheritance diagram for DynamicMemoryStream:
BaseStream Stream Print

Public Member Functions

 DynamicMemoryStream ()=default
 
 DynamicMemoryStream (bool isLoop, int defaultBufferSize=DEFAULT_BUFFER_SIZE, int maxRecords=0)
 
void assign (DynamicMemoryStream &ref)
 
virtual int available () override
 
virtual int availableForWrite () override
 
virtual bool begin () override
 Intializes the processing.
 
void clear ()
 
virtual void end () override
 
virtual void flush () override
 
size_t getPos ()
 Returns the current read position.
 
List< DataNode * > & list ()
 
 operator bool ()
 
template<typename T >
void postProcessSmoothTransition (int channels, float factor=0.01, int remove=0)
 Post processing after the recording. We add a smooth transition at the beginning and at the end.
 
virtual size_t readBytes (uint8_t *data, size_t len) override
 
void rewind ()
 Sets the read position to the beginning.
 
void setConsumeOnRead (bool consume)
 Enable or disable consuming reads (remove records as they are read)
 
virtual void setLoop (bool loop)
 Automatically rewinds to the beginning when reaching the end.
 
void setMaxRecords (int max_records)
 
void setWriteBufferSize (int size)
 
size_t size ()
 
virtual size_t write (const uint8_t *data, size_t len) override
 
virtual size_t write (uint8_t ch) override
 

Protected Member Functions

void refillReadBuffer ()
 Refill small read buffer (e.g. 8 bytes) to avoid single byte reads when calling read()
 

Protected Attributes

int _timeout = 10
 
bool alloc_failed = false
 
List< DataNode * > audio_list
 
bool consume_on_read = false
 
int default_buffer_size =DEFAULT_BUFFER_SIZE
 
bool is_loop = false
 
List< DataNode * >::Iterator it = audio_list.end()
 
int max_records = 0
 
size_t read_pos = 0
 
RingBuffer< uint8_ttemp_audio {0}
 
RingBuffer< uint8_ttmp_in {0}
 
RingBuffer< uint8_ttmp_out {0}
 
size_t total_available = 0
 
int write_buffer_size = MAX_SINGLE_CHARS
 

Detailed Description

MemoryStream which is written and read using the internal RAM. For each write the data is allocated on the heap.

Author
Phil Schatzmann

Constructor & Destructor Documentation

◆ DynamicMemoryStream() [1/2]

DynamicMemoryStream ( )
default

◆ DynamicMemoryStream() [2/2]

DynamicMemoryStream ( bool  isLoop,
int  defaultBufferSize = DEFAULT_BUFFER_SIZE,
int  maxRecords = 0 
)
inline

Member Function Documentation

◆ assign()

void assign ( DynamicMemoryStream ref)
inline

◆ available()

virtual int available ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ availableForWrite()

virtual int availableForWrite ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ begin()

virtual bool begin ( )
inlineoverridevirtual

Intializes the processing.

Reimplemented from BaseStream.

◆ clear()

void clear ( )
inline

◆ end()

virtual void end ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ flush()

virtual void flush ( )
inlineoverridevirtualinherited

◆ getPos()

size_t getPos ( )
inline

Returns the current read position.

◆ list()

List< DataNode * > & list ( )
inline

◆ operator bool()

operator bool ( )
inlineinherited

◆ postProcessSmoothTransition()

template<typename T >
void postProcessSmoothTransition ( int  channels,
float  factor = 0.01,
int  remove = 0 
)
inline

Post processing after the recording. We add a smooth transition at the beginning and at the end.

Template Parameters
T
Parameters
factor

◆ readBytes()

virtual size_t readBytes ( uint8_t data,
size_t  len 
)
inlineoverridevirtual

Implements BaseStream.

◆ refillReadBuffer()

void refillReadBuffer ( )
inlineprotectedinherited

Refill small read buffer (e.g. 8 bytes) to avoid single byte reads when calling read()

◆ rewind()

void rewind ( )
inline

Sets the read position to the beginning.

◆ setConsumeOnRead()

void setConsumeOnRead ( bool  consume)
inline

Enable or disable consuming reads (remove records as they are read)

◆ setLoop()

virtual void setLoop ( bool  loop)
inlinevirtual

Automatically rewinds to the beginning when reaching the end.

◆ setMaxRecords()

void setMaxRecords ( int  max_records)
inline

◆ setWriteBufferSize()

void setWriteBufferSize ( int  size)
inlineinherited

◆ size()

size_t size ( )
inline

◆ write() [1/2]

virtual size_t write ( const uint8_t data,
size_t  len 
)
inlineoverridevirtual

Implements BaseStream.

◆ write() [2/2]

virtual size_t write ( uint8_t  ch)
inlineoverridevirtualinherited

Member Data Documentation

◆ _timeout

int _timeout = 10
protectedinherited

◆ alloc_failed

bool alloc_failed = false
protected

◆ audio_list

List<DataNode*> audio_list
protected

◆ consume_on_read

bool consume_on_read = false
protected

◆ default_buffer_size

int default_buffer_size =DEFAULT_BUFFER_SIZE
protected

◆ is_loop

bool is_loop = false
protected

◆ it

List<DataNode*>::Iterator it = audio_list.end()
protected

◆ max_records

int max_records = 0
protected

◆ read_pos

size_t read_pos = 0
protected

◆ temp_audio

RingBuffer<uint8_t> temp_audio {0}
protected

◆ tmp_in

RingBuffer<uint8_t> tmp_in {0}
protectedinherited

◆ tmp_out

RingBuffer<uint8_t> tmp_out {0}
protectedinherited

◆ total_available

size_t total_available = 0
protected

◆ write_buffer_size

int write_buffer_size = MAX_SINGLE_CHARS
protectedinherited

The documentation for this class was generated from the following file: