+2006-02-13 Wim Taymans <wim@fluendo.com>
+
+ * docs/design/part-TODO.txt:
+ Updated TODO list, basesrc supports seeking to non-bytes
+ formats.
+
+ * docs/design/part-element-sink.txt:
+ Update docs.
+
+ * gst/gstbin.c: (bin_replace_message),
+ (gst_bin_handle_message_func):
+ * gst/gstbus.c: (gst_bus_post), (gst_bus_pop):
+ * gst/gstevent.c: (gst_event_finalize):
+ * gst/gstpad.c: (gst_pad_event_default_dispatch),
+ (gst_pad_send_event):
+ Use shiny new _TYPE_NAME macros.
+
+ * libs/gst/base/gstbasesrc.c: (gst_base_src_get_range):
+ Move debug statement up.
+
+ * gst/gstelement.c: (gst_element_set_locked_state):
+ Add some debugging.
+
2006-02-13 Tim-Philipp Müller <tim at centricular dot net>
* docs/gst/gstreamer-sections.txt:
-Subproject commit 58567e5519f2d00a4592491db1a6e8302993279e
+Subproject commit c30611ac38336030fed6d258c6e558cc537adbc5
after the seek you want to get the new stream time that will actually be used to
update the slider bar.
-- make it possible to seek on other formats than bytes in basesrc.
-
- GstEvent, GstMessage register like GstFormat or GstQuery.
- query POSITION/DURATION return accuracy. Just a flag or accuracy percentage.
# right away if no preroll is needed.
queue (obj, prerollable)
{
- if (prerollable)
- queuelen++
-
if (need_preroll)
+ if (prerollable)
+ queuelen++
+
# first item in the queue while we need preroll
# will complete state change and call preroll
if (queuelen == 1)
gboolean res = TRUE;
const gchar *name;
- name = gst_message_type_get_name (GST_MESSAGE_TYPE (message));
+ name = GST_MESSAGE_TYPE_NAME (message);
if ((src = GST_MESSAGE_SRC (message))) {
MessageFind find;
gst_bin_handle_message_func (GstBin * bin, GstMessage * message)
{
GST_DEBUG_OBJECT (bin, "[msg %p] handling child message of type %s",
- message, gst_message_type_get_name (GST_MESSAGE_TYPE (message)));
+ message, GST_MESSAGE_TYPE_NAME (message));
switch (GST_MESSAGE_TYPE (message)) {
case GST_MESSAGE_EOS:
g_return_val_if_fail (GST_IS_MESSAGE (message), FALSE);
GST_DEBUG_OBJECT (bus, "[msg %p] posting on bus, type %s",
- message, gst_message_type_get_name (GST_MESSAGE_TYPE (message)));
+ message, GST_MESSAGE_TYPE_NAME (message));
GST_OBJECT_LOCK (bus);
/* check if the bus is flushing */
if (message)
GST_DEBUG_OBJECT (bus, "pop from bus, have %d messages, got message %p, %s",
g_queue_get_length (bus->queue) + 1, message,
- gst_message_type_get_name (GST_MESSAGE_TYPE (message)));
+ GST_MESSAGE_TYPE_NAME (message));
else
GST_DEBUG_OBJECT (bus, "pop from bus, no messages");
g_mutex_unlock (bus->queue_lock);
return TRUE;
was_ok:
+ GST_CAT_DEBUG (GST_CAT_STATES, "elements %s was in locked state %d",
+ GST_ELEMENT_NAME (element), old);
GST_OBJECT_UNLOCK (element);
return FALSE;
g_return_if_fail (GST_IS_EVENT (event));
GST_CAT_LOG (GST_CAT_EVENT, "freeing event %p type %s", event,
- gst_event_type_get_name (GST_EVENT_TYPE (event)));
+ GST_EVENT_TYPE_NAME (event));
if (GST_EVENT_SRC (event)) {
gst_object_unref (GST_EVENT_SRC (event));
/* for each pad we send to, we should ref the event; it's up
* to downstream to unref again when handled. */
GST_LOG_OBJECT (pad, "Reffing and sending event %p (%s) to %s:%s",
- event, gst_event_type_get_name (GST_EVENT_TYPE (event)),
- GST_DEBUG_PAD_NAME (eventpad));
+ event, GST_EVENT_TYPE_NAME (event), GST_DEBUG_PAD_NAME (eventpad));
gst_event_ref (event);
gst_pad_push_event (eventpad, event);
} else {
/* we only send the event on one pad, multi-sinkpad elements
* should implement a handler */
GST_LOG_OBJECT (pad, "sending event %p (%s) to one sink pad %s:%s",
- event, gst_event_type_get_name (GST_EVENT_TYPE (event)),
- GST_DEBUG_PAD_NAME (eventpad));
+ event, GST_EVENT_TYPE_NAME (event), GST_DEBUG_PAD_NAME (eventpad));
result = gst_pad_push_event (eventpad, event);
goto done;
}
GST_OBJECT_LOCK (pad);
}
-
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_FLUSH_START:
GST_CAT_DEBUG (GST_CAT_EVENT,
break;
default:
GST_CAT_DEBUG (GST_CAT_EVENT, "have event type %s on pad %s:%s",
- gst_event_type_get_name (GST_EVENT_TYPE (event)),
- GST_DEBUG_PAD_NAME (pad));
+ GST_EVENT_TYPE_NAME (event), GST_DEBUG_PAD_NAME (pad));
/* make this a little faster, no point in grabbing the lock
* if the pad is allready flushing. */
src->num_buffers_left--;
}
+ GST_DEBUG_OBJECT (src,
+ "calling create offset %" G_GUINT64_FORMAT " %" G_GINT64_FORMAT, offset,
+ src->segment.time);
+
ret = bclass->create (src, offset, length, buf);
if (ret != GST_FLOW_OK)
goto done;
- GST_DEBUG_OBJECT (src, "offset %" G_GUINT64_FORMAT " %" G_GINT64_FORMAT,
- offset, src->segment.time);
-
/* no timestamp set and we are at offset 0 */
if (offset == 0 && src->segment.time == 0
&& GST_BUFFER_TIMESTAMP (*buf) == -1)