00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "AC3AudioRTPSource.hh"
00022
00023 AC3AudioRTPSource*
00024 AC3AudioRTPSource::createNew(UsageEnvironment& env,
00025 Groupsock* RTPgs,
00026 unsigned char rtpPayloadFormat,
00027 unsigned rtpTimestampFrequency) {
00028 return new AC3AudioRTPSource(env, RTPgs, rtpPayloadFormat,
00029 rtpTimestampFrequency);
00030 }
00031
00032 AC3AudioRTPSource::AC3AudioRTPSource(UsageEnvironment& env,
00033 Groupsock* rtpGS,
00034 unsigned char rtpPayloadFormat,
00035 unsigned rtpTimestampFrequency)
00036 : MultiFramedRTPSource(env, rtpGS,
00037 rtpPayloadFormat, rtpTimestampFrequency) {
00038 }
00039
00040 AC3AudioRTPSource::~AC3AudioRTPSource() {
00041 }
00042
00043 Boolean AC3AudioRTPSource
00044 ::processSpecialHeader(BufferedPacket* packet,
00045 unsigned& resultSpecialHeaderSize) {
00046 unsigned char* headerStart = packet->data();
00047 unsigned packetSize = packet->dataSize();
00048
00049
00050 if (packetSize < 2) return False;
00051 resultSpecialHeaderSize = 2;
00052
00053 unsigned char FT = headerStart[0]&0x03;
00054 fCurrentPacketBeginsFrame = FT != 3;
00055
00056
00057
00058 fCurrentPacketCompletesFrame = packet->rtpMarkerBit() || FT == 0;
00059
00060 return True;
00061 }
00062
00063 char const* AC3AudioRTPSource::MIMEtype() const {
00064 return "audio/AC3";
00065 }
00066