29 #ifndef GSTREAMER_GSTENDPOINT_H
30 #define GSTREAMER_GSTENDPOINT_H
34 #include <ptclib/gstreamer.h>
41 #define OPAL_GST_STRINTF_FMT "{%s}"
42 #define OPAL_GST_NAME "name"
43 #define OPAL_GST_SAMPLE_RATE "sample-rate"
44 #define OPAL_GST_PT "pt"
45 #define OPAL_GST_MTU "mtu"
46 #define OPAL_GST_WIDTH "width"
47 #define OPAL_GST_HEIGHT "height"
48 #define OPAL_GST_FRAME_RATE "frame-rate"
49 #define OPAL_GST_BIT_RATE "bit-rate"
50 #define OPAL_GST_BIT_RATE_K "bit-rate-kbps"
51 #define OPAL_GST_BLOCK_SIZE "blocksize"
52 #define OPAL_GST_LATENCY "latency"
53 #define OPAL_GST_REMOTE_IP "remote-ip"
54 #define OPAL_GST_REMOTE_PPRT "remote-port"
81 const char *prefix =
"gst"
86 virtual ~GstEndPoint();
143 virtual bool BuildPipeline(
144 ostream & description,
145 const GstMediaStream * audioStream
147 ,
const GstMediaStream * videoStream
152 virtual bool ConfigurePipeline(PGstPipeline & pipeline,
const GstMediaStream & stream);
154 virtual bool BuildAudioSourcePipeline(ostream & desc,
const GstMediaStream & stream,
int rtpIndex);
155 virtual bool BuildAudioSinkPipeline(ostream & desc,
const GstMediaStream & stream,
int rtpIndex);
157 virtual bool OutputRTPSource(ostream & desc,
const GstMediaStream & stream,
int rtpIndex);
158 virtual bool OutputRTPSink(ostream & desc,
const GstMediaStream & stream,
int rtpIndex);
160 bool SetAudioSourceDevice(
const PString & elementName);
161 virtual bool BuildAudioSourceDevice(ostream & desc,
const GstMediaStream & stream);
162 const PString & GetAudioSourceDevice()
const {
return m_audioSourceDevice; }
164 bool SetAudioSinkDevice(
const PString & elementName);
165 const PString & GetAudioSinkDevice()
const {
return m_audioSinkDevice; }
166 virtual bool BuildAudioSinkDevice(ostream & desc,
const GstMediaStream & stream);
168 bool SetJitterBufferPipeline(
const PString & elementName);
169 const PString & GetJitterBufferPipeline()
const {
return m_jitterBuffer; }
170 static const PString & GetPipelineJitterBufferName();
171 virtual bool BuildJitterBufferPipeline(ostream & desc,
const GstMediaStream & stream);
173 bool SetRTPPipeline(
const PString & elementName);
174 const PString & GetRTPPipeline()
const {
return m_rtpbin; }
175 static const PString & GetPipelineRTPName();
176 virtual bool BuildRTPPipeline(ostream & desc,
const GstMediaStream & stream,
unsigned index);
178 static const PString & GetPipelineAudioSourceName();
179 virtual bool BuildAppSource(ostream & desc,
const PString & name);
181 static const PString & GetPipelineAudioSinkName();
182 virtual bool BuildAppSink(ostream & desc,
const PString & name,
int rtpIndex);
184 static const PString & GetPipelineVolumeName();
185 virtual bool BuildVolume(ostream & desc,
const PString & name);
188 virtual bool BuildVideoSourcePipeline(ostream & desc,
const GstMediaStream & stream,
int rtpIndex);
189 virtual bool BuildVideoSinkPipeline(ostream & desc,
const GstMediaStream & stream,
int rtpIndex);
191 bool SetVideoSourceDevice(
const PString & elementName);
192 const PString & GetVideoSourceDevice()
const {
return m_videoSourceDevice; }
193 virtual bool BuildVideoSourceDevice(ostream & desc,
const GstMediaStream & stream);
195 bool SetVideoSinkDevice(
const PString & elementName);
196 const PString & GetVideoSinkDevice()
const {
return m_videoSinkDevice; }
197 virtual bool BuildVideoSinkDevice(ostream & desc,
const GstMediaStream & stream);
199 bool SetVideoSourceColourConverter(
const PString & elementName);
200 const PString & GetVideoSourceColourConverter()
const {
return m_videoSourceColourConverter; }
202 bool SetVideoSinkColourConverter(
const PString & elementName);
203 const PString & GetVideoSinkColourConverter()
const {
return m_videoSinkColourConverter; }
205 static const PString & GetPipelineVideoSourceName();
206 static const PString & GetPipelineVideoSinkName();
210 struct CodecPipelines {
212 PString m_packetiser;
214 PString m_depacketiser;
224 const CodecPipelines & info
230 CodecPipelines & info
233 virtual bool BuildEncoder(ostream & desc,
const GstMediaStream & stream);
234 virtual bool BuildDecoder(ostream & desc,
const GstMediaStream & stream);
239 PString m_jitterBuffer;
240 PString m_audioSourceDevice;
241 PString m_audioSinkDevice;
243 PString m_videoSourceDevice;
244 PString m_videoSinkDevice;
245 PString m_videoSourceColourConverter;
246 PString m_videoSinkColourConverter;
250 typedef map<OpalMediaFormat, CodecPipelines> CodecPipelineMap;
252 CodecPipelineMap m_MediaFormatToGStreamer;
273 char tokenPrefix =
'G'
312 unsigned & percentage
336 virtual bool OpenPipeline(
337 PGstPipeline & pipeline,
338 const GstMediaStream & stream
341 virtual bool ConfigurePipeline(PGstPipeline & pipeline,
const GstMediaStream & stream);
360 GstConnection & conn,
374 virtual PBoolean
Open();
381 virtual PBoolean
Start();
444 virtual bool SetAudioVolume(
451 virtual bool GetAudioVolume(
452 unsigned & percentage
457 virtual bool SetAudioMute(
463 virtual bool GetAudioMute(
478 PGstElement::States & state
483 PGstPipeline m_pipeline;
484 PGstAppSrc m_pipeSource;
485 PGstAppSink m_pipeSink;
486 PGstElement m_pipeVolume;
490 #endif // OPAL_GSTREAMER
492 #endif // GSTREAMER_GSTENDPOINT_H
Definition: manager.h:150
virtual OpalMediaStream * CreateMediaStream(const OpalMediaFormat &mediaFormat, unsigned sessionID, PBoolean isSource)
Definition: localep.h:469
OpalLocalEndPoint & m_endpoint
Definition: localep.h:830
virtual PBoolean GetAudioVolume(PBoolean source, unsigned &percentage)
Definition: connection.h:530
virtual OpalMediaFormatList GetMediaFormats() const
virtual bool SetAudioMute(bool source, bool mute)
virtual bool GetAudioMute(bool source, bool &mute)
virtual OpalLocalConnection * CreateConnection(OpalCall &call, void *userData, unsigned options, OpalConnection::StringOptions *stringOptions)
virtual PBoolean SetAudioVolume(PBoolean source, unsigned percentage)