<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Thanks for your answer, these are the changes I have done to the
    code:<br>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <blockquote>
      <pre style="background-color:#ffffff;color:#000000;font-family:'DejaVu Sans Mono';font-size:9,0pt;"><small><span style="color:#000080;font-weight:bold;">static void </span>dynamic_addpad(GstElement *src<span style="color:#cc7832;">, </span>GstPad *new_pad<span style="color:#cc7832;">, </span>CustomData *data) {
    <span style="color:#000080;font-weight:bold;">char</span>* pad_name = gst_pad_get_name(new_pad)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_print(<span style="color:#008000;font-weight:bold;">" In dynamic ADDING PAD %s</span><span style="color:#000080;font-weight:bold;">\n</span><span style="color:#008000;font-weight:bold;">"</span><span style="color:#cc7832;">, </span>pad_name)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span><span style="color:#000080;font-weight:bold;">if </span>(g_str_has_prefix(pad_name<span style="color:#cc7832;">,</span><span style="color:#008000;font-weight:bold;">"audio"</span>)) {
        GstElement *q_audio<span style="color:#cc7832;">;</span><span style="color:#808080;font-style:italic;">// = (GstElement *)data->queue_audio;
</span><span style="color:#808080;font-style:italic;">        </span>q_audio = gst_bin_get_by_name (GST_BIN(data->pipeline)<span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"queue_audio"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span>GstPad *audiodemuxsink = gst_element_get_static_pad(q_audio<span style="color:#cc7832;">,</span><span style="color:#008000;font-weight:bold;">"sink"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span>GstPadLinkReturn ret = gst_pad_link(new_pad<span style="color:#cc7832;">, </span>audiodemuxsink)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span>g_print(<span style="color:#008000;font-weight:bold;">"'%s' dynamic link returns: %d</span><span style="color:#000080;font-weight:bold;">\n</span><span style="color:#008000;font-weight:bold;">"</span><span style="color:#cc7832;">, </span>pad_name<span style="color:#cc7832;">, </span>(<span style="color:#000080;font-weight:bold;">int</span>) ret)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span>gst_object_unref(q_audio)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>}
    <span style="color:#000080;font-weight:bold;">else if </span>(g_str_has_prefix(pad_name<span style="color:#cc7832;">,</span><span style="color:#008000;font-weight:bold;">"video"</span>)) {
        GstElement *q_video<span style="color:#cc7832;">;</span><span style="color:#808080;font-style:italic;">// = (GstElement *) data->queue_video;
</span><span style="color:#808080;font-style:italic;">        </span>q_video = gst_bin_get_by_name(GST_BIN(data->pipeline)<span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"queue_video"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span>GstPad *videodemuxsink = gst_element_get_static_pad(q_video<span style="color:#cc7832;">,</span><span style="color:#008000;font-weight:bold;">"sink"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span>GstPadLinkReturn ret = gst_pad_link(new_pad<span style="color:#cc7832;">,</span>videodemuxsink)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span>g_print(<span style="color:#008000;font-weight:bold;">"'%s' dynamic link returns: %d</span><span style="color:#000080;font-weight:bold;">\n</span><span style="color:#008000;font-weight:bold;">"</span><span style="color:#cc7832;">, </span>pad_name<span style="color:#cc7832;">, </span>(<span style="color:#000080;font-weight:bold;">int</span>) ret)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span>gst_object_unref(q_video)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>}
}</small></pre>
    </blockquote>
    <blockquote><br>
      <pre style="background-color:#ffffff;color:#000000;font-family:'DejaVu Sans Mono';font-size:9,0pt;"><meta http-equiv="content-type" content="text/html; charset=utf-8"><small><span style="color:#000080;font-weight:bold;">static void </span>*app_function (<span style="color:#000080;font-weight:bold;">void </span>*userdata) {
    JavaVMAttachArgs args<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>GstBus *bus<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>CustomData *data = (CustomData *)userdata<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>GSource *timeout_source<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>GSource *bus_source<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>GError *error = NULL<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>guint flags<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span>GST_DEBUG (<span style="color:#008000;font-weight:bold;">"Creating pipeline in CustomData at %p"</span><span style="color:#cc7832;">, </span>data)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span><span style="color:#808080;font-style:italic;">/* Create our own GLib Main Context and make it the default one */
</span><span style="color:#808080;font-style:italic;">    </span>data->context = g_main_context_new ()<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_main_context_push_thread_default(data->context)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span><span style="color:#808080;font-style:italic;">/* Build pipeline */
</span><span style="color:#808080;font-style:italic;">    </span>data->pipeline = gst_pipeline_new (<span style="color:#008000;font-weight:bold;">"pipeline"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->httpsrc = gst_element_factory_make (<span style="color:#008000;font-weight:bold;">"souphttpsrc"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"http_src"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->tsdemux = gst_element_factory_make (<span style="color:#008000;font-weight:bold;">"tsdemux"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"demux"</span>)<span style="color:#cc7832;">;</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span>data->queue_video = gst_element_factory_make(<span style="color:#008000;font-weight:bold;">"queue"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"queue_video"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->h264parse = gst_element_factory_make (<span style="color:#008000;font-weight:bold;">"h264parse"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"h264_parse"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->h264dec = gst_element_factory_make (<span style="color:#008000;font-weight:bold;">"avdec_h264"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"h264dec"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->video_convert = gst_element_factory_make(<span style="color:#008000;font-weight:bold;">"videoconvert"</span><span style="color:#cc7832;">,</span><span style="color:#008000;font-weight:bold;">"video_convert"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->videosink = gst_element_factory_make (<span style="color:#008000;font-weight:bold;">"glimagesink"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"video_sink"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->queue_audio = gst_element_factory_make (<span style="color:#008000;font-weight:bold;">"queue"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"queue_audio"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->aacparse = gst_element_factory_make (<span style="color:#008000;font-weight:bold;">"aacparse"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"aacparse"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->faad = gst_element_factory_make (<span style="color:#008000;font-weight:bold;">"faad"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"faad"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->audio_convert = gst_element_factory_make(<span style="color:#008000;font-weight:bold;">"audioconvert"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"audio_convert"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->audiosink = gst_element_factory_make (<span style="color:#008000;font-weight:bold;">"autoaudiosink"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"audio_sink"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span>g_signal_connect (data->tsdemux<span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"pad-added"</span><span style="color:#cc7832;">, </span>G_CALLBACK (dynamic_addpad)<span style="color:#cc7832;">, </span>&data)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span>gst_bin_add_many(GST_BIN(data->pipeline)<span style="color:#cc7832;">, </span>data->httpsrc<span style="color:#cc7832;">, </span>data->tsdemux<span style="color:#cc7832;">, </span>data->queue_video<span style="color:#cc7832;">, </span>data->h264parse<span style="color:#cc7832;">, </span>data->h264dec<span style="color:#cc7832;">, </span>data->video_convert<span style="color:#cc7832;">, </span>data->videosink<span style="color:#cc7832;">, </span>data->queue_audio<span style="color:#cc7832;">, </span>data->aacparse<span style="color:#cc7832;">, </span>data->faad<span style="color:#cc7832;">, </span>data->audio_convert<span style="color:#cc7832;">, </span>data->audiosink<span style="color:#cc7832;">, </span>NULL)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span>gst_element_link(data->httpsrc<span style="color:#cc7832;">, </span>data->tsdemux)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>gst_element_link_many(data->queue_video<span style="color:#cc7832;">, </span>data->h264parse<span style="color:#cc7832;">, </span>data->h264dec<span style="color:#cc7832;">, </span>data->video_convert<span style="color:#cc7832;">, </span>data->videosink<span style="color:#cc7832;">, </span>NULL)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>gst_element_link_many(data->queue_audio<span style="color:#cc7832;">, </span>data->aacparse<span style="color:#cc7832;">, </span>data->faad<span style="color:#cc7832;">, </span>data->audio_convert<span style="color:#cc7832;">, </span>data->audiosink<span style="color:#cc7832;">, </span>NULL)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;"></span><span style="color:#808080;font-style:italic;">
</span><span style="color:#808080;font-style:italic;">    </span>GstElement *http_src<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>http_src = gst_bin_get_by_name(GST_BIN(data->pipeline)<span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"http_src"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_object_set(G_OBJECT(http_src)<span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"location"</span><span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;"><a class="moz-txt-link-rfc2396E" href="http://192.168.0.32/videos/video.ts">"http://192.168.0.32/videos/video.ts"</a></span><span style="color:#cc7832;">, </span>NULL)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>gst_object_unref(http_src)<span style="color:#cc7832;">;</span><span style="color:#808080;font-style:italic;">
</span><span style="color:#808080;font-style:italic;">
</span><span style="color:#808080;font-style:italic;">    </span><span style="color:#000080;font-weight:bold;">if </span>(error) {
        gchar *message = g_strdup_printf(<span style="color:#008000;font-weight:bold;">"Unable to build pipeline: %s"</span><span style="color:#cc7832;">, </span>error->message)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span>g_clear_error (&error)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span>set_ui_message(message<span style="color:#cc7832;">, </span>data)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span>g_free (message)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        </span><span style="color:#000080;font-weight:bold;">return </span>NULL<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>}<span style="color:#808080;font-style:italic;">
</span><span style="color:#808080;font-style:italic;">
</span><span style="color:#808080;font-style:italic;">    /* Disable subtitles */
</span><span style="color:#808080;font-style:italic;">    /*g_object_get (data->pipeline, "flags", &flags, NULL);
</span><span style="color:#808080;font-style:italic;">    flags &= ~GST_PLAY_FLAG_TEXT;
</span><span style="color:#808080;font-style:italic;">    g_object_set (data->pipeline, "flags", flags, NULL);
</span><span style="color:#808080;font-style:italic;">*/
</span><span style="color:#808080;font-style:italic;">    /* Set the pipeline to READY, so it can already accept a window handle, if we have one */
</span><span style="color:#808080;font-style:italic;">    </span>data->target_state = GST_STATE_READY<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>gst_element_set_state(data->pipeline<span style="color:#cc7832;">, </span>GST_STATE_READY)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span><span style="color:#808080;font-style:italic;">/* Instruct the bus to emit signals for each received message, and connect to the interesting signals */
</span><span style="color:#808080;font-style:italic;">    </span>bus = gst_element_get_bus (data->pipeline)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>bus_source = gst_bus_create_watch (bus)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_source_set_callback (bus_source<span style="color:#cc7832;">, </span>(GSourceFunc) gst_bus_async_signal_func<span style="color:#cc7832;">, </span>NULL<span style="color:#cc7832;">, </span>NULL)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_source_attach (bus_source<span style="color:#cc7832;">, </span>data->context)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_source_unref (bus_source)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_signal_connect (G_OBJECT (bus)<span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"message::error"</span><span style="color:#cc7832;">, </span>(GCallback)error_cb<span style="color:#cc7832;">, </span>data)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_signal_connect (G_OBJECT (bus)<span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"message::eos"</span><span style="color:#cc7832;">, </span>(GCallback)eos_cb<span style="color:#cc7832;">, </span>data)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_signal_connect (G_OBJECT (bus)<span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"message::state-changed"</span><span style="color:#cc7832;">, </span>(GCallback)state_changed_cb<span style="color:#cc7832;">, </span>data)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_signal_connect (G_OBJECT (bus)<span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"message::duration"</span><span style="color:#cc7832;">, </span>(GCallback)duration_cb<span style="color:#cc7832;">, </span>data)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_signal_connect (G_OBJECT (bus)<span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"message::buffering"</span><span style="color:#cc7832;">, </span>(GCallback)buffering_cb<span style="color:#cc7832;">, </span>data)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_signal_connect (G_OBJECT (bus)<span style="color:#cc7832;">, </span><span style="color:#008000;font-weight:bold;">"message::clock-lost"</span><span style="color:#cc7832;">, </span>(GCallback)clock_lost_cb<span style="color:#cc7832;">, </span>data)<span style="color:#cc7832;">;</span><span style="color:#808080;font-style:italic;">
</span><span style="color:#808080;font-style:italic;">    </span>gst_object_unref (bus)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span><span style="color:#808080;font-style:italic;">/* Register a function that GLib will call 4 times per second */
</span><span style="color:#808080;font-style:italic;">    </span>timeout_source = g_timeout_source_new (<span style="color:#0000ff;">250</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_source_set_callback (timeout_source<span style="color:#cc7832;">, </span>(GSourceFunc)refresh_ui<span style="color:#cc7832;">, </span>data<span style="color:#cc7832;">, </span>NULL)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_source_attach (timeout_source<span style="color:#cc7832;">, </span>data->context)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_source_unref (timeout_source)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span><span style="color:#808080;font-style:italic;">/* Create a GLib Main Loop and set it to run */
</span><span style="color:#808080;font-style:italic;">    </span>GST_DEBUG (<span style="color:#008000;font-weight:bold;">"Entering main loop... (CustomData:%p)"</span><span style="color:#cc7832;">, </span>data)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->main_loop = g_main_loop_new (data->context<span style="color:#cc7832;">, </span>FALSE)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>check_initialization_complete (data)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_main_loop_run (data->main_loop)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>GST_DEBUG (<span style="color:#008000;font-weight:bold;">"Exited main loop"</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_main_loop_unref (data->main_loop)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->main_loop = NULL<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span><span style="color:#808080;font-style:italic;">/* Free resources */
</span><span style="color:#808080;font-style:italic;">    </span>g_main_context_pop_thread_default(data->context)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>g_main_context_unref (data->context)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>data->target_state = GST_STATE_NULL<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>gst_element_set_state (data->pipeline<span style="color:#cc7832;">, </span>GST_STATE_NULL)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>gst_object_unref (data->pipeline)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    </span><span style="color:#000080;font-weight:bold;">return </span>NULL<span style="color:#cc7832;">;
</span>}<span style="color:#cc7832;"></span></small></pre></blockquote><meta http-equiv="content-type" content="text/html; charset=utf-8">
The full debug has been uploaded to this link: <a class="moz-txt-link-freetext" href="https://www.dropbox.com/s/bujeg6sc4381dtr/logcat060620160943.txt?dl=0">https://www.dropbox.com/s/bujeg6sc4381dtr/logcat060620160943.txt?dl=0</a>
If it may have to do something with this issue, I am using ubuntu 14.04 64b, Android Studio 1.5.1 (December 1st 2015 built) and ndk r10e-rc4 (64-bit). The gradle version is 2.8 and the android plugin version is 1.5.0.

Thanks for your time, 

Dani

<div class="moz-cite-prefix">El 03/06/16 a las 07:47, Sebastian Dröge escribió:
</div><blockquote cite="mid:1464932843.6756.145.camel@centricular.com" type="cite"><pre wrap="">On Di, 2016-05-31 at 10:30 +0200, Dani wrote:
</pre><blockquote type="cite"><pre wrap=""> 
I/GLib+stdout(16393):  In dynamic ADDING PAD audio_0066 
I/GLib+stdout(16393): //////////-6////////// 
I/GLib+stdout(16393): Audio link refused! 
I/GLib+stdout(16393): Sink pad link: 'audio_0066' 
D/GStreamer+tsdemux(16393): 0:00:05.832146503 0x9e236660
tsdemux.c:1599:activate_pad_for_stream:<demux:audio_0066> done adding
pad
</pre></blockquote><pre wrap="">
That's still not very useful unfortunately. Can you show your code, and
if it's still like last time please only try linking the pads once and
then just print the return value of gst_pad_link(). Feel free to print
it as an integer too instead of having all the if-else cases there.

However your code should really print a lot of debug output because of
the 7 links it should be doing before printing the "link refused"
message.


Also unrelated to all this, use queue and not queue2 in your pipeline.
queue2 is mostly for network buffering, not thread decoupling :)

</pre>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre wrap="">_______________________________________________
gstreamer-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>

</blockquote>
</body></html>