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

Logic to detemine the mime type from the content. By default the following mime types are supported (audio/aac, audio/mpeg, audio/vnd.wave, audio/ogg, audio/flac). You can register your own custom detection logic to cover additional file types. More...

#include <MimeDetector.h>

Inheritance diagram for MimeDetector:
MimeSource

Classes

struct  Check
 

Public Member Functions

 MimeDetector (bool setupDefault=true)
 
bool begin ()
 Sets is_first to true.
 
void clear ()
 Clears all mime rules and resets the actual selection.
 
void end ()
 Clears the actual mime and resets the state.
 
const char * mime ()
 
void setCheck (const char *mime, bool(*check)(uint8_t *start, size_t len), bool isActvie=true)
 adds/updates the checking logic for the indicated mime
 
void setDefaultMime (const char *mime)
 Provides the default mime type if no mime could be determined.
 
int setMimeActive (const char *mimePrefix, bool active)
 sets the mime rules active or inactive
 
void setMimeCallback (void(*callback)(const char *))
 
size_t write (uint8_t *data, size_t len)
 write the header to determine the mime
 

Static Public Member Functions

static bool checkAAC (uint8_t *start, size_t len)
 
static bool checkAACExt (uint8_t *start, size_t len)
 
static bool checkFLAC (uint8_t *start, size_t len)
 
static bool checkM4A (uint8_t *header, size_t len)
 
static bool checkMP2T (uint8_t *start, size_t len)
 MPEG-2 TS Byte Stream Format.
 
static bool checkMP3 (uint8_t *start, size_t len)
 
static bool checkMP3Ext (uint8_t *start, size_t len)
 
static bool checkOGG (uint8_t *start, size_t len)
 
static bool checkOggFLAC (uint8_t *start, size_t len)
 
static bool checkOggOpus (uint8_t *start, size_t len)
 Checks for OGG Opus format.
 
static bool checkOggVorbis (uint8_t *start, size_t len)
 Checks for OGG Vorbis format.
 
static bool checkSID (uint8_t *start, size_t len)
 Commodore 64 SID File.
 
static bool checkWAV (uint8_t *start, size_t len)
 

Protected Member Functions

void determineMime (void *data, size_t len)
 Update the mime type.
 
const char * lookupMime (uint8_t *data, size_t len)
 Default logic which supports aac, mp3, wav and ogg.
 

Protected Attributes

const char * actual_mime = nullptr
 
Vector< Checkchecks {0}
 
const char * default_mime = nullptr
 
bool is_first = false
 
void(* notifyMimeCallback )(const char *mime) = nullptr
 

Detailed Description

Logic to detemine the mime type from the content. By default the following mime types are supported (audio/aac, audio/mpeg, audio/vnd.wave, audio/ogg, audio/flac). You can register your own custom detection logic to cover additional file types.

Please note that the distinction between mp3 and aac is difficult and might fail in some cases. FLAC detection supports both native FLAC and OGG FLAC formats.

Author
Phil Schatzmann

Member Function Documentation

◆ checkOggOpus()

static bool checkOggOpus ( uint8_t *  start,
size_t  len 
)
inlinestatic

Checks for OGG Opus format.

Detects OGG containers that contain Opus-encoded audio data. Opus in OGG streams typically have "OpusHead" as the codec identifier in the first page of the stream.

Parameters
startPointer to the data buffer
lenLength of the data buffer
Returns
true if OGG Opus format is detected, false otherwise

◆ checkOggVorbis()

static bool checkOggVorbis ( uint8_t *  start,
size_t  len 
)
inlinestatic

Checks for OGG Vorbis format.

Detects OGG containers that contain Vorbis-encoded audio data. Vorbis in OGG streams have "\x01vorbis" as the codec identifier in the first page of the stream.

Parameters
startPointer to the data buffer
lenLength of the data buffer
Returns
true if OGG Vorbis format is detected, false otherwise

◆ mime()

const char * mime ( )
inlinevirtual

Provides the actual mime type, that was determined from the first available data

Implements MimeSource.


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