|
|
|
@ -318,12 +318,16 @@ static struct call_media *sdp_out_set_source_media_address(struct call_media *me |
|
|
|
struct sdp_ng_flags *flags, |
|
|
|
endpoint_t *sdp_address); |
|
|
|
|
|
|
|
__attribute__((nonnull(1, 3))) |
|
|
|
static void sdp_out_add_media_bandwidth(GString *out, |
|
|
|
struct call_media *media, sdp_ng_flags *flags); |
|
|
|
__attribute__((nonnull(1, 3))) |
|
|
|
static void sdp_out_add_session_bandwidth(GString *out, struct call_monologue *monologue, |
|
|
|
sdp_ng_flags *flags); |
|
|
|
__attribute__((nonnull(1, 2, 3, 5))) |
|
|
|
static void sdp_out_add_media_connection(GString *out, struct call_media *media, |
|
|
|
struct packet_stream *rtp_ps, const sockaddr_t *address, sdp_ng_flags *flags); |
|
|
|
__attribute__((nonnull(1, 2, 3, 5, 6))) |
|
|
|
static void sdp_out_original_media_attributes(GString *out, struct call_media *media, |
|
|
|
const endpoint_t *address, struct call_media *source_media, |
|
|
|
struct packet_stream *rtp_ps, sdp_ng_flags *flags); |
|
|
|
@ -2682,6 +2686,7 @@ static void sdp_out_print_information(GString *out, const str *s) { |
|
|
|
} |
|
|
|
|
|
|
|
/* TODO: rework an appending of parameters in terms of sdp attribute manipulations */ |
|
|
|
__attribute__((nonnull(1, 2, 3, 6, 7, 8))) |
|
|
|
static void print_sdp_media_section(GString *s, struct call_media *media, |
|
|
|
const endpoint_t *address, struct call_media *copy_media, |
|
|
|
struct call_media *source_media, |
|
|
|
@ -2781,6 +2786,7 @@ static void print_sdp_media_section(GString *s, struct call_media *media, |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
__attribute__((nonnull(1, 2, 4, 5))) |
|
|
|
static void sdp_out_add_origin(GString *out, struct call_monologue *monologue, |
|
|
|
struct call_monologue *source_ml, |
|
|
|
struct packet_stream *first_ps, sdp_ng_flags *flags) |
|
|
|
@ -2829,6 +2835,7 @@ static void sdp_out_add_origin(GString *out, struct call_monologue *monologue, |
|
|
|
STR_FMT(&orig_address)); |
|
|
|
} |
|
|
|
|
|
|
|
__attribute__((nonnull(1, 2))) |
|
|
|
static void sdp_out_add_session_name(GString *out, struct call_monologue *monologue, |
|
|
|
struct call_monologue *source_ml) |
|
|
|
{ |
|
|
|
@ -2852,6 +2859,7 @@ static void sdp_out_add_session_name(GString *out, struct call_monologue *monolo |
|
|
|
g_string_append(out, "\r\n"); |
|
|
|
} |
|
|
|
|
|
|
|
__attribute__((nonnull(1))) |
|
|
|
static void sdp_out_add_timing(GString *out, struct call_monologue *monologue) |
|
|
|
{ |
|
|
|
/* sdp timing per session level */ |
|
|
|
@ -2865,6 +2873,7 @@ static void sdp_out_add_timing(GString *out, struct call_monologue *monologue) |
|
|
|
g_string_append(out, "\r\n"); |
|
|
|
} |
|
|
|
|
|
|
|
__attribute__((nonnull(1, 2, 4, 5))) |
|
|
|
static void sdp_out_add_other(GString *out, struct call_monologue *monologue, |
|
|
|
struct call_monologue *source_ml, |
|
|
|
struct call_media *media, |
|
|
|
@ -2897,6 +2906,7 @@ static void sdp_out_add_other(GString *out, struct call_monologue *monologue, |
|
|
|
sdp_manipulations_add(out, sdp_manipulations); |
|
|
|
} |
|
|
|
|
|
|
|
__attribute__((nonnull(1, 2))) |
|
|
|
static void sdp_out_print_bandwidth(GString *out, const struct session_bandwidth *bw) { |
|
|
|
if (bw->as >= 0) |
|
|
|
g_string_append_printf(out, "b=AS:%ld\r\n", bw->as); |
|
|
|
@ -2910,6 +2920,7 @@ static void sdp_out_print_bandwidth(GString *out, const struct session_bandwidth |
|
|
|
g_string_append_printf(out, "b=TIAS:%ld\r\n", bw->tias); |
|
|
|
} |
|
|
|
|
|
|
|
__attribute__((nonnull(1, 3))) |
|
|
|
static void sdp_out_add_session_bandwidth(GString *out, struct call_monologue *monologue, |
|
|
|
sdp_ng_flags *flags) |
|
|
|
{ |
|
|
|
@ -2921,6 +2932,7 @@ static void sdp_out_add_session_bandwidth(GString *out, struct call_monologue *m |
|
|
|
sdp_out_print_bandwidth(out, &monologue->sdp_session_bandwidth); |
|
|
|
} |
|
|
|
|
|
|
|
__attribute__((nonnull(1, 3))) |
|
|
|
static void sdp_out_add_media_bandwidth(GString *out, |
|
|
|
struct call_media *media, sdp_ng_flags *flags) |
|
|
|
{ |
|
|
|
@ -2970,6 +2982,7 @@ static void sdp_out_add_media_connection(GString *out, struct call_media *media, |
|
|
|
/** |
|
|
|
* Add OSRTP related media line. |
|
|
|
*/ |
|
|
|
__attribute__((nonnull(1, 2, 3))) |
|
|
|
static void sdp_out_add_osrtp_media(GString *out, struct call_media *media, |
|
|
|
const struct transport_protocol *prtp, const endpoint_t *address) |
|
|
|
{ |
|
|
|
@ -2986,6 +2999,7 @@ static void sdp_out_add_osrtp_media(GString *out, struct call_media *media, |
|
|
|
/** |
|
|
|
* Add media line. |
|
|
|
*/ |
|
|
|
__attribute__((nonnull(1, 2))) |
|
|
|
static bool sdp_out_add_media(GString *out, struct call_media *media, |
|
|
|
unsigned int port) |
|
|
|
{ |
|
|
|
@ -3009,6 +3023,7 @@ static bool sdp_out_add_media(GString *out, struct call_media *media, |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
__attribute__((nonnull(1, 2, 4, 6, 7, 8))) |
|
|
|
static void sdp_out_handle_osrtp1(GString *out, struct call_media *media, |
|
|
|
struct call_media *source_media, |
|
|
|
const endpoint_t *address, const struct transport_protocol *prtp, |
|
|
|
@ -3033,6 +3048,7 @@ static void sdp_out_handle_osrtp1(GString *out, struct call_media *media, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
__attribute__((nonnull(1, 2))) |
|
|
|
static void sdp_out_handle_osrtp2(GString *out, struct call_media *media, |
|
|
|
const struct transport_protocol *prtp) |
|
|
|
{ |
|
|
|
@ -3047,6 +3063,7 @@ static void sdp_out_handle_osrtp2(GString *out, struct call_media *media, |
|
|
|
/** |
|
|
|
* Adds original attributes into the media. |
|
|
|
*/ |
|
|
|
__attribute__((nonnull(1, 2, 3, 5, 6))) |
|
|
|
static void sdp_out_original_media_attributes(GString *out, struct call_media *media, |
|
|
|
const endpoint_t *address, struct call_media *source_media, |
|
|
|
struct packet_stream *rtp_ps, sdp_ng_flags *flags) |
|
|
|
@ -3070,6 +3087,7 @@ static void sdp_out_original_media_attributes(GString *out, struct call_media *m |
|
|
|
* Should we just pass through the original SDP (mostly) unchanged, |
|
|
|
* then we need to look up the source media. |
|
|
|
*/ |
|
|
|
__attribute__((nonnull(1, 3, 4, 5))) |
|
|
|
static struct call_media *sdp_out_set_source_media_address(struct call_media *media, |
|
|
|
struct call_media *source_media, |
|
|
|
struct packet_stream *rtp_ps, |
|
|
|
@ -3118,6 +3136,7 @@ static struct call_media *sdp_out_set_source_media_address(struct call_media *me |
|
|
|
* For the rest of cases (publish, subscribe, janus etc.) this works as usual: |
|
|
|
* given monologue is a monologue which is being processed. |
|
|
|
*/ |
|
|
|
__attribute__((nonnull(1, 2, 3))) |
|
|
|
int sdp_create(str *out, struct call_monologue *monologue, sdp_ng_flags *flags) |
|
|
|
{ |
|
|
|
const char *err = NULL; |
|
|
|
|