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 744783 - gst-validate: support for non flushing seeks
gst-validate: support for non flushing seeks
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-devtools
git master
Other Linux
: Normal enhancement
: git master
Assigned To: Edward Hervey
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-02-19 13:26 UTC by Vincent Penquerc'h
Modified: 2018-11-03 11:06 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
support for non flushing seeks (8.10 KB, patch)
2015-02-19 13:27 UTC, Vincent Penquerc'h
reviewed Details | Review
support for non flushing seeks (7.97 KB, patch)
2015-02-23 13:10 UTC, Vincent Penquerc'h
reviewed Details | Review
support for non flushing seeks (8.96 KB, patch)
2015-02-24 17:01 UTC, Vincent Penquerc'h
none Details | Review
support for non flushing seeks (7.80 KB, patch)
2015-02-25 15:47 UTC, Vincent Penquerc'h
none Details | Review
add non lushing seek scenarios (1.46 KB, patch)
2015-02-25 15:48 UTC, Vincent Penquerc'h
committed Details | Review
support for non flushing seeks (7.82 KB, patch)
2015-02-25 16:07 UTC, Vincent Penquerc'h
none Details | Review
add non flushing seek support (7.86 KB, patch)
2015-02-25 17:01 UTC, Vincent Penquerc'h
committed Details | Review
use segments for flushing seek too (3.15 KB, patch)
2015-02-27 14:42 UTC, Vincent Penquerc'h
committed Details | Review
expect a buffer with discontinuity after a seek (3.44 KB, patch)
2015-02-27 16:57 UTC, Vincent Penquerc'h
committed Details | Review

Description Vincent Penquerc'h 2015-02-19 13:26:16 UTC
Placeholder description so I get a bug number to add in the commit message.
Comment 1 Vincent Penquerc'h 2015-02-19 13:27:21 UTC
Created attachment 297263 [details] [review]
support for non flushing seeks
Comment 2 Thibault Saunier 2015-02-20 18:08:52 UTC
Review of attachment 297263 [details] [review]:

Please add validate: in the commit message

I wonder if it would not make more sense to wait for a new segment corresponding to the seek in that case?
Comment 3 Vincent Penquerc'h 2015-02-23 09:13:04 UTC
Yes, it'd seem better, I'll change the patch to do that.
Comment 4 Vincent Penquerc'h 2015-02-23 13:10:05 UTC
Created attachment 297637 [details] [review]
support for non flushing seeks
Comment 5 Vincent Penquerc'h 2015-02-23 13:14:27 UTC
For info, https://bugzilla.gnome.org/show_bug.cgi?id=729198 is the patch to oggdemux that led to this.
Comment 6 Thibault Saunier 2015-02-23 14:01:48 UTC
Review of attachment 297637 [details] [review]:

::: validate/gst/validate/gst-validate-scenario.c
@@ +415,3 @@
+static GstObject *
+_find_any_object (GstIterator * iter)
+{

I think we should wait for the new old segment to be done on all sinks to be able to trigger the next action.
Comment 7 Thibault Saunier 2015-02-23 14:33:55 UTC
Review of attachment 297637 [details] [review]:

::: validate/launcher/apps/gstvalidate.py
@@ +719,3 @@
                 "fast_forward",
                 "seek_forward",
+                "seek_forward_non_flushing",

Adding it this way will lead to many new tests added in the validate testsuite, did you run them all?
Comment 8 Vincent Penquerc'h 2015-02-23 16:51:27 UTC
From your wording, do you mean automatic ?
I did not know these would be automatically enrolled in anything, I first added new tests scenarios, and grepped around when I realized they were not seen, and added them to the list where other scenarios were found.

I tested with:

./tools/gst-validate-1.0 souphttpsrc location=http://127.0.0.1:8000/test.ogg ! oggdemux ! vorbisdec ! pulsesink volume=0.01 --set-scenario seek_forward_non_flushing

Can you expand a bit on what's automatic and from where in the code ?
Comment 9 Thibault Saunier 2015-02-23 17:00:24 UTC
(In reply to Vincent Penquerc'h from comment #8)
> From your wording, do you mean automatic ?
> I did not know these would be automatically enrolled in anything, I first
> added new tests scenarios, and grepped around when I realized they were not
> seen, and added them to the list where other scenarios were found.
> 
> I tested with:
> 
> ./tools/gst-validate-1.0 souphttpsrc location=http://127.0.0.1:8000/test.ogg
> ! oggdemux ! vorbisdec ! pulsesink volume=0.01 --set-scenario
> seek_forward_non_flushing
> 
> Can you expand a bit on what's automatic and from where in the code ?

Yes, it will automatically add more tests to the default testsuite: http://cgit.freedesktop.org/gstreamer/gst-integration-testsuites/tree/testsuites/validate.py

You should run gst-validate-launcher validate (--mute) to see how it works with other formats.
Comment 10 Vincent Penquerc'h 2015-02-24 17:01:33 UTC
Created attachment 297785 [details] [review]
support for non flushing seeks

Attached only for the change to wait for a segment on all sinks. I have yet to look at the automated use of new scenarii.
Comment 11 Vincent Penquerc'h 2015-02-25 15:47:27 UTC
Created attachment 297892 [details] [review]
support for non flushing seeks
Comment 12 Vincent Penquerc'h 2015-02-25 15:48:00 UTC
Created attachment 297893 [details] [review]
add non lushing seek scenarios
Comment 13 Thibault Saunier 2015-02-25 15:52:30 UTC
Review of attachment 297892 [details] [review]:

::: validate/gst/validate/gst-validate-scenario.c
@@ +600,3 @@
+  /* Flushing seeks will be deemed done when an ASYNC_DONE message gets
+     received on the bus. We don't get one for non flushing seeks though,
+     so we rely on a discontinuity on the buffers. */

We do not rely on discontunuity anymore :)

I wonder if we could not alway rely on segments actually, that might even cleaner as we check the seqnum which guarantees us the segment is the resultant of the seek.
Comment 14 Vincent Penquerc'h 2015-02-25 16:07:36 UTC
Created attachment 297894 [details] [review]
support for non flushing seeks

Comment fixed to mention segments instead of disconts :)
Comment 15 Thibault Saunier 2015-02-25 16:50:52 UTC
Review of attachment 297894 [details] [review]:

