#define DEFAULT_RTCP_AUTH DEFAULT_RTP_AUTH
#define DEFAULT_RANDOM_KEY FALSE
#define DEFAULT_REPLAY_WINDOW_SIZE 128
+#define DEFAULT_ALLOW_REPEAT_TX FALSE
#define HAS_CRYPTO(filter) (filter->rtp_cipher != GST_SRTP_CIPHER_NULL || \
filter->rtcp_cipher != GST_SRTP_CIPHER_NULL || \
PROP_RTCP_CIPHER,
PROP_RTCP_AUTH,
PROP_RANDOM_KEY,
- PROP_REPLAY_WINDOW_SIZE
+ PROP_REPLAY_WINDOW_SIZE,
+ PROP_ALLOW_REPEAT_TX
};
/* the capabilities of the inputs and outputs.
"Size of the replay protection window",
64, 0x8000, DEFAULT_REPLAY_WINDOW_SIZE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_ALLOW_REPEAT_TX,
+ g_param_spec_boolean ("allow-repeat-tx", "Allow repeat packets transmission",
+ "Whether retransmissions of packets with the same sequence number are allowed",
+ DEFAULT_ALLOW_REPEAT_TX, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
/**
* GstSrtpEnc::soft-limit:
filter->rtcp_cipher = DEFAULT_RTCP_CIPHER;
filter->rtcp_auth = DEFAULT_RTCP_AUTH;
filter->replay_window_size = DEFAULT_REPLAY_WINDOW_SIZE;
+ filter->allow_repeat_tx = DEFAULT_ALLOW_REPEAT_TX;
}
static guint
policy.next = NULL;
policy.window_size = filter->replay_window_size;
+ policy.allow_repeat_tx = filter->allow_repeat_tx;
/* If it is the first stream, create the session
* If not, add the stream to the session
filter->replay_window_size = g_value_get_uint (value);
break;
+ case PROP_ALLOW_REPEAT_TX:
+ filter->allow_repeat_tx = g_value_get_boolean (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
case PROP_REPLAY_WINDOW_SIZE:
g_value_set_uint (value, filter->replay_window_size);
break;
+ case PROP_ALLOW_REPEAT_TX:
+ g_value_set_boolean (value, filter->allow_repeat_tx);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;