00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _SIMPLE_RTP_SINK_HH
00023 #define _SIMPLE_RTP_SINK_HH
00024
00025 #ifndef _MULTI_FRAMED_RTP_SINK_HH
00026 #include "MultiFramedRTPSink.hh"
00027 #endif
00028
00029 class SimpleRTPSink: public MultiFramedRTPSink {
00030 public:
00031 static SimpleRTPSink*
00032 createNew(UsageEnvironment& env, Groupsock* RTPgs,
00033 unsigned char rtpPayloadFormat,
00034 unsigned rtpTimestampFrequency,
00035 char const* sdpMediaTypeString,
00036 char const* rtpPayloadFormatName,
00037 unsigned numChannels = 1,
00038 Boolean allowMultipleFramesPerPacket = True,
00039 Boolean doNormalMBitRule = True);
00040
00041
00042
00043 protected:
00044 SimpleRTPSink(UsageEnvironment& env, Groupsock* RTPgs,
00045 unsigned char rtpPayloadFormat,
00046 unsigned rtpTimestampFrequency,
00047 char const* sdpMediaTypeString,
00048 char const* rtpPayloadFormatName,
00049 unsigned numChannels,
00050 Boolean allowMultipleFramesPerPacket,
00051 Boolean doNormalMBitRule);
00052
00053
00054 virtual ~SimpleRTPSink();
00055
00056 protected:
00057 virtual void doSpecialFrameHandling(unsigned fragmentationOffset,
00058 unsigned char* frameStart,
00059 unsigned numBytesInFrame,
00060 struct timeval frameTimestamp,
00061 unsigned numRemainingBytes);
00062 virtual
00063 Boolean frameCanAppearAfterPacketStart(unsigned char const* frameStart,
00064 unsigned numBytesInFrame) const;
00065 virtual char const* sdpMediaType() const;
00066
00067 private:
00068 char const* fSDPMediaTypeString;
00069 Boolean fAllowMultipleFramesPerPacket;
00070 Boolean fSetMBitOnLastFrames;
00071 };
00072
00073 #endif