mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-28 16:49:20 +00:00
Adding tests for outgoing audio call without audio codecs
and outgoing video call with no codec audio or video. Adding bug fix for outgoing video call with no video+audio codecs.
This commit is contained in:
parent
5f7ed78978
commit
10c41db79f
2 changed files with 107 additions and 15 deletions
|
|
@ -714,11 +714,7 @@ void linphone_call_make_local_media_description(LinphoneCall *call) {
|
|||
codec_hints.previously_used=old_md ? old_md->streams[call->main_audio_stream_index].already_assigned_payloads : NULL;
|
||||
l=make_codec_list(lc, &codec_hints, SalAudio, lc->codecs_conf.audio_codecs);
|
||||
|
||||
// in case where no audio codec was found for this stream, the audio is disabled
|
||||
if (l == NULL) {
|
||||
params->has_audio = FALSE;
|
||||
}
|
||||
if (params->has_audio) {
|
||||
if (params->has_audio && l != NULL) {
|
||||
strncpy(md->streams[call->main_audio_stream_index].rtp_addr,linphone_call_get_public_ip_for_stream(call,call->main_audio_stream_index),sizeof(md->streams[call->main_audio_stream_index].rtp_addr));
|
||||
strncpy(md->streams[call->main_audio_stream_index].rtcp_addr,linphone_call_get_public_ip_for_stream(call,call->main_audio_stream_index),sizeof(md->streams[call->main_audio_stream_index].rtcp_addr));
|
||||
strncpy(md->streams[call->main_audio_stream_index].name,"Audio",sizeof(md->streams[call->main_audio_stream_index].name)-1);
|
||||
|
|
@ -757,16 +753,17 @@ void linphone_call_make_local_media_description(LinphoneCall *call) {
|
|||
md->streams[call->main_video_stream_index].rtcp_mux = rtcp_mux;
|
||||
strncpy(md->streams[call->main_video_stream_index].name,"Video",sizeof(md->streams[call->main_video_stream_index].name)-1);
|
||||
|
||||
if (params->has_video){
|
||||
codec_hints.bandwidth_limit=0;
|
||||
codec_hints.max_codecs=-1;
|
||||
codec_hints.previously_used=old_md ? old_md->streams[call->main_video_stream_index].already_assigned_payloads : NULL;
|
||||
l=make_codec_list(lc, &codec_hints, SalVideo, lc->codecs_conf.video_codecs);
|
||||
|
||||
if (params->has_video && l != NULL){
|
||||
strncpy(md->streams[call->main_video_stream_index].rtp_addr,linphone_call_get_public_ip_for_stream(call,call->main_video_stream_index),sizeof(md->streams[call->main_video_stream_index].rtp_addr));
|
||||
strncpy(md->streams[call->main_video_stream_index].rtcp_addr,linphone_call_get_public_ip_for_stream(call,call->main_video_stream_index),sizeof(md->streams[call->main_video_stream_index].rtcp_addr));
|
||||
md->streams[call->main_video_stream_index].rtp_port=call->media_ports[call->main_video_stream_index].rtp_port;
|
||||
md->streams[call->main_video_stream_index].rtcp_port=call->media_ports[call->main_video_stream_index].rtcp_port;
|
||||
codec_hints.bandwidth_limit=0;
|
||||
codec_hints.max_codecs=-1;
|
||||
codec_hints.previously_used=old_md ? old_md->streams[call->main_video_stream_index].already_assigned_payloads : NULL;
|
||||
l=make_codec_list(lc, &codec_hints, SalVideo, lc->codecs_conf.video_codecs);
|
||||
md->streams[call->main_video_stream_index].payloads=l;
|
||||
md->streams[call->main_video_stream_index].payloads=l;
|
||||
if (call->videostream && call->videostream->ms.sessions.rtp_session) {
|
||||
char* me = linphone_address_as_string_uri_only(call->me);
|
||||
md->streams[call->main_video_stream_index].rtp_ssrc=rtp_session_get_send_ssrc(call->videostream->ms.sessions.rtp_session);
|
||||
|
|
|
|||
|
|
@ -701,6 +701,99 @@ end:
|
|||
linphone_core_manager_destroy(pauline);
|
||||
}
|
||||
|
||||
|
||||
static void disable_all_codecs(const MSList* elem, LinphoneCoreManager* call){
|
||||
|
||||
PayloadType *pt;
|
||||
|
||||
for(;elem!=NULL;elem=elem->next){
|
||||
pt=(PayloadType*)elem->data;
|
||||
linphone_core_enable_payload_type(call->lc,pt,FALSE);
|
||||
}
|
||||
}
|
||||
/***
|
||||
Disable all audio codecs , sends an INVITE with RTP port 0 and payload 0.
|
||||
Wait for SIP 488 unacceptable.
|
||||
***/
|
||||
static void call_with_no_audio_codec(void){
|
||||
|
||||
LinphoneCoreManager* callee = linphone_core_manager_new("marie_rc");
|
||||
LinphoneCoreManager* caller = linphone_core_manager_new(transport_supported(LinphoneTransportTcp) ? "pauline_rc" : "pauline_tcp_rc");
|
||||
LinphoneCall* out_call ;
|
||||
|
||||
const MSList* elem =linphone_core_get_audio_codecs(caller->lc);
|
||||
|
||||
disable_all_codecs(elem, caller);
|
||||
|
||||
|
||||
out_call = linphone_core_invite_address(caller->lc,callee->identity);
|
||||
linphone_call_ref(out_call);
|
||||
BC_ASSERT_TRUE(wait_for(caller->lc, callee->lc, &caller->stat.number_of_LinphoneCallOutgoingInit, 1));
|
||||
|
||||
|
||||
BC_ASSERT_TRUE(wait_for_until(caller->lc, callee->lc, &caller->stat.number_of_LinphoneCallError, 1, 6000));
|
||||
BC_ASSERT_EQUAL(linphone_call_get_reason(out_call), LinphoneReasonNotAcceptable, int, "%d");
|
||||
BC_ASSERT_EQUAL(callee->stat.number_of_LinphoneCallIncomingReceived, 0, int, "%d");
|
||||
|
||||
linphone_call_unref(out_call);
|
||||
linphone_core_manager_destroy(callee);
|
||||
linphone_core_manager_destroy(caller);
|
||||
|
||||
}
|
||||
|
||||
static void video_call_with_no_audio_and_no_video_codec(void){
|
||||
|
||||
LinphoneCoreManager* callee = linphone_core_manager_new("marie_rc");
|
||||
LinphoneCoreManager* caller = linphone_core_manager_new(transport_supported(LinphoneTransportTcp) ? "pauline_rc" : "pauline_tcp_rc");
|
||||
LinphoneCall* out_call ;
|
||||
LinphoneVideoPolicy callee_policy, caller_policy;
|
||||
LinphoneCallTestParams caller_test_params = {0}, callee_test_params = {0};
|
||||
|
||||
const MSList* elem_video =linphone_core_get_video_codecs(caller->lc);
|
||||
|
||||
const MSList* elem_audio =linphone_core_get_audio_codecs(caller->lc);
|
||||
|
||||
disable_all_codecs(elem_audio, caller);
|
||||
disable_all_codecs(elem_video, caller);
|
||||
|
||||
callee_policy.automatically_initiate=FALSE;
|
||||
callee_policy.automatically_accept=TRUE;
|
||||
caller_policy.automatically_initiate=TRUE;
|
||||
caller_policy.automatically_accept=FALSE;
|
||||
|
||||
linphone_core_set_video_policy(callee->lc,&callee_policy);
|
||||
linphone_core_set_video_policy(caller->lc,&caller_policy);
|
||||
|
||||
|
||||
linphone_core_enable_video_display(callee->lc, TRUE);
|
||||
linphone_core_enable_video_capture(callee->lc, TRUE);
|
||||
|
||||
linphone_core_enable_video_display(caller->lc, TRUE);
|
||||
linphone_core_enable_video_capture(caller->lc, TRUE);
|
||||
|
||||
/* Create call params */
|
||||
caller_test_params.base = linphone_core_create_call_params(caller->lc, NULL);
|
||||
|
||||
|
||||
out_call = linphone_core_invite_address_with_params(caller->lc, callee->identity,caller_test_params.base);
|
||||
linphone_call_ref(out_call);
|
||||
|
||||
linphone_call_params_destroy(caller_test_params.base);
|
||||
if (callee_test_params.base) linphone_call_params_destroy(callee_test_params.base);
|
||||
|
||||
|
||||
BC_ASSERT_TRUE(wait_for(caller->lc, callee->lc, &caller->stat.number_of_LinphoneCallOutgoingInit, 1));
|
||||
|
||||
BC_ASSERT_TRUE(wait_for_until(caller->lc, callee->lc, &caller->stat.number_of_LinphoneCallError, 1, 6000));
|
||||
BC_ASSERT_EQUAL(linphone_call_get_reason(out_call), LinphoneReasonNotAcceptable, int, "%d");
|
||||
BC_ASSERT_EQUAL(callee->stat.number_of_LinphoneCallIncomingReceived, 0, int, "%d");
|
||||
|
||||
linphone_call_unref(out_call);
|
||||
linphone_core_manager_destroy(callee);
|
||||
linphone_core_manager_destroy(caller);
|
||||
|
||||
}
|
||||
|
||||
static void simple_call_compatibility_mode(void) {
|
||||
char route[256];
|
||||
LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc");
|
||||
|
|
@ -2082,16 +2175,16 @@ void video_call_base_3(LinphoneCoreManager* caller,LinphoneCoreManager* callee,
|
|||
|
||||
LinphoneCall* callee_call;
|
||||
LinphoneCall* caller_call;
|
||||
LinphoneVideoPolicy callee_policy, pauline_policy;
|
||||
LinphoneVideoPolicy callee_policy, caller_policy;
|
||||
|
||||
if (using_policy) {
|
||||
callee_policy.automatically_initiate=FALSE;
|
||||
callee_policy.automatically_accept=TRUE;
|
||||
pauline_policy.automatically_initiate=TRUE;
|
||||
pauline_policy.automatically_accept=FALSE;
|
||||
caller_policy.automatically_initiate=TRUE;
|
||||
caller_policy.automatically_accept=FALSE;
|
||||
|
||||
linphone_core_set_video_policy(callee->lc,&callee_policy);
|
||||
linphone_core_set_video_policy(caller->lc,&pauline_policy);
|
||||
linphone_core_set_video_policy(caller->lc,&caller_policy);
|
||||
}
|
||||
|
||||
linphone_core_enable_video_display(callee->lc, callee_video_enabled);
|
||||
|
|
@ -5875,6 +5968,8 @@ test_t call_tests[] = {
|
|||
{ "Call established with rejected info during re-invite",call_established_with_rejected_info_during_reinvite},
|
||||
{ "Call redirected by callee", call_redirect},
|
||||
{ "Call with specified codec bitrate", call_with_specified_codec_bitrate},
|
||||
{ "Call with no audio codec", call_with_no_audio_codec},
|
||||
{ "Video call with no audio and no video codec", video_call_with_no_audio_and_no_video_codec},
|
||||
{ "Call with in-dialog UPDATE request", call_with_in_dialog_update },
|
||||
{ "Call with in-dialog codec change", call_with_in_dialog_codec_change },
|
||||
{ "Call with in-dialog codec change no sdp", call_with_in_dialog_codec_change_no_sdp },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue