How to specify type of sink or src pad in gstrtpbin

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

How to specify type of sink or src pad in gstrtpbin

Thomas Winkler-5

Hi,

is there any way to specify the type of the sink or src pad in gstrtpbin?

 

I’m trying to specify the rtp and rtcp pads while linking.

 

My code below:

 

gst_init(0, 0);

 

GMainLoop* m_mainLoop = g_main_loop_new(NULL,FALSE);

GstElement* m_bin = gst_pipeline_new("pipe");

GstElement* m_gstrtpbin = gst_element_factory_make("gstrtpbin", "rtpbin");

 

GstElement* m_video_pipe = createVideoPipe();

// the createVideoPipe()-method creates a separate pipeline [videosource]->[capsfilter]->[ffmpegcolorspace]->[videoencoder]->[videopayloader]

// adds and link all elements to the pipeline and returns the created pipeline

 

gst_bin_add(GST_BIN(m_gstrtpbin), m_video_pipe);

// here I add the created video-pipeline to my gstrtpbin

 

GstElement* m_udp_rtp_sink = createUdpRtpSink();

      // the createUdpRtpSink()-method creates a pipeline within a UdpSink-Element, adds + link all elements and returns the pipe

 

GstElement* m_udp_rtcp_sink = createUdpRtcpSink();

      // the createUdpRtcpSink()-method creates a pipeline within a UdpSink-Element, adds + link all elements and returns the pipe

 

GstElement* m_udp_rtcp_src = createUdpRtcpSrc();

      // the createUdpRtcpSrc()-method creates a pipeline within a UdpSrc-Element, adds + link all elements and returns the pipe

 

// finally I add the the 3 Upd-Elements to my gstrtpbin

gst_bin_add(GST_BIN(m_gstrtpbin), m_udp_rtp_sink);

gst_bin_add(GST_BIN(m_gstrtpbin), m_udp_rtcp_sink);

gst_bin_add(GST_BIN(m_gstrtpbin), m_udp_rtcp_src);

 

// now comes my problem with linking the pipes to the gstrtpbin sinks and pads

// if I try following the links does not work:

 

gst_element_link_pads(m_udp_rtp_sink, "src", m_gstrtpbin, "send_rtp_src_%d");

 

// the problem is that gstrtpbin has no "send_rtp_src_%d" pad.

 

 

 

 

My Question is how to specify the type and number of the sink or src pads in gstrtpbin…

I will exclusive specify, that my payloader should connect the "send_rtp_sink_0" and the UdpSink for this should connect to "send_rtp_src_0".

Also my RtcpSender UdpSink should connect to "send_rtcp_src_0" and the RtcpReceiver UdpSrc should connect to "send_rtcp_sink_0"

 

Is there a way to specify this?

 

Greetings,

Thomas


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to specify type of sink or src pad in gstrtpbin

sreejesh-2

Hi,

 

I think “send_rtp_src_%d” is available to you after you request for “send_rtp_sink_%d”.

Again gstrtpbin to uspsink direction should be.

 

Gstrtpbin (src) -> m_udp_rtp_sink (sink)

The following example might be helpful to you.

 

*gchar *tmpStr;

 

/* Get the sink pad for id */

tmpStr = g_strdup_printf (“send_rtp_sink_%u”,id); /* You can use the numbers 0,1,..for id*/

send_rtp_sink = gst_element_get_request_pad (m_gstrtpbin,tmpStr);

g_free (tmpStr);

 

/* Get the source pad for id */

tmpStr = g_strdup_printf (“send_rtp_src_%u”,id); /* You can use the numbers 0,1,..for id*/

send_rtp_src = gst_element_get_pad (m_gstrtpbin,tmpStr);

 

/* Create the udp sink and set the properties here */

 

/* Now get the static sink pad from udpsink */

tmp_pad = gst_element_get_static_pad (m_udp_rtp_sink,”sink”);

 

/* Link the pads */

gst_pad_link (send_rtp_src,tmp_pad);

 

Hope it helps.

 

Regards

Sreejesh R B

Sr. Project Lead.

Multitech Software Systems India Pvt. Ltd.

Bangalore, India

 

 


From: [hidden email] [mailto:[hidden email]] On Behalf Of Thomas Winkler
Sent: Wednesday, June 25, 2008 9:51 PM
To: [hidden email]
Subject: [gst-devel] How to specify type of sink or src pad in gstrtpbin

 

Hi,

is there any way to specify the type of the sink or src pad in gstrtpbin?

 

