VBAN Audio Source and Sink for the ESP32. For further details please see https://vb-audio.com/Voicemeeter/vban.htm . Inspired by https://github.com/rkinnett/ESP32-VBAN-Audio-Source/tree/master and https://github.com/rkinnett/ESP32-VBAN-Network-Audio-Player.
More...
#include <VBANStream.h>
|
bool | begin_rx () |
|
bool | begin_tx () |
|
bool | configure_tx () |
|
void | configure_vban (VBanSampleRates rate) |
|
virtual int | not_supported (int out, const char *msg="") |
|
void | notifyAudioChange (AudioInfo info) |
|
void | receive_udp (AsyncUDPPacket &packet) |
| VBAN adjusts the number of samples per packet according to sample rate. Assuming 16-bit PCM mono, sample rates 11025, 22050, 44100, and 88200 yield packets containing 64, 128, 256, and 256 samples per packet, respectively. The even-thousands sample rates below 48000 yield non-power-of-2 lengths. For example, sample rate 24000 yields 139 samples per packet. This VBAN->DMA->DAC method seems to require the dma buffer length be set equal to the number of samples in each VBAN packet. ESP32 I2S/DMA does not seem to handle non-power-of-2 buffer lengths well. Sample rate 24000 doesn't work reliably at all. Sample rate 32000 is stable but stutters. Recommend selecting from sample rates 11025, 22050, 44100, and above And set samplesPerPacket to 64 for 11025, 128 for 22050, or 256 for all else.
|
|
void | refillReadBuffer () |
|
void | safe_strncpy (char *dest, const char *src, size_t dest_size) |
|
void | sendVbanPing0Reply (AsyncUDPPacket &sourcePacket) |
|
void | start_wifi () |
|
const char * | toString (IPAddress adr) |
|
int | vban_sample_rate () |
|
|
int | _timeout = 10 |
|
bool | available_active = false |
|
const IPAddress | broadcast_address {0, 0, 0, 0} |
|
size_t | bytes_received = 0 |
|
VBANConfig | cfg |
|
AudioInfo | info |
|
bool | is_notify_active = true |
|
Vector< AudioInfoSupport * > | notify_vector |
|
Print * | p_out = nullptr |
|
uint32_t | packet_counter = 0 |
|
BufferRTOS< uint8_t > | rx_buffer { 0} |
|
Throttle | throttle |
|
RingBuffer< uint8_t > | tmp_in {0} |
|
RingBuffer< uint8_t > | tmp_out {0} |
|
SingleBuffer< int16_t > | tx_buffer {0} |
|
AsyncUDP | udp |
|
bool | udp_connected = false |
|
VBan | vban |
|
int | write_buffer_size = MAX_SINGLE_CHARS |
|
◆ addNotifyAudioChange()
Adds target to be notified about audio changes.
Reimplemented in CodecNOP, EncodedAudioOutput, EncodedAudioStream, AACDecoderFDK, DecoderBasic, CodecChain, MP3DecoderHelix, MP3DecoderMAD, OggContainerDecoder, RTSPClient< TcpClient, UdpSocket >, Pipeline, and Pipeline::ModifyingStreamAdapter.
◆ audioInfo()
|
inlineoverridevirtualinherited |
◆ audioInfoOut()
provides the actual output AudioInfo: this is usually the same as audioInfo() unless we use a transforming stream
Reimplemented in PureDataStream, PWMAudioOutput, ChannelFormatConverterStreamT< T >, ChannelFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, NumberFormatConverterStream, FormatConverterStream, Pipeline, ResampleStream, and ResampleStreamT< TInterpolator >.
◆ available()
◆ availableForWrite()
int availableForWrite |
( |
| ) |
|
|
inlinevirtual |
◆ begin()
◆ clearNotifyAudioChange()
virtual void clearNotifyAudioChange |
( |
| ) |
|
|
inlinevirtualinherited |
◆ end()
Reimplemented in FaustStream< DSP >, I2SCodecStream, VS1053Stream, WM8960Stream, AdaptiveResamplingStream, ESPNowStream, I2SStream, TimerCallbackAudioStream, GoertzelStream, AudioFFTBase, AudioKitStream, HLSStreamT< URLStream >, HttpRequest, ICYStreamT< T >, AnalogAudioStream, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, InputMixer< T >, InputMerge< T >, QueueStream< T >, QueueStream< uint8_t >, and Pipeline.
◆ flush()
|
inlineoverridevirtualinherited |
◆ operator bool()
virtual operator bool |
( |
| ) |
|
|
inlinevirtualinherited |
◆ readBytes()
size_t readBytes |
( |
uint8_t * |
data, |
|
|
size_t |
len |
|
) |
| |
|
inlineoverridevirtual |
◆ removeNotifyAudioChange()
◆ setAudioInfo()
◆ write() [1/2]
size_t write |
( |
const uint8_t * |
data, |
|
|
size_t |
len |
|
) |
| |
|
inlineoverridevirtual |
◆ write() [2/2]
virtual size_t write |
( |
uint8_t |
ch | ) |
|
|
inlineoverridevirtualinherited |
The documentation for this class was generated from the following file: