arduino-audio-tools
Classes | Public Member Functions | Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
MTSDecoder1 Class Reference

MPEG-TS (MTS) decoder. Extracts the AAC audio data from a MPEG-TS (MTS) data stream. You can define the relevant stream types via the API. The parsing logic was taken from: https://github.com/Yokohama-Miyazawa/M5HLSPlayer/blob/main/src/AudioGeneratorTS.cpp Status: experimental! More...

#include <CodecMTS.h>

Inheritance diagram for MTSDecoder1:
AudioDecoder AudioDecoder AudioWriter AudioInfoSource AudioWriter AudioInfoSource AudioInfoSupport AudioInfoSupport

Classes

struct  pid_array
 

Public Member Functions

virtual void addNotifyAudioChange (AudioInfoSupport &bi)
 Adds target to be notified about audio changes.
 
void addStreamType (MTSStreamType type)
 
void addStreamType (TSDPMTStreamType type)
 
virtual AudioInfo audioInfo ()
 provides the actual input AudioInfo
 
virtual AudioInfo audioInfoOut ()
 provides the actual output AudioInfo: this is usually the same as audioInfo() unless we use a transforming stream
 
bool begin () override
 
bool begin () override
 
virtual bool begin (AudioInfo info) override
 
virtual void clearNotifyAudioChange ()
 Deletes all change notify subscriptions.
 
void clearStreamTypes ()
 
void clearStreamTypes ()
 
void end () override
 
void end () override
 
void flush ()
 
void flush ()
 
bool isNotifyActive ()
 Checks if the automatic AudioInfo update is active.
 
virtual bool isResultPCM ()
 Returns true to indicate that the decoding result is PCM data.
 
bool isStreamTypeActive (MTSStreamType type)
 
bool isStreamTypeActive (TSDPMTStreamType type)
 
const char * mime ()
 
const char * mime ()
 
virtual operator bool () override
 
virtual operator bool () override
 
virtual bool removeNotifyAudioChange (AudioInfoSupport &bi)
 Removes a target in order not to be notified about audio changes.
 
void resizeBuffer (int size)
 Set a new write buffer size (default is 2000)
 
void resizeBuffer (int size)
 Set a new write buffer size (default is 2000)
 
virtual void setAudioInfo (AudioInfo from) override
 for most decoders this is not needed
 
void setMemoryAllocationLogging (bool flag)
 Activate logging for memory allocations.
 
void setNotifyActive (bool flag)
 Deactivate/Reactivate automatic AudioInfo updates: (default is active)
 
virtual void setOutput (AudioOutput &out_stream)
 Defines where the decoded result is written to.
 
virtual void setOutput (AudioStream &out_stream)
 Defines where the decoded result is written to.
 
virtual void setOutput (Print &out_stream) override
 Defines where the decoded result is written to.
 
size_t write (const uint8_t *data, size_t len) override
 
size_t write (const uint8_t *data, size_t len) override
 

Public Attributes

int id
 custom id to be used by application
 

Protected Member Functions

void add_print_pid (TSDProgramElement *prog, TSDPMTStreamType type)
 
void demux (int limit)
 
void demux (int limit)
 
const char * descriptor_tag_to_str (uint8_t tag)
 
void event_cb_local (TSDemuxContext *ctx, uint16_t pid, TSDEventId event_id, void *data)
 
bool is_new_file (uint8_t *data)
 Determines if we are at the beginning of a new file.
 
void logResult (TSDCode code)
 
void notifyAudioChange (AudioInfo info)
 
uint32_t parse ()
 
int parsePacket (uint8_t *packet, uint8_t *data)
 
int parsePAT (uint8_t *pat)
 
int parsePES (uint8_t *pat, const int posOfPacketStart, const bool isNewPayload)
 
int parsePMT (uint8_t *pat)
 
void print_descriptor_info (TSDDescriptor *desc)
 
void print_pat (TSDemuxContext *ctx, void *data)
 
void print_pmt (TSDemuxContext *ctx, void *data)
 
void set_write_active (bool flag)
 
const char * stream_type_to_str (TSDPESStreamId stream_id)
 
void writeBlocking (Print *out, uint8_t *data, size_t len)
 

Static Protected Member Functions

static void event_cb (TSDemuxContext *ctx, uint16_t pid, TSDEventId event_id, void *data)
 
static void * log_calloc (size_t num, size_t size)
 
static void log_free (void *mem)
 
static void * log_malloc (size_t size)
 
static void * log_realloc (void *ptr, size_t size)
 

Protected Attributes

Vector< AllocSizealloc_vector
 
SingleBuffer< uint8_t > buffer { 2000 }
 
TSDemuxContext ctx
 
Vector< uint8_t > data { 188 }
 
AudioInfo info
 
bool is_active = false
 
bool is_alloc_active = false
 
bool is_notify_active = true
 
bool is_write_active = false
 
bool isSyncByteFound = false
 
Vector< AudioInfoSupport * > notify_vector
 
Printp_print = nullptr
 
uint8_t packetBuff [188]
 
int16_t pesDataLength = -1
 
pid_array pidsOfPMT
 
uint16_t print_pids [(16)] = {0}
 
int16_t relevantPID = -1
 
Vector< MTSStreamTypestream_types
 
Vector< TSDPMTStreamType > stream_types
 
int underflowLimit = 200
 

Static Protected Attributes

static MTSDecoder1self = nullptr
 

Detailed Description

MPEG-TS (MTS) decoder. Extracts the AAC audio data from a MPEG-TS (MTS) data stream. You can define the relevant stream types via the API. The parsing logic was taken from: https://github.com/Yokohama-Miyazawa/M5HLSPlayer/blob/main/src/AudioGeneratorTS.cpp Status: experimental!

MPEG-TS (MTS) decoder. Extracts the AAC audio data from a MPEG-TS (MTS) data stream. You can define the relevant stream types via the API. Required dependency: https://github.com/pschatzmann/arduino-tsdemux.

Author
Phil Schatzmann

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