/*************************************************************************** streaming.h - description ------------------- begin : Sun Sept 3 2006 copyright : (C) 2006 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_STREAMING_H #define _KRADIO_STREAMING_H #ifdef HAVE_CONFIG_H #include #endif #include "../../src/include/plugins.h" #include "../../src/include/soundformat.h" #include "../../src/include/soundstreamclient_interfaces.h" #include #include class StreamingJob; class StreamingDevice : public TQObject, public PluginBase, public ISoundStreamClient { Q_OBJECT TQ_OBJECT public: StreamingDevice (const TQString &name); virtual ~StreamingDevice (); virtual bool connectI(Interface *i); virtual bool disconnectI(Interface *i); bool getPlaybackStreamOptions(const TQString &channel, TQString &url, SoundFormat &sf, size_t &buffer_size) const; bool getCaptureStreamOptions (const TQString &channel, TQString &url, SoundFormat &sf, size_t &buffer_size) const; void resetPlaybackStreams(bool notification_enabled = true); void resetCaptureStreams(bool notification_enabled = true); void addPlaybackStream(const TQString &url, const SoundFormat &sf, size_t buffer_size, bool notification_enabled = true); void addCaptureStream (const TQString &url, const SoundFormat &sf, size_t buffer_size, bool notification_enabled = true); // PluginBase public: virtual void saveState (KConfig *) const; virtual void restoreState (KConfig *); virtual TQString pluginClassName() const { return "StreamingDevice"; } virtual const TQString &name() const { return PluginBase::name(); } virtual TQString &name() { return PluginBase::name(); } virtual ConfigPageInfo createConfigurationPage(); virtual AboutPageInfo createAboutPage(); // ISoundStreamClient: direct device access RECEIVERS: void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid); bool preparePlayback(SoundStreamID id, const TQString &channel, bool active_mode, bool start_immediately); bool prepareCapture(SoundStreamID id, const TQString &channel); bool releasePlayback(SoundStreamID id); bool releaseCapture(SoundStreamID id); ANSWERS: bool supportsPlayback() const; bool supportsCapture() const; TQString getSoundStreamClientDescription() const; // ISoundStreamClient: mixer access protected: ANSWERS: const TQStringList &getPlaybackChannels() const; const TQStringList &getCaptureChannels() const; // ISoundStreamClient: generic broadcasts RECEIVERS: bool startPlayback(SoundStreamID id); bool pausePlayback(SoundStreamID id); bool stopPlayback(SoundStreamID id); bool isPlaybackRunning(SoundStreamID id, bool &b) const; bool startCaptureWithFormat(SoundStreamID id, const SoundFormat &proposed_format, SoundFormat &real_format, bool force_format); bool stopCapture(SoundStreamID id); bool isCaptureRunning(SoundStreamID id, bool &b, SoundFormat &sf) const; bool noticeSoundStreamClosed(SoundStreamID id); bool noticeSoundStreamRedirected(SoundStreamID oldID, SoundStreamID newID); bool noticeReadyForPlaybackData(SoundStreamID id, size_t size); bool noticeSoundStreamData(SoundStreamID id, const SoundFormat &, const char *data, size_t size, size_t &consumed_size, const SoundMetaData &md ); public slots: void logStreamError(const KURL &url, const TQString &s); void logStreamWarning(const KURL &url, const TQString &s); signals: void sigUpdateConfig(); protected: TQStringList m_PlaybackChannelList, m_CaptureChannelList; TQDict m_PlaybackChannels, m_CaptureChannels; TQMap m_AllPlaybackStreams, m_AllCaptureStreams, m_EnabledPlaybackStreams, m_EnabledCaptureStreams; }; #endif