diff options
Diffstat (limited to 'radio_output.h')
-rw-r--r-- | radio_output.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/radio_output.h b/radio_output.h new file mode 100644 index 0000000..5051101 --- /dev/null +++ b/radio_output.h @@ -0,0 +1,75 @@ +/* + * 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 |