diff --git a/include/re_sdp.h b/include/re_sdp.h index 269157a..f34bab5 100644 --- a/include/re_sdp.h +++ b/include/re_sdp.h @@ -126,6 +126,9 @@ struct sdp_format *sdp_media_format_apply(const struct sdp_media *m, sdp_format_h *fmth, void *arg); const struct list *sdp_media_format_lst(const struct sdp_media *m, bool local); const char *sdp_media_rattr(const struct sdp_media *m, const char *name); +const char *sdp_media_session_rattr(const struct sdp_media *m, + const struct sdp_session *sess, + const char *name); const char *sdp_media_rattr_apply(const struct sdp_media *m, const char *name, sdp_attr_h *attrh, void *arg); const char *sdp_media_name(const struct sdp_media *m); diff --git a/src/sdp/media.c b/src/sdp/media.c index 6566867..07ce3a2 100644 --- a/src/sdp/media.c +++ b/src/sdp/media.c @@ -860,6 +860,29 @@ const char *sdp_media_rattr(const struct sdp_media *m, const char *name) } +/** + * Get a remote attribute from an SDP Media line or the SDP session + * + * @param m SDP Media line + * @param sess SDP Session + * @param name Attribute name + * + * @return Attribute value, NULL if not found + */ +const char *sdp_media_session_rattr(const struct sdp_media *m, + const struct sdp_session *sess, + const char *name) +{ + const char *val; + + val = sdp_media_rattr(m, name); + if (!val) + val = sdp_session_rattr(sess, name); + + return val; +} + + /** * Apply a function handler to all matching remote attributes *