arduino-audio-tools
Loading...
Searching...
No Matches
MP3Parser.h
Go to the documentation of this file.
1#pragma once
4
5namespace audio_tools {
6
16 public:
17 MP3ParserEncoder(int bufferSize = 1024 * 2) { buffer_size = bufferSize; }
18 bool begin() override {
19 TRACEI();
20 mp3.resize(buffer_size); // 10KB buffer
21 mp3.reset();
22 return true;
23 }
24
25 void end() override {
26 TRACEI();
27 mp3.flush();
28 mp3.reset();
29 mp3.resize(0);
30 }
31
32 size_t write(const uint8_t* data, size_t len) override {
33 LOGI("write: %d", (int)len);
34 return mp3.write(data, len);
35 }
36
42
50
51 uint32_t frameDurationUs() override { return mp3.getTimePerFrameMs() * 1000; }
52
54
55 operator bool() override { return true; }
56
57 virtual const char* mime() override { return "audio/mpeg"; }
58
59 protected:
61 int buffer_size = 0;
62};
63
64} // namespace audio_tools
#define TRACEI()
Definition AudioLoggerIDF.h:32
#define LOGI(...)
Definition AudioLoggerIDF.h:28
Encoding of PCM data.
Definition AudioCodecsBase.h:97
AudioInfo info
Definition AudioCodecsBase.h:116
virtual void setOutput(Print &out_stream) override
Default output assignment (encoders may override to store Print reference)
Definition AudioCodecsBase.h:109
MP3 header parser that processes MP3 data incrementally and extracts complete MP3 frames....
Definition HeaderParserMP3.h:25
int getChannels() const
Number of channels from mp3 header.
Definition HeaderParserMP3.h:435
void setOutput(Print &output)
Definition HeaderParserMP3.h:191
uint16_t getSampleRate() const
Sample rate from mp3 header.
Definition HeaderParserMP3.h:425
size_t getTimePerFrameMs()
playing time per frame in ms
Definition HeaderParserMP3.h:480
void reset()
Clears internal buffer and resets state.
Definition HeaderParserMP3.h:502
int getSamplesPerFrame()
number of samples per mp3 frame
Definition HeaderParserMP3.h:472
void resize(int size)
Definition HeaderParserMP3.h:193
void flush()
Definition HeaderParserMP3.h:209
size_t write(const uint8_t *data, size_t len)
split up the data into mp3 segements and write to output
Definition HeaderParserMP3.h:196
Parses MP3 frames, extracts audio info, and outputs complete frames. The frame duration is determined...
Definition MP3Parser.h:15
void setOutput(Print &out_stream) override
Default output assignment (encoders may override to store Print reference)
Definition MP3Parser.h:37
MP3ParserEncoder(int bufferSize=1024 *2)
Definition MP3Parser.h:17
void end() override
Definition MP3Parser.h:25
uint16_t samplesPerFrame() override
Optional rtsp function: provide samples per the frame.
Definition MP3Parser.h:53
virtual const char * mime() override
Provides the mime type of the encoded result.
Definition MP3Parser.h:57
size_t write(const uint8_t *data, size_t len) override
Definition MP3Parser.h:32
uint32_t frameDurationUs() override
Optional rtsp function: provide the frame duration in microseconds.
Definition MP3Parser.h:51
bool begin() override
Definition MP3Parser.h:18
HeaderParserMP3 mp3
Definition MP3Parser.h:60
AudioInfo audioInfo() override
provides the actual input AudioInfo
Definition MP3Parser.h:43
int buffer_size
Definition MP3Parser.h:61
Definition NoArduino.h:62
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
Basic Audio information which drives e.g. I2S.
Definition AudioTypes.h:55
sample_rate_t sample_rate
Sample Rate: e.g 44100.
Definition AudioTypes.h:57
uint16_t channels
Number of channels: 2=stereo, 1=mono.
Definition AudioTypes.h:59
uint8_t bits_per_sample
Number of bits per sample (int16_t = 16 bits)
Definition AudioTypes.h:61