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 732386 - ffdec_flac flac playback error: Internal GStreamer error: negotiation problem.
ffdec_flac flac playback error: Internal GStreamer error: negotiation problem.
Status: RESOLVED INVALID
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
1.x
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-06-28 12:46 UTC by David Timms
Modified: 2014-06-29 15:34 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description David Timms 2014-06-28 12:46:56 UTC
$ gst-launch-0.10 -v filesrc location=/home/a/b.flac ! ffdec_flac ! pulsesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/ffdec_flac:ffdec_flac0: Internal GStreamer error: negotiation problem.  Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Additional debug info:
gstffmpegdec.c(2822): gst_ffmpegdec_chain (): /GstPipeline:pipeline0/ffdec_flac:ffdec_flac0:
ffdec_flac: input format was not set before data start
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

----
Using flac_dec works OK:
$ gst-launch-0.10 -v filesrc location=/home/a/b.flac ! flacdec ! pulsesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstFlacDec:flacdec0.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
/GstPipeline:pipeline0/GstPulseSink:pulsesink0.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
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
/GstPipeline:pipeline0/GstPulseSink:pulsesink0: volume = 0.215974
/GstPipeline:pipeline0/GstPulseSink:pulsesink0: mute = FALSE
/GstPipeline:pipeline0/GstPulseSink:pulsesink0: volume = 0.215974
/GstPipeline:pipeline0/GstPulseSink:pulsesink0: mute = FALSE
^CCaught interrupt -- handling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 4004723573 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstPulseSink:pulsesink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstFlacDec:flacdec0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...

-----
Comment 1 David Timms 2014-06-28 13:37:30 UTC
Also:
$ gst-launch-1.0 -v filesrc location=/home/a/b.flac ! flacdec ! pulsesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2865): gst_base_src_loop (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
streaming task paused, reason error (-5)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
Comment 2 Tim-Philipp Müller 2014-06-29 11:19:51 UTC
Please try:

  gst-launch-1.0 playbin uri=file:///path/to/file

or

  gst-launch-1.0 uridecodebin uri=file:///path/to/file ! audioconvert ! audioresample ! pulsesink

first to make sure it's not your pipeline that's problematic.

Your pipeline needs a flacparse before the decoder.
Comment 3 David Timms 2014-06-29 14:27:41 UTC
Trying both: playbin and uridecodebin play the file OK.

=====
Adding flacparse to
$ gst-launch-0.10 -v filesrc location=/home/a/b.flac ! flacparse ! ffdec_flac ! pulsesink
allows it to play OK. (a few pages of garbage/header is shown as streamheader=(buffer)< 7f464....)

=====
I notice with gst-inspect that ffdec_flac (0.1) became avdec_flac (1.0+).
$ gst-launch-1.0 -v filesrc location= /home/a/b.flac ! flacparse ! avdec_flac ! pulsesink
which also shows pages of garbage/header, but does play the file OK, as long as flacparse is included. (Not sure how one would come to know that the extra flacparse might be needed).

So, seems all OK. I don't remember which gst-based app I thought I saw issues trying to playback flac ;-) Closing (I'm assuming gst-launch is supposed to show that garbage ...)
Comment 4 Tim-Philipp Müller 2014-06-29 15:34:45 UTC
It's headers, not garbage :) If it's a lot it's probably because it includes coverart. It's only shown if you pass -v. We could probably shorten that output.

We require parser in front of almost all decoders now in 1.x. It's just one of those things you have to know. You're supposed to use decodebin/playbin and friends instead of building your own pipelines :)