- /* add udpsink */
- gst_bin_add (bin, priv->udpsink[i]);
- sinkpad = gst_element_get_static_pad (priv->udpsink[i], "sink");
+ if (is_udp) {
+ /* add udpsink */
+ gst_bin_add (bin, priv->udpsink[i]);
+ sinkpad = gst_element_get_static_pad (priv->udpsink[i], "sink");
+ }
+
+ if (is_tcp) {
+ /* make appsink */
+ priv->appsink[i] = gst_element_factory_make ("appsink", NULL);
+ g_object_set (priv->appsink[i], "emit-signals", FALSE, NULL);
+ gst_bin_add (bin, priv->appsink[i]);
+ gst_app_sink_set_callbacks (GST_APP_SINK_CAST (priv->appsink[i]),
+ &sink_cb, stream, NULL);
+ }
+
+ if (is_udp && is_tcp) {
+ g_object_set (priv->appsink[i], "async", FALSE, "sync", FALSE, NULL);