arduino-audio-tools
All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Modules Pages
AudioESP8266.h
1#pragma once
2
3#include "AudioConfig.h"
4#include "AudioTools/CoreAudio/AudioOutput.h"
5#include "AudioTools/CoreAudio/AudioStreams.h"
6#include "AudioTools/CoreAudio/Buffers.h"
7#include "AudioOutput.h"
8#include "SoundData.h"
9
10namespace audio_tools {
11
12
13
24class AudioOutputWithCallback : public ::AudioOutput, public BufferedStream {
25 public:
26 // Default constructor
27 AudioOutputWithCallback(int bufferSize, int bufferCount)
28 : BufferedStream(bufferSize) {
29 callback_buffer_ptr = new NBuffer<Frame>(bufferSize, bufferCount);
30 }
31
32 virtual ~AudioOutputWithCallback() { delete callback_buffer_ptr; }
33
35 virtual bool begin() {
36 active = true;
37 return true;
38 }
39
41 virtual bool ConsumeSample(int16_t sample[2]) {
42 Frame c;
43 c.channel1 = sample[0];
44 c.channel2 = sample[1];
45 return callback_buffer_ptr->write(c);
46 };
47
49 virtual bool stop() {
50 active = false;
51 return true;
52 };
53
55 size_t read(Frame *src, size_t len) {
56 return active ? this->callback_buffer_ptr->readArray(src, len) : 0;
57 }
58
59 protected:
60 NBuffer<Frame> *callback_buffer_ptr;
61 bool active;
62
63 virtual size_t writeExt(const uint8_t *data, size_t len) {
64 return callback_buffer_ptr->writeArray((Frame *)data, len / sizeof(Frame));
65 }
66
67 virtual size_t readExt(uint8_t *data, size_t len) {
68 return callback_buffer_ptr->readArray((Frame *)data, len / sizeof(Frame));
69 ;
70 }
71};
72
78 public:
79 ESP3288AudioOutput(::AudioOutput &out, int channels) {
80 p_out = &out;
81 this->channels = channels;
82 }
83
84 virtual size_t write(const uint8_t *data, size_t len) {
85 size_t result = 0;
86 int16_t *v = (int16_t *)data;
87 if (channels == 2) {
88 result = p_out->ConsumeSamples(v, len / 2);
89 } else {
90 LOGE("Only 2 Channels are supported");
91 result = 0;
92 }
93 return result;
94 }
95
96 protected:
97 ::AudioOutput *p_out = nullptr;
98 int channels;
99};
100} // namespace audio_tools
ESP8266Audio AudioOutput class which stores the data in a temporary buffer. The buffer can be consume...
Definition AudioESP8266.h:24
size_t read(Frame *src, size_t len)
Provides the data from the internal buffer to the callback.
Definition AudioESP8266.h:55
virtual bool stop()
stops the processing
Definition AudioESP8266.h:49
virtual bool begin()
Activates the output.
Definition AudioESP8266.h:35
virtual bool ConsumeSample(int16_t sample[2])
puts the sample into a buffer
Definition AudioESP8266.h:41
Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...
Definition BaseStream.h:115
virtual int readArray(T data[], int len)
reads multiple values
Definition Buffers.h:41
The Arduino Stream supports operations on single characters. This is usually not the best way to push...
Definition AudioStreams.h:480
Stream Adapter for ESP8288-Audio AudioOutput.
Definition AudioESP8266.h:77
bool write(T data)
write add an entry to the buffer
Definition Buffers.h:595
Vector implementation which provides the most important methods as defined by std::vector....
Definition Vector.h:21
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioConfig.h:885