arduino-audio-tools
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
StreamCopyT< T > Class Template Reference

Typed Stream Copy which supports the conversion from channel to 2 channels. We make sure that we allways copy full samples. More...

#include <StreamCopy.h>

Public Member Functions

 StreamCopyT (int buffer_size=DEFAULT_BUFFER_SIZE)
 
 StreamCopyT (Print &to, AudioStream &from, int buffer_size=DEFAULT_BUFFER_SIZE)
 
 StreamCopyT (Print &to, Stream &from, int buffer_size=DEFAULT_BUFFER_SIZE)
 
int available ()
 available bytes of the data source
 
void begin ()
 (Re)starts the processing
 
void begin (Print &to, AudioStream &from)
 assign a new output and input stream
 
void begin (Print &to, Stream &from)
 assign a new output and input stream
 
int bufferSize ()
 Provides the buffer size.
 
size_t copy ()
 copies the data from the source to the destination - the result is in bytes
 
size_t copyAll (int retryCount=5, int retryWaitMs=200)
 copies all data - returns true if we copied anything
 
size_t copyMs (size_t millis, AudioInfo info)
 Copies audio for the indicated number of milliseconds: note that the resolution is determined by the buffer_size.
 
size_t copyN (size_t pages)
 Copies pages * buffersize samples.
 
void end ()
 Ends the processing.
 
StreamgetFrom ()
 Provides a pointer to the copy source. Can be used to check if the source is defined.
 
PrintgetTo ()
 Provides a pointer to the copy target. Can be used to check if the target is defined.
 
bool isActive ()
 Check if copier is active.
 
bool isCheckAvailable ()
 Is Available check activated ?
 
bool isCheckAvailableForWrite ()
 Is Available for Write check activated ?
 
const char * mime ()
 Provides the actual mime type, that was determined from the first available data.
 
int minCopySize ()
 Determine frame size.
 
void resize (int len)
 resizes the copy buffer
 
void setActive (bool flag)
 deactivate/activate copy - active by default
 
void setAvailableCallback (int(*callback)(Stream *stream))
 Defines a callback that provides the available bytes at the source.
 
void setCallbackOnWrite (void(*onWrite)(void *obj, void *buffer, size_t len), void *obj)
 Defines a callback that is notified with the wirtten data.
 
void setCheckAvailable (bool flag)
 Activates the check that we copy only if available returns a value.
 
void setCheckAvailableForWrite (bool flag)
 Activates the check that we copy only if available for write returns a value.
 
void setDelayOnNoData (int delayMs)
 Defines the dealy that is used if no data is available.
 
void setLogName (const char *name)
 Defines a name which will be printed in the log to identify the copier.
 
void setMimeCallback (void(*callback)(const char *))
 Define the callback that will notify about mime changes.
 
void setMinCopySize (int size)
 Defines the minimum frame size that is used to round the copy size: 0 will automatically try to determine the value.
 
void setRetry (int retry)
 Defines the max number of retries.
 
void setRetryDelay (int delay)
 Defines the delay that is added before we retry an incomplete copy.
 
void setSynchAudioInfo (bool active)
 Activate the synchronization from the AudioInfo form the source to the target.
 

Protected Member Functions

void notifyMime (void *data, size_t len)
 Update the mime type.
 
void syncAudioInfo ()
 
size_t write (size_t len, size_t &delayCount)
 blocking write - until everything is processed
 

Protected Attributes

bool active = true
 
const char * actual_mime = nullptr
 
int(* availableCallback )(Stream *stream) =nullptr
 
Vector< uint8_t > buffer {0}
 
int buffer_size
 
int channels = 0
 
bool check_available = true
 
bool check_available_for_write = false
 
int delay_on_no_data = COPY_DELAY_ON_NODATA
 
AudioStreamfrom = nullptr
 
bool is_first = false
 
bool is_sync_audio_info = false
 
const char * log_name = ""
 
int min_copy_size = 1
 
void(* notifyMimeCallback )(const char *mime) = nullptr
 
void(* onWrite )(void *obj, void *buffer, size_t len) = nullptr
 
void * onWriteObj = nullptr
 
AudioInfoSupportp_audio_info_support = nullptr
 
int retry_delay = 10
 
int retryLimit = COPY_RETRY_LIMIT
 
Printto = nullptr
 

Detailed Description

template<class T>
class audio_tools::StreamCopyT< T >

Typed Stream Copy which supports the conversion from channel to 2 channels. We make sure that we allways copy full samples.

Template Parameters
T
Author
Phil Schatzmann

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