<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial">i am creating a simple pipeline like this udpsrc+rtpbin+udpsink, but it will not work when i connect "pad-added" of rtpbin. <div>i can see some examples using command line to build a pipeline. but now i want to write some code to implement.</div><div>can you help me ?thanks a lot.</div><div>after seeing client-PCMA.c i write code as follows:</div><div><br></div><div><div>gint</div><div>main (int   argc, char *argv[])</div><div>{</div><div>    GstElement *pipeline;</div><div>    GstElement *udprecv1;</div><div>    GstElement *rtpbin1;</div><div>    //GstElement *multiudpsend1;</div><div>    GstElement *udpsend1;</div><div><br></div><div>    GstPad *srcpad, *sinkpad;</div><div>    GstPadLinkReturn lres;</div><div>    GMainLoop *loop;</div><div><br></div><div>    gst_init (&argc, &argv);</div><div>    </div><div>    loop = g_main_loop_new (NULL, FALSE);</div><div>    </div><div>    pipeline = gst_pipeline_new ("test_transmit");</div><div>    udprecv1 = gst_element_factory_make ("udpsrc", "udpsrc1");</div><div>    rtpbin1 = gst_element_factory_make ("rtpbin", "rtpbin1");</div><div>    udpsend1 = gst_element_factory_make ("udpsink", "udpsend1");</div><div><br></div><div>    if (!pipeline || !udprecv1 || !rtpbin1 || !udpsend1) {</div><div>        g_print ("One element could not be created. Exiting.\n");</div><div>        return 1;</div><div>    }</div><div><br></div><div>    g_object_set (udprecv1, "port", 20000, NULL);</div><div>    g_object_set (udpsend1, "port", 10000, "host", "192.168.6.63", NULL);</div><div>    g_object_set (rtpbin1, "do-retransmission", 1, NULL);</div><div><br></div><div>    </div><div>    gst_bin_add_many (GST_BIN (pipeline),</div><div>                    udprecv1, rtpbin1, udpsend1, NULL);</div><div><br></div><div>    </div><div>    srcpad = gst_element_get_static_pad (udprecv1, "src");</div><div>    sinkpad = gst_element_get_request_pad (rtpbin1, "recv_rtp_sink_0");</div><div>    lres = gst_pad_link (srcpad, sinkpad);</div><div>    g_assert (lres == GST_PAD_LINK_OK);</div><div>    gst_object_unref (srcpad);</div><div><br></div><div>    /* the RTP pad that we have to connect to the depayloader will be created</div><div>    * dynamically so we connect to the pad-added signal, pass the depayloader as</div><div>    * user_data so that we can link to it. */</div><div>    g_signal_connect (rtpbin1, "pad-added", G_CALLBACK (pad_added_cb1), udpsend1);</div><div><br></div><div>  </div><div>    /* Set the pipeline to "playing" state*/</div><div>    g_print ("Now playing: %s\n", argv[1]);</div><div>    gst_element_set_state (pipeline, GST_STATE_PLAYING);</div><div><br></div><div><br></div><div>    /* Iterate */</div><div>    g_print ("Running...\n");</div><div>    g_main_loop_run (loop);</div><div><br></div><div><br></div><div>    /* Out of the main loop, clean up nicely */</div><div>    g_print ("Returned, stopping playback\n");</div><div>    gst_element_set_state (pipeline, GST_STATE_NULL);</div><div><br></div><div>    g_print ("Deleting pipeline\n");</div><div>    gst_object_unref (GST_OBJECT (pipeline));</div><div>    g_main_loop_unref (loop);</div><div><br></div><div>    return 0;</div><div>}</div></div><div><br></div><div><br></div><div>i have not seen <span style="line-height: 1.7;">pad_added_cb1 being called back.</span></div></div>