diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-22 18:23:26 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-22 18:23:26 +0000 |
commit | ae364d9bed0589bf1a22cd5f530c563462379e3e (patch) | |
tree | e32727e2664e7ce68d0d30270afa040320ae35a1 /kradio3/plugins/recording/recording.h | |
download | tderadio-ae364d9bed0589bf1a22cd5f530c563462379e3e.tar.gz tderadio-ae364d9bed0589bf1a22cd5f530c563462379e3e.zip |
Added old KDE3 version of kradio
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kradio@1094417 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kradio3/plugins/recording/recording.h')
-rw-r--r-- | kradio3/plugins/recording/recording.h | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/kradio3/plugins/recording/recording.h b/kradio3/plugins/recording/recording.h new file mode 100644 index 0000000..bef3a3a --- /dev/null +++ b/kradio3/plugins/recording/recording.h @@ -0,0 +1,148 @@ +/*************************************************************************** + recording.h - description + ------------------- + begin : Mi Aug 27 2003 + copyright : (C) 2003 by Martin Witte + email : witte@kawo1.rwth-aachen.de + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#ifndef KRADIO_RECORDING_H +#define KRADIO_RECORDING_H + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + + +#include <qobject.h> +#include <qstring.h> +#include <qmap.h> + +#include "../../src/include/plugins.h" +#include "../../src/include/timecontrol_interfaces.h" +#include "../../src/include/soundstreamclient_interfaces.h" + +#include "recording-config.h" +#include "reccfg_interfaces.h" +#include "encoder.h" + +class RadioStation; +class StationList; +class QSocketNotifier; +class RecordingEncoding; +class FileRingBuffer; + +class Recording : public QObject, + public PluginBase, + public ISoundStreamClient, + public IRecCfg +{ +Q_OBJECT +public: + Recording(const QString &name); + ~Recording(); + + virtual QString pluginClassName() const { return "Recording"; } + + virtual const QString &name() const { return PluginBase::name(); } + virtual QString &name() { return PluginBase::name(); } + + virtual bool connectI(Interface *i); + virtual bool disconnectI(Interface *i); + + + bool isRecording () const; + + + // PluginBase + +public: + virtual void saveState (KConfig *) const; + virtual void restoreState (KConfig *); + + virtual ConfigPageInfo createConfigurationPage(); + virtual AboutPageInfo createAboutPage(); + +protected: + +// IRecCfg + + bool setEncoderBuffer (size_t BufferSize, size_t BufferCount); + bool setSoundFormat (const SoundFormat &sf); + bool setMP3Quality (int q); + bool setOggQuality (float q); + bool setRecordingDirectory(const QString &dir); + bool setOutputFormat (RecordingConfig::OutputFormat of); + bool setPreRecording (bool enable, int seconds); + bool setRecordingConfig (const RecordingConfig &cfg); + + void getEncoderBuffer(size_t &BufferSize, size_t &BufferCount) const; + const SoundFormat &getSoundFormat () const; + int getMP3Quality () const; + float getOggQuality () const; + const QString &getRecordingDirectory() const; + RecordingConfig::OutputFormat getOutputFormat() const; + bool getPreRecording(int &seconds) const; + const RecordingConfig &getRecordingConfig() const; + +// ISoundStreamClient + + void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid); + + bool startPlayback(SoundStreamID id); + bool stopPlayback(SoundStreamID id); + + bool startRecording(SoundStreamID id); + bool startRecordingWithFormat(SoundStreamID id, const SoundFormat &sf, SoundFormat &real_format); + bool noticeSoundStreamData(SoundStreamID id, const SoundFormat &sf, const char *data, size_t size, size_t &consumed_size, const SoundMetaData &md); + bool stopRecording(SoundStreamID id); + bool isRecordingRunning(SoundStreamID id, bool &b, SoundFormat &sf) const; + + bool getSoundStreamDescription(SoundStreamID id, QString &descr) const; + bool getSoundStreamRadioStation(SoundStreamID id, const RadioStation *&rs) const; + + bool noticeSoundStreamClosed(SoundStreamID id); + bool noticeSoundStreamChanged(SoundStreamID id); + + bool enumerateSoundStreams(QMap<QString, SoundStreamID> &list) const; + +protected slots: + + bool event(QEvent *e); + +protected: + + bool startEncoder(SoundStreamID ssid, const RecordingConfig &cfg); + void stopEncoder(SoundStreamID ssid); + +protected: + + RecordingConfig m_config; + QMap<SoundStreamID, FileRingBuffer*> m_PreRecordingBuffers; + + QMap<SoundStreamID, RecordingEncoding*> m_EncodingThreads; + QMap<SoundStreamID, SoundStreamID> m_RawStreams2EncodedStreams; + QMap<SoundStreamID, SoundStreamID> m_EncodedStreams2RawStreams; +}; + +/* PreRecording Notes: listen for startplayback, stopplayback, closestream + manage map streamid => buffer + set each started stream into capture mode + put data into ringbuffers + on capture start, feed everything into the encoder buffer, + if encoderbuffer < prerecbuffer => + put as much as possible into encoder + put new audio data into ring buffer + +*/ + +#endif |