|
|
|
/***************************************************************************
|
|
|
|
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 <config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "../../src/include/plugins.h"
|
|
|
|
#include "../../src/include/soundformat.h"
|
|
|
|
#include "../../src/include/soundstreamclient_interfaces.h"
|
|
|
|
|
|
|
|
#include <tqobject.h>
|
|
|
|
#include <tqdict.h>
|
|
|
|
|
|
|
|
class StreamingJob;
|
|
|
|
|
|
|
|
class StreamingDevice : public TQObject,
|
|
|
|
public PluginBase,
|
|
|
|
public ISoundStreamClient
|
|
|
|
{
|
|
|
|
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 (TDEConfig *) const;
|
|
|
|
virtual void restoreState (TDEConfig *);
|
|
|
|
|
|
|
|
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<StreamingJob>
|
|
|
|
m_PlaybackChannels,
|
|
|
|
m_CaptureChannels;
|
|
|
|
|
|
|
|
TQMap<SoundStreamID, TQString>
|
|
|
|
m_AllPlaybackStreams,
|
|
|
|
m_AllCaptureStreams,
|
|
|
|
m_EnabledPlaybackStreams,
|
|
|
|
m_EnabledCaptureStreams;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|