|
|
|
@ -3010,35 +3010,22 @@ static void media_copy_format(struct call_media *media, struct call_media *src) |
|
|
|
media->format_str = call_str_cpy(&src->format_str); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// `media` can be NULL |
|
|
|
__attribute__((nonnull(1, 3, 4))) |
|
|
|
static void __media_init_from_flags(struct call_media *other_media, struct call_media *media, |
|
|
|
struct stream_params *sp, sdp_ng_flags *flags) |
|
|
|
{ |
|
|
|
// codec and RTP payload types handling |
|
|
|
__attribute__((nonnull(1, 2))) |
|
|
|
static void media_set_ptime(struct call_media *media, struct stream_params *sp, int ptime, int ptime_rev) { |
|
|
|
if (sp->ptime > 0) { |
|
|
|
if (media && !MEDIA_ISSET(media, PTIME_OVERRIDE)) |
|
|
|
if (!MEDIA_ISSET(media, PTIME_OVERRIDE)) |
|
|
|
media->ptime = sp->ptime; |
|
|
|
if (!MEDIA_ISSET(other_media, PTIME_OVERRIDE)) |
|
|
|
other_media->ptime = sp->ptime; |
|
|
|
} |
|
|
|
if (media && sp->maxptime > 0) { |
|
|
|
media->maxptime = sp->maxptime; |
|
|
|
} |
|
|
|
if (media && flags->ptime > 0) { |
|
|
|
media->ptime = flags->ptime; |
|
|
|
media->maxptime = sp->maxptime; |
|
|
|
if (ptime > 0) { |
|
|
|
media->ptime = ptime; |
|
|
|
MEDIA_SET(media, PTIME_OVERRIDE); |
|
|
|
MEDIA_SET(other_media, PTIME_OVERRIDE); |
|
|
|
} |
|
|
|
if (flags->rev_ptime > 0) { |
|
|
|
other_media->ptime = flags->rev_ptime; |
|
|
|
if (media) |
|
|
|
MEDIA_SET(media, PTIME_OVERRIDE); |
|
|
|
MEDIA_SET(other_media, PTIME_OVERRIDE); |
|
|
|
} |
|
|
|
if (ptime_rev > 0) |
|
|
|
MEDIA_SET(media, PTIME_OVERRIDE); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
unsigned int proto_num_ports(unsigned int sp_ports, struct call_media *media, sdp_ng_flags *flags, |
|
|
|
bool allow_offer_split) |
|
|
|
{ |
|
|
|
@ -3098,7 +3085,7 @@ static struct call_media * monologue_add_zero_media(struct call_monologue *sende |
|
|
|
media_update_crypto(sender_media, sp, flags); |
|
|
|
media_update_attrs(sender_media, sp); |
|
|
|
media_update_format(sender_media, sp); |
|
|
|
__media_init_from_flags(sender_media, NULL, sp, flags); |
|
|
|
media_set_ptime(sender_media, sp, flags->rev_ptime, flags->ptime); |
|
|
|
*num_ports_other = proto_num_ports(sp->num_ports, sender_media, flags, |
|
|
|
(flags->rtcp_mux_demux || flags->rtcp_mux_accept) ? true : false); |
|
|
|
__disable_streams(sender_media, *num_ports_other); |
|
|
|
@ -3227,7 +3214,8 @@ int monologue_offer_answer(struct call_monologue *monologues[2], sdp_streams_q * |
|
|
|
media_update_format(sender_media, sp); |
|
|
|
media_copy_format(receiver_media, sender_media); |
|
|
|
media_set_address_family(receiver_media, sender_media, flags); |
|
|
|
__media_init_from_flags(sender_media, receiver_media, sp, flags); |
|
|
|
media_set_ptime(sender_media, sp, flags->rev_ptime, flags->ptime); |
|
|
|
media_set_ptime(receiver_media, sp, flags->ptime, flags->rev_ptime); |
|
|
|
|
|
|
|
if (flags->opmode == OP_OFFER) { |
|
|
|
ilog(LOG_DEBUG, "Setting media recording slots to %u", flags->media_rec_slot_offer); |
|
|
|
@ -3642,7 +3630,7 @@ int monologue_publish(struct call_monologue *ml, sdp_streams_q *streams, sdp_ng_ |
|
|
|
media_update_crypto(media, sp, flags); |
|
|
|
media_update_attrs(media, sp); |
|
|
|
media_update_format(media, sp); |
|
|
|
__media_init_from_flags(media, NULL, sp, flags); |
|
|
|
media_set_ptime(media, sp, flags->ptime, 0); |
|
|
|
|
|
|
|
codec_store_populate(&media->codecs, &sp->codecs, |
|
|
|
.allow_asymmetric = !!flags->allow_asymmetric_codecs); |
|
|
|
@ -3737,7 +3725,8 @@ static int monologue_subscribe_request1(struct call_monologue *src_ml, struct ca |
|
|
|
media_update_crypto(dst_media, sp, flags); |
|
|
|
media_copy_format(dst_media, src_media); |
|
|
|
media_set_address_family(dst_media, src_media, flags); |
|
|
|
__media_init_from_flags(src_media, dst_media, sp, flags); |
|
|
|
media_set_ptime(src_media, sp, flags->rev_ptime, flags->ptime); |
|
|
|
media_set_ptime(dst_media, sp, flags->ptime, flags->rev_ptime); |
|
|
|
|
|
|
|
codec_store_populate(&dst_media->codecs, &src_media->codecs, |
|
|
|
.allow_asymmetric = !!flags->allow_asymmetric_codecs); |
|
|
|
@ -3846,7 +3835,7 @@ int monologue_subscribe_answer(struct call_monologue *dst_ml, sdp_ng_flags *flag |
|
|
|
media_update_flags(dst_media, sp); |
|
|
|
media_update_crypto(dst_media, sp, flags); |
|
|
|
media_update_format(dst_media, sp); |
|
|
|
__media_init_from_flags(dst_media, NULL, sp, flags); |
|
|
|
media_set_ptime(dst_media, sp, flags->ptime, 0); |
|
|
|
|
|
|
|
if (flags->allow_transcoding) { |
|
|
|
codec_store_populate(&dst_media->codecs, &sp->codecs, |
|
|
|
|