00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "SimpleRTPSource.hh"
00024 #include <string.h>
00025
00026 SimpleRTPSource*
00027 SimpleRTPSource::createNew(UsageEnvironment& env,
00028 Groupsock* RTPgs,
00029 unsigned char rtpPayloadFormat,
00030 unsigned rtpTimestampFrequency,
00031 char const* mimeTypeString,
00032 unsigned offset, Boolean doNormalMBitRule) {
00033 return new SimpleRTPSource(env, RTPgs, rtpPayloadFormat,
00034 rtpTimestampFrequency,
00035 mimeTypeString, offset, doNormalMBitRule);
00036 }
00037
00038 SimpleRTPSource
00039 ::SimpleRTPSource(UsageEnvironment& env, Groupsock* RTPgs,
00040 unsigned char rtpPayloadFormat,
00041 unsigned rtpTimestampFrequency,
00042 char const* mimeTypeString,
00043 unsigned offset, Boolean doNormalMBitRule)
00044 : MultiFramedRTPSource(env, RTPgs,
00045 rtpPayloadFormat, rtpTimestampFrequency),
00046 fMIMEtypeString(strDup(mimeTypeString)), fOffset(offset) {
00047 fUseMBitForFrameEnd = doNormalMBitRule && strncmp(mimeTypeString, "audio/", 6) != 0;
00048 }
00049
00050 SimpleRTPSource::~SimpleRTPSource() {
00051 delete[] (char*)fMIMEtypeString;
00052 }
00053
00054 Boolean SimpleRTPSource
00055 ::processSpecialHeader(BufferedPacket* packet,
00056 unsigned& resultSpecialHeaderSize) {
00057 fCurrentPacketCompletesFrame
00058 = !fUseMBitForFrameEnd || packet->rtpMarkerBit();
00059
00060 resultSpecialHeaderSize = fOffset;
00061 return True;
00062 }
00063
00064 char const* SimpleRTPSource::MIMEtype() const {
00065 if (fMIMEtypeString == NULL) return MultiFramedRTPSource::MIMEtype();
00066
00067 return fMIMEtypeString;
00068 }