OK
Comment 16 Thibault Saunier 2015-02-25 16:54:55 UTC
Review of attachment 297894 [details] [review]:

::: validate/data/seek_backward_non_flushing.scenario
@@ +1,1 @@
+description, seek=true, duration=30, need-clock-sync=true

Actually please add min-media-duration=15 here.

::: validate/data/seek_forward_non_flushing.scenario
@@ +1,1 @@
+description, seek=true, duration=20, need-clock-sync=true

Please add min-media-duration=30 here.
Comment 17 Vincent Penquerc'h 2015-02-25 17:01:16 UTC
Created attachment 297903 [details] [review]
add non flushing seek support
Comment 18 Vincent Penquerc'h 2015-02-27 14:42:14 UTC
Created attachment 298091 [details] [review]
use segments for flushing seek too
Comment 19 Mathieu Duponchelle 2015-02-27 14:52:51 UTC
Review of attachment 298091 [details] [review]:

This means we will consider we can seek again even though we're not ASYNC_DONE, as ASYNC_DONE is emitted on the first buffer, not sure it's really right?
Comment 20 Thibault Saunier 2015-02-27 14:54:58 UTC
(In reply to Mathieu Duponchelle from comment #19)
> Review of attachment 298091 [details] [review] [review]:
> 
> This means we will consider we can seek again even though we're not
> ASYNC_DONE, as ASYNC_DONE is emitted on the first buffer, not sure it's
> really right?

I have the impression you are right, we should wait for the segment with right seqnum + 1 buffer, and that even on segment seeks I think.
Comment 21 Vincent Penquerc'h 2015-02-27 14:56:19 UTC
That's a good point, I'll go change that.
Comment 22 Mathieu Duponchelle 2015-02-27 14:58:01 UTC
We could also wait for segment + ASYNC_DONE methinks
Comment 23 Vincent Penquerc'h 2015-02-27 16:57:25 UTC
Created attachment 298105 [details] [review]
expect a buffer with discontinuity after a seek
Comment 24 Mathieu Duponchelle 2015-02-27 18:11:28 UTC
Review of attachment 298105 [details] [review]:

Looks good to me. Have you tried these patches with a full run of gst-validate-launcher ?
Comment 25 Vincent Penquerc'h 2015-02-27 18:32:27 UTC
I tested with:

gst-validate-launcher validate -j1 --mute

The failures are unrelated.
Comment 26 Vincent Penquerc'h 2015-03-03 12:08:23 UTC
OK to push ?
Comment 27 Thibault Saunier 2015-03-03 13:11:56 UTC
I think we are all fine yes
Comment 28 Vincent Penquerc'h 2015-03-09 10:10:23 UTC
I appear to not have permissions to push, so I'll have to leave that to you :)
I just merged with latest master and it all still builds fine.
Comment 29 Thibault Saunier 2015-03-09 10:11:21 UTC
Why don't you have permissions? You can push on Fdo no?
Comment 30 Vincent Penquerc'h 2015-03-09 10:13:32 UTC
I can push to core, -base, etc.
Trying to push to gst-devtools gives me:

fatal: remote error: access denied or repository not exported: /gstreamer/gst-devtools

If this repo is supposed to have the same permissions to core or -base, then it might be something local.
Comment 31 Vincent Penquerc'h 2015-03-09 10:15:33 UTC
Oh, nevermind, I see the problem. It was trying to push to anongit :D Pushed.
Comment 32 Thibault Saunier 2015-09-23 15:05:09 UTC
Those patches were reverted:

commit 3bb6ecd6fabb7f84348cfd62990655d2292b64ea
Author: Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Date:   Mon Mar 9 18:26:37 2015 +0000

    Revert "validate: add non flushing seek support"
    
    This reverts commit 3ff55dcc3119b39e7c86044159db8bce49a2dc3a.
    
    Regressions on the test server, apparently linked to this patchset.

commit 09988a97bf136b54f71bcbcbbae45459b0d5d69c
Author: Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Date:   Mon Mar 9 18:26:33 2015 +0000

    Revert "validate: use segments to detect success of flushing seeks too"
    
    This reverts commit c47cc7ba90e96ffaefe201087428ef448670f3be.
    
    Regressions on the test server, apparently linked to this patchset.

commit d78c20322f287a0d84043df5860d094a3767cce8
Author: Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Date:   Mon Mar 9 18:26:06 2015 +0000

    Revert "validate: expect a buffer with discontinuity after a seek"
    
    This reverts commit 87064b6994e36203b6976d436feda809068f1497.
    
    Regressions on the test server, apparently linked to this patchset.
Comment 33 Vincent Penquerc'h 2015-10-08 15:41:52 UTC
Trying those patches again, most tests succeed. I see three tests failing that use those new non-flushing scenarios:

First one:
GST_GL_XINITTHREADS=1 GST_VALIDATE_OVERRIDE=:/home/v/gst-validate/gst-integration-testsuites/medias/defaults/online-streams-infos/dash/dash.exMPD_BIP_TC1.override DISPLAY=:0.0 GST_VALIDATE_SCENARIO=seek_backward_non_flushing gst-validate-1.0  playbin uri=http://127.0.0.1:8079/defaults/exMPD_BIP_TC1/exMPD_BIP_TC1.mpd audio-sink='fakesink sync=true' video-sink='fakesink sync=true' --set-media-info "/home/v/gst-validate/gst-integration-testsuites/medias/defaults/online-streams-infos/dash/dash.exMPD_BIP_TC1.stream_info"

Failed 'Application returned 18 (issues: [We got an ERROR message on the bus])

The error on the bus is a 404. The source for this seems to not be on my disk (I an --sync less than two hours ago):

v@euryale:~/src/gst-integration-testsuites/medias$ ls -l defaults/exMPD_BIP_TC1/exMPD_BIP_TC1.mpd
lrwxrwxrwx 1 v v 201 Aug 21 13:37 defaults/exMPD_BIP_TC1/exMPD_BIP_TC1.mpd -> ../../../.git/annex/objects/93/wW/SHA256E-s1489--32f5584b49364d27e4a8c75bb276412e37a09eb6e81413d146c32c92a089578c.mpd/SHA256E-s1489--32f5584b49364d27e4a8c75bb276412e37a09eb6e81413d146c32c92a089578c.mpd
v@euryale:~/src/gst-integration-testsuites/medias$ readlink -f defaults/exMPD_BIP_TC1/exMPD_BIP_TC1.mpd

Second one:
Same as first one, with the seek_forward_non_flushing.

Third one:
GST_GL_XINITTHREADS=1 DISPLAY=:0.0 GST_VALIDATE_SCENARIO=seek_backward_non_flushing gst-validate-1.0  playbin uri=file:///home/v/gst-validate/gst-integration-testsuites/medias/defaults/mpegts/tron_en_ge_aac_h264.ts audio-sink='fakesink sync=true' video-sink='fakesink sync=true' --set-media-info "/home/v/gst-validate/gst-integration-testsuites/medias/defaults/mpegts/tron_en_ge_aac_h264.ts.media_info"

Three subsequent manual rerun worked.
Comment 34 Tim-Philipp Müller 2018-05-04 08:52:20 UTC
Gonna close this again. Not useful to keep a "lots of stuff fails" bug open.

Let's file a new issues about specific things if anything still fails 3 years later.
Comment 35 Edward Hervey 2018-05-04 09:25:55 UTC
I have a better implementation for this, assigning to myself.
Comment 36 Edward Hervey 2018-06-05 16:02:20 UTC
I have pushed a series of patches that should open the way to handling all types of seeks in a reliable fashion: https://cgit.freedesktop.org/~bilboed/gst-devtools/log/?h=flushless
Comment 37 GStreamer system administrator 2018-11-03 11:06:32 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/gst-devtools/issues/11.