summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2005-01-04 12:08:22 +0000
committerWim Taymans <wim.taymans@gmail.com>2005-01-04 12:08:22 +0000
commit0630e84e88f4c65e1589424eb816b730f674986c (patch)
tree8d84c47eede5075e5a08342fea9cb92b12898c8e
parent2e80494f921d840f91607effe194f9e904a3d0f6 (diff)
downloadgstreamer-plugins-bad-0630e84e88f4c65e1589424eb816b730f674986c.tar.gz
Implement flushing.
Original commit message from CVS: * examples/seeking/seek.c: (dynamic_link), (make_vorbis_pipeline), (make_theora_pipeline), (do_seek), (start_seek), (stop_seek): * ext/ogg/gstoggdemux.c: (gst_ogg_pad_get_type), (gst_ogg_pad_init), (gst_ogg_pad_src_query), (gst_ogg_pad_event), (gst_ogg_demux_factory_filter), (compare_ranks), (gst_ogg_pad_internal_chain), (gst_ogg_pad_typefind), (gst_ogg_pad_submit_packet), (gst_ogg_pad_submit_page), (gst_ogg_chain_new), (gst_ogg_chain_free), (gst_ogg_chain_new_stream), (gst_ogg_chain_get_stream), (gst_ogg_chain_has_stream), (gst_ogg_demux_base_init), (gst_ogg_demux_init), (gst_ogg_demux_submit_buffer), (gst_ogg_demux_seek), (gst_ogg_demux_get_data), (gst_ogg_demux_get_next_page), (gst_ogg_demux_get_prev_page), (gst_ogg_demux_perform_seek), (gst_ogg_demux_bisect_forward_serialno), (gst_ogg_demux_read_chain), (gst_ogg_demux_read_end_chain), (gst_ogg_demux_find_pad), (gst_ogg_demux_find_chains), (gst_ogg_demux_chain_unlocked), (gst_ogg_demux_chain), (gst_ogg_demux_loop), (gst_ogg_demux_sink_activate), (gst_ogg_print): * sys/xvimage/xvimagesink.c: (gst_xvimagesink_sink_link), (gst_xvimagesink_event), (gst_xvimagesink_show_frame), (gst_xvimagesink_finish_preroll), (gst_xvimagesink_chain), (gst_xvimagesink_buffer_alloc): * sys/xvimage/xvimagesink.h: Implement flushing. Improved seeking in ogg.
-rw-r--r--ChangeLog30
-rw-r--r--examples/seeking/seek.c34
2 files changed, 54 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 0bfb5e960..54a2c8a9f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2005-01-04 Wim Taymans <wim@fluendo.com>
+
+ * examples/seeking/seek.c: (dynamic_link), (make_vorbis_pipeline),
+ (make_theora_pipeline), (do_seek), (start_seek), (stop_seek):
+ * ext/ogg/gstoggdemux.c: (gst_ogg_pad_get_type),
+ (gst_ogg_pad_init), (gst_ogg_pad_src_query), (gst_ogg_pad_event),
+ (gst_ogg_demux_factory_filter), (compare_ranks),
+ (gst_ogg_pad_internal_chain), (gst_ogg_pad_typefind),
+ (gst_ogg_pad_submit_packet), (gst_ogg_pad_submit_page),
+ (gst_ogg_chain_new), (gst_ogg_chain_free),
+ (gst_ogg_chain_new_stream), (gst_ogg_chain_get_stream),
+ (gst_ogg_chain_has_stream), (gst_ogg_demux_base_init),
+ (gst_ogg_demux_init), (gst_ogg_demux_submit_buffer),
+ (gst_ogg_demux_seek), (gst_ogg_demux_get_data),
+ (gst_ogg_demux_get_next_page), (gst_ogg_demux_get_prev_page),
+ (gst_ogg_demux_perform_seek),
+ (gst_ogg_demux_bisect_forward_serialno),
+ (gst_ogg_demux_read_chain), (gst_ogg_demux_read_end_chain),
+ (gst_ogg_demux_find_pad), (gst_ogg_demux_find_chains),
+ (gst_ogg_demux_chain_unlocked), (gst_ogg_demux_chain),
+ (gst_ogg_demux_loop), (gst_ogg_demux_sink_activate),
+ (gst_ogg_print):
+ * sys/xvimage/xvimagesink.c: (gst_xvimagesink_sink_link),
+ (gst_xvimagesink_event), (gst_xvimagesink_show_frame),
+ (gst_xvimagesink_finish_preroll), (gst_xvimagesink_chain),
+ (gst_xvimagesink_buffer_alloc):
+ * sys/xvimage/xvimagesink.h:
+ Implement flushing.
+ Improved seeking in ogg.
+
2004-12-31 Wim Taymans <wim@fluendo.com>
* examples/seeking/seek.c: (dynamic_link), (make_vorbis_pipeline),
diff --git a/examples/seeking/seek.c b/examples/seeking/seek.c
index 8a2b5083b..a1d29b107 100644
--- a/examples/seeking/seek.c
+++ b/examples/seeking/seek.c
@@ -17,6 +17,7 @@ static gboolean elem_seek = FALSE;
static gboolean verbose = FALSE;
static guint update_id;
+static gulong changed_id;
//#define SOURCE "gnomevfssrc"
#define SOURCE "filesrc"
@@ -847,16 +848,7 @@ update_scale (gpointer data)
}
static gboolean
-start_seek (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-{
- gst_element_set_state (pipeline, GST_STATE_PAUSED);
- gtk_timeout_remove (update_id);
-
- return FALSE;
-}
-
-static gboolean
-stop_seek (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
+do_seek (GtkWidget * widget, gpointer user_data)
{
gint64 real = gtk_range_get_value (GTK_RANGE (widget)) * duration / 100;
gboolean res;
@@ -896,6 +888,28 @@ stop_seek (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
}
}
+ GST_PIPELINE (pipeline)->stream_time = real;
+
+ return FALSE;
+}
+
+static gboolean
+start_seek (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
+{
+ gst_element_set_state (pipeline, GST_STATE_PAUSED);
+ gtk_timeout_remove (update_id);
+
+ changed_id = gtk_signal_connect (GTK_OBJECT (hscale),
+ "value_changed", G_CALLBACK (do_seek), pipeline);
+
+ return FALSE;
+}
+
+static gboolean
+stop_seek (GtkWidget * widget, gpointer user_data)
+{
+ g_signal_handler_disconnect (GTK_OBJECT (hscale), changed_id);
+
gst_element_set_state (pipeline, GST_STATE_PLAYING);
update_id =
gtk_timeout_add (UPDATE_INTERVAL, (GtkFunction) update_scale, pipeline);