guint32
gst_util_seqnum_next (void)
{
- static gint counter = 0;
- return g_atomic_int_add (&counter, 1);
+ static gint counter = 1;
+ gint ret = g_atomic_int_add (&counter, 1);
+
+ /* Make sure we don't return 0 */
+ if (G_UNLIKELY (ret == GST_SEQNUM_INVALID))
+ ret = g_atomic_int_add (&counter, 1);
+
+ return ret;
}
/**
GstQuery *query;
gboolean ret;
+ if (cur != NULL)
+ *cur = GST_CLOCK_TIME_NONE;
g_return_val_if_fail (GST_IS_ELEMENT (element), FALSE);
g_return_val_if_fail (format != GST_FORMAT_UNDEFINED, FALSE);
{
GstQuery *query;
gboolean ret;
+ if (duration != NULL)
+ *duration = GST_CLOCK_TIME_NONE;
g_return_val_if_fail (GST_IS_ELEMENT (element), FALSE);
g_return_val_if_fail (format != GST_FORMAT_UNDEFINED, FALSE);
GstQuery *query;
gboolean ret;
+ if (cur != NULL)
+ *cur = GST_CLOCK_TIME_NONE;
g_return_val_if_fail (GST_IS_PAD (pad), FALSE);
g_return_val_if_fail (format != GST_FORMAT_UNDEFINED, FALSE);
GstQuery *query;
gboolean ret = FALSE;
+ if (cur != NULL)
+ *cur = GST_CLOCK_TIME_NONE;
g_return_val_if_fail (GST_IS_PAD (pad), FALSE);
g_return_val_if_fail (format != GST_FORMAT_UNDEFINED, FALSE);
GstQuery *query;
gboolean ret;
+ if (duration != NULL)
+ *duration = GST_CLOCK_TIME_NONE;
g_return_val_if_fail (GST_IS_PAD (pad), FALSE);
g_return_val_if_fail (format != GST_FORMAT_UNDEFINED, FALSE);
{
GstQuery *query;
gboolean ret = FALSE;
+ if (duration != NULL)
+ *duration = GST_CLOCK_TIME_NONE;
g_return_val_if_fail (GST_IS_PAD (pad), FALSE);
g_return_val_if_fail (GST_PAD_IS_SINK (pad), FALSE);
clock_gettime (CLOCK_MONOTONIC, &now);
return GST_TIMESPEC_TO_TIME (now);
#else
- GTimeVal now;
-
- g_get_current_time (&now);
- return GST_TIMEVAL_TO_TIME (now);
+ return g_get_monotonic_time () * 1000;
#endif
}
guint
gst_util_group_id_next (void)
{
- static gint counter = 0;
- return g_atomic_int_add (&counter, 1);
+ static gint counter = 1;
+ gint ret = g_atomic_int_add (&counter, 1);
+
+ /* Make sure we don't return GST_GROUP_ID_INVALID */
+ if (G_UNLIKELY (ret == GST_GROUP_ID_INVALID))
+ ret = g_atomic_int_add (&counter, 1);
+
+ return ret;
}
/* Compute log2 of the passed 64-bit number by finding the highest set bit */
tmp /= 4;
} while (G_MAXINT64 - sxx <= tmp);
break;
- } else if (G_UNLIKELY (tmp < 0 && sxx < 0 && (G_MAXINT64 - sxx >= tmp))) {
+ } else if (G_UNLIKELY (tmp < 0 && sxx < 0 && (G_MININT64 - sxx >= tmp))) {
do {
/* Drop some precision and restart */
pshift++;
tmp /= 4;
} while (G_MAXINT64 - syy <= tmp);
break;
- } else if (G_UNLIKELY (tmp < 0 && syy < 0 && (G_MAXINT64 - syy >= tmp))) {
+ } else if (G_UNLIKELY (tmp < 0 && syy < 0 && (G_MININT64 - syy >= tmp))) {
do {
pshift++;
syy /= 4;
guint64 gst_util_uint64_scale_int_round (guint64 val, gint num, gint denom);
guint64 gst_util_uint64_scale_int_ceil (guint64 val, gint num, gint denom);
+/**
+ * GST_SEQNUM_INVALID:
+ *
+ * A value which is guaranteed to never be returned by
+ * gst_util_seqnum_next().
+ *
+ * Can be used as a default value in variables used to store seqnum.
+ *
+ * Since: 1.14
+ */
+#define GST_SEQNUM_INVALID (0)
guint32 gst_util_seqnum_next (void);
gint32 gst_util_seqnum_compare (guint32 s1, guint32 s2);