set SDP media encode-handler to NULL on deref

adds a function to make SDP media ignore formats. This is useful
for example with BFCP where the format list is to be ignored.
This commit is contained in:
Alfred E. Heggestad 2013-02-28 21:38:30 +00:00
parent d5f9620f63
commit 7f08d0c8b4
3 changed files with 19 additions and 1 deletions

View file

@ -89,6 +89,7 @@ int sdp_media_add(struct sdp_media **mp, struct sdp_session *sess,
const char *name, uint16_t port, const char *proto);
void sdp_media_set_encode_handler(struct sdp_media *m, sdp_media_enc_h *ench,
void *arg);
void sdp_media_set_fmt_ignore(struct sdp_media *m, bool fmt_ignore);
void sdp_media_set_disabled(struct sdp_media *m, bool disabled);
void sdp_media_set_lport(struct sdp_media *m, uint16_t port);
void sdp_media_set_laddr(struct sdp_media *m, const struct sa *laddr);

View file

@ -26,6 +26,7 @@ static void destructor(void *arg)
if (m->le.list) {
m->disabled = true;
m->ench = NULL;
mem_ref(m);
return;
}
@ -216,7 +217,7 @@ void sdp_media_align_formats(struct sdp_media *m, bool offer)
struct sdp_format *rfmt, *lfmt;
struct le *rle, *lle;
if (!m || m->disabled || !sa_port(&m->raddr))
if (!m || m->disabled || !sa_port(&m->raddr) || m->fmt_ignore)
return;
for (lle=m->lfmtl.head; lle; lle=lle->next) {
@ -307,6 +308,21 @@ void sdp_media_set_encode_handler(struct sdp_media *m, sdp_media_enc_h *ench,
}
/**
* Set an SDP Media line to ignore formats
*
* @param m SDP Media line
* @param fmt_ignore True for ignore formats, otherwise false
*/
void sdp_media_set_fmt_ignore(struct sdp_media *m, bool fmt_ignore)
{
if (!m)
return;
m->fmt_ignore = fmt_ignore;
}
/**
* Set an SDP Media line to enabled/disabled
*

View file

@ -43,6 +43,7 @@ struct sdp_media {
void *arg;
enum sdp_dir ldir;
enum sdp_dir rdir;
bool fmt_ignore;
bool disabled;
int dynpt;
};