This is an isolated example of a GStreamer audio issue that exists when using interaudio* elements.
- OS: NixOS 23.05.4076.8a4c17493e5c (Stoat) aarch64
- Kernel: 6.1.55
- CPU: Apple M1 Pro (Virt)
- Memory: 8.0GiB
- gst-launch-1.0 version: 1.22.5
- GStreamer: 1.22.5
clang main.c `pkg-config gstreamer-1.0 --libs --cflags`
Execute the program and start the client pipeline (below). You will hear the usual audiotestsrc test tone. Try to start the second pipeline by entering a character in the terminal where the test program is running. The test tone begins to skip and slightly changes its pitch.
GST_DEBUG=3 gst-launch-1.0 udpsrc port=5000 ! \
application/x-rtp,media=audio,encoding-name=OPUS,payload=96,clock-rate=48000 \
! rtpjitterbuffer ! rtpopusdepay ! opusdec ! audioconvert ! autoaudiosink
Note that when using tee instead of interaudio* everything works just as expected:
gst-launch-1.0 audiotestsrc is-live=true \
! audio/x-raw,format=S16LE,layout=interleaved,channels=2 \
! queue \
! tee name=t \
t. ! queue ! audioconvert ! audioresample ! opusenc ! rtpopuspay ! udpsink host=127.0.0.1 port=5000 \
t. ! queue ! audioconvert ! audioresample ! opusenc ! rtpopuspay ! udpsink host=127.0.0.1 port=5001
See main.py for a high-level demonstration.