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 653124 - Broken progress bar in Amarok Music Player, using Phonon Gstreamer backend
Broken progress bar in Amarok Music Player, using Phonon Gstreamer backend
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: dont know
unspecified
Other Linux
: Normal normal
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2011-06-21 19:59 UTC by Rob D
Modified: 2011-07-14 10:39 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Rob D 2011-06-21 19:59:02 UTC
A problem, which according to the developers of Phonon is caused by 'the codec
provided by Gstreamer' breaks seeking functionality in the Amarok music player from the KDE software suite.

The bug is confirmed by several people. Details and links to the many duplicate bug reports can be found at https://bugs.kde.org/show_bug.cgi?id=237298

I'm afraid I know very little about gstreamer, so I can't be of much help at this point, but I'd be happy to provide some form of debugging output if anyone will talk me through it (I'm not massively linux-savvy).

Searching for anything to do with amarok and gstreamer seems to suggest I'm the first to report this.

Rob
Comment 1 Tim-Philipp Müller 2011-06-22 09:21:00 UTC
What's the output of:

 $ gst-launch-0.10 -v playbin2 uri=file:///path/to/foo.mp3

?
Comment 2 Rob D 2011-06-22 12:39:11 UTC
--------------------------------------------------------------------------------

rob@SCKubuntu:~$ gst-launch-0.10 -v playbin2 uri=file:///path/to/foo.mp3

Setting pipeline to PAUSED ...
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: connection-speed = 0
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: download = FALSE
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: uri = "file:///path/to/foo.mp3"
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: use-buffering = FALSE
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: buffer-duration = -1
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: buffer-size = -1
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: ring-buffer-max-size = 0
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: source = (GstFileSrc) source
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstURIDecodeBin:uridecodebin0/GstFileSrc:source: Resource not found.
Additional debug info:
gstfilesrc.c(1034): gst_file_src_start (): /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstFileSrc:source:
No such file "/path/to/foo.mp3"
Setting pipeline to NULL ...
Freeing pipeline ...

rob@SCKubuntu:~$ 
--------------------------------------------------------------------------------
Will try with a file that exists...
Comment 3 Tim-Philipp Müller 2011-06-22 12:45:54 UTC
> Will try with a file that exists...

That was the idea, yes :-)
Comment 4 Rob D 2011-06-22 13:02:19 UTC
I kinda guessed it was :-D
Just wondered if foo.mp3 was a test file included for such purposes. Turns out it's not.

Here's the output with an actual file:
--------------------------------------------------------------------------------
rob@SCKubuntu:~$ gst-launch-0.10 -v playbin2
uri=file:///media/NTFSFTW/Music/Playlist/CDex/Gorillaz/Punk.mp3

