{
PROP_0,
PROP_MAX_SIZE_TIME,
- PROP_MAX_SIZE_PACKETS
+ PROP_MAX_SIZE_PACKETS,
+ PROP_REQUESTS,
+ PROP_FULFILLED_REQUESTS,
};
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
DEFAULT_MAX_SIZE_PACKETS,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_REQUESTS,
+ g_param_spec_uint ("requests", "Requests",
+ "Total number of retransmission requests", 0, G_MAXUINT,
+ 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class, PROP_FULFILLED_REQUESTS,
+ g_param_spec_uint ("fulfilled-requests", "Fulfilled Requests",
+ "Number of fulfilled retransmission requests", 0, G_MAXUINT,
+ 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
g_list_foreach (rtx->pending, (GFunc) gst_buffer_unref, NULL);
g_list_free (rtx->pending);
rtx->pending = NULL;
+ rtx->n_requests = 0;
+ rtx->n_fulfilled_requests = 0;
g_mutex_unlock (&rtx->lock);
}
data.rtx = rtx;
data.seqnum = seqnum;
data.found = FALSE;
+ rtx->n_requests += 1;
g_queue_foreach (rtx->queue, (GFunc) push_seqnum, &data);
g_mutex_unlock (&rtx->lock);
static void
do_push (GstBuffer * buffer, GstRTPRtxQueue * rtx)
{
+ rtx->n_fulfilled_requests += 1;
gst_pad_push (rtx->srcpad, buffer);
}
case PROP_MAX_SIZE_PACKETS:
g_value_set_uint (value, rtx->max_size_packets);
break;
+ case PROP_REQUESTS:
+ g_value_set_uint (value, rtx->n_requests);
+ break;
+ case PROP_FULFILLED_REQUESTS:
+ g_value_set_uint (value, rtx->n_fulfilled_requests);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;