diff options
Diffstat (limited to 'tderadio3/plugins/timeshifter/timeshifter.h')
-rw-r--r-- | tderadio3/plugins/timeshifter/timeshifter.h | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/tderadio3/plugins/timeshifter/timeshifter.h b/tderadio3/plugins/timeshifter/timeshifter.h new file mode 100644 index 0000000..cada015 --- /dev/null +++ b/tderadio3/plugins/timeshifter/timeshifter.h @@ -0,0 +1,121 @@ +/*************************************************************************** + timeshifter.h - description + ------------------- + begin : May 16 2005 + copyright : (C) 2005 Ernst Martin Witte + email : [email protected] + ***************************************************************************/ + +/*************************************************************************** + * * + * 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_TIMESHIFTER_H +#define KRADIO_TIMESHIFTER_H + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "../../src/include/plugins.h" +#include "../../src/include/soundstreamclient_interfaces.h" +#include "../../src/include/fileringbuffer.h" + + +class TimeShifter : public TQObject, + public PluginBase, + public ISoundStreamClient +{ +Q_OBJECT + +public: + TimeShifter (const TQString &name); + virtual ~TimeShifter (); + + virtual bool connectI (Interface *); + virtual bool disconnectI (Interface *); + + virtual TQString pluginClassName() const { return "TimeShifter"; } + + virtual const TQString &name() const { return PluginBase::name(); } + virtual TQString &name() { return PluginBase::name(); } + + // config + + const TQString &getPlaybackMixer() const { return m_PlaybackMixerID; } + const TQString &getPlaybackMixerChannel() const { return m_PlaybackMixerChannel; } + const TQString &getTempFileName() const { return m_TempFileName; } + TQ_UINT64 getTempFileMaxSize() const { return m_TempFileMaxSize; } + + void setTempFile(const TQString &filename, TQ_UINT64 s); + bool setPlaybackMixer(const TQString &soundStreamClientID, const TQString &ch); + + // PluginBase + +public: + virtual void saveState (TDEConfig *) const; + virtual void restoreState (TDEConfig *); + + virtual ConfigPageInfo createConfigurationPage(); + virtual AboutPageInfo createAboutPage(); + +protected: + + ISoundStreamClient *searchPlaybackMixer(); + + size_t writeMetaDataToBuffer(const SoundMetaData &md, char *buffer, size_t buffer_size); + size_t readMetaDataFromBuffer(SoundMetaData &md, const char *buffer, size_t buffer_size); + void skipPacketInRingBuffer(); + + // SoundStreamClient + void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid); + + bool startCaptureWithFormat(SoundStreamID id, + const SoundFormat &proposed_format, + SoundFormat &real_format, + bool force_format); + bool stopCapture(SoundStreamID id); + bool noticeSoundStreamClosed(SoundStreamID id); + bool startPlayback(SoundStreamID id); + bool stopPlayback(SoundStreamID id); + bool pausePlayback(SoundStreamID id); + bool noticeSoundStreamData(SoundStreamID id, const SoundFormat &sf, const char *data, size_t size, size_t &consumed_size, const SoundMetaData &md); + bool noticeReadyForPlaybackData(SoundStreamID id, size_t size); + + bool getSoundStreamDescription(SoundStreamID id, TQString &descr) const; + + // FIXME: react on redirect request + +signals: + + void sigUpdateConfig(); + +protected: + + TQString m_TempFileName; + size_t m_TempFileMaxSize; + SoundFormat m_SoundFormat; + SoundFormat m_realSoundFormat; + + TQString m_PlaybackMixerID; + TQString m_PlaybackMixerChannel; + + TQString m_StreamFile; + bool m_StreamPaused; + SoundStreamID m_OrgStreamID; + SoundStreamID m_NewStreamID; + SoundFormat m_RealSoundFormat; + float m_orgVolume; + + SoundMetaData m_PlaybackMetaData; + size_t m_PlaybackDataLeftInBuffer; + + FileRingBuffer m_RingBuffer; +}; + +#endif |