arduino-audio-tools
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
HeaderParserMP3 Class Reference

MP3 header parser that processes MP3 data incrementally and extracts complete MP3 frames. Can validate MP3 data and extract audio information. When used with a Print output, it splits incoming data into complete MP3 frames and writes them to the output stream. More...

#include <HeaderParserMP3.h>

Public Member Functions

 HeaderParserMP3 ()=default
 Default constructor.
 
 HeaderParserMP3 (Print &output, int bufferSize=2048)
 Constructor for write support.
 
int findSyncWord (const uint8_t *buf, size_t nBytes, uint8_t synch=0xFF, uint8_t syncl=0xF0)
 Finds the mp3/aac sync word.
 
void flush ()
 
int getBitRate () const
 Bit rate from mp3 header.
 
int getChannels () const
 Number of channels from mp3 header.
 
FrameHeader getFrameHeader ()
 
int getFrameLength ()
 Frame length from mp3 header.
 
size_t getFrameRateHz ()
 frame rate in Hz (frames per second)
 
const char * getLayerStr () const
 Provides a string representation of the MPEG layer.
 
size_t getPlayingTime (size_t fileSizeBytes)
 
uint16_t getSampleRate () const
 Sample rate from mp3 header.
 
int getSamplesPerFrame ()
 number of samples per mp3 frame
 
size_t getTimePerFrameMs ()
 playing time per frame in ms
 
const char * getVersionStr () const
 Provides a string representation of the MPEG version.
 
bool hasValidFrame () const
 Returns true if we have parsed at least one valid frame.
 
bool isValid ()
 Returns true if a valid frame has been detected.
 
bool isValid (const uint8_t *data, int len)
 parses the header string and returns true if this is a valid mp3 file
 
void reset ()
 Clears internal buffer and resets state.
 
void resize (int size)
 
void setOutput (Print &output)
 
size_t write (const uint8_t *data, size_t len)
 split up the data into mp3 segements and write to output
 

Protected Types

enum class  FrameReason {
  VALID , INVALID_BITRATE_FOR_VERSION , INVALID_SAMPLERATE_FOR_VERSION , INVALID_MPEG_VERSION ,
  INVALID_LAYER , INVALID_LAYER_II_BITRATE_AND_MODE , INVALID_EMPHASIS , INVALID_CRC
}
 

Protected Member Functions

bool contains (const uint8_t *data, const char *toFind, size_t len)
 
bool processBuffer ()
 Processes the internal buffer to extract complete mp3 frames.
 
void readFrameHeader (const uint8_t *data)
 
int seekFrameSync (const uint8_t *str, size_t len)
 
bool validate (const uint8_t *data, size_t len)
 
FrameReason validateFrameHeader (const FrameHeader &header)
 

Protected Attributes

SingleBuffer< uint8_t > buffer {0}
 
size_t buffer_size = 0
 
bool frame_header_valid = false
 
FrameHeader header
 
size_t last_frame_size = 0
 
Printp_output = nullptr
 

Detailed Description

MP3 header parser that processes MP3 data incrementally and extracts complete MP3 frames. Can validate MP3 data and extract audio information. When used with a Print output, it splits incoming data into complete MP3 frames and writes them to the output stream.

Features:

Author
Phil Schatzmann

Member Function Documentation

◆ getPlayingTime()

size_t getPlayingTime ( size_t  fileSizeBytes)
inline

Provides the estimated playing time in seconds based on the bitrate of the first segment


The documentation for this class was generated from the following file: