diff --git a/channels/chan_gulp.c b/channels/chan_gulp.c index 395987405dacca348c2609ebe9b64be32f35dc82..0b7dedfb8764a394d40b734bb066312d1318b256 100644 --- a/channels/chan_gulp.c +++ b/channels/chan_gulp.c @@ -434,7 +434,7 @@ static struct ast_channel *gulp_new(struct ast_sip_session *session, int state, pvt->media[SIP_MEDIA_VIDEO] = ao2_find(session->media, "video", OBJ_KEY); ast_channel_tech_pvt_set(chan, pvt); - if (ast_format_cap_is_empty(session->req_caps)) { + if (ast_format_cap_is_empty(session->req_caps) || !ast_format_cap_has_joint(session->req_caps, session->endpoint->codecs)) { ast_format_cap_copy(ast_channel_nativeformats(chan), session->endpoint->codecs); } else { ast_format_cap_copy(ast_channel_nativeformats(chan), session->req_caps); diff --git a/res/res_sip_sdp_rtp.c b/res/res_sip_sdp_rtp.c index 13e6aa1aa5fbfe7338f3245900d537b1c913614c..d0af479c70de90408c4c0b087b4f7830bcf53857 100644 --- a/res/res_sip_sdp_rtp.c +++ b/res/res_sip_sdp_rtp.c @@ -556,7 +556,7 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as if (direct_media_enabled) { ast_format_cap_joint_copy(session->endpoint->codecs, session->direct_media_cap, caps); - } else if (ast_format_cap_is_empty(session->req_caps)) { + } else if (ast_format_cap_is_empty(session->req_caps) || !ast_format_cap_has_joint(session->req_caps, session->endpoint->codecs)) { ast_format_cap_copy(caps, session->endpoint->codecs); } else { ast_format_cap_joint_copy(session->endpoint->codecs, session->req_caps, caps);