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