After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 706307 - segment: frame stepping returns video to the start + gst_segment_do_seek: assertion 'start <= stop' failed
segment: frame stepping returns video to the start + gst_segment_do_seek: ass...
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
1.x
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-08-19 13:40 UTC by sam tygier
Modified: 2018-11-03 12:18 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
320x240.ogg (278.62 KB, application/octet-stream)
2013-08-22 17:07 UTC, Bastien Nocera
  Details
reset -1 stop time if seeking without a stop set (880 bytes, patch)
2016-08-04 16:08 UTC, Vincent Penquerc'h
none Details | Review

Description sam tygier 2013-08-19 13:40:58 UTC
Using totem-3.8.2-1.fc19.x86_64 and gstreamer1-1.0.9-1.fc19.x86_64 on fedora 19.

To reproduce:
1) Open the a theora video file, http://v2v.cc/~j/theora_testsuite/320x240.ogg
2) It will start playing, pause it about 1 second in by pressing space
3) press ',' (comma) to step back 1 frame
4) press '.' (full stop) to step forwards one frame

Expected result:
Steps forward 1 frame

Actual result:
Video return to start

In terminal I see the message

(totem:3794): GStreamer-CRITICAL **: gst_segment_do_seek: assertion `start <= stop' failed
Comment 1 Bastien Nocera 2013-08-19 23:29:14 UTC
Reproduced, but not root caused.
Comment 2 Bastien Nocera 2013-08-22 01:03:30 UTC
I added some more debug to Totem, and couldn't get it to show any GStreamer warnings, leading me to believe that the problem is with GStreamer. Reassigning.
Comment 3 Sebastian Dröge (slomo) 2013-08-22 08:26:14 UTC
Confirmed here too with latest git master, it steps sometimes in undeterministic ways and then goes back to the beginning with the gst_segment_do_seek() assertion.
Comment 4 Bastien Nocera 2013-08-22 17:07:13 UTC
Created attachment 252776 [details]
320x240.ogg

Adding test file so it doesn't get lost.
Comment 5 Vincent Penquerc'h 2014-01-14 14:16:26 UTC
Can one step back with tests/examples/playback/playback-test ?
The step number can't be set to negative (well, it can, but pressing step moves it back to 1).
Comment 6 Tim-Philipp Müller 2014-01-14 15:04:58 UTC
You set rate to -1.0 and then do a step :)
Comment 7 Vincent Penquerc'h 2014-01-14 15:08:14 UTC
Hmm, I'd tried that and saw:

(lt-playback-test:18314): GStreamer-CRITICAL **: gst_event_new_step: assertion `rate > 0.0' failed

So I assumed that was "I'm afraid I can't let you do that, Dave".

If it's meant to work, then I guess I have something to debug right there :)
Comment 8 Vincent Penquerc'h 2014-01-14 15:13:24 UTC
k, I found you have to seek with negative rate in the seek section, then come back and step in the step section. That steps back. Using the rate in the step section breaks. I'm going to ignore that for now.
Comment 9 Sebastian Dröge (slomo) 2014-01-22 13:36:19 UTC
The rate can only be adjusted into the same direction with step events. Reversing the playback direction requires a seek.
Comment 10 Bastien Nocera 2014-01-22 13:41:10 UTC
(In reply to comment #9)
> The rate can only be adjusted into the same direction with step events.
> Reversing the playback direction requires a seek.

That's already what totem does, fwiw.
Comment 11 Sebastian Dröge (slomo) 2014-01-22 13:46:40 UTC
Yes, otherwise it would've never worked :) Just mentioned that because it wasn't clear if Vincent knew that.


I think it would be a good idea to try if this problem still persists with the latest 1.2 branch or git master. There were a few changes related to reverse playback that might help here.
Comment 12 Vincent Penquerc'h 2014-06-10 13:05:18 UTC
Just trying now with latest core and -base and it seems to work.
Comment 13 Bastien Nocera 2014-10-15 13:26:06 UTC
It still throws errors here after you press "." after step 4 as mentioned in comment 0 (in short, pause, period, comma, period):
(totem:25371): GStreamer-CRITICAL **: gst_segment_do_seek: assertion 'start <= stop' failed

gstreamer1-1.4.2-1.fc21.x86_64
gstreamer1-plugins-base-1.4.2-1.fc21.x86_64
gstreamer1-plugins-good-1.4.2-1.fc21.x86_64
Comment 14 Vincent Penquerc'h 2016-08-04 15:05:05 UTC
I can see reproduce it. I have to select the seek bar handle for it to blow up.

And it looks like the last seek before the assert has both start and stop set to 0. Is that legal ?

playsink gstplaysink.c:4707:gst_play_sink_send_event_to_sink:ESC[00m sending event: seek event: 0x56526efbe730, time 99:99:99.999999999, seq-num 369, GstEventSeek, rate=(double)1, format=(GstFormat)GST_FORMAT_TIME, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH+GST_SEEK_FLAG_ACCURATE, cur-type=(GstSeekType)GST_SEEK_TYPE_SET, cur=(gint64)0, stop-type=(GstSeekType)GST_SEEK_TYPE_SET, stop=(gint64)0;
Comment 15 Vincent Penquerc'h 2016-08-04 16:08:14 UTC
Created attachment 332738 [details] [review]
reset -1 stop time if seeking without a stop set

This fixes it, and seeking after that works fine. However, I can't help but feel it's a bit iffy.
Comment 16 Bastien Nocera 2016-08-04 16:10:08 UTC
It's very possible that the bug is in the bacon-video-widget. I'd welcome any fixes there, especially as I'm at a bit of a loss why it would occur.
Comment 17 Vincent Penquerc'h 2016-08-05 13:17:08 UTC
bacon-video-widget looks ok, it's sending seeks with unset stops.
Comment 18 Tim-Philipp Müller 2017-07-14 09:02:33 UTC
Happens with MP4 and MKVs as well, so let's start with gst_segment_do_seek().
Comment 19 GStreamer system administrator 2018-11-03 12:18:46 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/42.