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
163 virtual void *AllocateBuffer(
size_t numbytes,
int memtype) = 0;
166 virtual void FreeBuffer(
void *buffer) = 0;
171 #ifdef RTP_SUPPORT_MEMORYMANAGEMENT
178 return operator new(numbytes);
185 operator delete(buffer);
187 mgr->FreeBuffer(buffer);
190 #ifdef RTP_HAVE_ARRAYALLOC
194 return operator new[](numbytes);
195 return mgr->AllocateBuffer(numbytes,memtype);
201 operator delete[](buffer);
203 mgr->FreeBuffer(buffer);
205 #endif // RTP_HAVE_ARRAYALLOC
210 inline void RTPDeleteByteArray(uint8_t *buf, RTPMemoryManager *mgr)
215 mgr->FreeBuffer(buf);
218 template<
class ClassName>
219 inline void RTPDelete(ClassName *obj, RTPMemoryManager *mgr)
226 mgr->FreeBuffer(obj);
232 #define RTPNew(a,b) new(a,b)
236 #define RTPNew(a,b) new
237 #define RTPDelete(a,b) delete a
238 #define RTPDeleteByteArray(a,b) delete [] a;
240 #endif // RTP_SUPPORT_MEMORYMANAGEMENT
242 #endif // RTPMEMORYMANAGER_H
A memory manager.
Definition: rtpmemorymanager.h:150
virtual void * AllocateBuffer(size_t numbytes, int memtype)=0
Called to allocate numbytes of memory.