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
00048 = strncmp(mimeTypeString, "video/", 6) == 0 && doNormalMBitRule;
00049 }
00050
00051 SimpleRTPSource::~SimpleRTPSource() {
00052 delete[] (char*)fMIMEtypeString;
00053 }
00054
00055 Boolean SimpleRTPSource
00056 ::processSpecialHeader(BufferedPacket* packet,
00057 unsigned& resultSpecialHeaderSize) {
00058 fCurrentPacketCompletesFrame
00059 = !fUseMBitForFrameEnd || packet->rtpMarkerBit();
00060
00061 resultSpecialHeaderSize = fOffset;
00062 return True;
00063 }
00064
00065 char const* SimpleRTPSource::MIMEtype() const {
00066 if (fMIMEtypeString == NULL) return MultiFramedRTPSource::MIMEtype();
00067
00068 return fMIMEtypeString;
00069 }