I’m trying to specify the rtp and rtcp pads while linking.

 

My code below:

 

gst_init(0, 0);

 

GMainLoop* m_mainLoop = g_main_loop_new(NULL,FALSE);

GstElement* m_bin = gst_pipeline_new("pipe");

GstElement* m_gstrtpbin = gst_element_factory_make("gstrtpbin", "rtpbin");

 

GstElement* m_video_pipe = createVideoPipe();

// the createVideoPipe()-method creates a separate pipeline [videosource]->[capsfilter]->[ffmpegcolorspace]->[videoencoder]->[videopayloader]

// adds and link all elements to the pipeline and returns the created pipeline

 

gst_bin_add(GST_BIN(m_gstrtpbin), m_video_pipe);

// here I add the created video-pipeline to my gstrtpbin

 

GstElement* m_udp_rtp_sink = createUdpRtpSink();

      // the createUdpRtpSink()-method creates a pipeline within a UdpSink-Element, adds + link all elements and returns the pipe

 

GstElement* m_udp_rtcp_sink = createUdpRtcpSink();

      // the createUdpRtcpSink()-method creates a pipeline within a UdpSink-Element, adds + link all elements and returns the pipe

 

GstElement* m_udp_rtcp_src = createUdpRtcpSrc();

      // the createUdpRtcpSrc()-method creates a pipeline within a UdpSrc-Element, adds + link all elements and returns the pipe

 

// finally I add the the 3 Upd-Elements to my gstrtpbin

gst_bin_add(GST_BIN(m_gstrtpbin), m_udp_rtp_sink);

gst_bin_add(GST_BIN(m_gstrtpbin), m_udp_rtcp_sink);

gst_bin_add(GST_BIN(m_gstrtpbin), m_udp_rtcp_src);

 

// now comes my problem with linking the pipes to the gstrtpbin sinks and pads

// if I try following the links does not work:

 

gst_element_link_pads(m_udp_rtp_sink, "src", m_gstrtpbin, "send_rtp_src_%d");

 

// the problem is that gstrtpbin has no "send_rtp_src_%d" pad.

 

 

 

 

My Question is how to specify the type and number of the sink or src pads in gstrtpbin…

I will exclusive specify, that my payloader should connect the "send_rtp_sink_0" and the UdpSink for this should connect to "send_rtp_src_0".

Also my RtcpSender UdpSink should connect to "send_rtcp_src_0" and the RtcpReceiver UdpSrc should connect to "send_rtcp_sink_0"

 

Is there a way to specify this?

 

Greetings,

Thomas


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to specify type of sink or src pad in gstrtpbin

Thomas Winkler-5

Thanks a lot !

 

That’s exactly what I was looking for and UDPSink/UDPSrc now connects to my RtpBin correct.

But I have one more problem.

 

The following two elements wouldn’t connect on this way:

 

GstElement* m_gstrtpbin = gst_element_factory_make("gstrtpbin", "rtpbin");

GstElement* m_udpsource = gst_element_factory_make("udpsrc", "udpsource");

GstElement* m_depayloader = gst_element_factory_make("rtph263pdepay", "vrp_depay");

 

GstPad* rtp_receiverSrc = gst_element_get_request_pad(m_gstrtpbin, "recv_rtp_src_0");

GstPad* rtp_receiverSink = gst_element_get_request_pad(m_gstrtpbin, "recv_rtp_sink_0");

GstPad* udpsourceSrc = gst_element_get_static_pad(m_udpsource, "src");

GstPad* depayloaderSink = gst_element_get_static_pad(m_depayloader, "sink");

 

gst_pad_link(udpsourceSrc, rtp_receiverSink);              <---------- works fine

gst_pad_link(rtp_receiverSrc, depayloaderSink);            <---------- at this point the app crashes

 

 

 

Ok, I’ve read the Reference again and I saw that the “recv_rtp_src” has the Availability-Prop “Sometimes” which means that the Pad is created dynamical when a Stream comes in.

So I decided to add a signal-watch function:

 

static GstElement* m_vid_depayloader = m_depayloader;

 

static void cb_new_pad(GstElement* element, GstPad* pad, gpointer data)

{

gchar* name;

 

      name = gst_pad_get_name(pad);

      g_print("A new pad %s was created\n", name);

      g_free(name);

 

GstPad* vidDepayloadSink = gst_element_get_static_pad(m_vid_depayloader, "sink");

      gst_pad_link(pad, vidDepayloadSink);

}

 

