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