From aeb67506173a7b8cef089fa725c3abe1f629dc67 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sun, 2 Apr 2017 12:49:28 -0400 Subject: Switch to using Qt's QAudioOutput for output The underlying issue in the hang reported in SPEC-455 is that due to the synchronous nature of the pa_simple_* PulseAudio API, the pa_simple_write call used blocks when a stream is corked . That prevents the tuner plugin's output thread from exiting when playback is stopped, resulting in the observed hang. After examining the available options, it seemed like switching to Qt's QAudioOutput class made sense since it allows using the asynchronous PulseAudio API easily, and like the QRadio class the tuner plugin implements, it is part of QtMultimedia itself. Note that the radio_output.* files have been removed as the code is no longer used, and a new pair of OutputBuffer source files have been added to contain the small class that is used to connect the RTL-SDR output to QAudioOutput. Bug-AGL: SPEC-455 Change-Id: I0d690143b9c70fdca24f9fbf3b016feef8ae627b Signed-off-by: Scott Murray --- rtlfmradio.pro | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'rtlfmradio.pro') diff --git a/rtlfmradio.pro b/rtlfmradio.pro index 5824ec7..200984e 100644 --- a/rtlfmradio.pro +++ b/rtlfmradio.pro @@ -1,11 +1,11 @@ TEMPLATE = lib CONFIG += plugin c++11 link_pkgconfig -PKGCONFIG += librtlsdr libpulse-simple alsa +PKGCONFIG += librtlsdr TARGET = rtlfmradio QT = multimedia -HEADERS = rtlfmradioplugin.h rtlfmradioservice.h rtlfmradiotunercontrol.h radio_output.h rtl_fm.h convenience/convenience.h -SOURCES = rtlfmradioplugin.cpp rtlfmradioservice.cpp rtlfmradiotunercontrol.cpp radio_output.cpp rtl_fm.c convenience/convenience.c +HEADERS = rtlfmradioplugin.h rtlfmradioservice.h rtlfmradiotunercontrol.h OutputBuffer.h rtl_fm.h convenience/convenience.h +SOURCES = rtlfmradioplugin.cpp rtlfmradioservice.cpp rtlfmradiotunercontrol.cpp OutputBuffer.cpp rtl_fm.c convenience/convenience.c DISTFILES += rtlfmradio.json target.path = $$[QT_INSTALL_PLUGINS]/mediaservice -- cgit 1.2.3-korg