mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-11 09:55:36 +00:00
tests/examples/seek/seek.c: Fix various seeking bugs (Slider was not updating when doing a non flushing seek, Reverse...
Original commit message from CVS: 2007-02-27 Julien MOUTTE <julien@moutte.net> * tests/examples/seek/seek.c: (do_seek), (set_update_scale), (msg_segment_done): Fix various seeking bugs (Slider was not updating when doing a non flushing seek, Reverse playback on segment seek was wrong).
This commit is contained in:
parent
749d720436
commit
354c07de8b
2 changed files with 21 additions and 12 deletions
|
@ -1,3 +1,10 @@
|
|||
2007-02-27 Julien MOUTTE <julien@moutte.net>
|
||||
|
||||
* tests/examples/seek/seek.c: (do_seek), (set_update_scale),
|
||||
(msg_segment_done): Fix various seeking bugs (Slider was not
|
||||
updating when doing a non flushing seek, Reverse playback
|
||||
on segment seek was wrong).
|
||||
|
||||
2007-02-26 Wim Taymans <wim@fluendo.com>
|
||||
|
||||
* tests/examples/seek/seek.c: (stop_seek):
|
||||
|
|
|
@ -1044,6 +1044,8 @@ update_scale (gpointer data)
|
|||
|
||||
static void do_seek (GtkWidget * widget);
|
||||
|
||||
static void set_update_scale (gboolean active);
|
||||
|
||||
static gboolean
|
||||
end_scrub (GtkWidget * widget)
|
||||
{
|
||||
|
@ -1113,21 +1115,24 @@ do_seek (GtkWidget * widget)
|
|||
if (rate >= 0) {
|
||||
s_event = gst_event_new_seek (rate,
|
||||
GST_FORMAT_TIME, flags, GST_SEEK_TYPE_SET, real, GST_SEEK_TYPE_SET, -1);
|
||||
GST_DEBUG ("seek with rate %lf to %" GST_TIME_FORMAT " / %" GST_TIME_FORMAT,
|
||||
rate, GST_TIME_ARGS (real), GST_TIME_ARGS (duration));
|
||||
} else {
|
||||
s_event = gst_event_new_seek (rate,
|
||||
GST_FORMAT_TIME, flags, GST_SEEK_TYPE_SET, G_GINT64_CONSTANT (0),
|
||||
GST_SEEK_TYPE_SET, real);
|
||||
GST_DEBUG ("seek with rate %lf to %" GST_TIME_FORMAT " / %" GST_TIME_FORMAT,
|
||||
rate, GST_TIME_ARGS (0), GST_TIME_ARGS (real));
|
||||
}
|
||||
|
||||
GST_DEBUG ("seek with rate %lf to %" GST_TIME_FORMAT " / %" GST_TIME_FORMAT,
|
||||
rate, GST_TIME_ARGS (real), GST_TIME_ARGS (duration));
|
||||
|
||||
res = send_event (s_event);
|
||||
|
||||
if (res) {
|
||||
if (flush_seek) {
|
||||
gst_pipeline_set_new_stream_time (GST_PIPELINE (pipeline), 0);
|
||||
gst_element_get_state (GST_ELEMENT (pipeline), NULL, NULL, SEEK_TIMEOUT);
|
||||
} else {
|
||||
set_update_scale (TRUE);
|
||||
}
|
||||
} else
|
||||
g_print ("seek failed\n");
|
||||
|
@ -1159,6 +1164,9 @@ seek_cb (GtkWidget * widget)
|
|||
static void
|
||||
set_update_scale (gboolean active)
|
||||
{
|
||||
|
||||
GST_DEBUG ("update scale is %d", active);
|
||||
|
||||
if (active) {
|
||||
if (update_id == 0) {
|
||||
update_id =
|
||||
|
@ -1445,15 +1453,9 @@ msg_segment_done (GstBus * bus, GstMessage * message, GstPipeline * pipeline)
|
|||
if (flush_seek)
|
||||
flags |= GST_SEEK_FLAG_FLUSH;
|
||||
|
||||
if (rate >= 0) {
|
||||
s_event = gst_event_new_seek (rate,
|
||||
GST_FORMAT_TIME, flags, GST_SEEK_TYPE_SET, G_GINT64_CONSTANT (0),
|
||||
GST_SEEK_TYPE_SET, duration);
|
||||
} else {
|
||||
s_event = gst_event_new_seek (rate,
|
||||
GST_FORMAT_TIME, flags, GST_SEEK_TYPE_SET, duration,
|
||||
GST_SEEK_TYPE_SET, G_GINT64_CONSTANT (0));
|
||||
}
|
||||
s_event = gst_event_new_seek (rate,
|
||||
GST_FORMAT_TIME, flags, GST_SEEK_TYPE_SET, G_GINT64_CONSTANT (0),
|
||||
GST_SEEK_TYPE_SET, duration);
|
||||
|
||||
GST_DEBUG ("restart loop with rate %lf to 0 / %" GST_TIME_FORMAT,
|
||||
rate, GST_TIME_ARGS (duration));
|
||||
|
|
Loading…
Reference in a new issue