#include <UDPVideoStreamSvr.h>
Classes | |
| struct | VideoStreamData |
Public Member Functions | |
| UDPVideoStreamSvr () | |
| virtual | ~UDPVideoStreamSvr () |
Protected Types | |
| typedef std::vector < VideoStreamData * > | VideoStreamVector |
Protected Member Functions | |
| virtual void | processStreamRequest (cMessage *msg) |
| virtual void | sendStreamData (cMessage *timer) |
Overidden cSimpleModule functions | |
| virtual void | initialize () |
| virtual void | finish () |
| virtual void | handleMessage (cMessage *msg) |
Protected Attributes | |
| VideoStreamVector | streamVector |
| int | serverPort |
| cPar * | waitInterval |
| cPar * | packetLen |
| cPar * | videoSize |
| unsigned int | numStreams |
| unsigned long | numPkSent |
Stream VBR video streams to clients.
Cooperates with UDPVideoStreamCli. UDPVideoStreamCli requests a stream and UDPVideoStreamSvr starts streaming to them. Capable of handling streaming to multiple clients.
Definition at line 38 of file UDPVideoStreamSvr.h.
typedef std::vector<VideoStreamData *> UDPVideoStreamSvr::VideoStreamVector [protected] |
Definition at line 54 of file UDPVideoStreamSvr.h.
| UDPVideoStreamSvr::UDPVideoStreamSvr | ( | ) |
Definition at line 36 of file UDPVideoStreamSvr.cc.
{
}
| UDPVideoStreamSvr::~UDPVideoStreamSvr | ( | ) | [virtual] |
Definition at line 40 of file UDPVideoStreamSvr.cc.
{
for (unsigned int i=0; i<streamVector.size(); i++)
delete streamVector[i];
}
| void UDPVideoStreamSvr::finish | ( | ) | [protected, virtual] |
Definition at line 61 of file UDPVideoStreamSvr.cc.
{
recordScalar("streams served", numStreams);
recordScalar("packets sent", numPkSent);
}
| void UDPVideoStreamSvr::handleMessage | ( | cMessage * | msg | ) | [protected, virtual] |
Definition at line 67 of file UDPVideoStreamSvr.cc.
{
if (msg->isSelfMessage())
{
// timer for a particular video stream expired, send packet
sendStreamData(msg);
}
else
{
// start streaming
processStreamRequest(msg);
}
}
| void UDPVideoStreamSvr::initialize | ( | ) | [protected, virtual] |
Definition at line 46 of file UDPVideoStreamSvr.cc.
{
waitInterval = &par("waitInterval");
packetLen = &par("packetLen");
videoSize = &par("videoSize");
serverPort = par("serverPort");
numStreams = 0;
numPkSent = 0;
WATCH_PTRVECTOR(streamVector);
bindToPort(serverPort);
}
| void UDPVideoStreamSvr::processStreamRequest | ( | cMessage * | msg | ) | [protected, virtual] |
Definition at line 82 of file UDPVideoStreamSvr.cc.
Referenced by handleMessage().
{
// register video stream...
UDPControlInfo *ctrl = check_and_cast<UDPControlInfo *>(msg->getControlInfo());
VideoStreamData *d = new VideoStreamData;
d->clientAddr = ctrl->getSrcAddr();
d->clientPort = ctrl->getSrcPort();
d->videoSize = (*videoSize);
d->bytesLeft = d->videoSize;
d->numPkSent = 0;
streamVector.push_back(d);
cMessage *timer = new cMessage("VideoStreamTmr");
timer->setContextPointer(d);
// ... then transmit first packet right away
sendStreamData(timer);
numStreams++;
}
| void UDPVideoStreamSvr::sendStreamData | ( | cMessage * | timer | ) | [protected, virtual] |
Definition at line 105 of file UDPVideoStreamSvr.cc.
Referenced by handleMessage(), and processStreamRequest().
{
VideoStreamData *d = (VideoStreamData *) timer->getContextPointer();
// generate and send a packet
cPacket *pkt = new cPacket("VideoStrmPk");
long pktLen = packetLen->longValue();
if (pktLen > d->bytesLeft)
pktLen = d->bytesLeft;
pkt->setByteLength(pktLen);
sendToUDP(pkt, serverPort, d->clientAddr, d->clientPort);
d->bytesLeft -= pktLen;
d->numPkSent++;
numPkSent++;
// reschedule timer if there's bytes left to send
if (d->bytesLeft!=0)
{
simtime_t interval = (*waitInterval);
scheduleAt(simTime()+interval, timer);
}
else
{
delete timer;
// TBD find VideoStreamData in streamVector and delete it
}
}
unsigned long UDPVideoStreamSvr::numPkSent [protected] |
Definition at line 65 of file UDPVideoStreamSvr.h.
Referenced by finish(), initialize(), and sendStreamData().
unsigned int UDPVideoStreamSvr::numStreams [protected] |
Definition at line 64 of file UDPVideoStreamSvr.h.
Referenced by finish(), initialize(), and processStreamRequest().
cPar* UDPVideoStreamSvr::packetLen [protected] |
Definition at line 60 of file UDPVideoStreamSvr.h.
Referenced by initialize(), and sendStreamData().
int UDPVideoStreamSvr::serverPort [protected] |
Definition at line 58 of file UDPVideoStreamSvr.h.
Referenced by initialize(), and sendStreamData().
VideoStreamVector UDPVideoStreamSvr::streamVector [protected] |
Definition at line 55 of file UDPVideoStreamSvr.h.
Referenced by initialize(), processStreamRequest(), and ~UDPVideoStreamSvr().
cPar* UDPVideoStreamSvr::videoSize [protected] |
Definition at line 61 of file UDPVideoStreamSvr.h.
Referenced by initialize().
cPar* UDPVideoStreamSvr::waitInterval [protected] |
Definition at line 59 of file UDPVideoStreamSvr.h.
Referenced by initialize().
1.7.1