+/* a percentage is always relative to 1000000 */
+/**
+ * GST_FORMAT_PERCENT_MAX:
+ *
+ * The PERCENT format is between 0 and this value
+ */
+#define GST_FORMAT_PERCENT_MAX G_GINT64_CONSTANT (1000000)
+/**
+ * GST_FORMAT_PERCENT_SCALE:
+ *
+ * The value used to scale down the reported PERCENT format value to
+ * its real value.
+ */
+#define GST_FORMAT_PERCENT_SCALE G_GINT64_CONSTANT (10000)
+
+typedef struct _GstFormatDefinition GstFormatDefinition;
+
+/**
+ * GstFormatDefinition:
+ * @value: The unique id of this format
+ * @nick: A short nick of the format
+ * @description: A longer description of the format
+ * @quark: A quark for the nick
+ *
+ * A format definition
+ */
+struct _GstFormatDefinition
+{
+ GstFormat value;
+ const gchar *nick;
+ const gchar *description;
+ GQuark quark;
+};
+
+GST_API
+const gchar* gst_format_get_name (GstFormat format);
+
+GST_API
+GQuark gst_format_to_quark (GstFormat format);
+
+/* register a new format */
+
+GST_API
+GstFormat gst_format_register (const gchar *nick,
+ const gchar *description);
+
+GST_API
+GstFormat gst_format_get_by_nick (const gchar *nick);
+
+/* check if a format is in an array of formats */
+
+GST_API
+gboolean gst_formats_contains (const GstFormat *formats, GstFormat format);
+
+/* query for format details */
+
+GST_API
+const GstFormatDefinition*
+ gst_format_get_details (GstFormat format);
+
+GST_API
+GstIterator* gst_format_iterate_definitions (void);
+