On Thu, Mar 12 2020, Nam Nguyen <[email protected]> wrote:
> Rafael Sadowski writes:
>
>> Fixed that issue and also added jack as a dependency.
>
> Here is a diff for audio/mumble that:
> - Removes jack.
> - Returns to portaudio-svn by bringing back a reduced patch from the
> attic.
>
> The patch is reduced because data collection is opt-in during audio
> wizard setup, the protobuf fix was added upstream, and text-to-speech
> does not work anyways. Audio wizard still crashes without this patch
> (https://github.com/mumble-voip/mumble/issues/1138).
>
> I tested for several hours tonight, and it seems much more stable. I did
> manage to crash it once when setting input shortcuts.
>
> I see that jakemsr@ wrote the sndio backend for jack, which was added
> upstream to jack. I propose keeping portaudio until sndio itself is
> added or the sndio backend for jack is fixed. The drawback is that this
> pull request mentions that PortAudio is "practically unmaintained."
>
> WIP sndio (2016): https://github.com/mumble-voip/mumble/pull/2676
>
> Feedback and tests are welcome.
Committed, thanks. jack output proved itself unreliable after a few
minutes of testing. I have also added a debug-mumble package since
I hit a crash I could not reproduce.
> Bug report:
>
> After 5-10 minutes mumble becomes unresponsive to my push-to-talk key
> and fails to receive audio from other users. Then I have to restart
> mumble and sndiod. It is hard to reproduce, but I managed to find a way
> that involves restarting mumble repeatedly. It usually triggers within
> 10 starts of mumble.
>
> 1. restart sndiod
> /etc/rc.d/sndiod restart
> 2. Start jackd: jackd -d sndio
> 3. Use mpv and youtube-dl on a youtube video
> 4. Start mumble
> 5. Keep restarting mumble until you see
> - mumble: "zombified - calling shutdown handler"
Spotted on my 2nd mumble run, no standalone jackd running, no need for
another program like mpv using sndiod.
> - jackd: "subgraph starting at mumble timed out (subgraph_wait_fd=9,
> status = 0, state = Running, pollret = 0 revents = 0x0)"
> 6. Once you see zombified, connect to a mumble server and try to input
> voice. It will not register the input.
>
> I also sometimes get in the jackd log:
> sndio_driver: poll() error: sndio_driver.c@422
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/audio/mumble/Makefile,v
> retrieving revision 1.37
> diff -u -p -r1.37 Makefile
> --- Makefile 6 Mar 2020 12:00:09 -0000 1.37
> +++ Makefile 12 Mar 2020 07:21:18 -0000
> @@ -3,6 +3,7 @@
> COMMENT = low-latency voice chat client
>
> DISTNAME = mumble-1.3.0
> +REVISION = 0
>
> CATEGORIES = audio
>
> @@ -15,8 +16,8 @@ EXTRACT_SUFX = .zip
> PERMIT_PACKAGE = Yes
>
> WANTLIB += ${COMPILER_LIBCXX} GL Qt5Core Qt5DBus Qt5Gui Qt5Network
> -WANTLIB += Qt5Sql Qt5Svg Qt5Widgets Qt5Xml X11 Xi c crypto jack
> -WANTLIB += m opus protobuf sndfile speex speexdsp ssl
> +WANTLIB += Qt5Sql Qt5Svg Qt5Widgets Qt5Xml X11 Xi c crypto
> +WANTLIB += m opus portaudio protobuf sndfile speex speexdsp ssl
>
> MODULES = devel/qmake x11/qt5
> SEPARATE_BUILD = No
> @@ -26,7 +27,7 @@ BUILD_DEPENDS = audio/celt07 \
>
> LIB_DEPENDS = audio/libsndfile>=1.0.25p0 \
> audio/opus \
> - audio/jack \
> + audio/portaudio-svn \
> audio/speex \
> devel/protobuf \
> x11/qt5/qtsvg
> @@ -49,6 +50,7 @@ MODQMAKE_ARGS = MUMBLE_PREFIX=${PREFIX}
> CONFIG+=no-crash-report \
> CONFIG+=no-embed-qt-translations \
> CONFIG+=no-g15 \
> + CONFIG+=no-jackaudio \
> CONFIG+=no-oss \
> CONFIG+=no-overlay \
> CONFIG+=no-pulseaudio \
> @@ -56,6 +58,7 @@ MODQMAKE_ARGS = MUMBLE_PREFIX=${PREFIX}
> CONFIG+=no-speechd \
> CONFIG+=no-update \
> CONFIG+=packaged \
> + CONFIG+=portaudio \
> CONFIG+=release \
> DEFINES+="LOCALE_PATH=${PREFIX}/share/mumble/locale" \
> DEFINES+="PLUGIN_PATH=${PREFIX}/lib/mumble"
> Index: patches/patch-src_mumble_AudioWizard_cpp
> ===================================================================
> RCS file: patches/patch-src_mumble_AudioWizard_cpp
> diff -N patches/patch-src_mumble_AudioWizard_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_mumble_AudioWizard_cpp 12 Mar 2020 07:21:18 -0000
> @@ -0,0 +1,25 @@
> +$OpenBSD: patch-src_mumble_AudioWizard_cpp,v 1.3 2019/08/05 17:42:40 sthen
> Exp $
> +
> +There's a convoluted threading issue: in PAAudio.cpp, around line 338,
> +it will get caught in an infinite loop. It relies on the PortAudioInput
> +object being destroyed in another thread, thereby setting bRunning to
> +false and telling it to exit the loop, which will never happen. Luckily,
> +this bug is only exposed by the AudioWizard configuration stuff. So,
> +skip calling restartAudio() from on_qsOutputDelay_valueChanged() while
> +the AudioWizard is starting up
> +
> +https://github.com/mumble-voip/mumble/issues/1138
> +
> +Index: src/mumble/AudioWizard.cpp
> +--- src/mumble/AudioWizard.cpp.orig
> ++++ src/mumble/AudioWizard.cpp
> +@@ -292,7 +292,8 @@ void AudioWizard::on_qcbOutputDevice_activated(int) {
> + void AudioWizard::on_qsOutputDelay_valueChanged(int v) {
> + qlOutputDelay->setText(tr("%1 ms").arg(v*10));
> + g.s.iOutputDelay = v;
> +- restartAudio();
> ++ if (! bInit)
> ++ restartAudio();
> + }
> +
> + void AudioWizard::on_qsMaxAmp_valueChanged(int v) {
>
--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE