arduino-audio-tools
Loading...
Searching...
No Matches
src
AudioTools
AudioCodecs
CodecChain.h
Go to the documentation of this file.
1
#pragma once
2
#include "
AudioTools/AudioCodecs/AudioCodecsBase.h
"
3
#include "
AudioTools/AudioCodecs/AudioEncoded.h
"
4
5
namespace
audio_tools
{
6
15
class
CodecChain
:
public
AudioDecoder
,
AudioEncoder
{
16
public
:
17
CodecChain
() =
default
;
18
CodecChain
(
AudioDecoder
&decoder) {
addDecoder
(decoder); }
19
CodecChain
(
AudioEncoder
&encoder) {
addEncoder
(encoder); }
20
22
void
addDecoder
(
AudioDecoder
&decoder) {
23
EncodedAudioStream
stream;
24
stream.
setDecoder
(&decoder);
25
streams
.push_back(stream);
26
if
(
streams
.size() > 1) {
27
streams
[
streams
.size() - 2].setOutput(
streams
[
streams
.size() - 1]);
28
}
29
}
30
32
void
addEncoder
(
AudioEncoder
&encoder) {
33
EncodedAudioStream
stream;
34
stream.
setEncoder
(&encoder);
35
streams
.push_back(stream);
36
if
(
streams
.size() > 1) {
37
streams
[
streams
.size() - 2].setOutput(
streams
[
streams
.size() - 1]);
38
}
39
}
40
41
void
setOutput
(
Print
&
out_stream
)
override
{
42
p_print
= &
out_stream
;
43
if
(
streams
.size() > 0)
streams
[
streams
.size() - 1].setOutput(
out_stream
);
44
}
45
46
void
setOutput
(
AudioStream
&
out_stream
)
override
{
47
p_print
= &
out_stream
;
48
if
(
streams
.size() > 0)
streams
[
streams
.size() - 1].setOutput(
out_stream
);
49
}
50
51
void
setOutput
(
AudioOutput
&
out_stream
)
override
{
52
p_print
= &
out_stream
;
53
if
(
streams
.size() > 0)
streams
[
streams
.size() - 1].setOutput(
out_stream
);
54
}
55
56
void
setAudioInfo
(
AudioInfo
from)
override
{
57
AudioDecoder::setAudioInfo
(from);
58
for
(
auto
&stream :
streams
) {
59
stream.setAudioInfo(from);
60
}
61
}
62
63
void
addNotifyAudioChange
(
AudioInfoSupport
&
bi
)
override
{
64
for
(
auto
&stream :
streams
) {
65
stream.addNotifyAudioChange(
bi
);
66
}
67
}
68
69
size_t
write
(
const
uint8_t
*data,
size_t
len)
override
{
70
if
(
streams
.size() == 0)
return
0;
71
return
streams
[0].write(data, len);
72
}
73
74
operator
bool
() {
return
is_active
; }
75
76
bool
begin
() {
77
is_active
=
true
;
78
for
(
auto
&stream :
streams
) {
79
stream.begin();
80
}
81
return
true
;
82
}
83
84
void
end
()
override
{
85
is_active
=
false
;
86
for
(
auto
&stream :
streams
) {
87
stream.end();
88
}
89
};
90
92
const
char
*
mime
() {
return
nullptr
; }
93
94
protected
:
95
Vector<EncodedAudioStream>
streams
;
96
bool
is_active
=
false
;
97
};
98
99
}
// namespace audio_tools
AudioCodecsBase.h
AudioEncoded.h
audio_tools::AudioDecoder
Decoding of encoded audio into PCM data.
Definition
AudioCodecsBase.h:18
audio_tools::AudioDecoder::setAudioInfo
void setAudioInfo(AudioInfo from) override
for most decoders this is not needed
Definition
AudioCodecsBase.h:28
audio_tools::AudioDecoder::p_print
Print * p_print
Definition
AudioCodecsBase.h:75
audio_tools::AudioEncoder
Encoding of PCM data.
Definition
AudioCodecsBase.h:97
audio_tools::AudioInfoSupport
Supports changes to the sampling rate, bits and channels.
Definition
AudioTypes.h:135
audio_tools::AudioOutput
Abstract Audio Ouptut class.
Definition
AudioOutput.h:25
audio_tools::AudioStream
Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...
Definition
BaseStream.h:123
audio_tools::CodecChain
CodecChain - allows to chain multiple decoders and encoders together.
Definition
CodecChain.h:15
audio_tools::CodecChain::setOutput
void setOutput(Print &out_stream) override
Defines where the decoded result is written to.
Definition
CodecChain.h:41
audio_tools::CodecChain::CodecChain
CodecChain(AudioEncoder &encoder)
Definition
CodecChain.h:19
audio_tools::CodecChain::addNotifyAudioChange
void addNotifyAudioChange(AudioInfoSupport &bi) override
Adds target to be notified about audio changes.
Definition
CodecChain.h:63
audio_tools::CodecChain::CodecChain
CodecChain(AudioDecoder &decoder)
Definition
CodecChain.h:18
audio_tools::CodecChain::is_active
bool is_active
Definition
CodecChain.h:96
audio_tools::CodecChain::setAudioInfo
void setAudioInfo(AudioInfo from) override
for most decoders this is not needed
Definition
CodecChain.h:56
audio_tools::CodecChain::begin
bool begin()
Definition
CodecChain.h:76
audio_tools::CodecChain::end
void end() override
Definition
CodecChain.h:84
audio_tools::CodecChain::write
size_t write(const uint8_t *data, size_t len) override
Definition
CodecChain.h:69
audio_tools::CodecChain::addEncoder
void addEncoder(AudioEncoder &encoder)
Adds an encoder to the chain.
Definition
CodecChain.h:32
audio_tools::CodecChain::mime
const char * mime()
Returns nullptr.
Definition
CodecChain.h:92
audio_tools::CodecChain::streams
Vector< EncodedAudioStream > streams
Definition
CodecChain.h:95
audio_tools::CodecChain::setOutput
void setOutput(AudioStream &out_stream) override
Defines where the decoded result is written to.
Definition
CodecChain.h:46
audio_tools::CodecChain::setOutput
void setOutput(AudioOutput &out_stream) override
Defines where the decoded result is written to.
Definition
CodecChain.h:51
audio_tools::CodecChain::CodecChain
CodecChain()=default
audio_tools::CodecChain::addDecoder
void addDecoder(AudioDecoder &decoder)
Adds a decoder to the chain.
Definition
CodecChain.h:22
audio_tools::EncodedAudioStream
A more natural Stream class to process encoded data (aac, wav, mp3...) which also supports the decodi...
Definition
AudioEncoded.h:271
audio_tools::EncodedAudioStream::setEncoder
void setEncoder(AudioEncoder *encoder)
Definition
AudioEncoded.h:306
audio_tools::EncodedAudioStream::setDecoder
void setDecoder(AudioDecoder *decoder)
Definition
AudioEncoded.h:308
audio_tools::Print
Definition
NoArduino.h:62
audio_tools::Vector
Vector implementation which provides the most important methods as defined by std::vector....
Definition
Vector.h:21
audio_tools
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition
AudioCodecsBase.h:10
audio_tools::writeData
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition
AudioTypes.h:512
audio_tools::AudioInfo
Basic Audio information which drives e.g. I2S.
Definition
AudioTypes.h:55
Generated by
1.9.8