Setting pipeline to PAUSED ...
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: connection-speed = 0
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: download = FALSE
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: uri =
"file:///media/NTFSFTW/Music/Playlist/CDex/Gorillaz/Punk.mp3"
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: use-buffering = FALSE
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: buffer-duration = -1
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: buffer-size = -1
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: ring-buffer-max-size = 0
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: source = (GstFileSrc)
source
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstTypeFindElement:typefind.GstPad:src:
caps = application/x-id3
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstID3Demux:id3demux0.GstPad:sink:
caps = application/x-id3
Pipeline is PREROLLING ...
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMpegAudioParse:mpegaudioparse0.GstPad:sink:
caps = audio/mpeg, mpegversion=(int)1, layer=(int)3
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMpegAudioParse:mpegaudioparse0.GstPad:sink:
caps = audio/mpeg, mpegversion=(int)1, layer=(int)3
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMpegAudioParse:mpegaudioparse0.GstPad:src:
caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3,
rate=(int)44100, channels=(int)2, parsed=(boolean)true
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstSelectorPad:sink0:
always-ok = FALSE
/GstPlayBin2:playbin20/GstInputSelector:inputselector0: active-pad =
(GstSelectorPad) sink0
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstSelectorPad:sink0:
tags = ((GstTagList*) 0x13628d0)
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstSelectorPad:sink0:
tags = ((GstTagList*) 0x1362590)
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstSelectorPad:sink0:
tags = ((GstTagList*) 0x1517230)
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/FluMp3Dec:flump3dec0.GstPad:sink:
caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3,
rate=(int)44100, channels=(int)2, parsed=(boolean)true
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstSelectorPad:sink0:
tags = ((GstTagList*) 0x15174d0)
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0.GstGhostPad:src0: caps =
audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16,
depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20.GstDecodePad:src0:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/FluMp3Dec:flump3dec0.GstPad:src:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstTee:audiotee: alloc-pad =
(GstPad) src0
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstSelectorPad:sink0:
tags = ((GstTagList*) 0x12c16f0)
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstSelectorPad:sink0:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0.GstGhostPad:src0.GstProxyPad:proxypad6:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20.GstDecodePad:src0.GstProxyPad:proxypad5:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2                  
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstPad:src: caps =
audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16,
depth=(int)16, rate=(int)44100, channels=(int)2                                 
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstTee:audiotee.GstPad:sink: caps
= audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16,
depth=(int)16, rate=(int)44100, channels=(int)2                                 
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstTee:audiotee.GstPad:src0: caps
= audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16,
depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstTee:audiotee.GstPad:sink: caps
= audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16,
depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0.GstGhostPad:audio_raw_sink: caps =
audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16,
depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0.GstGhostPad:audio_raw_sink.GstProxyPad:proxypad7:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstStreamSynchronizer:streamsynchronizer0.GstPad:sink_0:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstStreamSynchronizer:streamsynchronizer0.GstPad:src_0:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstQueue:aqueue.GstPad:sink:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin.GstGhostPad:sink: caps
= audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16,
depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin.GstGhostPad:sink.GstProxyPad:proxypad9:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstQueue:aqueue.GstPad:src:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstSelectorPad:sink0:
tags = ((GstTagList*) 0x13628d0)
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAudioConvert:aconv.GstPad:src:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstSelectorPad:sink0:
tags = ((GstTagList*) 0x12c16f0)
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAudioConvert:aconv.GstPad:sink:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAudioResample:aresample.GstPad:src:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAudioResample:aresample.GstPad:sink:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstSelectorPad:sink0:
tags = ((GstTagList*) 0x7f79e4031d90)
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAutoAudioSink:audiosink/GstPulseSink:audiosink-actual-sink-pulse.GstPad:sink:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAutoAudioSink:audiosink.GstGhostPad:sink:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAutoAudioSink:audiosink.GstGhostPad:sink.GstProxyPad:proxypad8:
caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
/GstPlayBin2:playbin20/GstPlaySink:playsink0: volume = 1.000000
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAutoAudioSink:audiosink/GstPulseSink:audiosink-actual-sink-pulse:
volume = 1.000000
/GstPlayBin2:playbin20/GstPlaySink:playsink0: mute = FALSE
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAutoAudioSink:audiosink/GstPulseSink:audiosink-actual-sink-pulse:
mute = FALSE
Got EOS from element "playbin20".
Execution ended after 96268898445 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAutoAudioSink:audiosink/GstPulseSink:audiosink-actual-sink-pulse.GstPad:sink:
caps = NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAutoAudioSink:audiosink.GstGhostPad:sink:
caps = NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAudioResample:aresample.GstPad:src:
caps = NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAudioResample:aresample.GstPad:sink:
caps = NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAudioConvert:aconv.GstPad:src:
caps = NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstAudioConvert:aconv.GstPad:sink:
caps = NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstQueue:aqueue.GstPad:src:
caps = NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstQueue:aqueue.GstPad:sink:
caps = NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin.GstGhostPad:sink: caps
= NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstStreamSynchronizer:streamsynchronizer0.GstPad:sink_0:
caps = NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstStreamSynchronizer:streamsynchronizer0.GstPad:src_0:
caps = NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstTee:audiotee.GstPad:src0: caps
= NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0/GstTee:audiotee.GstPad:sink: caps
= NULL
/GstPlayBin2:playbin20/GstPlaySink:playsink0.GstGhostPad:audio_raw_sink: caps =
NULL
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstSelectorPad:sink0:
caps = NULL
/GstPlayBin2:playbin20/GstInputSelector:inputselector0.GstPad:src: caps = NULL
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0.GstGhostPad:src0: caps =
NULL
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20.GstDecodePad:src0:
caps = NULL
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/FluMp3Dec:flump3dec0.GstPad:src:
caps = NULL
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/FluMp3Dec:flump3dec0.GstPad:sink:
caps = NULL
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMpegAudioParse:mpegaudioparse0.GstPad:src:
caps = NULL
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstMpegAudioParse:mpegaudioparse0.GstPad:sink:
caps = NULL
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstID3Demux:id3demux0.GstPad:src:
caps = NULL
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstID3Demux:id3demux0.GstPad:sink:
caps = NULL
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstTypeFindElement:typefind.GstPad:src:
caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...

