33 #ifndef GSTREAMER_GSTENDPOINT_H
34 #define GSTREAMER_GSTENDPOINT_H
38 #include <ptclib/gstreamer.h>
45 #define OPAL_GST_STRINTF_FMT "{%s}"
46 #define OPAL_GST_NAME "name"
47 #define OPAL_GST_SAMPLE_RATE "sample-rate"
48 #define OPAL_GST_PT "pt"
49 #define OPAL_GST_MTU "mtu"
50 #define OPAL_GST_WIDTH "width"
51 #define OPAL_GST_HEIGHT "height"
52 #define OPAL_GST_FRAME_RATE "frame-rate"
53 #define OPAL_GST_BIT_RATE "bit-rate"
54 #define OPAL_GST_BIT_RATE_K "bit-rate-kbps"
55 #define OPAL_GST_BLOCK_SIZE "blocksize"
56 #define OPAL_GST_LATENCY "latency"
57 #define OPAL_GST_REMOTE_IP "remote-ip"
58 #define OPAL_GST_REMOTE_PPRT "remote-port"
85 const char *prefix =
"gst"
90 virtual ~GstEndPoint();
147 virtual bool BuildPipeline(
148 ostream & description,
149 const GstMediaStream * audioStream
151 ,
const GstMediaStream * videoStream
155 virtual bool BuildAudioSourcePipeline(ostream & desc,
const GstMediaStream & stream,
int rtpIndex);
156 virtual bool BuildAudioSinkPipeline(ostream & desc,
const GstMediaStream & stream,
int rtpIndex);
158 bool SetAudioSourceDevice(
const PString & elementName);
159 virtual bool BuildAudioSourceDevice(ostream & desc,
const GstMediaStream & stream);
160 const PString & GetAudioSourceDevice()
const {
return m_audioSourceDevice; }
162 bool SetAudioSinkDevice(
const PString & elementName);
163 const PString & GetAudioSinkDevice()
const {
return m_audioSinkDevice; }
164 virtual bool BuildAudioSinkDevice(ostream & desc,
const GstMediaStream & stream);
166 bool SetJitterBufferPipeline(
const PString & elementName);
167 const PString & GetJitterBufferPipeline()
const {
return m_jitterBuffer; }
168 static const PString & GetPipelineJitterBufferName();
169 virtual bool BuildJitterBufferPipeline(ostream & desc,
const GstMediaStream & stream);
171 bool SetRTPPipeline(
const PString & elementName);
172 const PString & GetRTPPipeline()
const {
return m_rtpbin; }
173 static const PString & GetPipelineRTPName();
174 virtual bool BuildRTPPipeline(ostream & desc,
const GstMediaStream & stream,
unsigned index);
176 static const PString & GetPipelineAudioSourceName();
177 virtual bool BuildAppSource(ostream & desc,
const PString & name);
179 static const PString & GetPipelineAudioSinkName();
180 virtual bool BuildAppSink(ostream & desc,
const PString & name,
int rtpIndex);
183 virtual bool BuildVideoSourcePipeline(ostream & desc,
const GstMediaStream & stream,
int rtpIndex);
184 virtual bool BuildVideoSinkPipeline(ostream & desc,
const GstMediaStream & stream,
int rtpIndex);
186 bool SetVideoSourceDevice(
const PString & elementName);
187 const PString & GetVideoSourceDevice()
const {
return m_videoSourceDevice; }
188 virtual bool BuildVideoSourceDevice(ostream & desc,
const GstMediaStream & stream);
190 bool SetVideoSinkDevice(
const PString & elementName);
191 const PString & GetVideoSinkDevice()
const {
return m_videoSinkDevice; }
192 virtual bool BuildVideoSinkDevice(ostream & desc,
const GstMediaStream & stream);
194 bool SetVideoSourceColourConverter(
const PString & elementName);
195 const PString & GetVideoSourceColourConverter()
const {
return m_videoSourceColourConverter; }
197 bool SetVideoSinkColourConverter(
const PString & elementName);
198 const PString & GetVideoSinkColourConverter()
const {
return m_videoSinkColourConverter; }
200 static const PString & GetPipelineVideoSourceName();
201 static const PString & GetPipelineVideoSinkName();
205 struct CodecPipelines {
207 PString m_packetiser;
209 PString m_depacketiser;
219 const CodecPipelines & info
225 CodecPipelines & info
228 virtual bool BuildEncoder(ostream & desc,
const GstMediaStream & stream);
229 virtual bool BuildDecoder(ostream & desc,
const GstMediaStream & stream);
234 PString m_audioSourceDevice;
235 PString m_audioSinkDevice;
236 PString m_jitterBuffer;
238 PString m_videoSourceDevice;
239 PString m_videoSinkDevice;
240 PString m_videoSourceColourConverter;
241 PString m_videoSinkColourConverter;
245 typedef map<OpalMediaFormat, CodecPipelines> CodecPipelineMap;
247 CodecPipelineMap m_MediaFormatToGStreamer;
268 char tokenPrefix =
'G'
301 virtual bool OpenPipeline(
302 PGstPipeline & pipeline,
303 const GstMediaStream & stream
310 PGstPipeline m_freescaleVideoPipeline[2];
326 GstConnection & conn,
340 virtual PBoolean
Open();
402 PGstElement::States & state
406 GstConnection & m_connection;
407 PGstPipeline m_pipeline;
408 PGstAppSrc m_pipeSource;
409 PGstAppSink m_pipeSink;
413 #endif // OPAL_GSTREAMER
415 #endif // GSTREAMER_GSTENDPOINT_H