00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _SIMPLE_UDP_SINK_HH
00022 #define _SIMPLE_UDP_SINK_HH
00023
00024 #ifndef _MEDIA_SINK_HH
00025 #include "MediaSink.hh"
00026 #endif
00027 #ifndef _GROUPSOCK_HH
00028 #include <Groupsock.hh>
00029 #endif
00030
00031 class BasicUDPSink: public MediaSink {
00032 public:
00033 static BasicUDPSink* createNew(UsageEnvironment& env, Groupsock* gs,
00034 unsigned maxPayloadSize = 1450);
00035 protected:
00036 BasicUDPSink(UsageEnvironment& env, Groupsock* gs, unsigned maxPayloadSize);
00037
00038 virtual ~BasicUDPSink();
00039
00040 private:
00041 virtual Boolean continuePlaying();
00042
00043 private:
00044 void continuePlaying1();
00045
00046 static void afterGettingFrame(void* clientData, unsigned frameSize,
00047 unsigned numTruncatedBytes,
00048 struct timeval presentationTime,
00049 unsigned durationInMicroseconds);
00050 void afterGettingFrame1(unsigned frameSize, unsigned numTruncatedBytes,
00051 unsigned durationInMicroseconds);
00052
00053 static void sendNext(void* firstArg);
00054
00055 private:
00056 Groupsock* fGS;
00057 unsigned fMaxPayloadSize;
00058 unsigned char* fOutputBuffer;
00059 struct timeval fNextSendTime;
00060 };
00061
00062 #endif