#define DEFAULT_TTL 64
#define DEFAULT_TTL_MC 1
#define DEFAULT_LOOP TRUE
+#define DEFAULT_FORCE_IPV4 FALSE
#define DEFAULT_QOS_DSCP -1
#define DEFAULT_SEND_DUPLICATES TRUE
#define DEFAULT_BUFFER_SIZE 0
PROP_TTL,
PROP_TTL_MC,
PROP_LOOP,
+ PROP_FORCE_IPV4,
PROP_QOS_DSCP,
PROP_SEND_DUPLICATES,
PROP_BUFFER_SIZE,
"Used for setting the multicast loop parameter. TRUE = enable,"
" FALSE = disable", DEFAULT_LOOP,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ /**
+ * GstMultiUDPSink::force-ipv4
+ *
+ * Force the use of an IPv4 socket.
+ *
+ * Since: 1.0.2
+ */
+ g_object_class_install_property (gobject_class, PROP_FORCE_IPV4,
+ g_param_spec_boolean ("force-ipv4", "Force IPv4",
+ "Forcing the use of an IPv4 socket", DEFAULT_FORCE_IPV4,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_QOS_DSCP,
g_param_spec_int ("qos-dscp", "QoS diff srv code point",
"Quality of Service, differentiated services code point (-1 default)",
sink->ttl = DEFAULT_TTL;
sink->ttl_mc = DEFAULT_TTL_MC;
sink->loop = DEFAULT_LOOP;
+ sink->force_ipv4 = DEFAULT_FORCE_IPV4;
sink->qos_dscp = DEFAULT_QOS_DSCP;
sink->send_duplicates = DEFAULT_SEND_DUPLICATES;
case PROP_LOOP:
udpsink->loop = g_value_get_boolean (value);
break;
+ case PROP_FORCE_IPV4:
+ udpsink->force_ipv4 = g_value_get_boolean (value);
+ break;
case PROP_QOS_DSCP:
udpsink->qos_dscp = g_value_get_int (value);
gst_multiudpsink_setup_qos_dscp (udpsink);
case PROP_LOOP:
g_value_set_boolean (value, udpsink->loop);
break;
+ case PROP_FORCE_IPV4:
+ g_value_set_boolean (value, udpsink->force_ipv4);
+ break;
case PROP_QOS_DSCP:
g_value_set_int (value, udpsink->qos_dscp);
break;
if (sink->socket == NULL) {
GST_DEBUG_OBJECT (sink, "creating sockets");
/* create sender socket try IP6, fall back to IP4 */
- if ((sink->used_socket =
+ if (sink->force_ipv4 || (sink->used_socket =
g_socket_new (G_SOCKET_FAMILY_IPV6,
G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, &err)) == NULL) {
if ((sink->used_socket = g_socket_new (G_SOCKET_FAMILY_IPV4,