Hi,
I'm trying to write a simple C program that sends webcam/microphone streams on rtp with gstrtpbin. I gave a look at the provided server-alsasrc-PCMA.c test program and mimics it to add h264 stream to the rtpbin (just like server-v4l2-H264-alsasrc-PCMA.sh does). Sadly, using VLC to receive the streams, give me a fixed image and a pretty bad sound (delay, sometime stop/restart,...). Are there any tricks to be aware of for doing this translation of gst-launch pipe definition to C code ? Does gstrtpbin require subtle manipulations (that gst-launch would do behind the scene ... ??? ) to operate with 2 rtp stream ? Pierre --
CREPIEUX Pierre RD-SIRP-LAN LAN/SIRP/ASF Tel : +33 296053490 [hidden email] R&D Lannion 2, avenue Pierre Marzin 22307 LANNION Cedex - France Mailer ThunderBird sous YourDev Linux Installez simplement votre poste de travail Linux avec http://web2000.rd.francetelecom.fr ------------------------------------------------------------------------------ Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Administrator
|
On Fri, 2011-01-07 at 11:36 +0100, [hidden email]
wrote: > Hi, > > I'm trying to write a simple C program that sends webcam/microphone > streams on rtp with gstrtpbin. > I gave a look at the provided server-alsasrc-PCMA.c test program and > mimics it to add h264 stream to the rtpbin (just like > server-v4l2-H264-alsasrc-PCMA.sh does). > Sadly, using VLC to receive the streams, give me a fixed image and a > pretty bad sound (delay, sometime stop/restart,...). > Are there any tricks to be aware of for doing this translation of > gst-launch pipe definition to C code ? Does gstrtpbin require subtle > manipulations (that gst-launch would do behind the scene ... ??? ) to > operate with 2 rtp stream ? You might want to use gst-rtsp-server instead. It does all the magic for you. Edward > > Pierre > -- > > CREPIEUX Pierre RD-SIRP-LAN > LAN/SIRP/ASF > Tel : +33 296053490 > Email: [hidden email] > R&D Lannion 2, avenue Pierre Marzin 22307 LANNION Cedex - France > > > Mailer ThunderBird sous YourDev Linux > Installez simplement votre poste de travail Linux avec > http://web2000.rd.francetelecom.fr > > > > > ------------------------------------------------------------------------------ > Gaining the trust of online customers is vital for the success of any company > that requires sensitive data to be transmitted over the Web. Learn how to > best implement a security strategy that keeps consumers' information secure > and instills the confidence they need to proceed with transactions. > http://p.sf.net/sfu/oracle-sfdevnl > _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel ------------------------------------------------------------------------------ Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
In reply to this post by pierre.crepieux
Hello,
Like you are doing now, I followed the same goal of using gstrtpbin and found many small nuances. You can find here an implementation that I did to send ogg (vorbis and theora) audio through RTP using gstrtpbin. http://www.ctr.unican.es/asignaturas/dec/Doc/ogg_audio_video_rtp_sender_receiver.tar.gz Hope it helps. And yes, I plan to submit it as a bugzilla addition sometime in the future :). Miguel On Fri, 07 Jan 2011 11:36:46 +0100 pierre.crepieux wrote: > Hi, > > I'm trying to write a simple C program that sends webcam/microphone > streams on rtp with gstrtpbin. I gave a look at the provided > server-alsasrc-PCMA.c test program and mimics it to add h264 stream > to the rtpbin (just like server-v4l2-H264-alsasrc-PCMA.sh does). > Sadly, using VLC to receive the streams, give me a fixed image and a > pretty bad sound (delay, sometime stop/restart,...). Are there any > tricks to be aware of for doing this translation of gst-launch pipe > definition to C code ? Does gstrtpbin require subtle manipulations > (that gst-launch would do behind the scene ... ??? ) to operate with > 2 rtp stream ? > > Pierre > -- > > CREPIEUX Pierre RD-SIRP-LAN > LAN/SIRP/ASF > Tel : +33 296053490 > Email: [hidden email] > R&D Lannion 2, avenue Pierre Marzin 22307 LANNION Cedex - France > > > Mailer ThunderBird sous YourDev Linux > Installez simplement votre poste de travail Linux avec > http://web2000.rd.francetelecom.fr > > > -- (O-O) ---oOO-(_)-OOo----------------------------------------------------- Miguel TELLERIA DE ESTEBAN http://www.mtelleria.com Email: miguel at mtelleria.com Tel GSM: +34 650 801098 Tel Fix: +34 942 280174 Miembro de http://www.linuca.org Membre du http://www.bxlug.be ¿Usuario captivo o libre? http://www.obtengalinux.org/windows/ Free or captive user? http://www.getgnulinux.org/windows/ ------------------------------------------------------------------- ------------------------------------------------------------------------------ Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel signature.asc (205 bytes) Download Attachment |
In reply to this post by Edward Hervey
Edward Hervey a écrit :
Sure but in fact, I'd like to have an insight of the "magic" involved in this case. What I'm trying to do at the moment is to get a canonical exemple of working code.On Fri, 2011-01-07 at 11:36 +0100, [hidden email] wrote:Hi, I'm trying to write a simple C program that sends webcam/microphone streams on rtp with gstrtpbin. I gave a look at the provided server-alsasrc-PCMA.c test program and mimics it to add h264 stream to the rtpbin (just like server-v4l2-H264-alsasrc-PCMA.sh does). Sadly, using VLC to receive the streams, give me a fixed image and a pretty bad sound (delay, sometime stop/restart,...). Are there any tricks to be aware of for doing this translation of gst-launch pipe definition to C code ? Does gstrtpbin require subtle manipulations (that gst-launch would do behind the scene ... ??? ) to operate with 2 rtp stream ?You might want to use gst-rtsp-server instead. It does all the magic for you. gst-rtsp-server appears to be a feature complete - hence complex piece of code (I'm not much experimented with gstreamer). Aren't there any resource that could help me writing a minimal source code and understand it ? Is digging gst-rtsp-server source code the best option I have ? Eventually, could you (or someone else) point me the places where I have to pay attention to get something runnable (bus state changes, dynamic pad, ...) Edward ------------------------------------------------------------------------------ Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel Pierre ------------------------------------------------------------------------------ Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
In reply to this post by Miguel Telleria de Esteban
Thanks,
I gave a look at your code, and found it instructive. It didn't really highlight the problem I had (i'm using dshow and directsound src), but anyway, I got my sample working :-) There is still one thing i don't get: my sample works if I use h263 encoding but doesn't with h264 ... I still have many thing to learn regarding gstreamer ! Miguel Telleria de Esteban a écrit : > Hello, > > Like you are doing now, I followed the same goal of using gstrtpbin and > found many small nuances. > > You can find here an implementation that I did to send ogg (vorbis and > theora) audio through RTP using gstrtpbin. > > http://www.ctr.unican.es/asignaturas/dec/Doc/ogg_audio_video_rtp_sender_receiver.tar.gz > > Hope it helps. > > And yes, I plan to submit it as a bugzilla addition sometime in the > future :). > > Miguel > > > On Fri, 07 Jan 2011 11:36:46 +0100 pierre.crepieux > wrote: > > >> Hi, >> >> I'm trying to write a simple C program that sends webcam/microphone >> streams on rtp with gstrtpbin. I gave a look at the provided >> server-alsasrc-PCMA.c test program and mimics it to add h264 stream >> to the rtpbin (just like server-v4l2-H264-alsasrc-PCMA.sh does). >> Sadly, using VLC to receive the streams, give me a fixed image and a >> pretty bad sound (delay, sometime stop/restart,...). Are there any >> tricks to be aware of for doing this translation of gst-launch pipe >> definition to C code ? Does gstrtpbin require subtle manipulations >> (that gst-launch would do behind the scene ... ??? ) to operate with >> 2 rtp stream ? >> >> Pierre >> -- >> >> > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Gaining the trust of online customers is vital for the success of any company > that requires sensitive data to be transmitted over the Web. Learn how to > best implement a security strategy that keeps consumers' information secure > and instills the confidence they need to proceed with transactions. > http://p.sf.net/sfu/oracle-sfdevnl > ------------------------------------------------------------------------ > > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel > ------------------------------------------------------------------------------ Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
<pierre.crepieux <at> orange-ftgroup.com> writes:
Dear Pierre could you give me some suggestion about your working example with h.263 altough like you I'm interested to work with h.264. G. ------------------------------------------------------------------------------ Protect Your Site and Customers from Malware Attacks Learn about various malware tactics and how to avoid them. Understand malware threats, the impact they can have on your business, and how you can protect your company and customers by using code signing. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
On Tue, Jan 11, 2011 at 5:59 PM, giorgino <[hidden email]> wrote: <pierre.crepieux <at> orange-ftgroup.com> writes: I have this small application that sends audio(G711)/video(H263): http://gitorious.org/ufscwork/works/blobs/master/c/gstreamer/video_conf_rtp/simple.c i tested it making a video conference linux->linux and it worked ok. The only thing missing is a gstrtpbin, there is no jitter buffer etc. hope it helps. best regards, Katcipis
-- http://www.getgnulinux.org/windows ------------------------------------------------------------------------------ Protect Your Site and Customers from Malware Attacks Learn about various malware tactics and how to avoid them. Understand malware threats, the impact they can have on your business, and how you can protect your company and customers by using code signing. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
In reply to this post by Edward Hervey
On Fri, Jan 7, 2011 at 1:46 PM, Edward Hervey <[hidden email]> wrote:
> On Fri, 2011-01-07 at 11:36 +0100, [hidden email] > wrote: >> Hi, >> >> I'm trying to write a simple C program that sends webcam/microphone >> streams on rtp with gstrtpbin. >> I gave a look at the provided server-alsasrc-PCMA.c test program and >> mimics it to add h264 stream to the rtpbin (just like >> server-v4l2-H264-alsasrc-PCMA.sh does). >> Sadly, using VLC to receive the streams, give me a fixed image and a >> pretty bad sound (delay, sometime stop/restart,...). >> Are there any tricks to be aware of for doing this translation of >> gst-launch pipe definition to C code ? Does gstrtpbin require subtle >> manipulations (that gst-launch would do behind the scene ... ??? ) to >> operate with 2 rtp stream ? > > You might want to use gst-rtsp-server instead. It does all the magic > for you. > By this do you mean the transfer of SDP data or something more? Thanks. BGM. -- Brian Gitonga Marete Toshnix Systems Tel: +254722151590 ------------------------------------------------------------------------------ Protect Your Site and Customers from Malware Attacks Learn about various malware tactics and how to avoid them. Understand malware threats, the impact they can have on your business, and how you can protect your company and customers by using code signing. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
In reply to this post by giorgino
giorgino a écrit : > <pierre.crepieux <at> orange-ftgroup.com> writes: > > Dear Pierre could you give me some suggestion about your working example with > h.263 altough like you I'm interested to work with h.264. > > G. > Here it is. It's really a simple copy-paste of the sample provided with the source distribution of gstreamer. I only mimic the first RTP sink to add the second (also added a preview). I didn't tried again with h264. Maybe there are a few more constraints this simple code doesn't handle ... I'll tell you if I succeed. > > > ------------------------------------------------------------------------------ > Protect Your Site and Customers from Malware Attacks > Learn about various malware tactics and how to avoid them. Understand > malware threats, the impact they can have on your business, and how you > can protect your company and customers by using code signing. > http://p.sf.net/sfu/oracle-sfdevnl > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel > > /* # # A simple RTP server # # .-------. .-------. .-------. .----------. .-------. # |dshowsrc| |h263enc| |h263pay| | rtpbin | |udpsink| RTP # | src->sink src->sink src->send_rtp send_rtp->sink | port=5000 # '-------' '-------' '-------' | | '-------' # | | # | | .-------. # | | |udpsink| RTCP # | send_rtcp->sink | port=5001 # .-------. | | '-------' sync=false # RTCP |udpsrc | | | async=false # port=5005 | src->recv_rtcp | # '-------' | | # | | # .-------. .-------. .-------. | | .-------. # |audiosrc| |alawenc| |pcmapay| | rtpbin | |udpsink| RTP # | src->sink src->sink src->send_rtp send_rtp->sink | port=5002 # '-------' '-------' '-------' | | '-------' # | | # | | .-------. # | | |udpsink| RTCP # | send_rtcp->sink | port=5003 # .-------. | | '-------' sync=false # RTCP |udpsrc | | | async=false # port=5007 | src->recv_rtcp | # '-------' '----------' */ #include <string.h> #include <math.h> #include <gst/gst.h> /* change this to send the RTP data and RTCP to another host */ #define DEST_HOST "127.0.0.1" /* #define AUDIO_SRC "alsasrc" */ #define VIDEO_SRC "dshowvideosrc" /* the encoder and payloader elements */ #define VIDEO_ENC "ffenc_h263p" #define VIDEO_PAY "rtph263ppay" /* #define AUDIO_SRC "alsasrc" */ #define AUDIO_SRC "directsoundsrc" /* the encoder and payloader elements */ #define AUDIO_ENC "alawenc" #define AUDIO_PAY "rtppcmapay" int main (int argc, char *argv[]) { GstElement *pipeline; GMainLoop *loop; GstElement *videosrc, *capsfilter,*videoqueue,*encqueue,*videorate,*videoconv, *videotee,*previewconv, *preview,*videoenc, *videopay, *videosendtee; GstElement *rtpbin, *v_rtpsink, *v_rtcpsink, *v_rtcpsrc; GstElement *audiosrc, *audioqueue,*audioconv, *audiores, *audioenc, *audiopay; GstElement *a_rtpsink, *a_rtcpsink, *a_rtcpsrc; gboolean res; GstPadLinkReturn lres; GstPad *srcpad, *sinkpad; GstCaps *caps; /* always init first */ gst_init (&argc, &argv); /* the pipeline to hold everything */ pipeline = gst_pipeline_new (NULL); g_assert (pipeline); /* the audio capture and format conversion */ videosrc = gst_element_factory_make (VIDEO_SRC, "videosrc"); g_assert (videosrc); videoqueue = gst_element_factory_make ("queue", "videoqueue"); g_assert (videoqueue); encqueue = gst_element_factory_make ("queue", "encqueue"); g_assert (encqueue); capsfilter = gst_element_factory_make ("capsfilter", "capsfilter"); g_assert (capsfilter); videorate = gst_element_factory_make ("videorate", "videorate"); g_assert (videoqueue); videoconv = gst_element_factory_make ("ffmpegcolorspace", "videoconv"); g_assert (videoconv); previewconv = gst_element_factory_make ("ffmpegcolorspace", "previewconv"); g_assert (previewconv); videotee = gst_element_factory_make ("tee", "videotee"); g_assert (videotee); preview = gst_element_factory_make ("autovideosink", "preview"); g_assert (preview); /* the encoding and payloading */ videoenc = gst_element_factory_make (VIDEO_ENC, "videoenc"); g_assert (videoenc); videopay = gst_element_factory_make (VIDEO_PAY, "videopay"); g_assert (videopay); videosendtee = gst_element_factory_make ("tee", "videosendtee"); g_assert (videosendtee); /* add capture and payloading to the pipeline and link */ gst_bin_add_many (GST_BIN (pipeline), videosrc, videoqueue,encqueue,capsfilter,videorate,videoconv, videotee,previewconv,preview,videoenc, videopay,videosendtee, NULL); caps=gst_caps_from_string("video/x-raw-yuv , width=352, " "height=288 , framerate=15/1"); g_object_set (capsfilter, "caps", caps, NULL); res = gst_element_link_many (videosrc,capsfilter,videorate,videoconv, videotee,previewconv, preview,NULL); g_assert (res == TRUE); srcpad = gst_element_get_request_pad (videotee, "src%d"); sinkpad = gst_element_get_static_pad (encqueue, "sink"); lres = gst_pad_link (srcpad, sinkpad); g_assert (lres == GST_PAD_LINK_OK); gst_object_unref (srcpad); res = gst_element_link_many (encqueue,videoenc,videopay, videosendtee,NULL); g_assert (res == TRUE); /* the audio capture and format conversion */ audiosrc = gst_element_factory_make (AUDIO_SRC, "audiosrc"); g_assert (audiosrc); audioqueue = gst_element_factory_make ("queue", "audioqueue"); g_assert (audioqueue); audioconv = gst_element_factory_make ("audioconvert", "audioconv"); g_assert (audioconv); audiores = gst_element_factory_make ("audioresample", "audiores"); g_assert (audiores); /* the encoding and payloading */ audioenc = gst_element_factory_make (AUDIO_ENC, "audioenc"); g_assert (audioenc); audiopay = gst_element_factory_make (AUDIO_PAY, "audiopay"); g_assert (audiopay); /* add capture and payloading to the pipeline and link */ gst_bin_add_many (GST_BIN (pipeline), audiosrc, audioqueue,audioconv, audiores, audioenc, audiopay, NULL); res = gst_element_link_many (audiosrc, audioqueue,audioconv, audiores, audioenc, audiopay, NULL); g_assert (res == TRUE); /* the rtpbin element */ rtpbin = gst_element_factory_make ("gstrtpbin", "rtpbin"); g_assert (rtpbin); gst_bin_add (GST_BIN (pipeline), rtpbin); /* the udp sinks and source we will use for RTP and RTCP */ v_rtpsink = gst_element_factory_make ("udpsink", "rtpsink"); g_assert (v_rtpsink); g_object_set (v_rtpsink, "port", 5000, "host", DEST_HOST, NULL); v_rtcpsink = gst_element_factory_make ("udpsink", "rtcpsink"); g_assert (v_rtcpsink); g_object_set (v_rtcpsink, "port", 5001, "host", DEST_HOST, NULL); /* no need for synchronisation or preroll on the RTCP sink */ g_object_set (v_rtcpsink, "async", FALSE, "sync", FALSE, NULL); v_rtcpsrc = gst_element_factory_make ("udpsrc", "rtcpsrc"); g_assert (v_rtcpsrc); g_object_set (v_rtcpsrc, "port", 5007, NULL); gst_bin_add_many (GST_BIN (pipeline), v_rtpsink, v_rtcpsink, v_rtcpsrc, NULL); /* now link all to the rtpbin, start by getting an RTP sinkpad for session 0 */ sinkpad = gst_element_get_request_pad (rtpbin, "send_rtp_sink_0"); srcpad = gst_element_get_request_pad (videosendtee, "src%d"); //srcpad = gst_element_get_static_pad (videopay, "src"); lres = gst_pad_link (srcpad, sinkpad); g_assert (lres == GST_PAD_LINK_OK); gst_object_unref (srcpad); /* get the RTP srcpad that was created when we requested the sinkpad above and * link it to the rtpsink sinkpad*/ srcpad = gst_element_get_static_pad (rtpbin, "send_rtp_src_0"); sinkpad = gst_element_get_static_pad (v_rtpsink, "sink"); lres = gst_pad_link (srcpad, sinkpad); g_assert (lres == GST_PAD_LINK_OK); gst_object_unref (srcpad); gst_object_unref (sinkpad); /* get an RTCP srcpad for sending RTCP to the receiver */ srcpad = gst_element_get_request_pad (rtpbin, "send_rtcp_src_0"); sinkpad = gst_element_get_static_pad (v_rtcpsink, "sink"); lres = gst_pad_link (srcpad, sinkpad); g_assert (lres == GST_PAD_LINK_OK); gst_object_unref (sinkpad); /* we also want to receive RTCP, request an RTCP sinkpad for session 0 and * link it to the srcpad of the udpsrc for RTCP */ srcpad = gst_element_get_static_pad (v_rtcpsrc, "src"); sinkpad = gst_element_get_request_pad (rtpbin, "recv_rtcp_sink_0"); lres = gst_pad_link (srcpad, sinkpad); g_assert (lres == GST_PAD_LINK_OK); gst_object_unref (srcpad); /* the udp sinks and source we will use for RTP and RTCP */ a_rtpsink = gst_element_factory_make ("udpsink", "a_rtpsink"); g_assert (a_rtpsink); g_object_set (a_rtpsink, "port", 5002, "host", DEST_HOST, NULL); a_rtcpsink = gst_element_factory_make ("udpsink", "a_rtcpsink"); g_assert (a_rtcpsink); g_object_set (a_rtcpsink, "port", 5003, "host", DEST_HOST, NULL); /* no need for synchronisation or preroll on the RTCP sink */ g_object_set (a_rtcpsink, "async", FALSE, "sync", FALSE, NULL); a_rtcpsrc = gst_element_factory_make ("udpsrc", "a_rtcpsrc"); g_assert (a_rtcpsrc); g_object_set (a_rtcpsrc, "port", 5009, NULL); gst_bin_add_many (GST_BIN (pipeline), a_rtpsink, a_rtcpsink, a_rtcpsrc, NULL); /* now link all to the rtpbin, start by getting an RTP sinkpad for session 0 */ sinkpad = gst_element_get_request_pad (rtpbin, "send_rtp_sink_1"); srcpad = gst_element_get_static_pad (audiopay, "src"); lres = gst_pad_link (srcpad, sinkpad); g_assert (lres == GST_PAD_LINK_OK); gst_object_unref (srcpad); /* get the RTP srcpad that was created when we requested the sinkpad above and * link it to the rtpsink sinkpad*/ srcpad = gst_element_get_static_pad (rtpbin, "send_rtp_src_1"); sinkpad = gst_element_get_static_pad (a_rtpsink, "sink"); lres = gst_pad_link (srcpad, sinkpad); g_assert (lres == GST_PAD_LINK_OK); gst_object_unref (srcpad); gst_object_unref (sinkpad); /* get an RTCP srcpad for sending RTCP to the receiver */ srcpad = gst_element_get_request_pad (rtpbin, "send_rtcp_src_1"); sinkpad = gst_element_get_static_pad (a_rtcpsink, "sink"); lres = gst_pad_link (srcpad, sinkpad); g_assert (lres == GST_PAD_LINK_OK); gst_object_unref (sinkpad); /* we also want to receive RTCP, request an RTCP sinkpad for session 0 and * link it to the srcpad of the udpsrc for RTCP */ srcpad = gst_element_get_static_pad (a_rtcpsrc, "src"); sinkpad = gst_element_get_request_pad (rtpbin, "recv_rtcp_sink_1"); lres = gst_pad_link (srcpad, sinkpad); g_assert (lres == GST_PAD_LINK_OK); gst_object_unref (srcpad); g_print ("starting sender pipeline\n"); gst_element_set_state (pipeline, GST_STATE_PLAYING); /* we need to run a GLib main loop to get the messages */ loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (loop); gst_element_set_state (pipeline, GST_STATE_NULL); return 0; } ------------------------------------------------------------------------------ Protect Your Site and Customers from Malware Attacks Learn about various malware tactics and how to avoid them. Understand malware threats, the impact they can have on your business, and how you can protect your company and customers by using code signing. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |