appsrc -> opusparse -> opusdec getting stuck after audio pause

Robby Zampino robozman at gmail.com
Mon Apr 13 02:46:53 UTC 2020


Hello,

I'm currently using gstreamer to decode and playback opus audio that is
being received from the network (from a Mumble server). I'm currently only
working with one audio stream (one other user on the server). The pipeline
I'm currently using is setup as follows:
appsrc -> opusparse -> opusdec -> audiomixer -> autoaudiosink (which is
resolving to pulseaudio).

This pipeline initially decodes and outputs the opus audio data correctly.
The pipeline will function correctly as long as audio is sent continuously.
As soon as audio stops being received (the other user on the Mumble server
stops talking), the pipeline will not playback audio the next time the
other user starts speaking. Note that opus data is still being recieved
from the network and being pushed into the appsrc, it just never comes out
the other end of the pipeline

The only way I've found to fix this is to restart the entire pipeline
everytime there is a break in speech (set to NULL and then back to
PLAYING). This is not ideal as it causes some choppyness and I don't think
this will be possible once there are multiple people talking
simultaneously. The Mumble protocol encodes a "Termination bit" in the
audio packets so I am aware when the audio is stopping, but I'm not sure if
the problem is that I need to pass this information to the opus decoder,
that my opus decoder is just configured incorrectly, or something else that
I am overlooking entirely.

--
Thanks,
Robozman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20200412/5974a128/attachment.htm>


More information about the gstreamer-devel mailing list