<HTML><BODY><p>Hi,<br><br>I'm trying to transmit RTP video stream through network via UDP protocol.</p><p>Here is pipeline code on sender side:</p><p>https://gist.github.com/mgalushka/68d8ee034849a7db4f1f234e73a41405</p><p><br>I can receive and see actual video if I run receiver with `gst-launch-1.0` command-line like this:</p><p>gst-launch-1.0 -v udpsrc address=127.0.0.1 port=1234 caps="application/x-rtp" ! rtph263pdepay ! avdec_h263 ! autovideosink</p><p>But I cannot see window with video when I execute receiver for same pipeline in **c** code.<br>Here is pipeline code on receiver side (in full - because I believe here is error somewhere):</p><p>void _receive_video_init_gstreamer(NiceAgent *magent, guint stream_id, CustomData *data)<br> {<br> GstElement *pipeline, *source, *capsfilter, *videoconvert, *h263p, *rtph263pdepay, *sink;<br> GstBus *bus;<br> GstMessage *msg;<br> GstStateChangeReturn ret;<br> GSource *bus_source;<br> <br> source = gst_element_factory_make ("udpsrc", "source");<br> rtph263pdepay = gst_element_factory_make ("rtph263pdepay", "rtph263pdepay");<br> h263p = gst_element_factory_make ("avdec_h263p", "h263p");<br> sink = gst_element_factory_make ("autovideosink", "sink");<br> <br> g_object_set (source, "address", "127.0.0.1", NULL);<br> g_object_set (source, "port", 1234, NULL);<br> <br> g_object_set (source, "caps", gst_caps_from_string("application/x-rtp"), NULL);<br> <br> g_object_set (sink, "sync", FALSE, NULL);<br> <br> pipeline = gst_pipeline_new ("Video receive pipeline");<br> <br> if (!pipeline || !source ||<br> !h263p || !rtph263pdepay || !sink)<br> {<br> g_printerr ("Not all elements could be created.\n");<br> return;<br> }<br> <br> gst_bin_add_many (GST_BIN (pipeline), source,<br> rtph263pdepay, h263p, sink, NULL);<br> <br> if (gst_element_link_many (source,<br> rtph263pdepay, h263p, sink, NULL) != TRUE) {<br> g_printerr ("Elements could not be linked.\n");<br> gst_object_unref (pipeline);<br> return;<br> }<br> <br> bus = gst_element_get_bus (pipeline);<br> gst_bus_enable_sync_message_emission (bus);<br> gst_bus_add_signal_watch (bus);<br> <br> g_signal_connect (bus, "message::error",<br> (GCallback) on_error, NULL);<br> <br> data->pipeline = pipeline;<br> ret = gst_element_set_state(data->pipeline, GST_STATE_PLAYING);<br> <br> if (ret == GST_STATE_CHANGE_FAILURE) {<br> g_printerr ("Unable to set the pipeline to the playing state.\n");<br> gst_object_unref (pipeline);<br> return;<br> }<br> }</p><p>Error onserved from code:</p><p>WARN basesrc gstbasesrc.c:2943:void gst_base_src_loop(GstPad *):<source> error: Internal data flow error. <br> WARN basesrc gstbasesrc.c:2943:void gst_base_src_loop(GstPad *):<source> error: streaming task paused, reason not-negotiated (-4) <br> ERROR default gstreamer_utils.c:42:on_error: Error received from element source: Internal data flow error.</p><p>How can I debug this issue?</p><p>Thanks,<br>Maxim.</p></BODY></HTML>