arduino-audio-tools
Loading...
Searching...
No Matches
src
AudioTools
Communication
RTSP
RTSPOutput.h
Go to the documentation of this file.
1
/*
2
* Author: Phil Schatzmann
3
*
4
* Based on Micro-RTSP library:
5
* https://github.com/geeksville/Micro-RTSP
6
* https://github.com/Tomp0801/Micro-RTSP-Audio
7
*
8
*/
9
#pragma once
10
11
#include "
AudioTools/CoreAudio/AudioPlayer.h
"
12
#include "
AudioTools/CoreAudio/AudioStreams.h
"
13
#include "
RTSPAudioSource.h
"
14
#include "
RTSPAudioStreamer.h
"
15
#include "
RTSPFormat.h
"
16
17
namespace
audio_tools
{
18
33
template
<
typename
Platform>
34
class
RTSPOutput
:
public
AudioOutput
{
35
public
:
44
RTSPOutput
(
RTSPFormat
&format,
AudioEncoder
&encoder) {
45
setFormat
(format);
46
rtsp_streamer
.setAudioSource(&
rtsp_source
);
47
p_encoder
= &encoder;
48
}
49
50
void
setFormat
(
RTSPFormat
&format) {
51
TRACEI
();
52
p_format
= &format;
53
rtsp_source
.
setFormat
(format);
54
}
55
61
RTSPOutput
() =
default
;
62
68
RTSPAudioStreamer<Platform>
&
streamer
() {
return
rtsp_streamer
; }
69
76
bool
begin
(
AudioInfo
info) {
77
cfg
= info;
78
return
begin
();
79
}
80
87
bool
begin
() {
88
TRACEI
();
89
if
(
p_encoder
==
nullptr
) {
90
LOGE
(
"encoder is null"
);
91
return
false
;
92
}
93
if
(
p_format
==
nullptr
) {
94
LOGE
(
"format is null"
);
95
return
false
;
96
}
97
// setup the RTSPAudioStreamer
98
cfg
.
logInfo
();
99
100
p_encoder
->
setOutput
(
memory_stream
);
101
p_encoder
->
setAudioInfo
(
cfg
);
102
p_encoder
->
begin
();
103
// setup the RTSPSourceFromAudioStream
104
rtsp_source
.
setInput
(
memory_stream
);
105
rtsp_source
.
setFormat
(*
p_format
);
106
rtsp_source
.
setAudioInfo
(
cfg
);
107
rtsp_source
.
start
();
108
109
memory_stream
.
setConsumeOnRead
(
true
);
110
memory_stream
.
begin
();
111
112
// Initialize format with audio info (PCM or codec-specific)
113
p_format
->
begin
(
cfg
);
114
115
return
true
;
116
}
117
121
void
end
() {
122
rtsp_source
.
stop
();
123
memory_stream
.
end
();
124
}
125
131
int
availableForWrite
() {
132
return
rtsp_source
.
isStarted
() ?
memory_stream
.
availableForWrite
() : 0;
133
}
134
142
size_t
write
(
const
uint8_t
*data,
size_t
len)
override
{
143
TRACED
();
144
size_t
result =
p_encoder
->
write
(data, len);
145
return
result;
146
}
147
153
operator
bool
() {
return
rtsp_source
.
isActive
() &&
memory_stream
.
availableForWrite
() > 0; }
154
155
protected
:
156
// Core Components
157
CopyEncoder
copy_encoder
;
158
RTSPAudioSource
rtsp_source
;
159
DynamicMemoryStream
memory_stream
{
false
, 1024, 10};
160
AudioEncoder
*
p_encoder
=
161
&
copy_encoder
;
162
RTSPFormatPCM
pcm
;
163
RTSPFormat
*
p_format
= &
pcm
;
164
RTSPAudioStreamer<Platform>
165
rtsp_streamer
;
166
};
167
168
}
// namespace audio_tools
TRACEI
#define TRACEI()
Definition
AudioLoggerIDF.h:32
TRACED
#define TRACED()
Definition
AudioLoggerIDF.h:31
LOGE
#define LOGE(...)
Definition
AudioLoggerIDF.h:30
AudioPlayer.h
AudioStreams.h
RTSPAudioSource.h
RTSPAudioStreamer.h
RTSPFormat.h
audio_tools::AudioEncoder
Encoding of PCM data.
Definition
AudioCodecsBase.h:97
audio_tools::AudioEncoder::setAudioInfo
void setAudioInfo(AudioInfo from) override
Defines the sample rate, number of channels and bits per sample.
Definition
AudioCodecsBase.h:106
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::AudioOutput
Abstract Audio Ouptut class.
Definition
AudioOutput.h:25
audio_tools::AudioOutput::cfg
AudioInfo cfg
Definition
AudioOutput.h:88
audio_tools::AudioWriter::write
virtual size_t write(const uint8_t *data, size_t len)=0
audio_tools::AudioWriter::begin
virtual bool begin()=0
audio_tools::CopyEncoder
Dummy Encoder which just copies the provided data to the output.
Definition
CodecCopy.h:66
audio_tools::DynamicMemoryStream
MemoryStream which is written and read using the internal RAM. For each write the data is allocated o...
Definition
BaseStream.h:468
audio_tools::DynamicMemoryStream::begin
virtual bool begin() override
Intializes the processing.
Definition
BaseStream.h:490
audio_tools::DynamicMemoryStream::availableForWrite
virtual int availableForWrite() override
Definition
BaseStream.h:557
audio_tools::DynamicMemoryStream::setConsumeOnRead
void setConsumeOnRead(bool consume)
Enable or disable consuming reads (remove records as they are read)
Definition
BaseStream.h:506
audio_tools::DynamicMemoryStream::end
virtual void end() override
Definition
BaseStream.h:496
audio_tools::RTSPAudioSource
Unified RTSP Audio Source - Works with both Stream and AudioStream.
Definition
RTSPAudioSource.h:31
audio_tools::RTSPAudioSource::start
void start() override
Start the audio source.
Definition
RTSPAudioSource.h:149
audio_tools::RTSPAudioSource::setAudioInfo
void setAudioInfo(AudioInfo info)
Set audio configuration manually.
Definition
RTSPAudioSource.h:104
audio_tools::RTSPAudioSource::isStarted
bool isStarted()
Returns true after start() has been called.
Definition
RTSPAudioSource.h:211
audio_tools::RTSPAudioSource::isActive
bool isActive()
Check if source is actively being read (AudioStream only)
Definition
RTSPAudioSource.h:202
audio_tools::RTSPAudioSource::stop
void stop() override
Stop the audio source.
Definition
RTSPAudioSource.h:172
audio_tools::RTSPAudioSource::setInput
void setInput(AudioStream &stream)
Set input from AudioStream (with auto-detection)
Definition
RTSPAudioSource.h:71
audio_tools::RTSPAudioSource::setFormat
void setFormat(RTSPFormat &format)
Definition
RTSPAudioSource.h:213
audio_tools::RTSPAudioStreamer
RTSPAudioStreamer - Timer-driven RTP Audio Streaming Engine.
Definition
RTSPAudioStreamer.h:650
audio_tools::RTSPFormat
Audio Format Definition - Base class for RTSP audio formats.
Definition
RTSPFormat.h:48
audio_tools::RTSPFormat::begin
virtual void begin(AudioInfo info)
Definition
RTSPFormat.h:58
audio_tools::RTSPFormatPCM
Linear PCM Format for RTSP Streaming.
Definition
RTSPFormat.h:121
audio_tools::RTSPOutput
RTSPOutput - Audio Output Stream for RTSP Streaming.
Definition
RTSPOutput.h:34
audio_tools::RTSPOutput::rtsp_streamer
RTSPAudioStreamer< Platform > rtsp_streamer
Handles RTP packet transmission.
Definition
RTSPOutput.h:165
audio_tools::RTSPOutput::copy_encoder
CopyEncoder copy_encoder
Pass-through encoder for PCM mode.
Definition
RTSPOutput.h:157
audio_tools::RTSPOutput::streamer
RTSPAudioStreamer< Platform > & streamer()
Get access to the underlying RTSP streamer.
Definition
RTSPOutput.h:68
audio_tools::RTSPOutput::begin
bool begin()
Initialize RTSPOutput with current audio configuration.
Definition
RTSPOutput.h:87
audio_tools::RTSPOutput::pcm
RTSPFormatPCM pcm
Default PCM format handler (merged class)
Definition
RTSPOutput.h:162
audio_tools::RTSPOutput::RTSPOutput
RTSPOutput()=default
Construct RTSPOutput with default PCM format (no encoding)
audio_tools::RTSPOutput::write
size_t write(const uint8_t *data, size_t len) override
Write PCM audio data for encoding and streaming.
Definition
RTSPOutput.h:142
audio_tools::RTSPOutput::availableForWrite
int availableForWrite()
Get available space for writing audio data.
Definition
RTSPOutput.h:131
audio_tools::RTSPOutput::memory_stream
DynamicMemoryStream memory_stream
Memory stream for internal buffer.
Definition
RTSPOutput.h:159
audio_tools::RTSPOutput::end
void end()
Stop RTSP streaming and cleanup resources.
Definition
RTSPOutput.h:121
audio_tools::RTSPOutput::RTSPOutput
RTSPOutput(RTSPFormat &format, AudioEncoder &encoder)
Construct RTSPOutput with specific encoder and format.
Definition
RTSPOutput.h:44
audio_tools::RTSPOutput::p_encoder
AudioEncoder * p_encoder
Active encoder (PCM or codec-specific)
Definition
RTSPOutput.h:160
audio_tools::RTSPOutput::setFormat
void setFormat(RTSPFormat &format)
Definition
RTSPOutput.h:50
audio_tools::RTSPOutput::p_format
RTSPFormat * p_format
Active format handler.
Definition
RTSPOutput.h:163
audio_tools::RTSPOutput::rtsp_source
RTSPAudioSource rtsp_source
Provides encoded audio to streamer.
Definition
RTSPOutput.h:158
audio_tools::RTSPOutput::begin
bool begin(AudioInfo info)
Initialize RTSPOutput with specific audio configuration.
Definition
RTSPOutput.h:76
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::logInfo
virtual void logInfo(const char *source="")
Definition
AudioTypes.h:125
Generated by
1.9.8