/* Blinker
Copyright 2011 Stefan Schuermans <stefan@blinkenarea.org>
Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
a blinkenarea.org project */
#ifndef STREAM_H
#define STREAM_H
#include <set>
#include <BlinkenLib/BlinkenFrame.h>
#include "StreamRecv.h"
namespace Blinker {
/// a video stream
class Stream: public StreamRecv
{
protected:
/// set of receivers of this stream
typedef std::set<StreamRecv *> Recvs;
public:
/// constructor
Stream();
/// virtual destructor
virtual ~Stream();
public:
/**
* @brief attach a stream receiver
* @param[in] recv stream receiver to attach
*/
void attach(StreamRecv *recv);
/**
* @brief detach a stream receiver
* @param[in] recv stream receiver to detach
*/
void detach(StreamRecv *recv);
/**
* @brief set current frame
* @param[in] pFrame current frame
*/
virtual void setFrame(stBlinkenFrame *pFrame);
/// set current frame to none
virtual void setNoFrame();