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_SOURCE_HH
00022 #define _MPEG4_GENERIC_RTP_SOURCE_HH
00023
00024 #ifndef _MULTI_FRAMED_RTP_SOURCE_HH
00025 #include "MultiFramedRTPSource.hh"
00026 #endif
00027
00028 #define SPECIAL_HEADER_BUFFER_SIZE 1000
00029
00030 class MPEG4GenericRTPSource: public MultiFramedRTPSource {
00031 public:
00032 static MPEG4GenericRTPSource*
00033 createNew(UsageEnvironment& env, Groupsock* RTPgs,
00034 unsigned char rtpPayloadFormat,
00035 unsigned rtpTimestampFrequency,
00036 char const* mediumName,
00037 char const* mode, unsigned sizeLength, unsigned indexLength,
00038 unsigned indexDeltaLength
00039
00040 );
00041
00042
00043
00044 protected:
00045 virtual ~MPEG4GenericRTPSource();
00046
00047 private:
00048 MPEG4GenericRTPSource(UsageEnvironment& env, Groupsock* RTPgs,
00049 unsigned char rtpPayloadFormat,
00050 unsigned rtpTimestampFrequency,
00051 char const* mediumName,
00052 char const* mode,
00053 unsigned sizeLength, unsigned indexLength,
00054 unsigned indexDeltaLength
00055 );
00056
00057
00058 private:
00059
00060 virtual Boolean processSpecialHeader(BufferedPacket* packet,
00061 unsigned& resultSpecialHeaderSize);
00062 virtual char const* MIMEtype() const;
00063
00064 private:
00065 char* fMIMEType;
00066
00067 char* fMode;
00068 unsigned fSizeLength, fIndexLength, fIndexDeltaLength;
00069 unsigned fNumAUHeaders;
00070 unsigned fNextAUHeader;
00071 struct AUHeader* fAUHeaders;
00072
00073 friend class MPEG4GenericBufferedPacket;
00074 };
00075
00076
00077
00078
00079
00080 unsigned samplingFrequencyFromAudioSpecificConfig(char const* configStr);
00081
00082 #endif