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 498976 - regression for loop playback
regression for loop playback
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal normal
: git master
Assigned To: Wim Taymans
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2007-11-22 14:18 UTC by Stefan Sauer (gstreamer, gtkdoc dev)
Modified: 2011-08-09 09:35 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
standalone test case (7.86 KB, text/plain)
2007-11-22 14:23 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
Details
standalone audio test case (6.85 KB, text/plain)
2007-11-22 16:36 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
Details
standalone video test case (5.74 KB, text/plain)
2007-11-23 16:28 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
Details

Description Stefan Sauer (gstreamer, gtkdoc dev) 2007-11-22 14:18:54 UTC
compile the attached source with:
gcc -Wall -g `pkg-config gstreamer-0.10 gstreamer-controller-0.10 --cflags --libs` seek2.c -o seek2

and run it as:
./seek2 loop

The source has the following lines:
  // FIXME: it works when using identfy/volume instead 'level'
  elem = gst_element_factory_make ("level", "level");
Comment 1 Stefan Sauer (gstreamer, gtkdoc dev) 2007-11-22 14:22:46 UTC
That was too quick:
The loop play when using identify or volume. But it blocks with level/spectrum (I have not found others so far). After the first loop segment done is handled, the level/spectrum also processes buffer with timestamps restarting a 0, but cpu goes up to 100% and I don't hear anything.
Comment 2 Stefan Sauer (gstreamer, gtkdoc dev) 2007-11-22 14:23:33 UTC
Created attachment 99477 [details]
standalone test case
Comment 3 Stefan Sauer (gstreamer, gtkdoc dev) 2007-11-22 16:36:24 UTC
Created attachment 99491 [details]
standalone audio test case

Shorter version of the testcase. one more observation too:

With the version that gets stuck, I get 20 times:
basesrc gstbasesrc.c:2038:gst_base_src_loop:<gen_audio> 0:00:06.000000000 >= 0:00:06.000000000

With the version that plays, I get this just once (and I pressed Ctrl-C after it looped succesfully).
Comment 4 Stefan Sauer (gstreamer, gtkdoc dev) 2007-11-23 16:28:09 UTC
Created attachment 99542 [details]
standalone video test case

Same happens with video. The video example also tries to loop for 6sec. Usualy it gets stuck and does not loop back. Sometimes it does and when it does, the clock goes crazy after some loops.

This is also what happens in the audio case, only that it is easier to reproduce there.
Comment 5 Stefan Sauer (gstreamer, gtkdoc dev) 2009-10-08 08:01:53 UTC
It plays once and then complains abot duplicated events.

GST_DEBUG="*:2" ./seek2 loop

0:00:00.197221159 14277  0x9650008 WARN                 basesrc gstbasesrc.c:1233:gst_base_src_perform_seek:<gen_audio> duplicate event found 38
0:00:05.815880729 14277  0x9650008 WARN                 basesrc gstbasesrc.c:1233:gst_base_src_perform_seek:<gen_audio> duplicate event found 71
0:00:05.960555694 14277  0x9650008 WARN                 basesrc gstbasesrc.c:1233:gst_base_src_perform_seek:<gen_audio> duplicate event found 79
0:00:06.105172113 14277  0x9650008 WARN                 basesrc gstbasesrc.c:1233:gst_base_src_perform_seek:<gen_audio> duplicate event found 87
0:00:06.250106388 14277  0x9650008 WARN                 basesrc gstbasesrc.c:1233:gst_base_src_perform_seek:<gen_audio> duplicate event found 95
Comment 6 Stefan Sauer (gstreamer, gtkdoc dev) 2009-10-08 08:32:09 UTC
Hmm, I see no difference in regard to volume/level/identity here anymore. Instead its not looping anymore and I get 
gstbasesrc.c:1233:gst_base_src_perform_seek:<gen_audio> duplicate event found

when going to playing and each time I get a segment done and seek again. Need to check if the event is sent to all sinks  and I get duplicates because of that.
Comment 7 Thiago Sousa Santos 2009-11-24 01:04:20 UTC
Seems to be a racy condition, while running

GST_DEBUG=2,GST_EVENT:5 ./seek2 loop > dump 2>&1

I don't get the problem, when I run without the debug I get it.
Comment 8 Stefan Sauer (gstreamer, gtkdoc dev) 2011-08-09 09:35:07 UTC
seems to work nowadays.