summaryrefslogtreecommitdiffstats
path: root/radio_output.h
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2017-04-02 12:49:28 -0400
committerScott Murray <scott.murray@konsulko.com>2017-04-10 09:21:36 -0400
commitaeb67506173a7b8cef089fa725c3abe1f629dc67 (patch)
treeef427cbebb92d873d9a2903445c32320ab20c8eb /radio_output.h
parenta30670cd12e03dc874d2f22c48f497817c78ecdc (diff)
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 <scott.murray@konsulko.com>
Diffstat (limited to 'radio_output.h')
-rw-r--r--radio_output.h75
1 files changed, 0 insertions, 75 deletions
diff --git a/radio_output.h b/radio_output.h
deleted file mode 100644
index 5051101..0000000
--- a/radio_output.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * A standalone AM/FM Radio QML plugin (for RTL2832U and Maxim hardware)
- * Copyright © 2015-2016 Manuel Bachmann <manuel.bachmann@iot.bzh>
- * Copyright © 2016 Scott Murray <scott.murray@konsulko.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef RADIO_OUTPUT_H
-#define RADIO_OUTPUT_H
-
-#include <alsa/asoundlib.h>
-
-#include <pulse/simple.h>
-#include <pulse/error.h>
-
- /*
- * RadioOutputImplementation is a virtual class, with 2 implementations :
- * - RadioOutputAlsa ;
- * - RadioOutputPulse ;
- */
-class RadioOutputImplementation
-{
-public:
- RadioOutputImplementation() {};
- virtual ~RadioOutputImplementation() {};
-
- virtual bool play(void*, int) = 0;
-
- bool works;
-};
-
-
-class RadioOutputAlsa : public RadioOutputImplementation
-{
-public:
- RadioOutputAlsa();
- ~RadioOutputAlsa() override;
-
-private:
- bool play(void *, int) override;
-
- snd_pcm_t *dev;
- snd_pcm_hw_params_t *hw_params;
-};
-
-class RadioOutputPulse : public RadioOutputImplementation
-{
-public:
- RadioOutputPulse();
- ~RadioOutputPulse() override;
-
-private:
- bool play(void *, int) override;
-
- pa_simple *pa;
- pa_sample_spec *pa_spec;
-
- unsigned int extra;
- int16_t extra_buf[1];
- unsigned char *output_buf;
-};
-
-#endif // RTLSDR_RADIO_H