<br><br><div class="gmail_quote">2009/5/11  <span dir="ltr">&lt;<a href="mailto:gstreamer-devel-request@lists.sourceforge.net">gstreamer-devel-request@lists.sourceforge.net</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Send gstreamer-devel mailing list submissions to<br>
        <a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
or, via email, send a message with subject or body &#39;help&#39; to<br>
        <a href="mailto:gstreamer-devel-request@lists.sourceforge.net">gstreamer-devel-request@lists.sourceforge.net</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:gstreamer-devel-owner@lists.sourceforge.net">gstreamer-devel-owner@lists.sourceforge.net</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than &quot;Re: Contents of gstreamer-devel digest...&quot;<br>
<br>
<br>
Today&#39;s Topics:<br>
<br>
   1. Re: [gst-cvs] gst-plugins-base: theoradec: rearrange      code in<br>
      preparation for 422 and 444 support. (Michael Smith)<br>
   2. Gstreamer contractor needed (Media Bu)<br>
   3. Re: rtspsrc on Windows (Michael Smith)<br>
   4. Re: Problem using gstrtpbin (Wim Taymans)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Mon, 11 May 2009 10:21:25 -0700<br>
From: Michael Smith &lt;<a href="mailto:msmith@xiph.org">msmith@xiph.org</a>&gt;<br>
Subject: Re: [gst-devel] [gst-cvs] gst-plugins-base: theoradec:<br>
        rearrange       code in preparation for 422 and 444 support.<br>
To: Jan Schmidt &lt;<a href="mailto:thaytan@noraisin.net">thaytan@noraisin.net</a>&gt;<br>
Cc: Discussion of the development of GStreamer<br>
        &lt;<a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a>&gt;<br>
Message-ID:<br>
        &lt;<a href="mailto:3c1737210905111021ndd6f76el56bd111a453199d5@mail.gmail.com">3c1737210905111021ndd6f76el56bd111a453199d5@mail.gmail.com</a>&gt;<br>
Content-Type: text/plain; charset=ISO-8859-1<br>
<br>
On Mon, May 11, 2009 at 9:54 AM, Jan Schmidt &lt;<a href="mailto:thaytan@noraisin.net">thaytan@noraisin.net</a>&gt; wrote:<br>
<br>
&gt; I&#39;m unfreezing in a few hours anyway, so might as well leave them in.<br>
&gt; I&#39;ll try and make sure to leave the freeze notice in the channel topic<br>
&gt; next time.<br>
<br>
Ok. Sorry for the screwup.<br>
<br>
&gt;<br>
&gt; For the record, the actual rule is that things unfreeze when I push the<br>
&gt; commit that bumps the version number in <a href="http://configure.ac" target="_blank">configure.ac</a> back to<br>
&gt; development.<br>
&gt;<br>
&gt; The consensus seems to be that there&#39;s nothing wrong with our current<br>
&gt; practice apart from me forgetting to leave the IRC topic marked frozen,<br>
&gt; so that&#39;s cool.<br>
<br>
The current practice is ok with me.<br>
<br>
I think it&#39;d be slightly better to branch _at release time_ (but<br>
retain the freeze on trunk before the release). Brown-paper-bag<br>
releases, as well as future security releases if required, would<br>
happen from the branch. No post-release freeze would be required. So<br>
if we were to change anything, that&#39;s what I&#39;d suggest.<br>
<br>
Mike<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Mon, 11 May 2009 10:25:19 -0700<br>
From: Media Bu &lt;<a href="mailto:media2wire@hotmail.com">media2wire@hotmail.com</a>&gt;<br>
Subject: [gst-devel] Gstreamer contractor needed<br>
To: &lt;<a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a>&gt;<br>
Message-ID: &lt;BLU143-W352312EBFC4DC86796FB7890630@phx.gbl&gt;<br>
Content-Type: text/plain; charset=&quot;iso-8859-1&quot;<br>
<br>
<br>
2wire, Inc., the leader in the development of consumer electronics software for the next-generation of media platforms, has an outstanding consulting opportunity as a GStreamer Expert in San Jose, CA.<br>
<br>
We are looking for a consultant with a successful track record and expertise in the following areas:<br>
<br>
GStreamer development for audio &amp; video streaming application<br>
Set-top box development, experience working with AV decoding Soc<br>
DVR, trick-play, time-shifting TV recording<br>
AV standards: MPEG-2 transport, ASF, MP4, WMV, H.264, WMA, AC3<br>
Live TV, tuner, ATSC standard<br>
<br>
Required Core Skills:<br>
<br>
Extensive Gstreamer application and plugin development experience<br>
HTTP/RTP/RTSP/RTCP<br>
Linux platform development<br>
Extensive experience working with open source<br>
Successful delivery of multimedia product<br>
<br>
Please reply with resume and/or background summary of experience/expertise along with expected bill rate.<br>
_________________________________________________________________<br>
Hotmail? has a new way to see what&#39;s up with your friends.<br>
<a href="http://windowslive.com/Tutorial/Hotmail/WhatsNew?ocid=TXT_TAGLM_WL_HM_Tutorial_WhatsNew1_052009" target="_blank">http://windowslive.com/Tutorial/Hotmail/WhatsNew?ocid=TXT_TAGLM_WL_HM_Tutorial_WhatsNew1_052009</a><br>

-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Mon, 11 May 2009 10:31:48 -0700<br>
From: Michael Smith &lt;<a href="mailto:msmith@xiph.org">msmith@xiph.org</a>&gt;<br>
Subject: Re: [gst-devel] rtspsrc on Windows<br>
To: Discussion of the development of GStreamer<br>
        &lt;<a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a>&gt;<br>
Message-ID:<br>
        &lt;<a href="mailto:3c1737210905111031s73d7e36n1e0b71aa2d2d8230@mail.gmail.com">3c1737210905111031s73d7e36n1e0b71aa2d2d8230@mail.gmail.com</a>&gt;<br>
Content-Type: text/plain; charset=ISO-8859-1<br>
<br>
2009/5/11 Marl?ne Hildebrand-Ehrhardt &lt;<a href="mailto:marlene.hildebrandehrhardt@gmail.com">marlene.hildebrandehrhardt@gmail.com</a>&gt;:<br>
&gt; Hi,<br>
&gt;<br>
&gt; I have a problem : I am trying to launch a rtsp server on Windows with<br>
&gt; gst-launch, but everytime, it crashes after a few minutes. The console sends<br>
&gt; me a warning, indicating that it could not read from source, and then it<br>
&gt; tells me that the server closed the connection and that it got an EOS from<br>
&gt; the element &quot;pipeline0&quot;.<br>
<br>
Did you write an rtsp server as a gstreamer element? GStreamer doesn&#39;t<br>
come with anything to do RTSP serving that you could run with<br>
gst-launch.<br>
<br>
Please provide details about what you&#39;re _actually_ doing.<br>
<br>
Also mention which versions you&#39;re using (and which version of windows).<br>
<br>
Mike</blockquote><div><br>Thank you for answering me, Mike.<br>I&#39;m using gst-launch-0.10,  version 0.10.22 with Gstreamer 0.10.22. I&#39;m working on Windows XP professionnal, version 2002, SP2.<br>In fact, I&#39;m building a rtsp server with the following command line :<br>
<br>gst-launch-0.10.exe -v rtspsrc location=rtsp://(IP adress of my IP camera)/mpeg4/media.amp ! queue ! decodebin ! queue ! videorate ! capsfilter caps=&quot;video/x-raw-yuv&quot; ! theoraenc ! rtptheorapay ! .send_rtp_sink gstrtpsession name=session .send_rtp_src ! udpsink port=5000 host=(IP adress of the client) session.send_rtcp_src ! udpsink port=5001 host=(IP adress of the client)<br>
<br>My aim is to stream the video from an IP camera.<br><br>Don&#39;t hesitate to ask to provide more details, if necessary! Plus, I&#39;m french, so excuse-me if I might not immediatly understand what you are asking me.<br>
<br>Again, thank you by advance!<br><br>Marlène<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Mon, 11 May 2009 19:58:59 +0200<br>
From: Wim Taymans &lt;<a href="mailto:wim.taymans@gmail.com">wim.taymans@gmail.com</a>&gt;<br>
Subject: Re: [gst-devel] Problem using gstrtpbin<br>
To: Discussion of the development of GStreamer<br>
        &lt;<a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a>&gt;<br>
