arduino-audio-tools
Loading...
Searching...
No Matches
CodecL16.h
Go to the documentation of this file.
1#pragma once
2
4namespace audio_tools {
5
13class DecoderL16 : public AudioDecoder {
14public:
20
26 DecoderL16(Print &out_stream, bool active = true) {
27 TRACED();
29 }
30
43
46
47 virtual size_t write(const uint8_t *data, size_t len) override {
48 if (p_print == nullptr)
49 return 0;
50 int16_t *data16 = (int16_t *)data;
51 for (int j = 0; j < len / 2; j++) {
52 data16[j] = ntohs(data16[j]);
53 }
54 return p_print->write((uint8_t *)data, len);
55 }
56
57 virtual operator bool() override { return p_print!=nullptr; }
58
59
60protected:
61 Print *p_print = nullptr;
62};
63
75class EncoderL16 : public AudioEncoder {
76public:
77 // Empty Constructor - the output stream must be provided with begin()
79
80 // Constructor providing the output stream
81 EncoderL16(Print &out) { p_print = &out; }
82
85
87 const char *mime() override { return "audio/l16"; }
88
90 virtual bool begin() override { is_open = true; return true;}
91
93 bool begin(Print &out) {
94 p_print = &out;
95 return begin();
96 }
97
99 void end() override { is_open = false; }
100
102 virtual size_t write(const uint8_t *data, size_t len) override {
103 if (p_print == nullptr)
104 return 0;
105
106 int16_t *data16 = (int16_t *)data;
107 for (int j = 0; j < len / 2; j++) {
108 data16[j] = htons(data16[j]);
109 }
110
111 return p_print->write((uint8_t *)data, len);
112 }
113
114 operator bool() override { return is_open; }
115
116 bool isOpen() { return is_open; }
117
118protected:
119 Print *p_print = nullptr;
121};
122
123} // namespace audio_tools
#define TRACED()
Definition AudioLoggerIDF.h:31
#define htons(x)
Definition Net.h:7
#define ntohs(x)
Definition Net.h:9
Decoding of encoded audio into PCM data.
Definition AudioCodecsBase.h:18
Encoding of PCM data.
Definition AudioCodecsBase.h:97
virtual void addNotifyAudioChange(AudioInfoSupport &bi)
Adds target to be notified about audio changes.
Definition AudioTypes.h:153
Supports changes to the sampling rate, bits and channels.
Definition AudioTypes.h:135
DecoderL16 - Converts an 16 Bit Stream into 16Bits network byte order.
Definition CodecL16.h:13
virtual size_t write(const uint8_t *data, size_t len) override
Definition CodecL16.h:47
void setOutput(Print &out_stream) override
Defines the output Stream.
Definition CodecL16.h:45
DecoderL16(Print &out_stream, AudioInfoSupport &bi)
Construct a new DecoderL16 object.
Definition CodecL16.h:38
DecoderL16(Print &out_stream, bool active=true)
Construct a new DecoderL16 object.
Definition CodecL16.h:26
DecoderL16()
Construct a new DecoderL16 object.
Definition CodecL16.h:19
Print * p_print
Definition CodecL16.h:61
EncoderL16s - Condenses 16 bit PCM data stream to 8 bits data. Most microcontrollers can not process ...
Definition CodecL16.h:75
virtual size_t write(const uint8_t *data, size_t len) override
Writes PCM data to be encoded as RAW.
Definition CodecL16.h:102
bool is_open
Definition CodecL16.h:120
void setOutput(Print &out_stream) override
Defines the output Stream.
Definition CodecL16.h:84
bool isOpen()
Definition CodecL16.h:116
virtual bool begin() override
starts the processing using the actual RAWAudioInfo
Definition CodecL16.h:90
void end() override
stops the processing
Definition CodecL16.h:99
bool begin(Print &out)
starts the processing
Definition CodecL16.h:93
EncoderL16()
Definition CodecL16.h:78
EncoderL16(Print &out)
Definition CodecL16.h:81
const char * mime() override
Provides "audio/pcm".
Definition CodecL16.h:87
Print * p_print
Definition CodecL16.h:119
Definition NoArduino.h:62
virtual size_t write(const uint8_t *data, size_t len)
Definition NoArduino.h:126
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition AudioTypes.h:512