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