+2005-11-19 Wim Taymans <wim@fluendo.com>
+
+ * docs/design/part-TODO.txt:
+ * gst/gstformat.c: (_gst_format_initialize), (gst_format_get_name),
+ (gst_format_to_quark), (gst_format_register):
+ * gst/gstformat.h:
+ * gst/gstquery.c: (_gst_query_initialize),
+ (gst_query_type_get_name), (gst_query_type_to_quark),
+ (gst_query_type_register):
+ * gst/gstquery.h:
+ Add type to quark and type to string conversions.
+
2005-11-19 Andy Wingo <wingo@pobox.com>
* gst/gstbuffer.h (GST_BUFFER_FLAG_ORIGINAL): Removed. Fixes
- make it possible to seek on other formats than bytes in basesrc.
-- GstFormat, GstQuery quarks, get_name.
-
- GstEvent, GstMessage register like GstFormat or GstQuery.
- unblocking while seeking. gst_element_flush_pads (GstElement, gboolean);
static guint32 _n_values = 1; /* we start from 1 because 0 reserved for UNDEFINED */
static GstFormatDefinition standard_definitions[] = {
- {GST_FORMAT_DEFAULT, "default", "Default format for the media type"},
- {GST_FORMAT_BYTES, "bytes", "Bytes"},
- {GST_FORMAT_TIME, "time", "Time"},
- {GST_FORMAT_BUFFERS, "buffers", "Buffers"},
- {GST_FORMAT_PERCENT, "percent", "Percent"},
- {0, NULL, NULL}
+ {GST_FORMAT_DEFAULT, "default", "Default format for the media type", 0},
+ {GST_FORMAT_BYTES, "bytes", "Bytes", 0},
+ {GST_FORMAT_TIME, "time", "Time", 0},
+ {GST_FORMAT_BUFFERS, "buffers", "Buffers", 0},
+ {GST_FORMAT_PERCENT, "percent", "Percent", 0},
+ {0, NULL, NULL, 0}
};
void
}
while (standards->nick) {
+ standards->quark = g_quark_from_static_string (standards->nick);
g_hash_table_insert (_nick_to_format, standards->nick, standards);
g_hash_table_insert (_format_to_nick, GINT_TO_POINTER (standards->value),
standards);
g_static_mutex_unlock (&mutex);
}
+const gchar *
+gst_format_get_name (GstFormat format)
+{
+ const GstFormatDefinition *def;
+
+ def = gst_format_get_details (format);
+
+ return def->nick;
+}
+
+GQuark
+gst_format_to_quark (GstFormat format)
+{
+ const GstFormatDefinition *def;
+
+ def = gst_format_get_details (format);
+
+ return def->quark;
+}
+
/**
* gst_format_register:
* @nick: The nick of the new format
format->value = _n_values;
format->nick = g_strdup (nick);
format->description = g_strdup (description);
+ format->quark = g_quark_from_static_string (format->nick);
g_static_mutex_lock (&mutex);
g_hash_table_insert (_nick_to_format, format->nick, format);
/**
* GstFormat:
* @GST_FORMAT_UNDEFINED: undefined format
- * @GST_FORMAT_DEFAULT: the default format of the pad/element
+ * @GST_FORMAT_DEFAULT: the default format of the pad/element. This can be
+ * samples for raw audio, frames/fields for raw video.
* @GST_FORMAT_BYTES: bytes
* @GST_FORMAT_TIME: time in nanoseconds
* @GST_FORMAT_BUFFERS: buffers
*
* Standard predefined formats
*/
+/* NOTE: don't forget to update the table in gstformat.c when changing
+ * this enum */
typedef enum {
GST_FORMAT_UNDEFINED = 0, /* must be first in list */
- GST_FORMAT_DEFAULT = 1, /* samples for raw audio, frames/fields for raw video */
+ GST_FORMAT_DEFAULT = 1,
GST_FORMAT_BYTES = 2,
GST_FORMAT_TIME = 3,
GST_FORMAT_BUFFERS = 4,
GstFormat value;
gchar *nick;
gchar *description;
+ GQuark quark;
};
void _gst_format_initialize (void);
+const gchar* gst_format_get_name (GstFormat format);
+GQuark gst_format_to_quark (GstFormat format);
+
/* register a new format */
GstFormat gst_format_register (const gchar *nick,
const gchar *description);
static guint32 _n_values = 1; /* we start from 1 because 0 reserved for NONE */
static GstQueryTypeDefinition standard_definitions[] = {
- {GST_QUERY_POSITION, "position", "Current position"},
- {GST_QUERY_DURATION, "duration", "Total duration"},
- {GST_QUERY_LATENCY, "latency", "Latency"},
- {GST_QUERY_JITTER, "jitter", "Jitter"},
- {GST_QUERY_RATE, "rate", "Configured rate 1000000 = 1"},
- {GST_QUERY_SEEKING, "seeking", "Seeking capabilities and parameters"},
- {GST_QUERY_SEGMENT, "segment", "currently configured segment"},
- {GST_QUERY_CONVERT, "convert", "Converting between formats"},
- {GST_QUERY_FORMATS, "formats", "Supported formats for conversion"},
- {0, NULL, NULL}
+ {GST_QUERY_POSITION, "position", "Current position", 0},
+ {GST_QUERY_DURATION, "duration", "Total duration", 0},
+ {GST_QUERY_LATENCY, "latency", "Latency", 0},
+ {GST_QUERY_JITTER, "jitter", "Jitter", 0},
+ {GST_QUERY_RATE, "rate", "Configured rate 1000000 = 1", 0},
+ {GST_QUERY_SEEKING, "seeking", "Seeking capabilities and parameters", 0},
+ {GST_QUERY_SEGMENT, "segment", "currently configured segment", 0},
+ {GST_QUERY_CONVERT, "convert", "Converting between formats", 0},
+ {GST_QUERY_FORMATS, "formats", "Supported formats for conversion", 0},
+ {0, NULL, NULL, 0}
};
void
}
while (standards->nick) {
+ standards->quark = g_quark_from_static_string (standards->nick);
g_hash_table_insert (_nick_to_query, standards->nick, standards);
g_hash_table_insert (_query_type_to_nick,
GINT_TO_POINTER (standards->value), standards);
gst_query_get_type ();
}
+const gchar *
+gst_query_type_get_name (GstQueryType query)
+{
+ const GstQueryTypeDefinition *def;
+
+ def = gst_query_type_get_details (query);
+
+ return def->nick;
+}
+
+GQuark
+gst_query_type_to_quark (GstQueryType query)
+{
+ const GstQueryTypeDefinition *def;
+
+ def = gst_query_type_get_details (query);
+
+ return def->quark;
+}
+
GType
gst_query_get_type (void)
{
query->value = _n_values;
query->nick = g_strdup (nick);
query->description = g_strdup (description);
+ query->quark = g_quark_from_static_string (query->nick);
g_static_mutex_lock (&mutex);
g_hash_table_insert (_nick_to_query, query->nick, query);
*
* Standard predefined Query types
*/
+/* NOTE: don't forget to update the table in gstquery.c when changing
+ * this enum */
typedef enum {
GST_QUERY_NONE = 0,
GST_QUERY_POSITION,
GstQueryType value;
gchar *nick;
gchar *description;
+ GQuark quark;
};
#define GST_TYPE_QUERY (gst_query_get_type())
};
void _gst_query_initialize (void);
+
+const gchar* gst_query_type_get_name (GstQueryType query);
+GQuark gst_query_type_to_quark (GstQueryType query);
+
GType gst_query_get_type (void);
/* register a new query */