And in my Application I added the signal-watcher:

 

g_signal_connect (m_gstrtpbin, "?????", G_CALLBACK (cb_new_pad), NULL);

 

But what signal is the right signal for my pad-creation?

gstrtbin has only: “request-pt-map”, “on-new-ssrc”, “on-ssrc-collision”, “on-ssrc-validated”, “on-ssrc-active”, “on-ssrc-sdes”, “on-bye-ssrc”, “on-bye-timeout”, “on-timeout”

 

 

 

Do I have the change to force a creation of a pad or do I have to connect them in another way?

 

Hope someone can help me…

 

Greetings,

Thomas

 


Von: Sreejesh [mailto:[hidden email]]
Gesendet: Donnerstag, 26. Juni 2008 07:40
An: 'Thomas Winkler'; [hidden email]
Betreff: RE: [gst-devel] How to specify type of sink or src pad in gstrtpbin

 

Hi,

 

I think “send_rtp_src_%d” is available to you after you request for “send_rtp_sink_%d”.

Again gstrtpbin to uspsink direction should be.

 

Gstrtpbin (src) -> m_udp_rtp_sink (sink)

The following example might be helpful to you.

 

*gchar *tmpStr;

 

/* Get the sink pad for id */

tmpStr = g_strdup_printf (“send_rtp_sink_%u”,id); /* You can use the numbers 0,1,..for id*/

send_rtp_sink = gst_element_get_request_pad (m_gstrtpbin,tmpStr);

g_free (tmpStr);

 

/* Get the source pad for id */

tmpStr = g_strdup_printf (“send_rtp_src_%u”,id); /* You can use the numbers 0,1,..for id*/

send_rtp_src = gst_element_get_pad (m_gstrtpbin,tmpStr);

 

/* Create the udp sink and set the properties here */

 

/* Now get the static sink pad from udpsink */

tmp_pad = gst_element_get_static_pad (m_udp_rtp_sink,”sink”);

 

/* Link the pads */

gst_pad_link (send_rtp_src,tmp_pad);

 

Hope it helps.

 

Regards

Sreejesh R B

Sr. Project Lead.

Multitech Software Systems India Pvt. Ltd.

Bangalore, India

 

 


From: [hidden email] [mailto:[hidden email]] On Behalf Of Thomas Winkler
Sent: Wednesday, June 25, 2008 9:51 PM
To: [hidden email]
Subject: [gst-devel] How to specify type of sink or src pad in gstrtpbin

 

Hi,

is there any way to specify the type of the sink or src pad in gstrtpbin?

 

I’m trying to specify the rtp and rtcp pads while linking.

 

My code below:

 

gst_init(0, 0);

 

GMainLoop* m_mainLoop = g_main_loop_new(NULL,FALSE);

GstElement* m_bin = gst_pipeline_new("pipe");

GstElement* m_gstrtpbin = gst_element_factory_make("gstrtpbin", "rtpbin");

 

GstElement* m_video_pipe = createVideoPipe();

// the createVideoPipe()-method creates a separate pipeline [videosource]->[capsfilter]->[ffmpegcolorspace]->[videoencoder]->[videopayloader]

// adds and link all elements to the pipeline and returns the created pipeline

 

gst_bin_add(GST_BIN(m_gstrtpbin), m_video_pipe);

// here I add the created video-pipeline to my gstrtpbin

 

GstElement* m_udp_rtp_sink = createUdpRtpSink();

      // the createUdpRtpSink()-method creates a pipeline within a UdpSink-Element, adds + link all elements and returns the pipe

 

GstElement* m_udp_rtcp_sink = createUdpRtcpSink();

      // the createUdpRtcpSink()-method creates a pipeline within a UdpSink-Element, adds + link all elements and returns the pipe

 

GstElement* m_udp_rtcp_src = createUdpRtcpSrc();

      // the createUdpRtcpSrc()-method creates a pipeline within a UdpSrc-Element, adds + link all elements and returns the pipe

 

// finally I add the the 3 Upd-Elements to my gstrtpbin

gst_bin_add(GST_BIN(m_gstrtpbin), m_udp_rtp_sink);

gst_bin_add(GST_BIN(m_gstrtpbin), m_udp_rtcp_sink);

gst_bin_add(GST_BIN(m_gstrtpbin), m_udp_rtcp_src);

 

// now comes my problem with linking the pipes to the gstrtpbin sinks and pads

// if I try following the links does not work:

 

gst_element_link_pads(m_udp_rtp_sink, "src", m_gstrtpbin, "send_rtp_src_%d");

 

