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
144 #define RTPMEM_TYPE_BUFFER_SRTPDATA 33
171 #ifdef RTP_SUPPORT_MEMORYMANAGEMENT
178 return operator new(numbytes);
179 return mgr->AllocateBuffer(numbytes,memtype);
184 JRTPLIB_UNUSED(memtype);
186 operator delete(buffer);
188 mgr->FreeBuffer(buffer);
191 #ifdef RTP_HAVE_ARRAYALLOC
195 return operator new[](numbytes);
196 return mgr->AllocateBuffer(numbytes,memtype);
201 JRTPLIB_UNUSED(memtype);
203 operator delete[](buffer);
205 mgr->FreeBuffer(buffer);
212 inline void RTPDeleteByteArray(uint8_t *buf, RTPMemoryManager *mgr)
217 mgr->FreeBuffer(buf);
220 template<
class ClassName>
221 inline void RTPDelete(ClassName *obj, RTPMemoryManager *mgr)
228 mgr->FreeBuffer(obj);
234 #define RTPNew(a,b) new(a,b)
238 #define RTPNew(a,b) new
239 #define RTPDelete(a,b) delete a
240 #define RTPDeleteByteArray(a,b) delete [] a;
A memory manager.
Definition: rtpmemorymanager.h:151
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.