arduino-audio-tools
Loading...
Searching...
No Matches
CodecCopy.h
Go to the documentation of this file.
1#pragma once
2
4#if defined(ARDUINO) && !defined(IS_MIN_DESKTOP)
5#include "Print.h"
6#endif
7
8namespace audio_tools {
9
18class CopyDecoder : public AudioDecoder {
19public:
20
21 CopyDecoder(bool isPcm = false){
22 is_pcm = isPcm;
23 }
24
26
28
30
32
33 bool begin() { return true; }
34
35 void end() {}
36
37 size_t write(const uint8_t *data, size_t len) {
38 TRACED();
39 if (pt_print == nullptr) {
40 LOGE("No output stream defined for CopyDecoder");
41 return 0;
42 }
43 return pt_print->write((uint8_t*)data,len);
44 }
45
46 operator bool() { return true; }
47
49 virtual bool isResultPCM() { return is_pcm;}
50
52 void setResultPCM(bool pcm){ is_pcm = pcm;}
53
54protected:
55 Print *pt_print=nullptr;
56 bool is_pcm = false;
57};
58
66class CopyEncoder : public AudioEncoder {
67public:
69
71
73
75
77
78 bool begin() { return true;}
79
80 void end() {}
81
82 size_t write(const uint8_t *data, size_t len) {
83 if (pt_print == nullptr) {
84 LOGE("No output stream defined for CopyDecoder");
85 return 0;
86 }
87 return pt_print->write((uint8_t*)data,len);
88 }
89
90 operator bool() { return true; }
91
93 const char *mime() {return mime_type;}
94
96 void setMime(const char *mime) { mime_type = mime; }
97
98
99protected:
100 Print *pt_print=nullptr;
101 const char *mime_type = "audio/pcm";
102};
103
107
111
112} // namespace audio_tools
113
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGE(...)
Definition AudioLoggerIDF.h:30
Decoding of encoded audio into PCM data.
Definition AudioCodecsBase.h:18
Encoding of PCM data.
Definition AudioCodecsBase.h:97
Supports changes to the sampling rate, bits and channels.
Definition AudioTypes.h:135
Dummy Decoder which just copies the provided data to the output. You can define if it is PCM data.
Definition CodecCopy.h:18
CopyDecoder(Print &out_stream)
Definition CodecCopy.h:25
virtual bool isResultPCM()
The result is encoded data - by default this is false.
Definition CodecCopy.h:49
virtual void setOutput(Print &out_stream)
Defines where the decoded result is written to.
Definition CodecCopy.h:31
void setResultPCM(bool pcm)
Defines that the source and therefor the result is also PCM data.
Definition CodecCopy.h:52
~CopyDecoder()
Definition CodecCopy.h:29
bool begin()
Definition CodecCopy.h:33
CopyDecoder(Print &out_stream, AudioInfoSupport &bi)
Definition CodecCopy.h:27
bool is_pcm
Definition CodecCopy.h:56
CopyDecoder(bool isPcm=false)
Definition CodecCopy.h:21
void end()
Definition CodecCopy.h:35
Print * pt_print
Definition CodecCopy.h:55
size_t write(const uint8_t *data, size_t len)
Definition CodecCopy.h:37
Dummy Encoder which just copies the provided data to the output.
Definition CodecCopy.h:66
const char * mime_type
Definition CodecCopy.h:101
CopyEncoder()
Definition CodecCopy.h:68
~CopyEncoder()
Definition CodecCopy.h:74
virtual void setOutput(Print &out_stream)
Default output assignment (encoders may override to store Print reference)
Definition CodecCopy.h:76
bool begin()
Definition CodecCopy.h:78
const char * mime()
Provides the mime type of the encoded data.
Definition CodecCopy.h:93
void setMime(const char *mime)
Defines the mime type.
Definition CodecCopy.h:96
CopyEncoder(Print &out_stream)
Definition CodecCopy.h:70
void end()
Definition CodecCopy.h:80
Print * pt_print
Definition CodecCopy.h:100
CopyEncoder(Print &out_stream, AudioInfoSupport &bi)
Definition CodecCopy.h:72
size_t write(const uint8_t *data, size_t len)
Definition CodecCopy.h:82
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