GNOME Bugzilla – Bug 730051
Problems with a pair of interaudiosrc
Last modified: 2018-01-25 19:00:09 UTC
I was having a hard time making something work in an experimental piece of code for ekiga, getting: ERROR: from element /GstPipeline:pipeline0/GstInterAudioSrc:interaudiosrc0: Internal data flow error. After searching for a while, I noticed that the problem happens only when I use two interaudiosrc elements in one of my pipelines. And indeed, the following command-line also gives the same problem: gst-launch-1.0 audiotestsrc ! interaudiosink channel=chann0 interaudiosrc channel=chann0 ! audioconvert ! adder name=mixer ! fakesink audiotestsrc ! interaudiosink channel=chann1 interaudiosrc channel=chann1 ! audioconvert ! mixer. Notice that I know inter* elements are to make different pipelines communicate and that's the case in my experimental code, but I wanted to make a minimal example, and that one fits the bill. I asked on irc, and on gstreamer-devel, and was tasked with reporting here.
I tried to run the command line with GST_DEBUG_NO_COLOR=1 GST_DEBUG=interaudiosrc:8 ; I only got this in the log: 0:00:00.042092032 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc0> query 0:00:00.042232770 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc0> query 0:00:00.042351340 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc0> query 0:00:00.042498778 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc0> query 0:00:00.042696529 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc0> query 0:00:00.043236976 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc0> query 0:00:00.043757067 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc1> query 0:00:00.044005028 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc1> query Setting pipeline to PAUSED ... 0:00:00.044896545 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:218:gst_inter_audio_src_start:<interaudiosrc1> start 0:00:00.044978875 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:218:gst_inter_audio_src_start:<interaudiosrc0> start Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... New clock: GstSystemClock 0:00:00.046655293 4911 0xcd0590 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc1> query 0:00:00.046731157 4911 0xcd0590 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc1> query 0:00:00.047046509 4911 0xcd0590 DEBUG interaudiosrc gstinteraudiosrc.c:374:gst_inter_audio_src_fixate:<interaudiosrc1> fixate 0:00:00.047077293 4911 0xcd0590 DEBUG interaudiosrc gstinteraudiosrc.c:194:gst_inter_audio_src_set_caps:<interaudiosrc1> set_caps 0:00:00.047683151 4911 0xcd0540 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc0> query 0:00:00.047979223 4911 0xcd0540 DEBUG interaudiosrc gstinteraudiosrc.c:340:gst_inter_audio_src_query:<interaudiosrc0> query 0:00:00.048171151 4911 0xcd0590 DEBUG interaudiosrc gstinteraudiosrc.c:275:gst_inter_audio_src_create:<interaudiosrc1> create 0:00:00.048276255 4911 0xcd0590 WARN interaudiosrc gstinteraudiosrc.c:300:gst_inter_audio_src_create: creating 576 samples of silence 0:00:00.048327255 4911 0xcd0590 DEBUG interaudiosrc gstinteraudiosrc.c:317:gst_inter_audio_src_create:<interaudiosrc1> create ts 0:00:00.000000000 0:00:00.048355675 4911 0xcd0590 DEBUG interaudiosrc gstinteraudiosrc.c:243:gst_inter_audio_src_get_times:<interaudiosrc1> get_times 0:00:00.048999503 4911 0xcd0540 DEBUG interaudiosrc gstinteraudiosrc.c:374:gst_inter_audio_src_fixate:<interaudiosrc0> fixate ERROR: from element /GstPipeline:pipeline0/GstInterAudioSrc:interaudiosrc0: Internal data flow error. Additional debug info: gstbasesrc.c(2865): gst_base_src_loop (): /GstPipeline:pipeline0/GstInterAudioSrc:interaudiosrc0: streaming task paused, reason not-negotiated (-4) Execution ended after 0:00:00.003154425 Setting pipeline to PAUSED ... Setting pipeline to READY ... 0:00:00.050654258 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:230:gst_inter_audio_src_stop:<interaudiosrc1> stop 0:00:00.050744092 4911 0xde4320 DEBUG interaudiosrc gstinteraudiosrc.c:230:gst_inter_audio_src_stop:<interaudiosrc0> stop Setting pipeline to NULL ... Freeing pipeline ... Notice that the problem doesn't always happen : it really looks like it's some kind of race condition.
*** Bug 752911 has been marked as a duplicate of this bug. ***
The solution to your problem is to add a capsfilter before each input pad of the adder or audiomxier to make sure all the pads get the same input. Auto-negotiation just can not work for this case.
Julien, does Olivier's suggestion help ?
Closing this bug report as no further information has been provided. Please feel free to reopen this bug report if you can provide the information that was asked for in a previous comment. Thanks!