37 #ifndef RTCPSDESINFO_H
39 #define RTCPSDESINFO_H
41 #include "rtpconfig.h"
43 #include "rtpdefines.h"
58 RTCPSDESInfo(
RTPMemoryManager *mgr = 0) : RTPMemoryObject(mgr) {
for (
int i = 0 ; i < RTCP_SDES_NUMITEMS_NONPRIVATE ; i++) nonprivateitems[i].SetMemoryManager(mgr); }
65 int SetCNAME(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_CNAME-1,s,l); }
68 int SetName(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_NAME-1,s,l); }
71 int SetEMail(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_EMAIL-1,s,l); }
74 int SetPhone(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_PHONE-1,s,l); }
77 int SetLocation(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_LOCATION-1,s,l); }
80 int SetTool(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_TOOL-1,s,l); }
83 int SetNote(
const uint8_t *s,
size_t l) {
return SetNonPrivateItem(RTCP_SDES_ID_NOTE-1,s,l); }
85 #ifdef RTP_SUPPORT_SDESPRIV
90 int SetPrivateValue(
const uint8_t *prefix,
size_t prefixlen,
const uint8_t *value,
size_t valuelen);
97 uint8_t *
GetCNAME(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_CNAME-1,len); }
100 uint8_t *
GetName(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_NAME-1,len); }
103 uint8_t *
GetEMail(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_EMAIL-1,len); }
106 uint8_t *
GetPhone(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_PHONE-1,len); }
109 uint8_t *
GetLocation(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_LOCATION-1,len); }
112 uint8_t *
GetTool(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_TOOL-1,len); }
115 uint8_t *
GetNote(
size_t *len)
const {
return GetNonPrivateItem(RTCP_SDES_ID_NOTE-1,len); }
116 #ifdef RTP_SUPPORT_SDESPRIV
136 bool GetPrivateValue(
const uint8_t *prefix,
size_t prefixlen,uint8_t **value,
size_t *valuelen)
const;
139 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); }
140 uint8_t *GetNonPrivateItem(
int itemno,
size_t *len)
const {
return nonprivateitems[itemno].GetInfo(len); }
142 class SDESItem :
public RTPMemoryObject
145 SDESItem(RTPMemoryManager *mgr = 0) : RTPMemoryObject(mgr)
150 void SetMemoryManager(RTPMemoryManager *mgr)
152 RTPMemoryObject::SetMemoryManager(mgr);
157 RTPDeleteByteArray(str,GetMemoryManager());
159 uint8_t *GetInfo(
size_t *len)
const { *len = length;
return str; }
160 int SetInfo(
const uint8_t *s,
size_t len) {
return SetString(&str,&length,s,len); }
162 int SetString(uint8_t **dest,
size_t *destlen,
const uint8_t *s,
size_t len)
167 RTPDeleteByteArray((*dest),GetMemoryManager());
173 len = (len>RTCP_SDES_MAXITEMLENGTH)?RTCP_SDES_MAXITEMLENGTH:len;
176 return ERR_RTP_OUTOFMEM;
180 RTPDeleteByteArray((*dest),GetMemoryManager());
190 SDESItem nonprivateitems[RTCP_SDES_NUMITEMS_NONPRIVATE];
192 #ifdef RTP_SUPPORT_SDESPRIV
193 class SDESPrivateItem :
public SDESItem
196 SDESPrivateItem(RTPMemoryManager *mgr) : SDESItem(mgr)
204 RTPDeleteByteArray(prefix,GetMemoryManager());
206 uint8_t *GetPrefix(
size_t *len)
const { *len = prefixlen;
return prefix; }
207 int SetPrefix(
const uint8_t *s,
size_t len) {
return SetString(&prefix,&prefixlen,s,len); }
213 std::list<SDESPrivateItem *> privitems;
214 std::list<SDESPrivateItem *>::const_iterator curitem;
The class RTCPSDESInfo is a container for RTCP SDES information.
Definition: rtcpsdesinfo.h:54
uint8_t * GetLocation(size_t *len) const
Returns the SDES location item and stores its length in len.
Definition: rtcpsdesinfo.h:109
int SetPhone(const uint8_t *s, size_t l)
Sets the SDES phone item to s with length l.
Definition: rtcpsdesinfo.h:74
int SetTool(const uint8_t *s, size_t l)
Sets the SDES tool item to s with length l.
Definition: rtcpsdesinfo.h:80
uint8_t * GetCNAME(size_t *len) const
Returns the SDES CNAME item and stores its length in len.
Definition: rtcpsdesinfo.h:97
int SetEMail(const uint8_t *s, size_t l)
Sets the SDES e-mail item to s with length l.
Definition: rtcpsdesinfo.h:71
uint8_t * GetNote(size_t *len) const
Returns the SDES note item and stores its length in len.
Definition: rtcpsdesinfo.h:115
bool GetNextPrivateValue(uint8_t **prefix, size_t *prefixlen, uint8_t **value, size_t *valuelen)
Returns SDES priv item information.
void GotoFirstPrivateValue()
Starts the iteration over the stored SDES private item prefixes and their associated values.
int DeletePrivatePrefix(const uint8_t *s, size_t len)
Deletes the entry for the prefix specified by s with length len.
int SetName(const uint8_t *s, size_t l)
Sets the SDES name item to s with length l.
Definition: rtcpsdesinfo.h:68
int SetNote(const uint8_t *s, size_t l)
Sets the SDES note item to s with length l.
Definition: rtcpsdesinfo.h:83
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 * GetEMail(size_t *len) const
Returns the SDES e-mail item and stores its length in len.
Definition: rtcpsdesinfo.h:103
uint8_t * GetPhone(size_t *len) const
Returns the SDES phone item and stores its length in len.
Definition: rtcpsdesinfo.h:106
uint8_t * GetTool(size_t *len) const
Returns the SDES tool item and stores its length in len.
Definition: rtcpsdesinfo.h:112
int SetCNAME(const uint8_t *s, size_t l)
Sets the SDES CNAME item to s with length l.
Definition: rtcpsdesinfo.h:65
bool GetPrivateValue(const uint8_t *prefix, size_t prefixlen, uint8_t **value, size_t *valuelen) const
Returns SDES priv item information.
uint8_t * GetName(size_t *len) const
Returns the SDES name item and stores its length in len.
Definition: rtcpsdesinfo.h:100
void Clear()
Clears all SDES information.
int SetLocation(const uint8_t *s, size_t l)
Sets the SDES location item to s with length l.
Definition: rtcpsdesinfo.h:77
RTCPSDESInfo(RTPMemoryManager *mgr=0)
Constructs an instance, optionally installing a memory manager.
Definition: rtcpsdesinfo.h:58
A memory manager.
Definition: rtpmemorymanager.h:151
#define RTPMEM_TYPE_BUFFER_SDESITEM
Buffer to store an SDES item.
Definition: rtpmemorymanager.h:75