37 #ifndef RTCPSDESINFO_H
39 #define RTCPSDESINFO_H
41 #include "rtpconfig.h"
43 #include "rtpdefines.h"
54 RTCPSDESInfo(
RTPMemoryManager *mgr = 0) : RTPMemoryObject(mgr) {
for (
int i = 0 ; i < RTCP_SDES_NUMITEMS_NONPRIVATE ; i++) nonprivateitems[i].SetMemoryManager(mgr); }
61 int SetCNAME(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_CNAME-1,s,l); }
64 int SetName(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_NAME-1,s,l); }
67 int SetEMail(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_EMAIL-1,s,l); }
70 int SetPhone(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_PHONE-1,s,l); }
73 int SetLocation(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_LOCATION-1,s,l); }
76 int SetTool(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_TOOL-1,s,l); }
79 int SetNote(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_NOTE-1,s,l); }
81 #ifdef RTP_SUPPORT_SDESPRIV
86 int SetPrivateValue(
const uint8_t *prefix,
size_t prefixlen,
const uint8_t *value,
size_t valuelen);
90 #endif // RTP_SUPPORT_SDESPRIV
93 uint8_t *
GetCNAME(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_CNAME-1,len); }
96 uint8_t *
GetName(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_NAME-1,len); }
99 uint8_t *
GetEMail(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_EMAIL-1,len); }
102 uint8_t *
GetPhone(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_PHONE-1,len); }
105 uint8_t *
GetLocation(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_LOCATION-1,len); }
108 uint8_t *
GetTool(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_TOOL-1,len); }
111 uint8_t *
GetNote(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_NOTE-1,len); }
112 #ifdef RTP_SUPPORT_SDESPRIV
123 bool GetNextPrivateValue(uint8_t **prefix,
size_t *prefixlen,uint8_t **value,
size_t *valuelen);
132 bool GetPrivateValue(
const uint8_t *prefix,
size_t prefixlen,uint8_t **value,
size_t *valuelen)
const;
133 #endif // RTP_SUPPORT_SDESPRIV
135 int SetNonPrivateItem(
int itemno,
const uint8_t *s,
size_t l) {
if (l > RTCP_SDES_MAXITEMLENGTH)
return ERR_RTP_SDES_LENGTHTOOBIG;
return nonprivateitems[itemno].SetInfo(s,l); }
136 uint8_t *GetNonPrivateItem(
int itemno,
size_t *len)
const {
return nonprivateitems[itemno].GetInfo(len); }
138 class SDESItem :
public RTPMemoryObject
148 RTPMemoryObject::SetMemoryManager(mgr);
153 RTPDeleteByteArray(str,GetMemoryManager());
155 uint8_t *GetInfo(
size_t *len)
const { *len = length;
return str; }
156 int SetInfo(
const uint8_t *s,
size_t len) {
return SetString(&str,&length,s,len); }
158 int SetString(uint8_t **dest,
size_t *destlen,
const uint8_t *s,
size_t len)
163 RTPDeleteByteArray((*dest),GetMemoryManager());
169 len = (len>RTCP_SDES_MAXITEMLENGTH)?RTCP_SDES_MAXITEMLENGTH:len;
172 return ERR_RTP_OUTOFMEM;
176 RTPDeleteByteArray((*dest),GetMemoryManager());
186 SDESItem nonprivateitems[RTCP_SDES_NUMITEMS_NONPRIVATE];
188 #ifdef RTP_SUPPORT_SDESPRIV
189 class SDESPrivateItem :
public SDESItem
200 RTPDeleteByteArray(prefix,GetMemoryManager());
202 uint8_t *GetPrefix(
size_t *len)
const { *len = prefixlen;
return prefix; }
203 int SetPrefix(
const uint8_t *s,
size_t len) {
return SetString(&prefix,&prefixlen,s,len); }
209 std::list<SDESPrivateItem *> privitems;
210 std::list<SDESPrivateItem *>::const_iterator curitem;
211 #endif // RTP_SUPPORT_SDESPRIV
214 #endif // RTCPSDESINFO_H
uint8_t * GetLocation(size_t *len) const
Returns the SDES location item and stores its length in len.
Definition: rtcpsdesinfo.h:105
int SetNote(const uint8_t *s, size_t l)
Sets the SDES note item to s with length l.
Definition: rtcpsdesinfo.h:79
RTCPSDESInfo(RTPMemoryManager *mgr=0)
Constructs an instance, optionally installing a memory manager.
Definition: rtcpsdesinfo.h:54
int SetLocation(const uint8_t *s, size_t l)
Sets the SDES location item to s with length l.
Definition: rtcpsdesinfo.h:73
#define RTPMEM_TYPE_BUFFER_SDESITEM
Buffer to store an SDES item.
Definition: rtpmemorymanager.h:75
The class RTCPSDESInfo is a container for RTCP SDES information.
Definition: rtcpsdesinfo.h:50
uint8_t * GetName(size_t *len) const
Returns the SDES name item and stores its length in len.
Definition: rtcpsdesinfo.h:96
A memory manager.
Definition: rtpmemorymanager.h:144
bool GetNextPrivateValue(uint8_t **prefix, size_t *prefixlen, uint8_t **value, size_t *valuelen)
Returns SDES priv item information.
uint8_t * GetEMail(size_t *len) const
Returns the SDES e-mail item and stores its length in len.
Definition: rtcpsdesinfo.h:99
int SetEMail(const uint8_t *s, size_t l)
Sets the SDES e-mail item to s with length l.
Definition: rtcpsdesinfo.h:67
bool GetPrivateValue(const uint8_t *prefix, size_t prefixlen, uint8_t **value, size_t *valuelen) const
Returns SDES priv item information.
int SetCNAME(const uint8_t *s, size_t l)
Sets the SDES CNAME item to s with length l.
Definition: rtcpsdesinfo.h:61
int DeletePrivatePrefix(const uint8_t *s, size_t len)
Deletes the entry for the prefix specified by s with length len.
int SetPrivateValue(const uint8_t *prefix, size_t prefixlen, const uint8_t *value, size_t valuelen)
Sets the entry for the prefix string specified by prefix with length prefixlen to contain the value s...
uint8_t * GetTool(size_t *len) const
Returns the SDES tool item and stores its length in len.
Definition: rtcpsdesinfo.h:108
uint8_t * GetPhone(size_t *len) const
Returns the SDES phone item and stores its length in len.
Definition: rtcpsdesinfo.h:102
int SetTool(const uint8_t *s, size_t l)
Sets the SDES tool item to s with length l.
Definition: rtcpsdesinfo.h:76
int SetName(const uint8_t *s, size_t l)
Sets the SDES name item to s with length l.
Definition: rtcpsdesinfo.h:64
void GotoFirstPrivateValue()
Starts the iteration over the stored SDES private item prefixes and their associated values...
void Clear()
Clears all SDES information.
int SetPhone(const uint8_t *s, size_t l)
Sets the SDES phone item to s with length l.
Definition: rtcpsdesinfo.h:70
uint8_t * GetNote(size_t *len) const
Returns the SDES note item and stores its length in len.
Definition: rtcpsdesinfo.h:111
uint8_t * GetCNAME(size_t *len) const
Returns the SDES CNAME item and stores its length in len.
Definition: rtcpsdesinfo.h:93