37 #ifndef RTPMEMORYMANAGER_H
39 #define RTPMEMORYMANAGER_H
41 #include "rtpconfig.h"
45 #define RTPMEM_TYPE_OTHER 0
48 #define RTPMEM_TYPE_BUFFER_RECEIVEDRTPPACKET 1
51 #define RTPMEM_TYPE_BUFFER_RECEIVEDRTCPPACKET 2
54 #define RTPMEM_TYPE_BUFFER_RTCPAPPPACKET 3
57 #define RTPMEM_TYPE_BUFFER_RTCPBYEPACKET 4
60 #define RTPMEM_TYPE_BUFFER_RTCPBYEREASON 5
63 #define RTPMEM_TYPE_BUFFER_RTCPCOMPOUNDPACKET 6
66 #define RTPMEM_TYPE_BUFFER_RTCPSDESBLOCK 7
69 #define RTPMEM_TYPE_BUFFER_RTPPACKET 8
72 #define RTPMEM_TYPE_BUFFER_RTPPACKETBUILDERBUFFER 9
75 #define RTPMEM_TYPE_BUFFER_SDESITEM 10
78 #define RTPMEM_TYPE_CLASS_ACCEPTIGNOREHASHELEMENT 11
81 #define RTPMEM_TYPE_CLASS_ACCEPTIGNOREPORTINFO 12
84 #define RTPMEM_TYPE_CLASS_DESTINATIONLISTHASHELEMENT 13
87 #define RTPMEM_TYPE_CLASS_MULTICASTHASHELEMENT 14
90 #define RTPMEM_TYPE_CLASS_RTCPAPPPACKET 15
93 #define RTPMEM_TYPE_CLASS_RTCPBYEPACKET 16
96 #define RTPMEM_TYPE_CLASS_RTCPCOMPOUNDPACKETBUILDER 17
99 #define RTPMEM_TYPE_CLASS_RTCPRECEIVERREPORT 18
102 #define RTPMEM_TYPE_CLASS_RTCPRRPACKET 19
105 #define RTPMEM_TYPE_CLASS_RTCPSDESPACKET 20
108 #define RTPMEM_TYPE_CLASS_RTCPSRPACKET 21
111 #define RTPMEM_TYPE_CLASS_RTCPUNKNOWNPACKET 22
114 #define RTPMEM_TYPE_CLASS_RTPADDRESS 23
117 #define RTPMEM_TYPE_CLASS_RTPINTERNALSOURCEDATA 24
120 #define RTPMEM_TYPE_CLASS_RTPPACKET 25
123 #define RTPMEM_TYPE_CLASS_RTPPOLLTHREAD 26
126 #define RTPMEM_TYPE_CLASS_RTPRAWPACKET 27
129 #define RTPMEM_TYPE_CLASS_RTPTRANSMISSIONINFO 28
132 #define RTPMEM_TYPE_CLASS_RTPTRANSMITTER 29
135 #define RTPMEM_TYPE_CLASS_SDESPRIVATEITEM 30
138 #define RTPMEM_TYPE_CLASS_SDESSOURCE 31
141 #define RTPMEM_TYPE_CLASS_SOURCETABLEHASHELEMENT 32
163 #ifdef RTP_SUPPORT_MEMORYMANAGEMENT
167 inline void *
operator new(
size_t numbytes,
RTPMemoryManager *mgr,
int memtype)
170 return operator new(numbytes);
171 return mgr->AllocateBuffer(numbytes,memtype);
174 inline void operator delete(
void *buffer,
RTPMemoryManager *mgr,
int memtype)
177 operator delete(buffer);
179 mgr->FreeBuffer(buffer);
182 #if defined(WIN32) || defined(_WIN32_WCE)
184 inline void *
operator new[](
size_t numbytes,
RTPMemoryManager *mgr,
int memtype)
187 return operator new[](numbytes);
188 return mgr->AllocateBuffer(numbytes,memtype);
191 inline void operator delete[](
void *buffer,
RTPMemoryManager *mgr,
int memtype)
194 operator delete[](buffer);
196 mgr->FreeBuffer(buffer);
198 #endif // _MSC_VER >= 1300
200 inline void *
operator new[](
size_t numbytes,
RTPMemoryManager *mgr,
int memtype)
203 return operator new[](numbytes);
204 return mgr->AllocateBuffer(numbytes,memtype);
207 inline void operator delete[](
void *buffer,
RTPMemoryManager *mgr,
int memtype)
210 operator delete[](buffer);
212 mgr->FreeBuffer(buffer);
214 #endif // WIN32 || _WIN32_WCE
224 template<
class ClassName>
236 #define RTPNew(a,b) new(a,b)
240 #define RTPNew(a,b) new
241 #define RTPDelete(a,b) delete a
242 #define RTPDeleteByteArray(a,b) delete [] a;
244 #endif // RTP_SUPPORT_MEMORYMANAGEMENT
246 #endif // RTPMEMORYMANAGER_H
virtual void FreeBuffer(void *buffer)=0
Frees the previously allocated memory block buffer.
virtual void * AllocateBuffer(size_t numbytes, int memtype)=0
Called to allocate numbytes of memory.
A memory manager.
Definition: rtpmemorymanager.h:144