1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
/***************************************************************************
streaming.h - description
-------------------
begin : Sun Sept 3 2006
copyright : (C) 2006 by Martin Witte
email : emw-kradio@nocabal.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 <config.h>
#endif
#include "pluginbase.h"
#include "soundformat.h"
#include "soundstreamclient_interfaces.h"
#include <QtCore/QObject>
#include <QtCore/QMap>
#include <QtCore/QStringList>
class StreamingJob;
class StreamingDevice : public QObject,
public PluginBase,
public ISoundStreamClient
{
Q_OBJECT
public:
StreamingDevice (const QString &instanceID, const QString &name);
virtual ~StreamingDevice ();
virtual bool connectI(Interface *i);
virtual bool disconnectI(Interface *i);
bool getPlaybackStreamOptions(const QString &channel, KUrl &url, SoundFormat &sf, size_t &buffer_size) const;
bool getCaptureStreamOptions (const QString &channel, KUrl &url, SoundFormat &sf, size_t &buffer_size) const;
void resetPlaybackStreams(bool notification_enabled = true);
void resetCaptureStreams(bool notification_enabled = true);
void addPlaybackStream(const KUrl &url, const SoundFormat &sf, size_t buffer_size, bool notification_enabled = true);
void addCaptureStream (const KUrl &url, const SoundFormat &sf, size_t buffer_size, bool notification_enabled = true);
// PluginBase
public:
virtual void saveState ( KConfigGroup &) const;
virtual void restoreState(const KConfigGroup &);
virtual QString pluginClassName() const { return "StreamingDevice"; }
// virtual const QString &name() const { return PluginBase::name(); }
// virtual QString &name() { return PluginBase::name(); }
virtual void setName(const QString &n);
virtual ConfigPageInfo createConfigurationPage();
// virtual AboutPageInfo createAboutPage();
// ISoundStreamClient: direct device access
RECEIVERS:
void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
INLINE_IMPL_DEF_noticeConnectedI (IErrorLogClient);
bool preparePlayback(SoundStreamID id, const QString &channel, bool active_mode, bool start_immediately);
bool prepareCapture(SoundStreamID id, const QString &channel);
bool releasePlayback(SoundStreamID id);
bool releaseCapture(SoundStreamID id);
ANSWERS:
bool supportsPlayback() const;
bool supportsCapture() const;
QString getSoundStreamClientDescription() const;
// ISoundStreamClient: mixer access
protected:
ANSWERS:
const QStringList &getPlaybackChannels() const;
const QStringList &getCaptureChannels() const;
// ISoundStreamClient: generic broadcasts
RECEIVERS:
bool startPlayback(SoundStreamID id);
bool pausePlayback(SoundStreamID id);
bool resumePlayback(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 noticeSoundStreamSourceRedirected(SoundStreamID oldID, SoundStreamID newID);
bool noticeSoundStreamSinkRedirected(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 QString &s);
void logStreamWarning(const KUrl &url, const QString &s);
void logStreamInfo (const KUrl &url, const QString &s);
void logStreamDebug (const KUrl &url, const QString &s);
signals:
void sigUpdateConfig();
protected:
QStringList m_PlaybackChannelStringList,
m_CaptureChannelStringList;
QList<KUrl> m_PlaybackChannelList,
m_CaptureChannelList;
QMap<KUrl, StreamingJob*>
m_PlaybackChannelJobs,
m_CaptureChannelJobs;
QMap<SoundStreamID, QString>
m_AllPlaybackStreams,
m_AllCaptureStreams,
m_EnabledPlaybackStreams,
m_EnabledCaptureStreams;
};
#endif
|