Message-ID: &lt;1242064739.4809.166.camel@metal&gt;<br>
Content-Type: text/plain; charset=&quot;UTF-8&quot;<br>
<br>
On Mon, 2009-05-11 at 14:19 -0300, Tiago Katcipis wrote:<br>
&gt; but the ssrc is being created, why does the pad not? i get all the<br>
&gt; msgs the pipeline sends and print them all and i get no error, i<br>
&gt; already made a test with just a udpsrc ! filesink and the data is<br>
&gt; comming.<br>
<br>
Because those signals are emitted when a source is created in the<br>
session, which happens before the various pt/ssrc demuxers add the pad<br>
to gstrtpbin.<br>
<br>
Wim<br>
<br>
&gt;<br>
&gt; On Mon, May 11, 2009 at 2:06 PM, Wim Taymans &lt;<a href="mailto:wim.taymans@gmail.com">wim.taymans@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;         On Mon, 2009-05-11 at 13:55 -0300, Tiago Katcipis wrote:<br>
&gt;         &gt; i still didnt the teste, but i found this<br>
&gt;         &gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;         Sometimes (dynamic pads) on elements *always* get notified to<br>
&gt;         you with<br>
&gt;         the &quot;pad-added&quot; callback. This is a signal on GstElement. You<br>
&gt;         will get<br>
&gt;         the newly created pads from gstrtpbin with this signal. The<br>
&gt;         other<br>
&gt;         signals you are trying to connect to are for something else.<br>
&gt;<br>
&gt;         Wim<br>
&gt;<br>
&gt;<br>
&gt;         &gt;<br>
&gt;         <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpssrcdemux.html#GstRtpSsrcDemux-new-ssrc-pad" target="_blank">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpssrcdemux.html#GstRtpSsrcDemux-new-ssrc-pad</a><br>

