Thanks for the help Andoni, tomorow im going to test this.<br><br>best regards,<br>Katcipis<br><br><div class="gmail_quote">On Wed, Jul 8, 2009 at 7:51 PM, Andoni Morales <span dir="ltr">&lt;<a href="mailto:ylatuya@gmail.com">ylatuya@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">2009/7/9 Tiago Katcipis &lt;<a href="mailto:katcipis@inf.ufsc.br">katcipis@inf.ufsc.br</a>&gt;:<br>

<div class="im">&gt; Puting appsink on the place of filesink dont works too. My problem is that<br>
&gt; even filesink stops to work when i just add the appsink to the bin. It seens<br>
</div>If you need to have an element in the pipeline that it&#39;s not linked<br>
b/c you may want to link it dinamically you need to lock it&#39;s state<br>
usin GST_STATE_LOCK(appsink), this way state changes won&#39;t affect to<br>
this element.<br>
Andoni<br>
<div><div></div><div class="h5">&gt; that only adding the appsink to the bin makes the pipe stop working.<br>
&gt;<br>
&gt; best regards,<br>
&gt; Katcipis<br>
&gt;<br>
&gt; On Wed, Jul 8, 2009 at 7:32 PM, thiagoss &lt;<a href="mailto:thiagossantos@gmail.com">thiagossantos@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Wed, Jul 8, 2009 at 11:25 AM, Tiago Katcipis &lt;<a href="mailto:katcipis@inf.ufsc.br">katcipis@inf.ufsc.br</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Im going to use appsink on a project using gstreamer and started to build<br>
&gt;&gt;&gt; a basic example os]f how to use appsink using signals. My problem is that<br>
&gt;&gt;&gt; when i simply add the appsink to the pipeline, the pipe simply stops to<br>
&gt;&gt;&gt; work.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On the following example im just trying to use the appsink instead the<br>
&gt;&gt;&gt; filesink to write the entire stream to a file. If i use the filesink and<br>
&gt;&gt;&gt; DONT add the appsink to the pipe, it works fine, if i just add the appsink<br>
&gt;&gt;&gt; to the pipe ....it stops working, im not even using the appsink yet, the<br>
&gt;&gt;&gt; filesink stops to write data, the result of the test will be an empty file,<br>
&gt;&gt;&gt; and no error msg is sent. I dont know what detail im missing on how to use<br>
&gt;&gt;&gt; appsink, hope someone can help me. By the way, gst_bin_add returns TRUE when<br>
&gt;&gt;&gt; i add the appsink.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; the source code of the example:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; #include &lt;gst/gst.h&gt;<br>
&gt;&gt;&gt; #include &lt;glib.h&gt;<br>
&gt;&gt;&gt; #include &lt;gst/app/gstappsink.h&gt;<br>
&gt;&gt;&gt; #include &lt;stdio.h&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; static gboolean<br>
&gt;&gt;&gt; bus_call (GstBus     *bus,<br>
&gt;&gt;&gt;           GstMessage *msg,<br>
&gt;&gt;&gt;           gpointer    data)<br>
&gt;&gt;&gt; {<br>
&gt;&gt;&gt;   GMainLoop *loop = (GMainLoop *) data;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   switch (GST_MESSAGE_TYPE (msg)) {<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     case GST_MESSAGE_EOS:<br>
&gt;&gt;&gt;       g_print (&quot;End of stream\n&quot;);<br>
&gt;&gt;&gt;       g_main_loop_quit (loop);<br>
&gt;&gt;&gt;       break;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     case GST_MESSAGE_ERROR: {<br>
&gt;&gt;&gt;       gchar  *debug;<br>
&gt;&gt;&gt;       GError *error;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       gst_message_parse_error (msg, &amp;error, &amp;debug);<br>
&gt;&gt;&gt;       g_free (debug);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       g_printerr (&quot;Error: %s\n&quot;, error-&gt;message);<br>
&gt;&gt;&gt;       g_error_free (error);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;       g_main_loop_quit (loop);<br>
&gt;&gt;&gt;       break;<br>
&gt;&gt;&gt;     }<br>
&gt;&gt;&gt;     default:<br>
&gt;&gt;&gt;       g_print(&quot;Msg type[%d], Msg type name[%s]\n&quot;, GST_MESSAGE_TYPE(msg),<br>
&gt;&gt;&gt; GST_MESSAGE_TYPE_NAME(msg));<br>
&gt;&gt;&gt;       break;<br>
&gt;&gt;&gt;   }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   return TRUE;<br>
&gt;&gt;&gt; }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; static void link_two_elements(GstElement* src_element, GstElement*<br>
&gt;&gt;&gt; sink_element)<br>
&gt;&gt;&gt; {<br>
&gt;&gt;&gt;   if(!gst_element_link(src_element, sink_element))<br>
&gt;&gt;&gt;       g_debug(&quot;Error linking %s to %s&quot;,<br>
&gt;&gt;&gt; gst_element_get_name(src_element), gst_element_get_name(sink_element));<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; static void link_two_pads(GstPad* src_pad, GstPad* sink_pad)<br>
&gt;&gt;&gt; {<br>
&gt;&gt;&gt;   if(!src_pad){<br>
&gt;&gt;&gt;       g_warning(&quot;Error: src_pad is NULL on link_two_pads&quot;);<br>
&gt;&gt;&gt;       return;<br>
&gt;&gt;&gt;   }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   if(!sink_pad){<br>
&gt;&gt;&gt;       g_warning(&quot;Error: sink_pad is NULL on link_two_pads&quot;);<br>
&gt;&gt;&gt;       return;<br>
&gt;&gt;&gt;   }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   if(gst_pad_link(src_pad, sink_pad) != GST_PAD_LINK_OK)<br>
&gt;&gt;&gt;       g_debug(&quot;Error linking pads %s to %s&quot;, gst_pad_get_name(src_pad),<br>
&gt;&gt;&gt; gst_pad_get_name(sink_pad));<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; static void on_new_buffer (GstElement* object,<br>
&gt;&gt;&gt;                            gpointer user_data)<br>
&gt;&gt;&gt; {<br>
&gt;&gt;&gt;   FILE* file = (FILE*) user_data;<br>
&gt;&gt;&gt;   GstAppSink* app_sink = (GstAppSink*) object;<br>
&gt;&gt;&gt;   GstBuffer * buffer = gst_app_sink_pull_buffer(app_sink);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   if(fwrite (GST_BUFFER_DATA(buffer), 1 , GST_BUFFER_SIZE(buffer) , file)<br>
&gt;&gt;&gt; != GST_BUFFER_SIZE(buffer)){<br>
&gt;&gt;&gt;       g_debug(&quot;Error writing data from appsink to file!!!&quot;);<br>
&gt;&gt;&gt;   }else{<br>
&gt;&gt;&gt;       g_debug(&quot;Data pulled from appsink and writed to file with<br>
&gt;&gt;&gt; success!!&quot;);<br>
&gt;&gt;&gt;   }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; // Pipe to test this src: gst-launch audiotestsrc ! audioconvert !<br>
&gt;&gt;&gt; alawenc ! rtppcmapay ! udpsink host=127.0.0.1 port=5000<br>
&gt;&gt;&gt; // Equivalent working pipe: gst-launch udpsrc port=5000<br>
&gt;&gt;&gt; caps=application/x-rtp ! gstrtpjitterbuffer ! rtppcmadepay ! alawdec !<br>
&gt;&gt;&gt; audioconvert ! lame ! appsink<br>
&gt;&gt;&gt; int<br>
&gt;&gt;&gt; main (int   argc,<br>
&gt;&gt;&gt;       char *argv[])<br>
&gt;&gt;&gt; {<br>
&gt;&gt;&gt;   GMainLoop *loop;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   GstElement *pipeline, *source, *rtp_jitter, *rtp_alaw_depay,<br>
&gt;&gt;&gt;              *alaw_decoder, *audio_convert, *lame, *filesink, *appsink;<br>
&gt;&gt;&gt;   GstBus* bus;<br>
&gt;&gt;&gt;   GstCaps* udp_caps;<br>
&gt;&gt;&gt;   FILE* appsink_file;<br>
&gt;&gt;&gt;   int udp_port;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   if(argc &lt; 2){<br>
&gt;&gt;&gt;       g_warning(&quot;Usage: %s [port_to_be_listened]&quot;, argv[0]);<br>
&gt;&gt;&gt;       return -1;<br>
&gt;&gt;&gt;   }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   udp_port = atoi(argv[1]);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* Initialisation */<br>
&gt;&gt;&gt;   gst_init (&amp;argc, &amp;argv);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   udp_caps = gst_caps_from_string(&quot;application/x-rtp&quot;);<br>
&gt;&gt;&gt;   if(!udp_caps){<br>
&gt;&gt;&gt;       g_warning(&quot;Error alocating the udp caps&quot;);<br>
&gt;&gt;&gt;       return -1;<br>
&gt;&gt;&gt;   }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   loop = g_main_loop_new (NULL, FALSE);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* Create gstreamer elements */<br>
&gt;&gt;&gt;   pipeline      = gst_pipeline_new(&quot;rtp-mp3-stream-decoder&quot;);<br>
&gt;&gt;&gt;   source        = gst_element_factory_make(&quot;udpsrc&quot;,  &quot;udp-rtp-source&quot;);<br>
&gt;&gt;&gt;   rtp_jitter     = gst_element_factory_make(&quot;gstrtpjitterbuffer&quot;,<br>
&gt;&gt;&gt; &quot;rtp-jitter-buffer&quot;);<br>
&gt;&gt;&gt;   rtp_alaw_depay = gst_element_factory_make(&quot;rtppcmadepay&quot;,<br>
&gt;&gt;&gt; &quot;rtp_alaw_depay&quot;);<br>
&gt;&gt;&gt;   alaw_decoder   = gst_element_factory_make(&quot;alawdec&quot;,&quot;alaw-decoder&quot;);<br>
&gt;&gt;&gt;   audio_convert  =<br>
&gt;&gt;&gt; gst_element_factory_make(&quot;audioconvert&quot;,&quot;audio-convert&quot;);<br>
&gt;&gt;&gt;   lame           = gst_element_factory_make(&quot;lame&quot;,&quot;mp3-encoder&quot;);<br>
&gt;&gt;&gt;   filesink       = gst_element_factory_make(&quot;filesink&quot;,<br>
&gt;&gt;&gt; &quot;file-mp3-output&quot;);<br>
&gt;&gt;&gt;   appsink        = gst_element_factory_make(&quot;appsink&quot;, &quot;sink-buffer&quot;);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   if (!pipeline || !source || !rtp_jitter || !appsink ||<br>
&gt;&gt;&gt;       !rtp_alaw_depay || !alaw_decoder || !audio_convert || !lame ||<br>
&gt;&gt;&gt; !filesink) {<br>
&gt;&gt;&gt;       g_printerr (&quot;Elements could not be created. Exiting.\n&quot;);<br>
&gt;&gt;&gt;       return -1;<br>
&gt;&gt;&gt;   }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   appsink_file = fopen(&quot;received_audio_appsink.mp3&quot;, &quot;w&quot;);<br>
&gt;&gt;&gt;   if(!appsink_file){<br>
&gt;&gt;&gt;       g_printerr (&quot;Appsink file could not be created. Exiting.\n&quot;);<br>
&gt;&gt;&gt;       return -1;<br>
&gt;&gt;&gt;   }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* Set up the pipeline */<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* we set the properties to the source element to receive only rtp<br>
&gt;&gt;&gt; packets*/<br>
&gt;&gt;&gt;   g_object_set(G_OBJECT (source), &quot;port&quot;, udp_port, NULL);<br>
&gt;&gt;&gt;   g_object_set(G_OBJECT (source), &quot;caps&quot;, udp_caps, NULL);<br>
&gt;&gt;&gt;   /* we set the location of the mp3 generated file */<br>
&gt;&gt;&gt;   g_object_set(G_OBJECT (filesink), &quot;location&quot;,<br>
&gt;&gt;&gt; &quot;received_audio_filesink.mp3&quot;, NULL);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /*<br>
&gt;&gt;&gt;     Make appsink emit the &quot;new-preroll&quot; and &quot;new-buffer&quot; signals. This<br>
&gt;&gt;&gt; option is by default disabled because<br>
&gt;&gt;&gt;     signal emission is expensive and unneeded when the application<br>
&gt;&gt;&gt; prefers to operate in pull mode.<br>
&gt;&gt;&gt;   */<br>
&gt;&gt;&gt;   gst_app_sink_set_emit_signals ((GstAppSink*) appsink, TRUE);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* we add a message handler */<br>
&gt;&gt;&gt;   bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));<br>
&gt;&gt;&gt;   gst_bus_add_watch (bus, bus_call, loop);<br>
&gt;&gt;&gt;   gst_object_unref (bus);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* we add all elements into the pipeline */<br>
&gt;&gt;&gt;   gst_bin_add_many (GST_BIN (pipeline),<br>
&gt;&gt;&gt;                     source, rtp_jitter, rtp_alaw_depay, alaw_decoder,<br>
&gt;&gt;&gt; audio_convert, lame, filesink, NULL);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* When i just addn the appsink this the example stops to work and the<br>
&gt;&gt;&gt; file will be empty (and im not using the appsink, just the filesink)<br>
&gt;&gt;&gt;   if(gst_bin_add(GST_BIN (pipeline), appsink)){<br>
&gt;&gt;&gt;       g_debug(&quot;Adcionou appsink com sucesso&quot;);<br>
&gt;&gt;&gt;   }else{<br>
&gt;&gt;&gt;       g_debug(&quot;Erro ao Adcionar appsink&quot;);<br>
&gt;&gt;&gt;   }*/<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* we link all the elements together */<br>
&gt;&gt;&gt;   link_two_elements(source, rtp_jitter);<br>
&gt;&gt;&gt;   link_two_elements(rtp_jitter, rtp_alaw_depay);<br>
&gt;&gt;&gt;   link_two_elements(rtp_alaw_depay, alaw_decoder);<br>
&gt;&gt;&gt;   link_two_elements(alaw_decoder, audio_convert);<br>
&gt;&gt;&gt;   link_two_elements(audio_convert, lame);<br>
&gt;&gt;&gt;   link_two_elements(lame, filesink);<br>
&gt;&gt;<br>
&gt;&gt; Appsink (in this case of yours) is meant to *replace* filesink. You don&#39;t<br>
&gt;&gt; seem to link appsink to anything and also you link filesink to lame. So,<br>
&gt;&gt; remove filesink from your pipeline, and use appsink in its place.<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* Conecting to the new-buffer signal emited by the appsink */<br>
&gt;&gt;&gt;   g_signal_connect (appsink, &quot;new-buffer&quot;,  G_CALLBACK (on_new_buffer),<br>
&gt;&gt;&gt; appsink_file);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* Set the pipeline to &quot;playing&quot; state*/<br>
&gt;&gt;&gt;   g_print (&quot;Now listening on port: %d\n&quot;, udp_port);<br>
&gt;&gt;&gt;   gst_element_set_state (pipeline, GST_STATE_PLAYING);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* Iterate */<br>
&gt;&gt;&gt;   g_print (&quot;Running...\n&quot;);<br>
&gt;&gt;&gt;   g_main_loop_run (loop);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   /* Out of the main loop, clean up nicely */<br>
&gt;&gt;&gt;   g_print (&quot;Returned, stopping listening\n&quot;);<br>
&gt;&gt;&gt;   gst_element_set_state (pipeline, GST_STATE_NULL);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   g_print (&quot;Deleting pipeline\n&quot;);<br>
&gt;&gt;&gt;   gst_object_unref (GST_OBJECT (pipeline));<br>
&gt;&gt;&gt;   fclose(appsink_file);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   return 0;<br>
&gt;&gt;&gt; }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; best regards,<br>
&gt;&gt;&gt; Katcipis<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; &quot;it might be a profitable thing to learn Java, but it has no intellectual<br>
&gt;&gt;&gt; value whatsoever&quot; Alexander Stepanov<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; ------------------------------------------------------------------------------<br>
&gt;&gt;&gt; Enter the BlackBerry Developer Challenge<br>
&gt;&gt;&gt; This is your chance to win up to $100,000 in prizes! For a limited time,<br>
&gt;&gt;&gt; vendors submitting new applications to BlackBerry App World(TM) will have<br>
&gt;&gt;&gt; the opportunity to enter the BlackBerry Developer Challenge. See full<br>
&gt;&gt;&gt; prize<br>
&gt;&gt;&gt; details at: <a href="http://p.sf.net/sfu/Challenge" target="_blank">http://p.sf.net/sfu/Challenge</a><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; <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;&gt; --<br>
&gt;&gt; Thiago Sousa Santos<br>
&gt;&gt;<br>
&gt;&gt; Embedded Systems and Pervasive Computing Lab (Embedded)<br>
&gt;&gt; Center of Electrical Engineering and Informatics (CEEI)<br>
&gt;&gt; Federal University of Campina Grande (UFCG)<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ------------------------------------------------------------------------------<br>
&gt;&gt; Enter the BlackBerry Developer Challenge<br>
&gt;&gt; This is your chance to win up to $100,000 in prizes! For a limited time,<br>
&gt;&gt; vendors submitting new applications to BlackBerry App World(TM) will have<br>
&gt;&gt; the opportunity to enter the BlackBerry Developer Challenge. See full<br>
&gt;&gt; prize<br>
&gt;&gt; details at: <a href="http://p.sf.net/sfu/Challenge" target="_blank">http://p.sf.net/sfu/Challenge</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; <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;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; &quot;it might be a profitable thing to learn Java, but it has no intellectual<br>
&gt; value whatsoever&quot; Alexander Stepanov<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt; Enter the BlackBerry Developer Challenge<br>
&gt; This is your chance to win up to $100,000 in prizes! For a limited time,<br>
&gt; vendors submitting new applications to BlackBerry App World(TM) will have<br>
&gt; the opportunity to enter the BlackBerry Developer Challenge. See full prize<br>
&gt; details at: <a href="http://p.sf.net/sfu/Challenge" target="_blank">http://p.sf.net/sfu/Challenge</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>
<br>
<br>
<br>
--<br>
</div></div>Andoni Morales Alastruey<br>
<br>
LongoMatch:The Digital Coach<br>
<a href="http://www.longomatch.ylatuya.es" target="_blank">http://www.longomatch.ylatuya.es</a><br>
<div><div></div><div class="h5"><br>
------------------------------------------------------------------------------<br>
Enter the BlackBerry Developer Challenge<br>
This is your chance to win up to $100,000 in prizes! For a limited time,<br>
vendors submitting new applications to BlackBerry App World(TM) will have<br>
the opportunity to enter the BlackBerry Developer Challenge. See full prize<br>
details at: <a href="http://p.sf.net/sfu/Challenge" target="_blank">http://p.sf.net/sfu/Challenge</a><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>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>&quot;it might be a profitable thing to learn Java, but it has no intellectual value whatsoever&quot; Alexander Stepanov<br>