// the problem is that gstrtpbin has no "send_rtp_src_%d" pad.

 

 

 

 

My Question is how to specify the type and number of the sink or src pads in gstrtpbin…

I will exclusive specify, that my payloader should connect the "send_rtp_sink_0" and the UdpSink for this should connect to "send_rtp_src_0".

Also my RtcpSender UdpSink should connect to "send_rtcp_src_0" and the RtcpReceiver UdpSrc should connect to "send_rtcp_sink_0"

 

Is there a way to specify this?

 

Greetings,

Thomas



__________ NOD32 3216 (20080625) Information __________

Diese E-Mail wurde vom NOD32 antivirus system gepr|ft
http://www.nod32.com


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to specify type of sink or src pad in gstrtpbin

Tristan Matthews-2
Hi Thomas,

Thomas Winkler wrote:
>
> But what signal is the right signal for my pad-creation?
>
> gstrtbin has only: “request-pt-map”, “on-new-ssrc”,
> “on-ssrc-collision”, “on-ssrc-validated”, “on-ssrc-active”,
> “on-ssrc-sdes”, “on-bye-ssrc”, “on-bye-timeout”, “on-timeout”
>

Did you try "pad-added"? This is usually the signal to watch for when
pads are created dynamically.


Best,

Tristan

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to specify type of sink or src pad in gstrtpbin

Thomas Winkler-5
Yes I had.
But after I've startet my Receiver and Sender, this Signal was never sent.

I will send my Sender and Receiver SampleCode as soon as I'm at work tomorrow.

greetings,
Thomas

-------- Original-Nachricht --------
> Datum: Thu, 26 Jun 2008 16:40:46 -0400
> Von: Tristan Matthews <[hidden email]>
> An: Thomas Winkler <[hidden email]>
> CC: "[hidden email]" <[hidden email]>
> Betreff: Re: [gst-devel] How to specify type of sink or src pad in gstrtpbin

> Hi Thomas,
>
> Thomas Winkler wrote:
> >
> > But what signal is the right signal for my pad-creation?
> >
> > gstrtbin has only: “request-pt-map”, “on-new-ssrc”,
> > “on-ssrc-collision”, “on-ssrc-validated”, “on-ssrc-active”,
> > “on-ssrc-sdes”, “on-bye-ssrc”, “on-bye-timeout”,
> “on-timeout”
> >
>
> Did you try "pad-added"? This is usually the signal to watch for when
> pads are created dynamically.
>
>
> Best,
>
> Tristan

--
Psssst! Schon vom neuen GMX MultiMessenger gehört?
Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to specify type of sink or src pad in gstrtpbin

sreejesh-2
Hi Thomas,

You need to connect "pad-added" signal to "gstrtpbin".
Inside the pad-added signal handler, you need to link this pad to
"depayloader" pad. As you said, "recv_rtp_src_(id)_(ssrc)_(payload_type)" is
a dynamic pad.

You may also set proper "caps" for "udpsrc".

Regards
Sreejesh R B
Sr. Project Lead.
Multitech Software Systems India Pvt. Ltd.
Bangalore, India


-----Original Message-----
From: [hidden email]
[mailto:[hidden email]] On Behalf Of
[hidden email]
Sent: Friday, June 27, 2008 6:02 AM
To: [hidden email]
Subject: Re: [gst-devel] How to specify type of sink or src pad in gstrtpbin

Yes I had.
But after I've startet my Receiver and Sender, this Signal was never sent.

I will send my Sender and Receiver SampleCode as soon as I'm at work
tomorrow.

greetings,
Thomas

-------- Original-Nachricht --------
> Datum: Thu, 26 Jun 2008 16:40:46 -0400
> Von: Tristan Matthews <[hidden email]>
> An: Thomas Winkler <[hidden email]>
> CC: "[hidden email]"
<[hidden email]>
> Betreff: Re: [gst-devel] How to specify type of sink or src pad in
gstrtpbin

> Hi Thomas,
>
> Thomas Winkler wrote:
> >
> > But what signal is the right signal for my pad-creation?
> >
> > gstrtbin has only: “request-pt-map”, “on-new-ssrc”,
> > “on-ssrc-collision”, “on-ssrc-validated”, “on-ssrc-active”,
> > “on-ssrc-sdes”, “on-bye-ssrc”, “on-bye-timeout”,
> “on-timeout”
> >
>
> Did you try "pad-added"? This is usually the signal to watch for when
> pads are created dynamically.
>
>
> Best,
>
> Tristan

