00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00037 #ifndef RTPSESSIONSOURCES_H
00038
00039 #define RTPSESSIONSOURCES_H
00040
00041 #include "rtpconfig.h"
00042 #include "rtpsources.h"
00043
00044 class RTPSession;
00045
00046 class RTPSessionSources : public RTPSources
00047 {
00048 public:
00049 RTPSessionSources(RTPSession &sess,RTPMemoryManager *mgr) : RTPSources(RTPSources::ProbationStore,mgr),rtpsession(sess)
00050 { owncollision = false; }
00051 ~RTPSessionSources() { }
00052 void ClearOwnCollisionFlag() { owncollision = false; }
00053 bool DetectedOwnCollision() const { return owncollision; }
00054 private:
00055 void OnRTPPacket(RTPPacket *pack,const RTPTime &receivetime,
00056 const RTPAddress *senderaddress);
00057 void OnRTCPCompoundPacket(RTCPCompoundPacket *pack,const RTPTime &receivetime,
00058 const RTPAddress *senderaddress);
00059 void OnSSRCCollision(RTPSourceData *srcdat,const RTPAddress *senderaddress,bool isrtp);
00060 void OnCNAMECollision(RTPSourceData *srcdat,const RTPAddress *senderaddress,
00061 const uint8_t *cname,size_t cnamelength);
00062 void OnNewSource(RTPSourceData *srcdat);
00063 void OnRemoveSource(RTPSourceData *srcdat);
00064 void OnTimeout(RTPSourceData *srcdat);
00065 void OnBYETimeout(RTPSourceData *srcdat);
00066 void OnBYEPacket(RTPSourceData *srcdat);
00067 void OnAPPPacket(RTCPAPPPacket *apppacket,const RTPTime &receivetime,
00068 const RTPAddress *senderaddress);
00069 void OnUnknownPacketType(RTCPPacket *rtcppack,const RTPTime &receivetime,
00070 const RTPAddress *senderaddress);
00071 void OnUnknownPacketFormat(RTCPPacket *rtcppack,const RTPTime &receivetime,
00072 const RTPAddress *senderaddress);
00073 void OnNoteTimeout(RTPSourceData *srcdat);
00074
00075 RTPSession &rtpsession;
00076 bool owncollision;
00077 };
00078
00079 #endif // RTPSESSIONSOURCES_H