rob@SCKubuntu:~$ 
--------------------------------------------------------------------------------
I hope that helps at all.
I tried playing the same file in Amarok and the progress bar worked SOMETIMES.
I click stop, wait a few seconds and click play, and I repeated the process
about 10 times.
About 40% of the time it works as expected.
About 60% of the time it EITHER plays for the first 3 seconds without a
progress bar, but then fixes itself (the bar suddenly appears correctly after 3
seconds) OR the progress bar doesn't function at all until the track is stopped
and started again.

Rob
Comment 5 Sebastian Dröge (slomo) 2011-06-26 12:40:13 UTC
IMHO this sounds more like a bug caused by incorrect usage of GStreamer in phonon. Can you check if you have the same problem when using totem for example?
Comment 6 Rob D 2011-06-26 13:34:34 UTC
It's difficult to say, as it's an intermittent bug anyway, I've played a few tracks for a few minutes, and so far no problem within totem.
Switched to Amarok, still no problem. I'll wait until Amarok starts showing symptoms and then try totem.
Comment 7 Tim-Philipp Müller 2011-06-26 18:59:30 UTC
What version of mpegaudioparse is this?

  gst-inspect-0.10 mpegaudioparse | grep Version

There was a bug with the SEEKING query in baseparse/mpegaudioparse a while back, which also led to seeking in mp3 files not working in e.g. totem (it was racy, it would depend on whether mpegaudioparse had processed enough frames by the time the query was done just after the app was notified of the preroll).
Comment 8 Rob D 2011-06-27 11:26:36 UTC
0.10.21
Should the problem have been fixed in that version?
Comment 9 Tim-Philipp Müller 2011-06-27 11:35:24 UTC
> 0.10.21 - Should the problem have been fixed in that version?

No, it was only fixed in -bad 0.10.22 (but the plugin has since moved to -good).

This looks like it might be a duplicate of bug #641047 then.
Comment 10 Rob D 2011-06-28 00:52:27 UTC
So presumably if I update my gst plugins, this should fix the problem? Or does amarok/phonon have to be recoded to check back again later for another seekable response?

Can I check if this bug has been solved by upgrading my plugins?
Comment 11 Sebastian Dröge (slomo) 2011-06-28 05:13:09 UTC
Yes
Comment 12 Rob D 2011-06-28 23:02:59 UTC
will do so and get back to you on it
Comment 13 Rob D 2011-07-02 16:51:34 UTC
OK, with the default repositories, my Gstreamer is showing as up-to-date.
Is there a PPA I can add, or will I have to install it manually somehow?
Comment 14 Tim-Philipp Müller 2011-07-02 18:16:31 UTC
Yes, there's a GStreamer PPA for ubuntu.
Comment 15 Rob D 2011-07-02 21:03:30 UTC
OK, think I found it:

ppa:gstreamer-developers/ppa

I'll get the latest from there next time I'm at home and report after a few days' testing.
Comment 16 Rob D 2011-07-12 17:01:33 UTC
OK, well it seems to have improved, though I HAVEN'T TESTED THIS EXTENSIVELY.

I seem only to get a non-functional progress bar with exceptionally long tracks (like one-track mix CDs), which wasn't the case before.
Where there is a problem with these long files, it only seems to happen the first time I access the file, and it's not reproducible after that. In any case, it doesn't seem to be the same bug.
Some of these tracks may have also been .wav files, which show as zero length in amarok for the present, but that's for another day and another bug.

I'm setting this to solved for the time being and hoping the gstreamer updates will make their way downstream by at latest kubuntu 11.10.

!!!
Is there any way I can re-open this bug if I later find it's still there?
!!!

Rob
Comment 17 Tim-Philipp Müller 2011-07-14 10:39:31 UTC
> Is there any way I can re-open this bug if I later find it's still there?

Please just file a new bug then (with a reference to the number of this bug if you want).

Thanks for testing!