shout2send: non-blocking I/O usage in libshout has had breaking changes
Trying to use the shout2send
plugin with gst-plugins-base 1.18.3-1 on Arch: https://archlinux.org/packages/extra/x86_64/gst-plugins-good/
Which links libshout-2.4.5
: https://archlinux.org/packages/extra/x86_64/libshout/
Attempting to connect to a local Icecast server with the following:
$ docker run -d --name icecast -p 9001:8000 --restart=always infiniteproject/icecast
$ gst-launch-1.0 -m -v audiotestsrc wave=ticks ! audiomixer ! opusenc ! oggmux ! \
shout2send mount='foo.ogg' port=9001 ip=localhost password=hackme username=source
I get this error message on the bus and gst-launch quits:
Got message #68 from element "shout2send0" (error): GstMessageError, gerror=(GError)NULL, debug=(string)"../gst-plugins-good/ext/shout2/gstshout2.c\(635\):\ gst_shout2send_connect\ \(\):\ /GstPipeline:pipeline0/GstShout2send:shout2send0:\012shout_open\(\)\ failed:\ err\=Please\ retry\ current\ operation.";
This seems to be related to the following issue: https://gitlab.xiph.org/xiph/icecast-libshout/-/issues/2316
However, as mentioned in the issue above, it's not clear whether libshout
should be handling the SHOUTERR_RETRY
error code internally or not. Additionally, this other issue seems to suggest that it's not possible to correctly handle this code outside libshout
, at least when returned from shout_open()
: https://gitlab.xiph.org/xiph/icecast-libshout/-/issues/2325