--
Psssst! Schon vom neuen GMX MultiMessenger gehört?
Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to specify type of sink or src pad in gstrtpbin

Thomas Winkler-5
Hi,
I've added my little (dirty) test-application.
Sender: Sender.cpp, CRtpSender.cpp, CRtpSender.h
Receiver: Receiver.cpp, CRtpReceiver.cpp, CRtpReceiver.h

Here's a sample of my Signalimplementation for my Sender:

Signal connect:
g_signal_connect (m_gstrtpbin, "pad-added", G_CALLBACK (cb_new_pad), NULL);

Method:
void CRtpSender::cb_new_pad(GstElement* element, GstPad* pad, gpointer data)
{
        gchar* name;

        name = gst_pad_get_name(pad);
        g_print("A new pad %s was created\n", name);
        g_free(name);

        GstPad* rtpudpsinkSrc = gst_element_get_static_pad(m_udpsink_rtp,
"src");
        gst_pad_link(rtpudpsinkSrc, pad);
}


But I never get this signal called (have a look into the source)
I don't know what's wrong in my code...

Greetings,
Thomas


> -----Ursprüngliche Nachricht-----
> Von: [hidden email] [mailto:gstreamer-
> [hidden email]] Im Auftrag von Sreejesh
> Gesendet: Freitag, 27. Juni 2008 07:37
> An: [hidden email]
> Betreff: Re: [gst-devel] How to specify type of sink or src pad in
> gstrtpbin
>
> Hi Thomas,
>
> You need to connect "pad-added" signal to "gstrtpbin".
> Inside the pad-added signal handler, you need to link this pad to
> "depayloader" pad. As you said, "recv_rtp_src_(id)_(ssrc)_(payload_type)"
> is
> a dynamic pad.
>
> You may also set proper "caps" for "udpsrc".
>
> Regards
> Sreejesh R B
> Sr. Project Lead.
> Multitech Software Systems India Pvt. Ltd.
> Bangalore, India
>
>
> -----Original Message-----
> From: [hidden email]
> [mailto:[hidden email]] On Behalf Of
> [hidden email]
> Sent: Friday, June 27, 2008 6:02 AM
> To: [hidden email]
> Subject: Re: [gst-devel] How to specify type of sink or src pad in
> gstrtpbin
>
> Yes I had.
> But after I've startet my Receiver and Sender, this Signal was never sent.
>
> I will send my Sender and Receiver SampleCode as soon as I'm at work
> tomorrow.
>
> greetings,
> Thomas
>
> -------- Original-Nachricht --------
> > Datum: Thu, 26 Jun 2008 16:40:46 -0400
> > Von: Tristan Matthews <[hidden email]>
> > An: Thomas Winkler <[hidden email]>
> > CC: "[hidden email]"
> <[hidden email]>
> > Betreff: Re: [gst-devel] How to specify type of sink or src pad in
> gstrtpbin
>
> > Hi Thomas,
> >
> > Thomas Winkler wrote:
> > >
> > > But what signal is the right signal for my pad-creation?
> > >
> > > gstrtbin has only: “request-pt-map”, “on-new-ssrc”,
> > > “on-ssrc-collision”, “on-ssrc-validated”, “on-ssrc-active”,
> > > “on-ssrc-sdes”, “on-bye-ssrc”, “on-bye-timeout”,
> > “on-timeout”
> > >
> >
> > Did you try "pad-added"? This is usually the signal to watch for when
> > pads are created dynamically.
> >
> >
> > Best,
> >
> > Tristan
>
> --
> Psssst! Schon vom neuen GMX MultiMessenger gehört?
> Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger
>
> -------------------------------------------------------------------------
> Check out the new SourceForge.net Marketplace.
> It's the best place to buy or sell services for
> just about anything Open Source.
> http://sourceforge.net/services/buy/index.php
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>
> -------------------------------------------------------------------------
> Check out the new SourceForge.net Marketplace.
> It's the best place to buy or sell services for
> just about anything Open Source.
> http://sourceforge.net/services/buy/index.php
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
> __________ NOD32 3222 (20080626) Information __________
>
> Diese E-Mail wurde vom NOD32 antivirus system geprüft
> http://www.nod32.com

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel

