|
arduino-audio-tools
|
IMediaSource for an MPEG transport stream, e.g. live video and audio muxed by MuxerMTS: the muxer writes its output to this object (it is a Print), and an RTSPMediaStreamer sends it as one RTP track (MP2T, RFC 2250 - see RTSPFormatMTS) to the RTSP client, which demuxes video and audio itself. More...
#include <RTSPMediaSourceMTS.h>
Public Member Functions | |
| RTSPMediaSourceMTS (int bufferPackets=128, float sendRate=100) | |
| virtual int | availableForWrite () |
| virtual int | availableForWrite () |
| uint32_t | droppedPackets () |
| Number of TS packets dropped because the buffer was full. | |
| uint32_t | droppedVideoPackets () |
| Number of video TS packets dropped to keep the audio going. | |
| virtual void | flush () |
| virtual void | flush () |
| RTSPFormat & | getFormat () override |
| Get the media format configuration. | |
| int | packetSize () override |
| Size of the next RTP payload: up to kPacketsPerFragment TS packets. | |
| int | readBytes (void *dest, int maxBytes) override |
| Provides whole TS packets only. | |
| void | start () override |
| void | stop () override |
| Called when the client stops streaming. | |
| size_t | write (const uint8_t *data, size_t len) override |
| Accepts the transport stream, in any chunk sizes. | |
| size_t | write (uint8_t c) override |
Static Public Attributes | |
| static constexpr int | kPacketSize = 188 |
| static constexpr int | kPacketsPerFragment = 7 |
Protected Member Functions | |
| void | addPacket () |
| bool | isVideoPes () |
Protected Attributes | |
| int | _timeout = 10 |
| RingBufferSPSC< uint8_t > | buffer |
| int | capacity = 0 |
| uint32_t | dropped = 0 |
| uint32_t | dropped_video = 0 |
| bool | dropping_video = false |
| RTSPFormatMTS | format |
| volatile bool | is_active = false |
| uint8_t | packet [kPacketSize] |
| size_t | packet_len = 0 |
| int | video_pid = -1 |
IMediaSource for an MPEG transport stream, e.g. live video and audio muxed by MuxerMTS: the muxer writes its output to this object (it is a Print), and an RTSPMediaStreamer sends it as one RTP track (MP2T, RFC 2250 - see RTSPFormatMTS) to the RTSP client, which demuxes video and audio itself.
Unlike RTSPOutput's generic byte stream, this source is meant for a live stream written from other tasks (e.g. by VideoMuxerWithTasks):
The data can be written from any task, but not from several tasks at the same time - e.g. by a MuxerMTS driven by VideoMuxerWithTasks, which serializes the writes of its audio and video task with its mutex.
|
inline |
| bufferPackets | size of the buffer in TS packets |
| sendRate | number of times per second the queued packets are sent |
|
inlineprotected |
|
inlinevirtualinherited |
Reimplemented in A2DPStream, AbstractURLStream, AdapterAudioStreamToAudioOutput, AnalogAudioStream, AdapterAudioStreamToAudioOutput, AudioOutput, AudioOutput, AudioStreamWrapper, AudioStreamWrapper, BaseStream, BaseStream, ConverterStream< T >, ConverterStream< T >, CsvOutput< T >, CsvOutput< T >, DynamicMemoryStream, DynamicMemoryStream, EncodedAudioOutput, EncodedAudioStream, FilteredStream< T, TF >, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, MemoryOutput, MemoryOutput, MemoryStream, MemoryStream, OutputMixer< T >, OutputMixer< T >, ProgressStream, ProgressStream, QueueStream< T >, QueueStream< T >, QueueStream< uint8_t >, ReformatBaseStream, RingBufferStream, RingBufferStream, Throttle, Throttle, TimedStream, AudioBLEClient, AudioBLEClient, AudioBLEServer, AudioBLEServer, AudioEffectStream, AudioEffectStreamT< T >, AudioESP32ULP, AudioFFTBase, AudioLoRa, AudioOutput, AudioServerEx, AudioStreamWrapper, AudioSyncWriter, AutomaticGainControlStream, BaseStream, ChannelFormatConverterStream, ChannelFormatConverterStreamT< T >, ConverterStream< T >, CsvOutput< T >, DynamicMemoryStream, EncodedAudioOutput, EncodedAudioStream, Equalizer3BandsPerChannelT< T >, Equalizer3BandsPerChannelT< float >, Equalizer3BandsT< T >, Equalizer3BandsT< float >, ESPNowStream, FadeStream, FaustStream< DSP >, FileOutput, FilteredStream< T, TF >, FrequencyDetectorAutoCorrelation, FrequencyDetectorZeroCrossing, HammingFEC< bytecount, block_t >, I2SCodecStream, I2SStream, MeasuringStream, MemoryOutput, MemoryStream, MiniAudioStream, NRF24Stream, NumberFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, OutputMixer< T >, Pipeline, ProgressStream, PWMAudioOutput< PWMDriverT >, QualityAnalysisStream, QueueStream< T >, ReadioHeadStream, ReedSolomonFEC< bytecount, additional_bytes >, ReformatBaseStream, RingBufferStream, RTSPOutput< Platform >, SPIAudioMaster, SPIAudioSlave, StdioStream, SupportedRatesStream, SynchronizedStream, Throttle, TimedStream, UDPStream, URLStreamESP32, USBAudioStreamBase, VBANStream, and VolumeStream.
|
inlinevirtualinherited |
Reimplemented in A2DPStream, AbstractURLStream, AdapterAudioStreamToAudioOutput, AnalogAudioStream, AdapterAudioStreamToAudioOutput, AudioOutput, AudioOutput, AudioStreamWrapper, AudioStreamWrapper, BaseStream, BaseStream, ConverterStream< T >, ConverterStream< T >, CsvOutput< T >, CsvOutput< T >, DynamicMemoryStream, DynamicMemoryStream, EncodedAudioOutput, EncodedAudioStream, FilteredStream< T, TF >, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, MemoryOutput, MemoryOutput, MemoryStream, MemoryStream, OutputMixer< T >, OutputMixer< T >, ProgressStream, ProgressStream, QueueStream< T >, QueueStream< T >, QueueStream< uint8_t >, ReformatBaseStream, RingBufferStream, RingBufferStream, Throttle, Throttle, TimedStream, AudioBLEClient, AudioBLEClient, AudioBLEServer, AudioBLEServer, AudioEffectStream, AudioEffectStreamT< T >, AudioESP32ULP, AudioFFTBase, AudioLoRa, AudioOutput, AudioServerEx, AudioStreamWrapper, AudioSyncWriter, AutomaticGainControlStream, BaseStream, ChannelFormatConverterStream, ChannelFormatConverterStreamT< T >, ConverterStream< T >, CsvOutput< T >, DynamicMemoryStream, EncodedAudioOutput, EncodedAudioStream, Equalizer3BandsPerChannelT< T >, Equalizer3BandsPerChannelT< float >, Equalizer3BandsT< T >, Equalizer3BandsT< float >, ESPNowStream, FadeStream, FaustStream< DSP >, FileOutput, FilteredStream< T, TF >, FrequencyDetectorAutoCorrelation, FrequencyDetectorZeroCrossing, HammingFEC< bytecount, block_t >, I2SCodecStream, I2SStream, MeasuringStream, MemoryOutput, MemoryStream, MiniAudioStream, NRF24Stream, NumberFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, OutputMixer< T >, Pipeline, ProgressStream, PWMAudioOutput< PWMDriverT >, QualityAnalysisStream, QueueStream< T >, ReadioHeadStream, ReedSolomonFEC< bytecount, additional_bytes >, ReformatBaseStream, RingBufferStream, RTSPOutput< Platform >, SPIAudioMaster, SPIAudioSlave, StdioStream, SupportedRatesStream, SynchronizedStream, Throttle, TimedStream, UDPStream, URLStreamESP32, USBAudioStreamBase, VBANStream, and VolumeStream.
|
inline |
Number of TS packets dropped because the buffer was full.
|
inline |
Number of video TS packets dropped to keep the audio going.
|
inlinevirtualinherited |
Reimplemented in AudioOutput, AudioOutput, AudioStreamWrapper, AudioStreamWrapper, BaseStream, BaseStream, BufferedStream, BufferedStream, EncodedAudioStream, FilteredStream< T, TF >, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, GeneratedSoundStream< T >, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, HexDumpOutput, HexDumpOutput, MemoryStream, MemoryStream, MultiOutput, QueueStream< T >, QueueStream< T >, QueueStream< uint8_t >, ReformatBaseStream, RingBufferStream, RingBufferStream, TimedStream, AudioEffectStream, AudioEffectStreamT< T >, AudioOutput, AudioStreamWrapper, AutomaticGainControlStream, BaseStream, BufferedStream, BufferedTaskStream, EncodedAudioStream, Equalizer3BandsPerChannelT< T >, Equalizer3BandsPerChannelT< float >, Equalizer3BandsT< T >, Equalizer3BandsT< float >, EqualizerNBands< SampleT, AccT, NUM_TAPS, NUM_BANDS >, FadeStream, FilteredStream< T, TF >, GeneratedSoundStream< T >, HDLCStream, HexDumpOutput, I2SStream, MeasuringStream, MemoryStream, MultiOutput, NamePrinter, Pipeline::ModifyingStreamAdapter, PureDataStream, QualityAnalysisStream, QueueStream< T >, ReformatBaseStream, ResampleStream, RingBufferStream, SupportedRatesStream, TimedStream, URLStream, URLStreamBufferedT< T >, URLStreamBufferedT< ICYStream >, URLStreamBufferedT< ICYStreamESP32 >, URLStreamBufferedT< URLStream >, URLStreamBufferedT< URLStreamESP32 >, VFSFile, VolumeStream, and ZephyrFile.
|
inlinevirtualinherited |
Reimplemented in AudioOutput, AudioOutput, AudioStreamWrapper, AudioStreamWrapper, BaseStream, BaseStream, BufferedStream, BufferedStream, EncodedAudioStream, FilteredStream< T, TF >, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, GeneratedSoundStream< T >, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, HexDumpOutput, HexDumpOutput, MemoryStream, MemoryStream, MultiOutput, QueueStream< T >, QueueStream< T >, QueueStream< uint8_t >, ReformatBaseStream, RingBufferStream, RingBufferStream, TimedStream, AudioEffectStream, AudioEffectStreamT< T >, AudioOutput, AudioStreamWrapper, AutomaticGainControlStream, BaseStream, BufferedStream, BufferedTaskStream, EncodedAudioStream, Equalizer3BandsPerChannelT< T >, Equalizer3BandsPerChannelT< float >, Equalizer3BandsT< T >, Equalizer3BandsT< float >, EqualizerNBands< SampleT, AccT, NUM_TAPS, NUM_BANDS >, FadeStream, FilteredStream< T, TF >, GeneratedSoundStream< T >, HDLCStream, HexDumpOutput, I2SStream, MeasuringStream, MemoryStream, MultiOutput, NamePrinter, Pipeline::ModifyingStreamAdapter, PureDataStream, QualityAnalysisStream, QueueStream< T >, ReformatBaseStream, ResampleStream, RingBufferStream, SupportedRatesStream, TimedStream, URLStream, URLStreamBufferedT< T >, URLStreamBufferedT< ICYStream >, URLStreamBufferedT< ICYStreamESP32 >, URLStreamBufferedT< URLStream >, URLStreamBufferedT< URLStreamESP32 >, VFSFile, VolumeStream, and ZephyrFile.
|
inlineoverridevirtual |
Get the media format configuration.
Returns the RTSPFormat object that describes the media data characteristics including sample rate, bit depth, number of channels, and RTP packaging parameters. If no format has been explicitly set, creates a default 16-bit PCM format at 16kHz mono.
Implements IMediaSource.
|
inlineprotected |
True if the current packet starts a video PES packet (stream id 0xE0-0xEF)
|
inlineoverridevirtual |
Size of the next RTP payload: up to kPacketsPerFragment TS packets.
Reimplemented from IMediaSource.
|
inlineoverridevirtual |
Provides whole TS packets only.
Implements IMediaSource.
|
inlineoverridevirtual |
Called when a client starts streaming, before the first readBytes(): discards the old data (on the consumer side - reset() would not be safe while the producer is writing)
Reimplemented from IMediaSource.
|
inlineoverridevirtual |
Called when the client stops streaming.
Reimplemented from IMediaSource.
|
inlineoverridevirtual |
Accepts the transport stream, in any chunk sizes.
Reimplemented from Print.
|
inlineoverride |
|
protectedinherited |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
staticconstexpr |
|
staticconstexpr |
|
protected |
|
protected |
|
protected |