This is getting frustrating. Seems that neither queue2
nor removing Mopidy’s fakesink help with Spotify (appsrc) playback when using the following pipeline:
output = tee name=t ! queue ! autoaudiosink t. ! queue ! lamemp3enc ! shout2send mount=mopidy ip=127.0.0.1 port=8000 password=hackme
The one thing that fixes that (and all other pipelines I’ve tried involving shout2send
, even without using gstreamer1.0-libav) is to set async=false
i.e.
output = tee name=t ! queue ! autoaudiosink t. ! queue ! lamemp3enc ! shout2send async=false mount=mopidy ip=127.0.0.1 port=8000 password=hackme
The “async” property can be used to instruct the sink to never perform an ASYNC state change. This feature is mostly usable when dealing with non-synchronized streams or sparse streams.
When async is disabled, the sink will immediately go to PAUSED instead of waiting for a preroll buffer. This feature is useful if the sink does not synchronize against the clock or when it is dealing with sparse streams.
It doesn’t change the data flow, but it tells the pipeline to ignore this sink for preroll/state-change purposes. This means that the pipeline will preroll even if that sink never receives any data.
I do not understand if the above is a problem, sounds OK to me. I’m coming full circle and just saying the shout2send element is a bit crap.