&gt;         &gt;<br>
&gt;         &gt; the GstRtpSsrcDemux sends the signal, i tried to get the<br>
&gt;         signal from<br>
&gt;         &gt; the bin with:<br>
&gt;         &gt;<br>
&gt;         &gt; g_signal_connect (rtp_bin, &quot;new-ssrc-pad&quot;, G_CALLBACK<br>
&gt;         &gt; (on_new_ssrc_pad), rtp_decoder);<br>
&gt;         &gt;<br>
&gt;         &gt; but i didnt got the signal.<br>
&gt;         &gt;<br>
&gt;         &gt; My question is, i can get the signal from an element inside<br>
&gt;         the bin<br>
&gt;         &gt; from the bin or i have to retrieve the element from the bin<br>
&gt;         and then<br>
&gt;         &gt; connect? and if i have to get the element from the bin (in<br>
&gt;         this case<br>
&gt;         &gt; the GstRtpSsrcDemux),  how is the cleanest way of doing<br>
&gt;         this?<br>
&gt;         &gt;<br>
&gt;         &gt; thanks for all the help.<br>
&gt;         &gt; Best regards,<br>
&gt;         &gt; Katcipis<br>
&gt;         &gt;<br>
&gt;         &gt; here goes the src:<br>
&gt;         &gt;<br>
&gt;         &gt; #include &lt;gst/gst.h&gt;<br>
&gt;         &gt; #include &lt;glib.h&gt;<br>
&gt;         &gt;<br>
&gt;         &gt; #define PORTA_UDP_ENTRADA 5000<br>
&gt;         &gt;<br>
&gt;         &gt; static gboolean<br>
&gt;         &gt; bus_call (GstBus     *bus,<br>
&gt;         &gt;           GstMessage *msg,<br>
&gt;         &gt;           gpointer    data)<br>
&gt;         &gt; {<br>
&gt;         &gt;   GMainLoop *loop = (GMainLoop *) data;<br>
&gt;         &gt;<br>
&gt;         &gt;   switch (GST_MESSAGE_TYPE (msg)) {<br>
&gt;         &gt;<br>
&gt;         &gt;     case GST_MESSAGE_EOS:<br>
&gt;         &gt;       g_print (&quot;End of stream\n&quot;);<br>
&gt;         &gt;       g_main_loop_quit (loop);<br>
&gt;         &gt;       break;<br>
&gt;         &gt;<br>
&gt;         &gt;     case GST_MESSAGE_ERROR: {<br>
&gt;         &gt;       gchar  *debug;<br>
&gt;         &gt;       GError *error;<br>
&gt;         &gt;<br>
&gt;         &gt;       gst_message_parse_error (msg, &amp;error, &amp;debug);<br>
&gt;         &gt;       g_free (debug);<br>
&gt;         &gt;<br>
&gt;         &gt;       g_printerr (&quot;Error: %s\n&quot;, error-&gt;message);<br>
&gt;         &gt;       g_error_free (error);<br>
&gt;         &gt;<br>
&gt;         &gt;       g_main_loop_quit (loop);<br>
&gt;         &gt;       break;<br>
&gt;         &gt;     }<br>
&gt;         &gt;     default:<br>
&gt;         &gt;       g_print(&quot;Tipo da mensagem [%d], Nome da mensagem [%<br>
&gt;         s]\n&quot;,<br>
&gt;         &gt; GST_MESSAGE_TYPE (msg), GST_MESSAGE_TYPE_NAME(msg));<br>
&gt;         &gt;       break;<br>
&gt;         &gt;   }<br>
&gt;         &gt;<br>
&gt;         &gt;   return TRUE;<br>
&gt;         &gt; }<br>
&gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &gt; static void<br>
&gt;         &gt; on_new_ssrc (GstElement* gstrtpbin,<br>
&gt;         &gt;                    guint session,<br>
&gt;         &gt;                    guint ssrc,<br>
&gt;         &gt;                    gpointer data)<br>
&gt;         &gt; {<br>
&gt;         &gt;   GstPad* sinkpad;<br>
&gt;         &gt;   GstPad* srcpad[1];<br>
&gt;         &gt;   GstElement* decoder = (GstElement *) data;<br>
&gt;         &gt;   GstIterator* iter;<br>
&gt;         &gt;   gint done, linked, iter_count;<br>
&gt;         &gt;<br>
&gt;         &gt;   g_print (&quot;New session stabilished, linking gstrtpbin<br>
&gt;         session src pad<br>
&gt;         &gt; to the rtp_decoder\n&quot;);<br>
&gt;         &gt;<br>
&gt;         &gt;   sinkpad = gst_element_get_static_pad(decoder, &quot;sink&quot;);<br>
&gt;         &gt;   // TODO Esta dificil de pegar o pad src do gstrtpbin que<br>
&gt;         eh criado<br>
&gt;         &gt; ao iniciar uma sessao nova.<br>
&gt;         &gt;   if(!sinkpad){<br>
&gt;         &gt;       g_warning(&quot;Error getting rtp_decoder sink pad&quot;);<br>
&gt;         &gt;       return;<br>
&gt;         &gt;   }<br>
&gt;         &gt;   /*<br>
&gt;         &gt;      unique pad recv_rtp_src_%d_%d_%d on gstrtpbin with the<br>
&gt;         session<br>
&gt;         &gt; number, SSRC and payload type respectively as the pad name.<br>
&gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpbin.html" target="_blank">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpbin.html</a><br>

&gt;         &gt;   */<br>
&gt;         &gt;<br>
&gt;         &gt;   iter = gst_element_iterate_src_pads(gstrtpbin);<br>
&gt;         &gt;   if(!iter){<br>
&gt;         &gt;       g_warning(&quot;Error getting gstrtpbin pads iterator&quot;);<br>
&gt;         &gt;       return;<br>
&gt;         &gt;   }<br>
&gt;         &gt;<br>
&gt;         &gt;   done = FALSE;<br>
&gt;         &gt;   linked = FALSE;<br>
&gt;         &gt;   iter_count = 0;<br>
&gt;         &gt;<br>
&gt;         &gt;   while (!done) {<br>
&gt;         &gt;       switch (gst_iterator_next (iter, (gpointer *) srcpad))<br>
&gt;         {<br>
&gt;         &gt;           case GST_ITERATOR_OK:<br>
&gt;         &gt;               if(gst_pad_link (*srcpad, sinkpad) !=<br>
&gt;         GST_PAD_LINK_OK){<br>
&gt;         &gt;                   g_warning(&quot;Error linking gstrtpbin pad[%s]<br>
&gt;         to<br>
&gt;         &gt; rtp_decoder pad[%s]&quot;, gst_pad_get_name(*srcpad),<br>
&gt;         &gt; gst_pad_get_name(sinkpad));<br>
&gt;         &gt;               }else{<br>
&gt;         &gt;                   g_warning(&quot;Linked gstrtpbin pad[%s] to<br>
&gt;         rtp_decoder<br>
&gt;         &gt; pad[%s] with success&quot;, gst_pad_get_name(*srcpad),<br>
&gt;         &gt; gst_pad_get_name(sinkpad));<br>
&gt;         &gt;                   linked = TRUE;<br>
&gt;         &gt;               }<br>
&gt;         &gt;               iter_count++;<br>
&gt;         &gt;               gst_object_unref (*srcpad);<br>
&gt;         &gt;           break;<br>
&gt;         &gt;           case GST_ITERATOR_RESYNC:<br>
&gt;         &gt;               gst_iterator_resync (iter);<br>
&gt;         &gt;           break;<br>
&gt;         &gt;           case GST_ITERATOR_ERROR:<br>
&gt;         &gt;               done = TRUE;<br>
&gt;         &gt;           break;<br>
&gt;         &gt;           case GST_ITERATOR_DONE:<br>
&gt;         &gt;               done = TRUE;<br>
&gt;         &gt;           break;<br>
&gt;         &gt;       }<br>
&gt;         &gt;    }<br>
&gt;         &gt;   if(!linked){<br>
&gt;         &gt;       g_warning(&quot;failed to found a valid recv_src_pad on<br>
&gt;         gstrtpbin&quot;);<br>
&gt;         &gt;   }<br>
&gt;         &gt;   g_debug(&quot;GstRtpBin has [%d] src pads&quot;, iter_count);<br>
&gt;         &gt;<br>
&gt;         &gt;   gst_iterator_free (iter);<br>
&gt;         &gt;   gst_object_unref (sinkpad);<br>
&gt;         &gt; }<br>
&gt;         &gt;<br>
&gt;         &gt; static void<br>
&gt;         &gt; on_new_ssrc_pad (GstElement *element,<br>
&gt;         &gt;                  GstPad     *pad,<br>
&gt;         &gt;                  guint      ssrc,<br>
&gt;         &gt;                  gpointer   data)<br>
&gt;         &gt; {<br>
&gt;         &gt;   GstPad *sinkpad;<br>
&gt;         &gt;   GstElement *decoder = (GstElement *) data;<br>
&gt;         &gt;<br>
&gt;         &gt;   /* We can now link this pad with the converter sink pad */<br>
&gt;         &gt;   g_print (&quot;Dynamic ssrc pad created, linking the pad to the<br>
&gt;         &gt; rtp_decoder\n&quot;);<br>
&gt;         &gt;<br>
&gt;         &gt;   sinkpad = gst_element_get_static_pad (decoder, &quot;sink&quot;);<br>
&gt;         &gt;   if(gst_pad_link (pad, sinkpad) != GST_PAD_LINK_OK){<br>
&gt;         &gt;       gchar* name = gst_pad_get_name(pad);<br>
&gt;         &gt;       g_warning(&quot;Error linking the pad[%s] to rtp_decoder<br>
&gt;         sinkpad&quot;,<br>
&gt;         &gt; name);<br>
&gt;         &gt;       g_free(name);<br>
&gt;         &gt;   }<br>
&gt;         &gt;<br>
&gt;         &gt;   gst_object_unref (sinkpad);<br>
&gt;         &gt; }<br>
&gt;         &gt;<br>
&gt;         &gt; int<br>
&gt;         &gt; main (int   argc,<br>
&gt;         &gt;       char *argv[])<br>
&gt;         &gt; {<br>
&gt;         &gt;   GMainLoop *loop;<br>
&gt;         &gt;<br>
&gt;         &gt;   GstElement *pipeline, *source, *rtp_bin, *rtp_decoder,<br>
&gt;         *sink;<br>
&gt;         &gt;   GstPad *gstrtp_sink_pad;<br>
&gt;         &gt;   GstBus *bus;<br>
&gt;         &gt;<br>
&gt;         &gt;   /* Initialisation */<br>
&gt;         &gt;   gst_init (&amp;argc, &amp;argv);<br>
&gt;         &gt;<br>
&gt;         &gt;   loop = g_main_loop_new (NULL, FALSE);<br>
&gt;         &gt;<br>
&gt;         &gt;   /* Create gstreamer elements */<br>
&gt;         &gt;   pipeline    = gst_pipeline_new (&quot;audio-player&quot;);<br>
&gt;         &gt;   source      = gst_element_factory_make<br>
&gt;         (&quot;udpsrc&quot;,&quot;udp-source&quot;);<br>
&gt;         &gt;   rtp_bin     = gst_element_factory_make (&quot;gstrtpbin&quot;,<br>
&gt;         &quot;gst_rtpbin&quot;);<br>
&gt;         &gt;   rtp_decoder = gst_element_factory_make (&quot;rtpL16depay&quot;,<br>
&gt;         &gt; &quot;rtp_decoder&quot;);<br>
&gt;         &gt;   sink        = gst_element_factory_make (&quot;filesink&quot;,<br>
&gt;         &quot;file-sink&quot;);<br>
&gt;         &gt;<br>
&gt;         &gt;   if (!pipeline || !source || !sink || !rtp_decoder || !<br>
&gt;         rtp_bin) {<br>
&gt;         &gt;     g_printerr (&quot;One element could not be created.<br>
&gt;         Exiting.\n&quot;);<br>
&gt;         &gt;     return -1;<br>
&gt;         &gt;   }<br>
&gt;         &gt;<br>
&gt;         &gt;   gstrtp_sink_pad = gst_element_get_request_pad(rtp_bin,<br>
&gt;         &gt; &quot;recv_rtp_sink_0&quot;);<br>
&gt;         &gt;   if (!gstrtp_sink_pad) {<br>
&gt;         &gt;     g_printerr (&quot;Sink pad could not be created.<br>
&gt;         Exiting.\n&quot;);<br>
&gt;         &gt;     return -1;<br>
&gt;         &gt;   }<br>
&gt;         &gt;<br>
&gt;         &gt;   /* Set up the pipeline */<br>
&gt;         &gt;   g_object_set (G_OBJECT (source), &quot;port&quot;,<br>
&gt;         PORTA_UDP_ENTRADA , NULL);<br>
&gt;         &gt;   g_object_set (G_OBJECT (sink), &quot;location&quot;,<br>
&gt;         &quot;dados_recebidos_rtp&quot; ,<br>
&gt;         &gt; NULL);<br>
&gt;         &gt;<br>
&gt;         &gt;   /* we add a message handler */<br>
&gt;         &gt;   bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));<br>
&gt;         &gt;   gst_bus_add_watch (bus, bus_call, loop);<br>
&gt;         &gt;   gst_object_unref (bus);<br>
&gt;         &gt;<br>
&gt;         &gt;   /* we add all elements into the pipeline */<br>
&gt;         &gt;   /* file-source | ogg-demuxer | vorbis-decoder | converter<br>
&gt;         |<br>
&gt;         &gt; alsa-output */<br>
&gt;         &gt;   gst_bin_add_many (GST_BIN (pipeline),<br>
&gt;         &gt;                     source, sink, rtp_bin, rtp_decoder,<br>
&gt;         NULL);<br>
&gt;         &gt;<br>
&gt;         &gt;   /* we link the elements together */<br>
&gt;         &gt;   if(gst_pad_link(gst_element_get_static_pad(source, &quot;src&quot;),<br>
&gt;         &gt; gstrtp_sink_pad) != GST_PAD_LINK_OK){<br>
&gt;         &gt;       g_warning(&quot;Error linking source to the<br>
&gt;         gstrtp_sink_pad&quot;);<br>
&gt;         &gt;       gst_object_unref (GST_OBJECT (pipeline));<br>
&gt;         &gt;       return 0;<br>
&gt;         &gt;   }<br>
&gt;         &gt;<br>
&gt;         &gt;   /*<br>
&gt;         &gt;     After the packets are released from the jitterbuffer,<br>
&gt;         they will be<br>
&gt;         &gt; forwarded to a GstRtpsSrcDemux element.<br>
&gt;         &gt;     The GstRtpsSrcDemux element will demux the packets based<br>
&gt;         on the<br>
&gt;         &gt; payload type and will create a unique pad<br>
&gt;         &gt;     recv_rtp_src_%d_%d_%d on gstrtpbin with the session<br>
&gt;         number, SSRC<br>
&gt;         &gt; and payload type respectively as the pad name.<br>
&gt;         &gt;     Because of that we have to dinamicaly link the src pads<br>
&gt;         on<br>
&gt;         &gt; runtime.<br>
&gt;         &gt;   */<br>
&gt;         &gt;   g_signal_connect (rtp_bin, &quot;new-ssrc-pad&quot;, G_CALLBACK<br>
&gt;         &gt; (on_new_ssrc_pad), rtp_decoder);<br>
&gt;         &gt;   g_signal_connect (rtp_bin, &quot;on-new-ssrc&quot;,  G_CALLBACK<br>
&gt;         (on_new_ssrc),<br>
&gt;         &gt; rtp_decoder);<br>
&gt;         &gt;<br>
&gt;         &gt;   if(!gst_element_link (rtp_decoder, sink)){<br>
&gt;         &gt;       g_warning(&quot;Error linking the rtp_decoder to the<br>
&gt;         sink&quot;);<br>
&gt;         &gt;       gst_object_unref (GST_OBJECT (pipeline));<br>
&gt;         &gt;       return -1;<br>
&gt;         &gt;   }<br>
&gt;         &gt;<br>
&gt;         &gt;   /* Set the pipeline to &quot;playing&quot; state*/<br>
&gt;         &gt;   g_print (&quot;listening on port: %d\n&quot;, PORTA_UDP_ENTRADA);<br>
&gt;         &gt;   gst_element_set_state (pipeline, GST_STATE_PLAYING);<br>
&gt;         &gt;<br>
&gt;         &gt;   /* Iterate */<br>
&gt;         &gt;   g_print (&quot;Running...\n&quot;);<br>
&gt;         &gt;   g_main_loop_run (loop);<br>
&gt;         &gt;<br>
&gt;         &gt;   /* Out of the main loop, clean up nicely */<br>
&gt;         &gt;   g_print (&quot;Returned, stopping listening on port\n&quot;);<br>
&gt;         &gt;   gst_element_set_state (pipeline, GST_STATE_NULL);<br>
&gt;         &gt;<br>
&gt;         &gt;   g_print (&quot;Deleting pipeline\n&quot;);<br>
&gt;         &gt;   gst_object_unref (GST_OBJECT (pipeline));<br>
&gt;         &gt;<br>
&gt;         &gt;   return 0;<br>
&gt;         &gt; }<br>
&gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &gt; On Sat, May 9, 2009 at 3:40 PM, Aurelien Grimaud<br>
&gt;         &lt;<a href="mailto:gstelzz@yahoo.fr">gstelzz@yahoo.fr</a>&gt;<br>
&gt;         &gt; wrote:<br>
&gt;         &gt;         Sorry, I misread your code.<br>
&gt;         &gt;         the pad-added signal is a signal of elements,<br>
&gt;         documented in<br>
&gt;         &gt;         the element<br>
&gt;         &gt;         documentation.<br>
&gt;         &gt;         Do you receive RTP ?<br>
&gt;         &gt;         Because the pad wont be created if you do not<br>
&gt;         receive RTP.<br>
&gt;         &gt;         What does tcpdump tell ?<br>
&gt;         &gt;<br>
&gt;         &gt;         Aurelien<br>
&gt;         &gt;         Tiago Katcipis a ?crit :<br>
&gt;         &gt;<br>
&gt;         &gt;         &gt; i did it, the pad never is created :-(, but i get<br>
&gt;         no message<br>
&gt;         &gt;         of<br>
&gt;         &gt;         &gt; warning or error neither. And on the list of<br>
&gt;         signals of the<br>
&gt;         &gt;         gstrtpbin<br>
&gt;         &gt;         &gt; there is no &quot;pad-added&quot; signal, its normal to the<br>
&gt;         signal<br>
&gt;         &gt;         dont be there?<br>
&gt;         &gt;         &gt; *<br>
&gt;         &gt;         &gt; g_signal_connect (rtp_bin, &quot;pad-added&quot;,<br>
&gt;         G_CALLBACK<br>
&gt;         &gt;         (on_pad_added),<br>
&gt;         &gt;         &gt; rtp_decoder);*<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt; On Sat, May 9, 2009 at 3:55 AM, Aurelien Grimaud<br>
&gt;         &gt;         &lt;<a href="mailto:gstelzz@yahoo.fr">gstelzz@yahoo.fr</a><br>
&gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &gt;         &gt; &lt;mailto:<a href="mailto:gstelzz@yahoo.fr">gstelzz@yahoo.fr</a>&gt;&gt; wrote:<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt;     You should add the pad-added signal on the<br>
&gt;         rtpbin.<br>
&gt;         &gt;         &gt;     When it triggers, check the pad name to find<br>
&gt;         out which<br>
&gt;         &gt;         pad it is.<br>
&gt;         &gt;         &gt;     If pad is a recv_rtp_src_%d_%d_%d, link your<br>
&gt;         decoder and<br>
&gt;         &gt;         sink in the<br>
&gt;         &gt;         &gt;     call back.<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt;     Aurelien<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt;     Tiago Katcipis a ?crit :<br>
&gt;         &gt;         &gt;     &gt; Im trying to do a rtp stream sending data<br>
&gt;         and another<br>
&gt;         &gt;         side receiving<br>
&gt;         &gt;         &gt;     &gt; the data, the part that sends the data is<br>
&gt;         working<br>
&gt;         &gt;         fine, but the part<br>
&gt;         &gt;         &gt;     &gt; that receives is giving me a lot of trouble.<br>
&gt;         At<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpbin.html" target="_blank">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpbin.html</a><br>

&gt;         &gt;         &gt;     &gt; i have read:<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt; &quot;To use GstRtpBin<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &lt;<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpbin.html#GstRtpBin" target="_blank">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpbin.html#GstRtpBin</a>&gt;<br>

&gt;         &gt;         &gt;     &gt; as an RTP receiver, request a recv_rtp_sink_<br>
&gt;         %|d| pad.<br>
&gt;         &gt;         The session<br>
&gt;         &gt;         &gt;     &gt; number must be specified in the pad name.<br>
&gt;         Data<br>
&gt;         &gt;         received on the<br>
&gt;         &gt;         &gt;     &gt; recv_rtp_sink_%|d| pad will be processed in<br>
&gt;         the<br>
&gt;         &gt;         gstrtpsession<br>
&gt;         &gt;         &gt;     manager<br>
&gt;         &gt;         &gt;     &gt; and after being validated forwarded on<br>
&gt;         GstRtpsSrcDemux<br>
&gt;         &gt;         element. Each<br>
&gt;         &gt;         &gt;     &gt; RTP stream is demuxed based on the SSRC and<br>
&gt;         send to a<br>
&gt;         &gt;         &gt;     &gt; GstRtpJitterBuffer<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &lt;<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpjitterbuffer.html#GstRtpJitterBuffer" target="_blank">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpjitterbuffer.html#GstRtpJitterBuffer</a>&gt;.<br>

&gt;         &gt;         &gt;     &gt; After the packets are released from the<br>
&gt;         jitterbuffer,<br>
&gt;         &gt;         they will be<br>
&gt;         &gt;         &gt;     &gt; forwarded to a GstRtpsSrcDemux element. The<br>
&gt;         &gt;         GstRtpsSrcDemux element<br>
&gt;         &gt;         &gt;     &gt; will demux the packets based on the payload<br>
&gt;         type and<br>
&gt;         &gt;         will create a<br>
&gt;         &gt;         &gt;     &gt; unique pad recv_rtp_src_%|d_|%|d_|%|d| on<br>
&gt;         gstrtpbin<br>
&gt;         &gt;         with the session<br>
&gt;         &gt;         &gt;     &gt; number, SSRC and payload type respectively<br>
&gt;         as the pad<br>
&gt;         &gt;         name. &quot;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt; on my application i cant get the<br>
&gt;         recv_rtp_src_%|d_|%|<br>
&gt;         &gt;         d_|%|d,  |i<br>
&gt;         &gt;         &gt;     &gt; already tried on a lot of ways, my last shot<br>
&gt;         was try<br>
&gt;         &gt;         to iterate over<br>
&gt;         &gt;         &gt;     &gt; all the pads on the bin and try to conect, i<br>
&gt;         &gt;         discovered that the src<br>
&gt;         &gt;         &gt;     &gt; pad never shows up. No error is given. I can<br>
&gt;         get the<br>
&gt;         &gt;         on-new-ssrc<br>
&gt;         &gt;         &gt;     &gt; signal...and other signals as  |<br>
&gt;         on-ssrc-validated...<br>
&gt;         &gt;         but on all this<br>
&gt;         &gt;         &gt;     &gt; signals the | recv_rtp_src_%|d_|%|d_|%|d is<br>
&gt;         not<br>
&gt;         &gt;         created yet, i also<br>
&gt;         &gt;         &gt;     &gt; tried to get the &quot;on-pad-added&quot; signal but<br>
&gt;         this signal<br>
&gt;         &gt;         never<br>
&gt;         &gt;         &gt;     happens|.<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt; My problem is, when the recv_rtp_src_%|d_|%|<br>
&gt;         d_|%|d is<br>
&gt;         &gt;         created|.<br>
&gt;         &gt;         &gt;     When i<br>
&gt;         &gt;         &gt;     &gt; iterate over the pads i always get a<br>
&gt;         &gt;         &gt;     &gt; ** (teste_rtp:9516): DEBUG: GstRtpBin has<br>
&gt;         [0] src pads<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt; here goes the source code, is a little messy<br>
&gt;         because<br>
&gt;         &gt;         im all day<br>
&gt;         &gt;         &gt;     trying<br>
&gt;         &gt;         &gt;     &gt; a lot of different ways to do this. And i<br>
&gt;         get no error<br>
&gt;         &gt;         message.<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt; #include &lt;gst/gst.h&gt;<br>
&gt;         &gt;         &gt;     &gt; #include &lt;glib.h&gt;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt; #define PORTA_UDP_ENTRADA 5000<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt; static gboolean<br>
&gt;         &gt;         &gt;     &gt; bus_call (GstBus     *bus,<br>
&gt;         &gt;         &gt;     &gt;           GstMessage *msg,<br>
&gt;         &gt;         &gt;     &gt;           gpointer    data)<br>
&gt;         &gt;         &gt;     &gt; {<br>
&gt;         &gt;         &gt;     &gt;   GMainLoop *loop = (GMainLoop *) data;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   switch (GST_MESSAGE_TYPE (msg)) {<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;     case GST_MESSAGE_EOS:<br>
&gt;         &gt;         &gt;     &gt;       g_print (&quot;End of stream\n&quot;);<br>
&gt;         &gt;         &gt;     &gt;       g_main_loop_quit (loop);<br>
&gt;         &gt;         &gt;     &gt;       break;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;     case GST_MESSAGE_ERROR: {<br>
&gt;         &gt;         &gt;     &gt;       gchar  *debug;<br>
&gt;         &gt;         &gt;     &gt;       GError *error;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;       gst_message_parse_error (msg, &amp;error,<br>
&gt;         &amp;debug);<br>
&gt;         &gt;         &gt;     &gt;       g_free (debug);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;       g_printerr (&quot;Error: %s\n&quot;,<br>
&gt;         error-&gt;message);<br>
&gt;         &gt;         &gt;     &gt;       g_error_free (error);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;       g_main_loop_quit (loop);<br>
&gt;         &gt;         &gt;     &gt;       break;<br>
&gt;         &gt;         &gt;     &gt;     }<br>
&gt;         &gt;         &gt;     &gt;     default:<br>
&gt;         &gt;         &gt;     &gt;       g_print(&quot;Tipo da mensagem [%d], Nome<br>
&gt;         da mensagem<br>
&gt;         &gt;         [%s]\n&quot;,<br>
&gt;         &gt;         &gt;     &gt; GST_MESSAGE_TYPE (msg),<br>
&gt;         GST_MESSAGE_TYPE_NAME(msg));<br>
&gt;         &gt;         &gt;     &gt;       break;<br>
&gt;         &gt;         &gt;     &gt;   }<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   return TRUE;<br>
&gt;         &gt;         &gt;     &gt; }<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt; static void<br>
&gt;         &gt;         &gt;     &gt; on_new_ssrc (GstElement* gstrtpbin,<br>
&gt;         &gt;         &gt;     &gt;                    guint session,<br>
&gt;         &gt;         &gt;     &gt;                    guint ssrc,<br>
&gt;         &gt;         &gt;     &gt;                    gpointer data)<br>
&gt;         &gt;         &gt;     &gt; {<br>
&gt;         &gt;         &gt;     &gt;   GstPad* sinkpad;<br>
&gt;         &gt;         &gt;     &gt;   GstPad* srcpad[1];<br>
&gt;         &gt;         &gt;     &gt;   GstElement* decoder = (GstElement *) data;<br>
&gt;         &gt;         &gt;     &gt;   GstIterator* iter;<br>
&gt;         &gt;         &gt;     &gt;   gint done, linked, iter_count;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   g_print (&quot;New session stabilished, linking<br>
&gt;         gstrtpbin<br>
&gt;         &gt;         session<br>
&gt;         &gt;         &gt;     src pad<br>
&gt;         &gt;         &gt;     &gt; to the rtp_decoder\n&quot;);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   sinkpad =<br>
&gt;         gst_element_get_static_pad(decoder,<br>
&gt;         &gt;         &quot;sink&quot;);<br>
&gt;         &gt;         &gt;     &gt;   // TODO Esta dificil de pegar o pad src do<br>
&gt;         gstrtpbin<br>
&gt;         &gt;         que eh criado<br>
&gt;         &gt;         &gt;     &gt; ao iniciar uma sessao nova.<br>
&gt;         &gt;         &gt;     &gt;   if(!sinkpad){<br>
&gt;         &gt;         &gt;     &gt;       g_warning(&quot;Error getting rtp_decoder<br>
&gt;         sink pad&quot;);<br>
&gt;         &gt;         &gt;     &gt;       return;<br>
&gt;         &gt;         &gt;     &gt;   }<br>
&gt;         &gt;         &gt;     &gt;   /*<br>
&gt;         &gt;         &gt;     &gt;      unique pad recv_rtp_src_%d_%d_%d on<br>
&gt;         gstrtpbin<br>
&gt;         &gt;         with the session<br>
&gt;         &gt;         &gt;     &gt; number, SSRC and payload type respectively<br>
&gt;         as the pad<br>
&gt;         &gt;         name.<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpbin.html" target="_blank">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-gstrtpbin.html</a><br>

&gt;         &gt;         &gt;     &gt;   */<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   iter =<br>
&gt;         gst_element_iterate_src_pads(gstrtpbin);<br>
&gt;         &gt;         &gt;     &gt;   if(!iter){<br>
&gt;         &gt;         &gt;     &gt;       g_warning(&quot;Error getting gstrtpbin<br>
&gt;         pads<br>
&gt;         &gt;         iterator&quot;);<br>
&gt;         &gt;         &gt;     &gt;       return;<br>
&gt;         &gt;         &gt;     &gt;   }<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   done = FALSE;<br>
&gt;         &gt;         &gt;     &gt;   linked = FALSE;<br>
&gt;         &gt;         &gt;     &gt;   iter_count = 0;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   while (!done) {<br>
&gt;         &gt;         &gt;     &gt;       switch (gst_iterator_next (iter,<br>
&gt;         (gpointer *)<br>
&gt;         &gt;         srcpad)) {<br>
&gt;         &gt;         &gt;     &gt;           case GST_ITERATOR_OK:<br>
&gt;         &gt;         &gt;     &gt;               if(gst_pad_link (*srcpad,<br>
&gt;         sinkpad) !=<br>
&gt;         &gt;         &gt;     GST_PAD_LINK_OK){<br>
&gt;         &gt;         &gt;     &gt;                   g_warning(&quot;Error linking<br>
&gt;         gstrtpbin<br>
&gt;         &gt;         pad[%s] to<br>
&gt;         &gt;         &gt;     &gt; rtp_decoder pad[%s]&quot;,<br>
&gt;         gst_pad_get_name(*srcpad),<br>
&gt;         &gt;         &gt;     &gt; gst_pad_get_name(sinkpad));<br>
&gt;         &gt;         &gt;     &gt;               }else{<br>
&gt;         &gt;         &gt;     &gt;                   g_warning(&quot;Linked<br>
&gt;         gstrtpbin pad[%s]<br>
&gt;         &gt;         to rtp_decoder<br>
&gt;         &gt;         &gt;     &gt; pad[%s] with success&quot;,<br>
&gt;         gst_pad_get_name(*srcpad),<br>
&gt;         &gt;         &gt;     &gt; gst_pad_get_name(sinkpad));<br>
&gt;         &gt;         &gt;     &gt;                   linked = TRUE;<br>
&gt;         &gt;         &gt;     &gt;               }<br>
&gt;         &gt;         &gt;     &gt;               iter_count++;<br>
&gt;         &gt;         &gt;     &gt;               gst_object_unref (*srcpad);<br>
&gt;         &gt;         &gt;     &gt;           break;<br>
&gt;         &gt;         &gt;     &gt;           case GST_ITERATOR_RESYNC:<br>
&gt;         &gt;         &gt;     &gt;               gst_iterator_resync (iter);<br>
&gt;         &gt;         &gt;     &gt;           break;<br>
&gt;         &gt;         &gt;     &gt;           case GST_ITERATOR_ERROR:<br>
&gt;         &gt;         &gt;     &gt;               done = TRUE;<br>
&gt;         &gt;         &gt;     &gt;           break;<br>
&gt;         &gt;         &gt;     &gt;           case GST_ITERATOR_DONE:<br>
&gt;         &gt;         &gt;     &gt;               done = TRUE;<br>
&gt;         &gt;         &gt;     &gt;           break;<br>
&gt;         &gt;         &gt;     &gt;       }<br>
&gt;         &gt;         &gt;     &gt;    }<br>
&gt;         &gt;         &gt;     &gt;   if(!linked){<br>
&gt;         &gt;         &gt;     &gt;       g_warning(&quot;failed to found a valid<br>
&gt;         recv_src_pad<br>
&gt;         &gt;         on<br>
&gt;         &gt;         &gt;     gstrtpbin&quot;);<br>
&gt;         &gt;         &gt;     &gt;   }<br>
&gt;         &gt;         &gt;     &gt;   g_debug(&quot;GstRtpBin has [%d] src pads&quot;,<br>
&gt;         iter_count);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   gst_iterator_free (iter);<br>
&gt;         &gt;         &gt;     &gt;   gst_object_unref (sinkpad);<br>
&gt;         &gt;         &gt;     &gt; }<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt; static void<br>
&gt;         &gt;         &gt;     &gt; on_pad_added (GstElement *element,<br>
&gt;         &gt;         &gt;     &gt;               GstPad     *pad,<br>
&gt;         &gt;         &gt;     &gt;               gpointer    data)<br>
&gt;         &gt;         &gt;     &gt; {<br>
&gt;         &gt;         &gt;     &gt;   GstPad *sinkpad;<br>
&gt;         &gt;         &gt;     &gt;   GstElement *decoder = (GstElement *) data;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   /* We can now link this pad with the<br>
&gt;         converter sink<br>
&gt;         &gt;         pad */<br>
&gt;         &gt;         &gt;     &gt;   g_print (&quot;Dynamic pad created, linking<br>
&gt;         &gt;         wavparser/converter\n&quot;);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   sinkpad = gst_element_get_static_pad<br>
&gt;         (decoder,<br>
&gt;         &gt;         &quot;sink&quot;);<br>
&gt;         &gt;         &gt;     &gt;   if(gst_pad_link (pad, sinkpad) !=<br>
&gt;         GST_PAD_LINK_OK){<br>
&gt;         &gt;         &gt;     &gt;       g_warning(&quot;Error linking recv_rtp_src<br>
&gt;         pad to<br>
&gt;         &gt;         sinkpad&quot;);<br>
&gt;         &gt;         &gt;     &gt;   }<br>
&gt;         &gt;         &gt;     &gt;   gst_object_unref (sinkpad);<br>
&gt;         &gt;         &gt;     &gt; }<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt; int<br>
&gt;         &gt;         &gt;     &gt; main (int   argc,<br>
&gt;         &gt;         &gt;     &gt;       char *argv[])<br>
&gt;         &gt;         &gt;     &gt; {<br>
&gt;         &gt;         &gt;     &gt;   GMainLoop *loop;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   GstElement *pipeline, *source, *rtp_bin,<br>
&gt;         &gt;         *rtp_decoder, *sink;<br>
&gt;         &gt;         &gt;     &gt;   GstPad *gstrtp_sink_pad;<br>
&gt;         &gt;         &gt;     &gt;   GstBus *bus;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   /* Initialisation */<br>
&gt;         &gt;         &gt;     &gt;   gst_init (&amp;argc, &amp;argv);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   loop = g_main_loop_new (NULL, FALSE);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   /* Create gstreamer elements */<br>
&gt;         &gt;         &gt;     &gt;   pipeline    = gst_pipeline_new<br>
&gt;         (&quot;audio-player&quot;);<br>
&gt;         &gt;         &gt;     &gt;   source      = gst_element_factory_make<br>
&gt;         &gt;         (&quot;udpsrc&quot;,&quot;udp-source&quot;);<br>
&gt;         &gt;         &gt;     &gt;   rtp_bin     = gst_element_factory_make<br>
&gt;         (&quot;gstrtpbin&quot;,<br>
&gt;         &gt;         &gt;     &quot;gst_rtpbin&quot;);<br>
&gt;         &gt;         &gt;     &gt;   rtp_decoder = gst_element_factory_make<br>
&gt;         &gt;         (&quot;rtpL16depay&quot;,<br>
&gt;         &gt;         &gt;     &quot;rtp_decoder&quot;);<br>
&gt;         &gt;         &gt;     &gt;   sink        = gst_element_factory_make<br>
&gt;         (&quot;filesink&quot;,<br>
&gt;         &gt;         &quot;file-sink&quot;);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   if (!pipeline || !source || !sink || !<br>
&gt;         rtp_decoder<br>
&gt;         &gt;         || !rtp_bin) {<br>
&gt;         &gt;         &gt;     &gt;     g_printerr (&quot;One element could not be<br>
&gt;         created.<br>
&gt;         &gt;         Exiting.\n&quot;);<br>
&gt;         &gt;         &gt;     &gt;     return -1;<br>
&gt;         &gt;         &gt;     &gt;   }<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   gstrtp_sink_pad =<br>
&gt;         &gt;         gst_element_get_request_pad(rtp_bin,<br>
&gt;         &gt;         &gt;     &gt; &quot;recv_rtp_sink_0&quot;);<br>
&gt;         &gt;         &gt;     &gt;   if (!gstrtp_sink_pad) {<br>
&gt;         &gt;         &gt;     &gt;     g_printerr (&quot;Sink pad could not be<br>
&gt;         created.<br>
&gt;         &gt;         Exiting.\n&quot;);<br>
&gt;         &gt;         &gt;     &gt;     return -1;<br>
&gt;         &gt;         &gt;     &gt;   }<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   /* Set up the pipeline */<br>
&gt;         &gt;         &gt;     &gt;   g_object_set (G_OBJECT (source), &quot;port&quot;,<br>
&gt;         &gt;         PORTA_UDP_ENTRADA ,<br>
&gt;         &gt;         &gt;     NULL);<br>
&gt;         &gt;         &gt;     &gt;   g_object_set (G_OBJECT (sink), &quot;location&quot;,<br>
&gt;         &gt;         &quot;dados_recebidos_rtp&quot; ,<br>
&gt;         &gt;         &gt;     &gt; NULL);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   /* we add a message handler */<br>
&gt;         &gt;         &gt;     &gt;   bus = gst_pipeline_get_bus (GST_PIPELINE<br>
&gt;         &gt;         (pipeline));<br>
&gt;         &gt;         &gt;     &gt;   gst_bus_add_watch (bus, bus_call, loop);<br>
&gt;         &gt;         &gt;     &gt;   gst_object_unref (bus);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   /* we add all elements into the pipeline<br>
&gt;         */<br>
&gt;         &gt;         &gt;     &gt;   /* file-source | ogg-demuxer |<br>
&gt;         vorbis-decoder |<br>
&gt;         &gt;         converter |<br>
&gt;         &gt;         &gt;     &gt; alsa-output */<br>
&gt;         &gt;         &gt;     &gt;   gst_bin_add_many (GST_BIN (pipeline),<br>
&gt;         &gt;         &gt;     &gt;                     source, sink, rtp_bin,<br>
&gt;         &gt;         rtp_decoder, NULL);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   /* we link the elements together */<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         if(gst_pad_link(gst_element_get_static_pad(source,<br>
&gt;         &gt;         &quot;src&quot;),<br>
&gt;         &gt;         &gt;     &gt; gstrtp_sink_pad) != GST_PAD_LINK_OK){<br>
&gt;         &gt;         &gt;     &gt;       g_warning(&quot;Error linking source to the<br>
&gt;         &gt;         gstrtp_sink_pad&quot;);<br>
&gt;         &gt;         &gt;     &gt;       gst_object_unref (GST_OBJECT<br>
&gt;         (pipeline));<br>
&gt;         &gt;         &gt;     &gt;       return 0;<br>
&gt;         &gt;         &gt;     &gt;   }<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   /*<br>
&gt;         &gt;         &gt;     &gt;     After the packets are released from the<br>
&gt;         &gt;         jitterbuffer, they<br>
&gt;         &gt;         &gt;     will be<br>
&gt;         &gt;         &gt;     &gt; forwarded to a GstRtpsSrcDemux element.<br>
&gt;         &gt;         &gt;     &gt;     The GstRtpsSrcDemux element will demux<br>
&gt;         the packets<br>
&gt;         &gt;         based on the<br>
&gt;         &gt;         &gt;     &gt; payload type and will create a unique pad<br>
&gt;         &gt;         &gt;     &gt;     recv_rtp_src_%d_%d_%d on gstrtpbin with<br>
&gt;         the<br>
&gt;         &gt;         session number, SSRC<br>
&gt;         &gt;         &gt;     &gt; and payload type respectively as the pad<br>
&gt;         name.<br>
&gt;         &gt;         &gt;     &gt;     Because of that we have to dinamicaly<br>
&gt;         link the src<br>
&gt;         &gt;         pads on<br>
&gt;         &gt;         &gt;     runtime.<br>
&gt;         &gt;         &gt;     &gt;   */<br>
&gt;         &gt;         &gt;     &gt;   g_signal_connect (rtp_bin, &quot;pad-added&quot;,<br>
&gt;         G_CALLBACK<br>
&gt;         &gt;         &gt;     (on_pad_added),<br>
&gt;         &gt;         &gt;     &gt; rtp_decoder);<br>
&gt;         &gt;         &gt;     &gt;   g_signal_connect (rtp_bin, &quot;on-new-ssrc&quot;,<br>
&gt;         G_CALLBACK<br>
&gt;         &gt;         &gt;     (on_new_ssrc),<br>
&gt;         &gt;         &gt;     &gt; rtp_decoder);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   if(!gst_element_link (rtp_decoder, sink)){<br>
&gt;         &gt;         &gt;     &gt;       g_warning(&quot;Error linking the<br>
&gt;         rtp_decoder to the<br>
&gt;         &gt;         sink&quot;);<br>
&gt;         &gt;         &gt;     &gt;       gst_object_unref (GST_OBJECT<br>
&gt;         (pipeline));<br>
&gt;         &gt;         &gt;     &gt;       return -1;<br>
&gt;         &gt;         &gt;     &gt;   }<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   /* Set the pipeline to &quot;playing&quot; state*/<br>
&gt;         &gt;         &gt;     &gt;   g_print (&quot;listening on port: %d\n&quot;,<br>
&gt;         &gt;         PORTA_UDP_ENTRADA);<br>
&gt;         &gt;         &gt;     &gt;   gst_element_set_state (pipeline,<br>
&gt;         GST_STATE_PLAYING);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   /* Iterate */<br>
&gt;         &gt;         &gt;     &gt;   g_print (&quot;Running...\n&quot;);<br>
&gt;         &gt;         &gt;     &gt;   g_main_loop_run (loop);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   /* Out of the main loop, clean up nicely<br>
&gt;         */<br>
&gt;         &gt;         &gt;     &gt;   g_print (&quot;Returned, stopping listening on<br>
&gt;         port\n&quot;);<br>
&gt;         &gt;         &gt;     &gt;   gst_element_set_state (pipeline,<br>
&gt;         GST_STATE_NULL);<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   g_print (&quot;Deleting pipeline\n&quot;);<br>
&gt;         &gt;         &gt;     &gt;   gst_object_unref (GST_OBJECT (pipeline));<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;   return 0;<br>
&gt;         &gt;         &gt;     &gt; }<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         ------------------------------------------------------------------------<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         ------------------------------------------------------------------------------<br>
&gt;         &gt;         &gt;     &gt; The NEW KODAK i700 Series Scanners deliver<br>
&gt;         under ANY<br>
&gt;         &gt;         &gt;     circumstances! Your<br>
&gt;         &gt;         &gt;     &gt; production scanning environment may not be a<br>
&gt;         perfect<br>
&gt;         &gt;         world - but<br>
&gt;         &gt;         &gt;     thanks to<br>
&gt;         &gt;         &gt;     &gt; Kodak, there&#39;s a perfect scanner to get the<br>
&gt;         job done!<br>
&gt;         &gt;         With the<br>
&gt;         &gt;         &gt;     NEW KODAK i700<br>
&gt;         &gt;         &gt;     &gt; Series Scanner you&#39;ll get full speed at 300<br>
&gt;         dpi even<br>
&gt;         &gt;         with all image<br>
&gt;         &gt;         &gt;     &gt; processing features enabled.<br>
&gt;         &gt;         <a href="http://p.sf.net/sfu/kodak-com" target="_blank">http://p.sf.net/sfu/kodak-com</a><br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         ------------------------------------------------------------------------<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         _______________________________________________<br>
&gt;         &gt;         &gt;     &gt; gstreamer-devel mailing list<br>
&gt;         &gt;         &gt;     &gt; <a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
&gt;         &gt;<br>
&gt;         &gt;         &gt;     &lt;mailto:<a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a>&gt;<br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;<br>
&gt;         <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
&gt;         &gt;         &gt;     &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         ------------------------------------------------------------------------------<br>
&gt;         &gt;         &gt;     The NEW KODAK i700 Series Scanners deliver<br>
&gt;         under ANY<br>
&gt;         &gt;         &gt;     circumstances! Your<br>
&gt;         &gt;         &gt;     production scanning environment may not be a<br>
&gt;         perfect<br>
&gt;         &gt;         world - but<br>
&gt;         &gt;         &gt;     thanks to<br>
&gt;         &gt;         &gt;     Kodak, there&#39;s a perfect scanner to get the<br>
&gt;         job done!<br>
&gt;         &gt;         With the NEW<br>
&gt;         &gt;         &gt;     KODAK i700<br>
&gt;         &gt;         &gt;     Series Scanner you&#39;ll get full speed at 300<br>
&gt;         dpi even<br>
&gt;         &gt;         with all image<br>
&gt;         &gt;         &gt;     processing features enabled.<br>
&gt;         &gt;         <a href="http://p.sf.net/sfu/kodak-com" target="_blank">http://p.sf.net/sfu/kodak-com</a><br>
&gt;         &gt;         &gt;<br>
&gt;         _______________________________________________<br>
&gt;         &gt;         &gt;     gstreamer-devel mailing list<br>
&gt;         &gt;         &gt;     <a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
&gt;         &gt;<br>
&gt;         &gt;         &gt;     &lt;mailto:<a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a>&gt;<br>
&gt;         &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt; --<br>
&gt;         &gt;         &gt; &quot;it might be a profitable thing to learn Java, but<br>
&gt;         it has no<br>
&gt;         &gt;         &gt; intellectual value whatsoever&quot; Alexander Stepanov<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         ------------------------------------------------------------------------<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         ------------------------------------------------------------------------------<br>
&gt;         &gt;         &gt; The NEW KODAK i700 Series Scanners deliver under<br>
&gt;         ANY<br>
&gt;         &gt;         circumstances! Your<br>
&gt;         &gt;         &gt; production scanning environment may not be a<br>
&gt;         perfect world -<br>
&gt;         &gt;         but thanks to<br>
&gt;         &gt;         &gt; Kodak, there&#39;s a perfect scanner to get the job<br>
&gt;         done! With<br>
&gt;         &gt;         the NEW KODAK i700<br>
&gt;         &gt;         &gt; Series Scanner you&#39;ll get full speed at 300 dpi<br>
&gt;         even with<br>
&gt;         &gt;         all image<br>
&gt;         &gt;         &gt; processing features enabled.<br>
&gt;         <a href="http://p.sf.net/sfu/kodak-com" target="_blank">http://p.sf.net/sfu/kodak-com</a><br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         ------------------------------------------------------------------------<br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;         &gt; _______________________________________________<br>
&gt;         &gt;         &gt; gstreamer-devel mailing list<br>
&gt;         &gt;         &gt; <a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
&gt;         &gt;         &gt;<br>
&gt;         <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
&gt;         &gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         ------------------------------------------------------------------------------<br>
&gt;         &gt;         The NEW KODAK i700 Series Scanners deliver under ANY<br>
&gt;         &gt;         circumstances! Your<br>
&gt;         &gt;         production scanning environment may not be a perfect<br>
&gt;         world -<br>
&gt;         &gt;         but thanks to<br>
&gt;         &gt;         Kodak, there&#39;s a perfect scanner to get the job<br>
&gt;         done! With the<br>
&gt;         &gt;         NEW KODAK i700<br>
&gt;         &gt;         Series Scanner you&#39;ll get full speed at 300 dpi even<br>
&gt;         with all<br>
&gt;         &gt;         image<br>
&gt;         &gt;         processing features enabled.<br>
&gt;         <a href="http://p.sf.net/sfu/kodak-com" target="_blank">http://p.sf.net/sfu/kodak-com</a><br>
&gt;         &gt;         _______________________________________________<br>
&gt;         &gt;         gstreamer-devel mailing list<br>
&gt;         &gt;         <a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
&gt;         &gt;<br>
&gt;         <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
&gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &gt; --<br>
&gt;         &gt; &quot;it might be a profitable thing to learn Java, but it has no<br>
&gt;         &gt; intellectual value whatsoever&quot; Alexander Stepanov<br>
&gt;         &gt;<br>
&gt;         ------------------------------------------------------------------------------<br>
&gt;         &gt; The NEW KODAK i700 Series Scanners deliver under ANY<br>
&gt;         circumstances! Your<br>
&gt;         &gt; production scanning environment may not be a perfect world -<br>
&gt;         but thanks to<br>
&gt;         &gt; Kodak, there&#39;s a perfect scanner to get the job done! With<br>
&gt;         the NEW KODAK i700<br>
&gt;         &gt; Series Scanner you&#39;ll get full speed at 300 dpi even with<br>
&gt;         all image<br>
&gt;         &gt; processing features enabled. <a href="http://p.sf.net/sfu/kodak-com" target="_blank">http://p.sf.net/sfu/kodak-com</a><br>
&gt;         &gt; _______________________________________________<br>
&gt;         gstreamer-devel mailing list<br>
&gt;         <a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
&gt;         <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
&gt;<br>
&gt;<br>
&gt;         ------------------------------------------------------------------------------<br>
&gt;         The NEW KODAK i700 Series Scanners deliver under ANY<br>
&gt;         circumstances! Your<br>
&gt;         production scanning environment may not be a perfect world -<br>
&gt;         but thanks to<br>
&gt;         Kodak, there&#39;s a perfect scanner to get the job done! With the<br>
&gt;         NEW KODAK i700<br>
&gt;         Series Scanner you&#39;ll get full speed at 300 dpi even with all<br>
&gt;         image<br>
&gt;         processing features enabled. <a href="http://p.sf.net/sfu/kodak-com" target="_blank">http://p.sf.net/sfu/kodak-com</a><br>
&gt;         _______________________________________________<br>
&gt;         gstreamer-devel mailing list<br>
&gt;         <a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
&gt;         <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; &quot;it might be a profitable thing to learn Java, but it has no<br>
&gt; intellectual value whatsoever&quot; Alexander Stepanov<br>
&gt; ------------------------------------------------------------------------------<br>
&gt; The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your<br>
&gt; production scanning environment may not be a perfect world - but thanks to<br>
&gt; Kodak, there&#39;s a perfect scanner to get the job done! With the NEW KODAK i700<br>
&gt; Series Scanner you&#39;ll get full speed at 300 dpi even with all image<br>
&gt; processing features enabled. <a href="http://p.sf.net/sfu/kodak-com" target="_blank">http://p.sf.net/sfu/kodak-com</a><br>
&gt; _______________________________________________ gstreamer-devel mailing list <a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a> <a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>

<br>
<br>
<br>
<br>
------------------------------<br>
<br>
------------------------------------------------------------------------------<br>
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your<br>
production scanning environment may not be a perfect world - but thanks to<br>
Kodak, there&#39;s a perfect scanner to get the job done! With the NEW KODAK i700<br>
Series Scanner you&#39;ll get full speed at 300 dpi even with all image<br>
processing features enabled. <a href="http://p.sf.net/sfu/kodak-com" target="_blank">http://p.sf.net/sfu/kodak-com</a><br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.sourceforge.net">gstreamer-devel@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/gstreamer-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/gstreamer-devel</a><br>
<br>
<br>
End of gstreamer-devel Digest, Vol 36, Issue 42<br>
***********************************************<br>
</blockquote></div><br>