Receiver.cpp (286 bytes) Download Attachment
CRtpReceiver.cpp (4K) Download Attachment
CRtpReceiver.h (1K) Download Attachment
Sender.cpp (271 bytes) Download Attachment
CRtpSender.cpp (4K) Download Attachment
CRtpSender.h (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: How to specify type of sink or src pad in gstrtpbin

Thomas Winkler-5
Thanks to all who helped to solve my problem.

Now I have a Receiver and a Sender which works fine.

I've attached my sample-application for Sender and Receiver.

PS: My problem was, that I've forgotten to create a capsfilter on my
Server-Side and I've exchanged the pad_requests

From:
ps->send_rtp_src0 = gst_element_get_static_pad(rtpbin, "send_rtp_src_0");
ps->send_rtp_sink0 = gst_element_get_request_pad(rtpbin, "send_rtp_sink_0");

To:
ps->send_rtp_sink0 = gst_element_get_request_pad(rtpbin, "send_rtp_sink_0");
ps->send_rtp_src0 = gst_element_get_static_pad(rtpbin, "send_rtp_src_0");

because in the Reference it's described that the "send_rtp_src_%d" pad is
automatically created if a pad_request to "send_rtp_sink_%d" is called.

Thanks to all people who helped.

For all people who are looking for a rtp pipeline for gst-launch, I've
attached a gstrtp_pipe file which includes sender and receiver
pipeline-command.

Greetings,
Thomas

> -----Ursprüngliche Nachricht-----
> Von: [hidden email] [mailto:gstreamer-
> [hidden email]] Im Auftrag von Thomas Winkler
> Gesendet: Freitag, 27. Juni 2008 10:46
> An: [hidden email]
> Betreff: Re: [gst-devel] How to specify type of sink or src pad in
> gstrtpbin
>
> Hi,
> I've added my little (dirty) test-application.
> Sender: Sender.cpp, CRtpSender.cpp, CRtpSender.h
> Receiver: Receiver.cpp, CRtpReceiver.cpp, CRtpReceiver.h
>
> Here's a sample of my Signalimplementation for my Sender:
>
> Signal connect:
> g_signal_connect (m_gstrtpbin, "pad-added", G_CALLBACK (cb_new_pad),
> NULL);
>
> Method:
> void CRtpSender::cb_new_pad(GstElement* element, GstPad* pad, gpointer
> data)
> {
> gchar* name;
>
> name = gst_pad_get_name(pad);
> g_print("A new pad %s was created\n", name);
> g_free(name);
>
> GstPad* rtpudpsinkSrc = gst_element_get_static_pad(m_udpsink_rtp,
> "src");
> gst_pad_link(rtpudpsinkSrc, pad);
> }
>
>
> But I never get this signal called (have a look into the source)
> I don't know what's wrong in my code...
>
> Greetings,
> Thomas
>
>
> > -----Ursprüngliche Nachricht-----
> > Von: [hidden email] [mailto:gstreamer-
> > [hidden email]] Im Auftrag von Sreejesh
> > Gesendet: Freitag, 27. Juni 2008 07:37
> > An: [hidden email]
> > Betreff: Re: [gst-devel] How to specify type of sink or src pad in
> > gstrtpbin
> >
> > Hi Thomas,
> >
> > You need to connect "pad-added" signal to "gstrtpbin".
> > Inside the pad-added signal handler, you need to link this pad to
> > "depayloader" pad. As you said,
> "recv_rtp_src_(id)_(ssrc)_(payload_type)"
> > is
> > a dynamic pad.
> >
> > You may also set proper "caps" for "udpsrc".
> >
> > Regards
> > Sreejesh R B
> > Sr. Project Lead.
> > Multitech Software Systems India Pvt. Ltd.
> > Bangalore, India
> >
> >
> > -----Original Message-----
> > From: [hidden email]
> > [mailto:[hidden email]] On Behalf Of
> > [hidden email]
> > Sent: Friday, June 27, 2008 6:02 AM
> > To: [hidden email]
> > Subject: Re: [gst-devel] How to specify type of sink or src pad in
> > gstrtpbin
> >
> > Yes I had.
> > But after I've startet my Receiver and Sender, this Signal was never
> sent.
> >
> > I will send my Sender and Receiver SampleCode as soon as I'm at work
> > tomorrow.
> >
> > greetings,
> > Thomas
> >
> > -------- Original-Nachricht --------
> > > Datum: Thu, 26 Jun 2008 16:40:46 -0400
> > > Von: Tristan Matthews <[hidden email]>
> > > An: Thomas Winkler <[hidden email]>
> > > CC: "[hidden email]"
> > <[hidden email]>
> > > Betreff: Re: [gst-devel] How to specify type of sink or src pad in
> > gstrtpbin
> >
> > > Hi Thomas,
> > >
> > > Thomas Winkler wrote:
> > > >
> > > > But what signal is the right signal for my pad-creation?
> > > >
> > > > gstrtbin has only: “request-pt-map”, “on-new-ssrc”,
> > > > “on-ssrc-collision”, “on-ssrc-validated”, “on-ssrc-active”,
> > > > “on-ssrc-sdes”, “on-bye-ssrc”, “on-bye-timeout”,
> > > “on-timeout”
> > > >
> > >
> > > Did you try "pad-added"? This is usually the signal to watch for when
> > > pads are created dynamically.
> > >
> > >
> > > Best,
> > >
> > > Tristan
> >
> > --
> > Psssst! Schon vom neuen GMX MultiMessenger gehört?
> > Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger
> >
> > ------------------------------------------------------------------------
> -
> > Check out the new SourceForge.net Marketplace.
> > It's the best place to buy or sell services for
> > just about anything Open Source.
> > http://sourceforge.net/services/buy/index.php
> > _______________________________________________
> > gstreamer-devel mailing list
> > [hidden email]
> > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >
> >
> > ------------------------------------------------------------------------
> -
> > Check out the new SourceForge.net Marketplace.
> > It's the best place to buy or sell services for
> > just about anything Open Source.
> > http://sourceforge.net/services/buy/index.php
> > _______________________________________________
> > gstreamer-devel mailing list
> > [hidden email]
> > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >
> > __________ NOD32 3222 (20080626) Information __________
> >
> > Diese E-Mail wurde vom NOD32 antivirus system geprüft
> > http://www.nod32.com
>
>
>
>
> __________ NOD32 3222 (20080626) Information __________
>
> Diese E-Mail wurde vom NOD32 antivirus system geprüft
> http://www.nod32.com

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel

gstrtp_pipe (2K) Download Attachment
Receiver.cpp (287 bytes) Download Attachment
CRtpReceiver.cpp (4K) Download Attachment
CRtpReceiver.h (1K) Download Attachment
Sender.cpp (271 bytes) Download Attachment
CRtpSender.cpp (4K) Download Attachment
CRtpSender.h (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: How to specify type of sink or src pad in gstrtpbin

Manish Rana
Hi Thomas,

Even though it is too late to suggest anything but to help others, here are some things:

1. On UDPSRC u need to set the caps as a property.
2. In the code u request a pad then link it before u request another
3. You need not to request source pad, you will get a call back in that you check the direction of PAD and link it to the next bin you want to link.

Please correct me if i am wrong.
As well apologies for replying late, but was stuck up with some things.

Thanks and Regards
Manish


On Fri, Jun 27, 2008 at 5:34 AM, Thomas Winkler <[hidden email]> wrote:
Thanks to all who helped to solve my problem.

Now I have a Receiver and a Sender which works fine.

I've attached my sample-application for Sender and Receiver.

PS: My problem was, that I've forgotten to create a capsfilter on my
Server-Side and I've exchanged the pad_requests

From:
ps->send_rtp_src0 = gst_element_get_static_pad(rtpbin, "send_rtp_src_0");
ps->send_rtp_sink0 = gst_element_get_request_pad(rtpbin, "send_rtp_sink_0");

To:
ps->send_rtp_sink0 = gst_element_get_request_pad(rtpbin, "send_rtp_sink_0");
ps->send_rtp_src0 = gst_element_get_static_pad(rtpbin, "send_rtp_src_0");

because in the Reference it's described that the "send_rtp_src_%d" pad is
automatically created if a pad_request to "send_rtp_sink_%d" is called.

Thanks to all people who helped.

For all people who are looking for a rtp pipeline for gst-launch, I've
attached a gstrtp_pipe file which includes sender and receiver
pipeline-command.

Greetings,
Thomas

> -----Ursprüngliche Nachricht-----
> Von: [hidden email] [mailto:[hidden email]
> [hidden email]] Im Auftrag von Thomas Winkler
> Gesendet: Freitag, 27. Juni 2008 10:46
> An: [hidden email]
> Betreff: Re: [gst-devel] How to specify type of sink or src pad in
> gstrtpbin
>
> Hi,
> I've added my little (dirty) test-application.
> Sender: Sender.cpp, CRtpSender.cpp, CRtpSender.h
> Receiver: Receiver.cpp, CRtpReceiver.cpp, CRtpReceiver.h
>
> Here's a sample of my Signalimplementation for my Sender:
>
> Signal connect:
> g_signal_connect (m_gstrtpbin, "pad-added", G_CALLBACK (cb_new_pad),
> NULL);
>
> Method:
> void CRtpSender::cb_new_pad(GstElement* element, GstPad* pad, gpointer
> data)
> {
>       gchar* name;
>
>       name = gst_pad_get_name(pad);
>       g_print("A new pad %s was created\n", name);
>       g_free(name);
>
>       GstPad* rtpudpsinkSrc = gst_element_get_static_pad(m_udpsink_rtp,
> "src");
>       gst_pad_link(rtpudpsinkSrc, pad);
> }
>
>
> But I never get this signal called (have a look into the source)
> I don't know what's wrong in my code...
>
> Greetings,
> Thomas
>
>
> > -----Ursprüngliche Nachricht-----
> > Von: [hidden email] [mailto:[hidden email]
> > [hidden email]] Im Auftrag von Sreejesh
> > Gesendet: Freitag, 27. Juni 2008 07:37
> > An: [hidden email]
> > Betreff: Re: [gst-devel] How to specify type of sink or src pad in
> > gstrtpbin
> >
> > Hi Thomas,
> >
> > You need to connect "pad-added" signal to "gstrtpbin".
> > Inside the pad-added signal handler, you need to link this pad to
> > "depayloader" pad. As you said,
> "recv_rtp_src_(id)_(ssrc)_(payload_type)"
> > is
> > a dynamic pad.
> >
> > You may also set proper "caps" for "udpsrc".
> >
> > Regards
> > Sreejesh R B
> > Sr. Project Lead.
> > Multitech Software Systems India Pvt. Ltd.
> > Bangalore, India
> >
> >
> > -----Original Message-----
> > From: [hidden email]
> > [mailto:[hidden email]] On Behalf Of
> > [hidden email]
> > Sent: Friday, June 27, 2008 6:02 AM
> > To: [hidden email]
> > Subject: Re: [gst-devel] How to specify type of sink or src pad in
> > gstrtpbin
> >
> > Yes I had.
> > But after I've startet my Receiver and Sender, this Signal was never
> sent.
> >
> > I will send my Sender and Receiver SampleCode as soon as I'm at work
> > tomorrow.
> >
> > greetings,
> > Thomas
> >
> > -------- Original-Nachricht --------
> > > Datum: Thu, 26 Jun 2008 16:40:46 -0400
> > > Von: Tristan Matthews <[hidden email]>
> > > An: Thomas Winkler <[hidden email]>
> > > CC: "[hidden email]"
> > <[hidden email]>
> > > Betreff: Re: [gst-devel] How to specify type of sink or src pad in
> > gstrtpbin
> >
> > > Hi Thomas,
> > >
> > > Thomas Winkler wrote:
> > > >
> > > > But what signal is the right signal for my pad-creation?
> > > >
> > > > gstrtbin has only: "request-pt-map", "on-new-ssrc",
> > > > "on-ssrc-collision", "on-ssrc-validated", "on-ssrc-active",
> > > > "on-ssrc-sdes", "on-bye-ssrc", "on-bye-timeout",
> > > "on-timeout"
> > > >
> > >
> > > Did you try "pad-added"? This is usually the signal to watch for when
> > > pads are created dynamically.
> > >
> > >
> > > Best,
> > >
> > > Tristan
> >
> > --
> > Psssst! Schon vom neuen GMX MultiMessenger gehört?
> > Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger
> >
> > ------------------------------------------------------------------------
> -
> > Check out the new SourceForge.net Marketplace.
> > It's the best place to buy or sell services for
> > just about anything Open Source.
> > http://sourceforge.net/services/buy/index.php
> > _______________________________________________
> > gstreamer-devel mailing list
> > [hidden email]
> > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >
> >
> > ------------------------------------------------------------------------
> -
> > Check out the new SourceForge.net Marketplace.
> > It's the best place to buy or sell services for
> > just about anything Open Source.
> > http://sourceforge.net/services/buy/index.php
> > _______________________________________________
> > gstreamer-devel mailing list
> > [hidden email]
> > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >
> > __________ NOD32 3222 (20080626) Information __________
> >
> > Diese E-Mail wurde vom NOD32 antivirus system geprüft
> > http://www.nod32.com
>
>
>
>
> __________ NOD32 3222 (20080626) Information __________
>
> Diese E-Mail wurde vom NOD32 antivirus system geprüft
> http://www.nod32.com

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel