From 0630e84e88f4c65e1589424eb816b730f674986c Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 4 Jan 2005 12:08:22 +0000 Subject: 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. --- ChangeLog | 30 ++++++++++++++++++++++++++++++ examples/seeking/seek.c | 34 ++++++++++++++++++++++++---------- 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 + + * 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 * 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); -- cgit v1.2.1