diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2005-01-04 12:08:22 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2005-01-04 12:08:22 +0000 |
commit | 0630e84e88f4c65e1589424eb816b730f674986c (patch) | |
tree | 8d84c47eede5075e5a08342fea9cb92b12898c8e | |
parent | 2e80494f921d840f91607effe194f9e904a3d0f6 (diff) | |
download | gstreamer-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-- | ChangeLog | 30 | ||||
-rw-r--r-- | examples/seeking/seek.c | 34 |
2 files changed, 54 insertions, 10 deletions
@@ -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); |