arduino-audio-tools
Loading...
Searching...
No Matches
src
AudioTools
AudioCodecs
CodecFactory.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
AudioTools/AudioCodecs/AudioCodecsBase.h
"
4
5
namespace
audio_tools
{
12
class
CodecFactory
{
13
public
:
14
bool
addDecoder
(
const
char
*
id
,
AudioDecoder
* (*cb)()) {
15
if
(
id
==
nullptr
|| cb ==
nullptr
)
return
false
;
16
DecoderFactoryLine
line
;
17
line
.
id
= id;
18
line
.cb = cb;
19
decoders
.push_back(
line
);
20
return
true
;
21
}
22
23
bool
addEncoder
(
const
char
*
id
,
AudioEncoder
* (*cb)()) {
24
if
(
id
==
nullptr
|| cb ==
nullptr
)
return
false
;
25
EncoderFactoryLine
line
;
26
line
.
id
= id;
27
line
.cb = cb;
28
encoders
.push_back(
line
);
29
return
true
;
30
}
31
33
AudioDecoder
*
createDecoder
(
const
char
* str) {
34
for
(
auto
&
line
:
decoders
) {
35
if
(
line
.id.equals(str)) {
36
return
line
.cb();
37
}
38
}
39
return
nullptr
;
40
}
42
AudioEncoder
*
createEncoder
(
const
char
* str) {
43
for
(
auto
&
line
:
encoders
) {
44
if
(
line
.id.equals(str)) {
45
return
line
.cb();
46
}
47
}
48
return
nullptr
;
49
}
50
51
protected
:
52
struct
DecoderFactoryLine
{
53
Str
id
;
54
AudioDecoder
* (*cb)() =
nullptr
;
55
};
56
struct
EncoderFactoryLine
{
57
Str
id
;
58
AudioEncoder
* (*cb)() =
nullptr
;
59
};
60
Vector<DecoderFactoryLine>
decoders
;
61
Vector<EncoderFactoryLine>
encoders
;
62
};
63
64
}
// namespace audio_tools
AudioCodecsBase.h
audio_tools::AudioDecoder
Decoding of encoded audio into PCM data.
Definition
AudioCodecsBase.h:18
audio_tools::AudioEncoder
Encoding of PCM data.
Definition
AudioCodecsBase.h:97
audio_tools::CodecFactory
Factory for creating new decoders based on the mime type or id.
Definition
CodecFactory.h:12
audio_tools::CodecFactory::createEncoder
AudioEncoder * createEncoder(const char *str)
create a new encoder instance
Definition
CodecFactory.h:42
audio_tools::CodecFactory::createDecoder
AudioDecoder * createDecoder(const char *str)
create a new decoder instance
Definition
CodecFactory.h:33
audio_tools::CodecFactory::addEncoder
bool addEncoder(const char *id, AudioEncoder *(*cb)())
Definition
CodecFactory.h:23
audio_tools::CodecFactory::addDecoder
bool addDecoder(const char *id, AudioDecoder *(*cb)())
Definition
CodecFactory.h:14
audio_tools::CodecFactory::encoders
Vector< EncoderFactoryLine > encoders
Definition
CodecFactory.h:61
audio_tools::CodecFactory::decoders
Vector< DecoderFactoryLine > decoders
Definition
CodecFactory.h:60
audio_tools::Str
Str which keeps the data on the heap. We grow the allocated memory only if the copy source is not fit...
Definition
Str.h:24
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::CodecFactory::DecoderFactoryLine
Definition
CodecFactory.h:52
audio_tools::CodecFactory::DecoderFactoryLine::id
Str id
Definition
CodecFactory.h:53
audio_tools::CodecFactory::EncoderFactoryLine
Definition
CodecFactory.h:56
audio_tools::CodecFactory::EncoderFactoryLine::id
Str id
Definition
CodecFactory.h:57
Generated by
1.9.8