mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-04-20 19:18:31 +00:00
store cam setting in call context to be able to manage webcam configuration, call by call, specially useful to set nowebcam in Pausing state only.
This commit is contained in:
parent
740c4e8c21
commit
a56d4e495e
5 changed files with 124 additions and 47 deletions
|
|
@ -161,7 +161,7 @@ void linphone_core_update_streams(LinphoneCore *lc, LinphoneCall *call, SalMedia
|
||||||
linphone_core_enable_mic(lc, linphone_core_mic_enabled(lc));
|
linphone_core_enable_mic(lc, linphone_core_mic_enabled(lc));
|
||||||
#ifdef VIDEO_ENABLED
|
#ifdef VIDEO_ENABLED
|
||||||
if (call->videostream && call->camera_enabled)
|
if (call->videostream && call->camera_enabled)
|
||||||
video_stream_change_camera(call->videostream,lc->video_conf.device );
|
video_stream_change_camera(call->videostream,linphone_call_get_video_device(call));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
/*FIXME ZRTP, might be restarted in any cases ? */
|
/*FIXME ZRTP, might be restarted in any cases ? */
|
||||||
|
|
@ -197,6 +197,15 @@ void linphone_core_update_streams(LinphoneCore *lc, LinphoneCall *call, SalMedia
|
||||||
if (call->params->real_early_media && call->state==LinphoneCallOutgoingEarlyMedia){
|
if (call->params->real_early_media && call->state==LinphoneCallOutgoingEarlyMedia){
|
||||||
prepare_early_media_forking(call);
|
prepare_early_media_forking(call);
|
||||||
}
|
}
|
||||||
|
#ifdef VIDEO_ENABLED
|
||||||
|
if (call->state==LinphoneCallPausing) {
|
||||||
|
/*change cam to noweb cam*/
|
||||||
|
call->cam = get_nowebcam_device();
|
||||||
|
} else if (call->state != LinphoneCallPaused) {
|
||||||
|
/*restaure web cam*/
|
||||||
|
call->cam = lc->video_conf.device;
|
||||||
|
}
|
||||||
|
#endif /*VIDEO*/
|
||||||
linphone_call_start_media_streams(call,all_muted,send_ringbacktone);
|
linphone_call_start_media_streams(call,all_muted,send_ringbacktone);
|
||||||
if (call->state==LinphoneCallPausing && call->paused_by_app && ms_list_size(lc->calls)==1){
|
if (call->state==LinphoneCallPausing && call->paused_by_app && ms_list_size(lc->calls)==1){
|
||||||
linphone_core_play_named_tone(lc,LinphoneToneCallOnHold);
|
linphone_core_play_named_tone(lc,LinphoneToneCallOnHold);
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ static const char EC_STATE_STORE[] = ".linphone.ecstate";
|
||||||
static void linphone_call_stats_uninit(LinphoneCallStats *stats);
|
static void linphone_call_stats_uninit(LinphoneCallStats *stats);
|
||||||
|
|
||||||
#ifdef VIDEO_ENABLED
|
#ifdef VIDEO_ENABLED
|
||||||
static MSWebCam *get_nowebcam_device(){
|
MSWebCam *get_nowebcam_device(){
|
||||||
return ms_web_cam_manager_get_cam(ms_web_cam_manager_get(),"StaticImage: Static picture");
|
return ms_web_cam_manager_get_cam(ms_web_cam_manager_get(),"StaticImage: Static picture");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -819,7 +819,9 @@ static void linphone_call_init_common(LinphoneCall *call, LinphoneAddress *from,
|
||||||
|
|
||||||
linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_AUDIO], LINPHONE_CALL_STATS_AUDIO);
|
linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_AUDIO], LINPHONE_CALL_STATS_AUDIO);
|
||||||
linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_VIDEO], LINPHONE_CALL_STATS_VIDEO);
|
linphone_call_init_stats(&call->stats[LINPHONE_CALL_STATS_VIDEO], LINPHONE_CALL_STATS_VIDEO);
|
||||||
|
#ifdef VIDEO_ENABLED
|
||||||
|
call->cam = call->core->video_conf.device;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void linphone_call_init_stats(LinphoneCallStats *stats, int type) {
|
void linphone_call_init_stats(LinphoneCallStats *stats, int type) {
|
||||||
|
|
@ -1660,16 +1662,17 @@ LinphoneCall *linphone_call_get_replaced_call(LinphoneCall *call){
|
||||||
**/
|
**/
|
||||||
void linphone_call_enable_camera (LinphoneCall *call, bool_t enable){
|
void linphone_call_enable_camera (LinphoneCall *call, bool_t enable){
|
||||||
#ifdef VIDEO_ENABLED
|
#ifdef VIDEO_ENABLED
|
||||||
|
call->camera_enabled=enable;
|
||||||
if ((call->state==LinphoneCallStreamsRunning || call->state==LinphoneCallOutgoingEarlyMedia || call->state==LinphoneCallIncomingEarlyMedia)
|
if ((call->state==LinphoneCallStreamsRunning || call->state==LinphoneCallOutgoingEarlyMedia || call->state==LinphoneCallIncomingEarlyMedia)
|
||||||
&& call->videostream!=NULL ){
|
&& call->videostream!=NULL ){
|
||||||
LinphoneCore *lc=call->core;
|
if (video_stream_get_camera(call->videostream) != linphone_call_get_video_device(call)) {
|
||||||
MSWebCam *nowebcam=get_nowebcam_device();
|
ms_message("Swithching video cam from [%s] to %s on call [%p]" ,ms_web_cam_get_name(video_stream_get_camera(call->videostream))
|
||||||
if (call->camera_enabled!=enable && lc->video_conf.device!=nowebcam){
|
,ms_web_cam_get_name(linphone_call_get_video_device(call))
|
||||||
video_stream_change_camera(call->videostream,
|
,call);
|
||||||
enable ? lc->video_conf.device : nowebcam);
|
video_stream_change_camera(call->videostream,linphone_call_get_video_device(call));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
call->camera_enabled=enable;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2579,9 +2582,8 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu
|
||||||
|
|
||||||
if (used_pt!=-1){
|
if (used_pt!=-1){
|
||||||
VideoStreamDir dir=VideoStreamSendRecv;
|
VideoStreamDir dir=VideoStreamSendRecv;
|
||||||
MSWebCam *cam=lc->video_conf.device;
|
|
||||||
bool_t is_inactive=FALSE;
|
bool_t is_inactive=FALSE;
|
||||||
|
MSWebCam *cam;
|
||||||
call->current_params->video_codec = rtp_profile_get_payload(call->video_profile, used_pt);
|
call->current_params->video_codec = rtp_profile_get_payload(call->video_profile, used_pt);
|
||||||
call->current_params->has_video=TRUE;
|
call->current_params->has_video=TRUE;
|
||||||
|
|
||||||
|
|
@ -2609,10 +2611,6 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu
|
||||||
else
|
else
|
||||||
dir=VideoStreamSendOnly;
|
dir=VideoStreamSendOnly;
|
||||||
} else if (vstream->dir==SalStreamSendOnly && lc->video_conf.capture ){
|
} else if (vstream->dir==SalStreamSendOnly && lc->video_conf.capture ){
|
||||||
if (local_st_desc->dir==SalStreamSendOnly){
|
|
||||||
/* localdesc stream dir to SendOnly is when we want to put on hold, so use nowebcam in this case*/
|
|
||||||
cam=get_nowebcam_device();
|
|
||||||
}
|
|
||||||
dir=VideoStreamSendOnly;
|
dir=VideoStreamSendOnly;
|
||||||
}else if (vstream->dir==SalStreamRecvOnly && lc->video_conf.display ){
|
}else if (vstream->dir==SalStreamRecvOnly && lc->video_conf.display ){
|
||||||
dir=VideoStreamRecvOnly;
|
dir=VideoStreamRecvOnly;
|
||||||
|
|
@ -2628,8 +2626,10 @@ static void linphone_call_start_video_stream(LinphoneCall *call, bool_t all_inpu
|
||||||
/*either inactive or incompatible with local capabilities*/
|
/*either inactive or incompatible with local capabilities*/
|
||||||
is_inactive=TRUE;
|
is_inactive=TRUE;
|
||||||
}
|
}
|
||||||
if (call->camera_enabled==FALSE || all_inputs_muted){
|
if (all_inputs_muted){
|
||||||
cam=get_nowebcam_device();
|
cam=get_nowebcam_device();
|
||||||
|
} else {
|
||||||
|
cam = linphone_call_get_video_device(call);
|
||||||
}
|
}
|
||||||
if (!is_inactive){
|
if (!is_inactive){
|
||||||
if (sal_stream_description_has_srtp(vstream) == TRUE) {
|
if (sal_stream_description_has_srtp(vstream) == TRUE) {
|
||||||
|
|
@ -3882,3 +3882,11 @@ void linphone_call_set_native_video_window_id(LinphoneCall *call, unsigned long
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#ifdef VIDEO_ENABLED
|
||||||
|
MSWebCam *linphone_call_get_video_device(const LinphoneCall *call) {
|
||||||
|
if (call->camera_enabled==FALSE)
|
||||||
|
return get_nowebcam_device();
|
||||||
|
else
|
||||||
|
return call->cam;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -283,6 +283,8 @@ struct _LinphoneCall{
|
||||||
bool_t record_active;
|
bool_t record_active;
|
||||||
|
|
||||||
bool_t paused_by_app;
|
bool_t paused_by_app;
|
||||||
|
|
||||||
|
MSWebCam *cam; /*webcam use for this call*/
|
||||||
};
|
};
|
||||||
|
|
||||||
BELLE_SIP_DECLARE_VPTR(LinphoneCall);
|
BELLE_SIP_DECLARE_VPTR(LinphoneCall);
|
||||||
|
|
@ -1170,7 +1172,10 @@ typedef struct _VTableReference VTableReference;
|
||||||
void v_table_reference_destroy(VTableReference *ref);
|
void v_table_reference_destroy(VTableReference *ref);
|
||||||
|
|
||||||
void _linphone_core_add_listener(LinphoneCore *lc, LinphoneCoreVTable *vtable, bool_t autorelease);
|
void _linphone_core_add_listener(LinphoneCore *lc, LinphoneCoreVTable *vtable, bool_t autorelease);
|
||||||
|
#ifdef VIDEO_ENABLED
|
||||||
|
MSWebCam *linphone_call_get_video_device(const LinphoneCall *call);
|
||||||
|
MSWebCam *get_nowebcam_device();
|
||||||
|
#endif
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 653165f299c5bf9acc30f8b9c21a4187125f01db
|
Subproject commit 30e2cb869bce182e91a69ed0350bb11687bcd2bc
|
||||||
|
|
@ -2843,7 +2843,7 @@ static void multiple_early_media(void) {
|
||||||
linphone_core_manager_destroy(pauline);
|
linphone_core_manager_destroy(pauline);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void check_media_direction(LinphoneCoreManager* mgr, LinphoneCall *call, LinphoneCoreManager* mgr2,LinphoneMediaDirection audio_dir, LinphoneMediaDirection video_dir) {
|
static void check_media_direction(LinphoneCoreManager* mgr, LinphoneCall *call, MSList* lcs,LinphoneMediaDirection audio_dir, LinphoneMediaDirection video_dir) {
|
||||||
CU_ASSERT_PTR_NOT_NULL(call);
|
CU_ASSERT_PTR_NOT_NULL(call);
|
||||||
if (call) {
|
if (call) {
|
||||||
int current_recv_iframe = mgr->stat.number_of_IframeDecoded;
|
int current_recv_iframe = mgr->stat.number_of_IframeDecoded;
|
||||||
|
|
@ -2856,7 +2856,7 @@ static void check_media_direction(LinphoneCoreManager* mgr, LinphoneCall *call,
|
||||||
linphone_call_set_next_video_frame_decoded_callback(call,linphone_call_cb,mgr->lc);
|
linphone_call_set_next_video_frame_decoded_callback(call,linphone_call_cb,mgr->lc);
|
||||||
linphone_call_send_vfu_request(call);
|
linphone_call_send_vfu_request(call);
|
||||||
|
|
||||||
wait_for_until(mgr->lc,mgr2->lc,&dummy,1,2000);
|
wait_for_list(lcs,&dummy,1,2000);
|
||||||
|
|
||||||
switch (video_dir) {
|
switch (video_dir) {
|
||||||
case LinphoneMediaDirectionInactive:
|
case LinphoneMediaDirectionInactive:
|
||||||
|
|
@ -2872,7 +2872,7 @@ static void check_media_direction(LinphoneCoreManager* mgr, LinphoneCall *call,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
CU_ASSERT_TRUE(wait_for_until(mgr->lc,mgr2->lc, &mgr->stat.number_of_IframeDecoded,current_recv_iframe + expected_recv_iframe,3000));
|
CU_ASSERT_TRUE(wait_for_list(lcs, &mgr->stat.number_of_IframeDecoded,current_recv_iframe + expected_recv_iframe,3000));
|
||||||
|
|
||||||
switch (audio_dir) {
|
switch (audio_dir) {
|
||||||
case LinphoneMediaDirectionInactive:
|
case LinphoneMediaDirectionInactive:
|
||||||
|
|
@ -2891,21 +2891,12 @@ static void check_media_direction(LinphoneCoreManager* mgr, LinphoneCall *call,
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
static void accept_call_in_send_only(void) {
|
static void accept_call_in_send_only_base(LinphoneCoreManager* pauline, LinphoneCoreManager *marie, MSList *lcs) {
|
||||||
LinphoneCoreManager* pauline, *marie;
|
#define DEFAULT_WAIT_FOR 10000
|
||||||
LinphoneCallParams *params;
|
LinphoneCallParams *params;
|
||||||
LinphoneVideoPolicy pol;
|
LinphoneVideoPolicy pol;
|
||||||
LinphoneCall *call;
|
LinphoneCall *call;
|
||||||
int begin;
|
|
||||||
int leaked_objects;
|
|
||||||
|
|
||||||
belle_sip_object_enable_leak_detector(TRUE);
|
|
||||||
begin=belle_sip_object_get_object_count();
|
|
||||||
|
|
||||||
pauline = linphone_core_manager_new("pauline_rc");
|
|
||||||
marie = linphone_core_manager_new("marie_rc");
|
|
||||||
|
|
||||||
pol.automatically_accept=1;
|
pol.automatically_accept=1;
|
||||||
pol.automatically_initiate=1;
|
pol.automatically_initiate=1;
|
||||||
|
|
||||||
|
|
@ -2922,8 +2913,14 @@ static void accept_call_in_send_only(void) {
|
||||||
,pauline->lc);
|
,pauline->lc);
|
||||||
|
|
||||||
|
|
||||||
CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc, &marie->stat.number_of_LinphoneCallIncomingReceived,1));
|
CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallIncomingReceived,1,DEFAULT_WAIT_FOR));
|
||||||
call=linphone_core_get_current_call(marie->lc);
|
|
||||||
|
{
|
||||||
|
char* remote_uri = linphone_address_as_string_uri_only(pauline->identity);
|
||||||
|
call = linphone_core_find_call_from_uri(marie->lc,remote_uri);
|
||||||
|
ms_free(remote_uri);
|
||||||
|
}
|
||||||
|
|
||||||
if (call) {
|
if (call) {
|
||||||
params=linphone_core_create_default_call_parameters(marie->lc);
|
params=linphone_core_create_default_call_parameters(marie->lc);
|
||||||
linphone_call_params_set_audio_direction(params,LinphoneMediaDirectionSendOnly);
|
linphone_call_params_set_audio_direction(params,LinphoneMediaDirectionSendOnly);
|
||||||
|
|
@ -2931,15 +2928,15 @@ static void accept_call_in_send_only(void) {
|
||||||
linphone_core_accept_call_with_params(marie->lc,call,params);
|
linphone_core_accept_call_with_params(marie->lc,call,params);
|
||||||
linphone_call_params_destroy(params);
|
linphone_call_params_destroy(params);
|
||||||
|
|
||||||
CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc, &marie->stat.number_of_LinphoneCallStreamsRunning,1));
|
CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallStreamsRunning,1,DEFAULT_WAIT_FOR));
|
||||||
CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc, &pauline->stat.number_of_LinphoneCallPausedByRemote,1));
|
CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallPausedByRemote,1,DEFAULT_WAIT_FOR));
|
||||||
|
|
||||||
{
|
{
|
||||||
const LinphoneCallParams *params = linphone_call_get_current_params(call);
|
const LinphoneCallParams *params = linphone_call_get_current_params(call);
|
||||||
CU_ASSERT_EQUAL(LinphoneMediaDirectionSendOnly,linphone_call_params_get_audio_direction(params));
|
CU_ASSERT_EQUAL(LinphoneMediaDirectionSendOnly,linphone_call_params_get_audio_direction(params));
|
||||||
CU_ASSERT_EQUAL(LinphoneMediaDirectionSendOnly,linphone_call_params_get_video_direction(params));
|
CU_ASSERT_EQUAL(LinphoneMediaDirectionSendOnly,linphone_call_params_get_video_direction(params));
|
||||||
|
|
||||||
CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc, &marie->stat.number_of_LinphoneCallStatsUpdated,2));
|
CU_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_LinphoneCallStatsUpdated,2,DEFAULT_WAIT_FOR));
|
||||||
CU_ASSERT_TRUE(linphone_call_get_audio_stats(call)->download_bandwidth<5);
|
CU_ASSERT_TRUE(linphone_call_get_audio_stats(call)->download_bandwidth<5);
|
||||||
CU_ASSERT_TRUE(linphone_call_get_video_stats(call)->download_bandwidth<5);
|
CU_ASSERT_TRUE(linphone_call_get_video_stats(call)->download_bandwidth<5);
|
||||||
}
|
}
|
||||||
|
|
@ -2952,9 +2949,9 @@ static void accept_call_in_send_only(void) {
|
||||||
CU_ASSERT_EQUAL(LinphoneMediaDirectionRecvOnly,linphone_call_params_get_audio_direction(params));
|
CU_ASSERT_EQUAL(LinphoneMediaDirectionRecvOnly,linphone_call_params_get_audio_direction(params));
|
||||||
CU_ASSERT_EQUAL(LinphoneMediaDirectionRecvOnly,linphone_call_params_get_video_direction(params));
|
CU_ASSERT_EQUAL(LinphoneMediaDirectionRecvOnly,linphone_call_params_get_video_direction(params));
|
||||||
|
|
||||||
CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc, &pauline->stat.number_of_IframeDecoded,1));
|
CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_IframeDecoded,1,DEFAULT_WAIT_FOR));
|
||||||
|
|
||||||
CU_ASSERT_TRUE(wait_for(pauline->lc,marie->lc, &pauline->stat.number_of_LinphoneCallStatsUpdated,4));
|
CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallStatsUpdated,4,DEFAULT_WAIT_FOR));
|
||||||
|
|
||||||
CU_ASSERT_TRUE(linphone_call_get_audio_stats(call)->download_bandwidth>0);
|
CU_ASSERT_TRUE(linphone_call_get_audio_stats(call)->download_bandwidth>0);
|
||||||
CU_ASSERT_TRUE(linphone_call_get_video_stats(call)->download_bandwidth>0);
|
CU_ASSERT_TRUE(linphone_call_get_video_stats(call)->download_bandwidth>0);
|
||||||
|
|
@ -2963,9 +2960,66 @@ static void accept_call_in_send_only(void) {
|
||||||
CU_ASSERT_TRUE(linphone_call_get_video_stats(call)->upload_bandwidth<5);
|
CU_ASSERT_TRUE(linphone_call_get_video_stats(call)->upload_bandwidth<5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
static void accept_call_in_send_only(void) {
|
||||||
|
int begin;
|
||||||
|
int leaked_objects;
|
||||||
|
LinphoneCoreManager *pauline, *marie;
|
||||||
|
MSList *lcs=NULL;;
|
||||||
|
|
||||||
|
belle_sip_object_enable_leak_detector(TRUE);
|
||||||
|
begin=belle_sip_object_get_object_count();
|
||||||
|
|
||||||
|
pauline = linphone_core_manager_new("pauline_rc");
|
||||||
|
marie = linphone_core_manager_new("marie_rc");
|
||||||
|
|
||||||
|
lcs=ms_list_append(lcs,pauline->lc);
|
||||||
|
lcs=ms_list_append(lcs,marie->lc);
|
||||||
|
|
||||||
|
accept_call_in_send_only_base(pauline,marie,lcs);
|
||||||
|
|
||||||
|
leaked_objects=belle_sip_object_get_object_count()-begin;
|
||||||
|
|
||||||
|
CU_ASSERT_TRUE(leaked_objects==0);
|
||||||
|
if (leaked_objects>0){
|
||||||
|
belle_sip_object_dump_active_objects();
|
||||||
|
}
|
||||||
end_call(marie,pauline);
|
end_call(marie,pauline);
|
||||||
|
ms_free(lcs);
|
||||||
linphone_core_manager_destroy(marie);
|
linphone_core_manager_destroy(marie);
|
||||||
linphone_core_manager_destroy(pauline);
|
linphone_core_manager_destroy(pauline);
|
||||||
|
|
||||||
|
}
|
||||||
|
void two_accept_call_in_send_only() {
|
||||||
|
int begin;
|
||||||
|
int leaked_objects;
|
||||||
|
LinphoneCoreManager *pauline, *marie, *laure;
|
||||||
|
MSList *lcs=NULL;
|
||||||
|
|
||||||
|
belle_sip_object_enable_leak_detector(TRUE);
|
||||||
|
begin=belle_sip_object_get_object_count();
|
||||||
|
|
||||||
|
pauline = linphone_core_manager_new("pauline_rc");
|
||||||
|
marie = linphone_core_manager_new("marie_rc");
|
||||||
|
laure = linphone_core_manager_new("laure_rc");
|
||||||
|
|
||||||
|
lcs=ms_list_append(lcs,pauline->lc);
|
||||||
|
lcs=ms_list_append(lcs,marie->lc);
|
||||||
|
lcs=ms_list_append(lcs,laure->lc);
|
||||||
|
|
||||||
|
accept_call_in_send_only_base(pauline,marie,lcs);
|
||||||
|
|
||||||
|
|
||||||
|
reset_counters(&marie->stat);
|
||||||
|
accept_call_in_send_only_base(laure,marie,lcs);
|
||||||
|
|
||||||
|
end_call(marie,pauline);
|
||||||
|
end_call(laure,marie);
|
||||||
|
|
||||||
|
linphone_core_manager_destroy(marie);
|
||||||
|
linphone_core_manager_destroy(pauline);
|
||||||
|
linphone_core_manager_destroy(laure);
|
||||||
|
|
||||||
leaked_objects=belle_sip_object_get_object_count()-begin;
|
leaked_objects=belle_sip_object_get_object_count()-begin;
|
||||||
|
|
||||||
CU_ASSERT_TRUE(leaked_objects==0);
|
CU_ASSERT_TRUE(leaked_objects==0);
|
||||||
|
|
@ -2974,7 +3028,6 @@ static void accept_call_in_send_only(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif /*0*/
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char *create_filepath(const char *dir, const char *filename, const char *ext) {
|
static char *create_filepath(const char *dir, const char *filename, const char *ext) {
|
||||||
|
|
@ -3646,6 +3699,7 @@ static void video_call_with_re_invite_inactive_followed_by_re_invite_base(bool_t
|
||||||
LinphoneCoreManager* marie;
|
LinphoneCoreManager* marie;
|
||||||
LinphoneCoreManager* pauline;
|
LinphoneCoreManager* pauline;
|
||||||
LinphoneCallParams *params;
|
LinphoneCallParams *params;
|
||||||
|
MSList *lcs=NULL;
|
||||||
|
|
||||||
belle_sip_object_enable_leak_detector(TRUE);
|
belle_sip_object_enable_leak_detector(TRUE);
|
||||||
begin=belle_sip_object_get_object_count();
|
begin=belle_sip_object_get_object_count();
|
||||||
|
|
@ -3656,6 +3710,8 @@ static void video_call_with_re_invite_inactive_followed_by_re_invite_base(bool_t
|
||||||
linphone_core_set_video_device(pauline->lc,"Mire: Mire (synthetic moving picture)");
|
linphone_core_set_video_device(pauline->lc,"Mire: Mire (synthetic moving picture)");
|
||||||
linphone_core_set_video_device(marie->lc,"Mire: Mire (synthetic moving picture)");
|
linphone_core_set_video_device(marie->lc,"Mire: Mire (synthetic moving picture)");
|
||||||
linphone_core_set_avpf_mode(marie->lc,TRUE);
|
linphone_core_set_avpf_mode(marie->lc,TRUE);
|
||||||
|
lcs=ms_list_append(lcs,pauline->lc);
|
||||||
|
lcs=ms_list_append(lcs,marie->lc);
|
||||||
|
|
||||||
video_call_base_2(marie,pauline,TRUE,LinphoneMediaEncryptionNone,TRUE,TRUE);
|
video_call_base_2(marie,pauline,TRUE,LinphoneMediaEncryptionNone,TRUE,TRUE);
|
||||||
|
|
||||||
|
|
@ -3671,8 +3727,8 @@ static void video_call_with_re_invite_inactive_followed_by_re_invite_base(bool_t
|
||||||
CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallPaused,1));
|
CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallPaused,1));
|
||||||
CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallPausedByRemote,1));
|
CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallPausedByRemote,1));
|
||||||
|
|
||||||
check_media_direction(marie,linphone_core_get_current_call(marie->lc),pauline,LinphoneMediaDirectionInactive,LinphoneMediaDirectionInactive);
|
check_media_direction(marie,linphone_core_get_current_call(marie->lc),lcs,LinphoneMediaDirectionInactive,LinphoneMediaDirectionInactive);
|
||||||
check_media_direction(pauline,linphone_core_get_current_call(pauline->lc), marie, LinphoneMediaDirectionInactive,LinphoneMediaDirectionInactive);
|
check_media_direction(pauline,linphone_core_get_current_call(pauline->lc), lcs, LinphoneMediaDirectionInactive,LinphoneMediaDirectionInactive);
|
||||||
|
|
||||||
if (no_sdp) {
|
if (no_sdp) {
|
||||||
linphone_core_enable_sdp_200_ack(marie->lc,TRUE);
|
linphone_core_enable_sdp_200_ack(marie->lc,TRUE);
|
||||||
|
|
@ -3693,8 +3749,8 @@ static void video_call_with_re_invite_inactive_followed_by_re_invite_base(bool_t
|
||||||
CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,2));
|
CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphoneCallStreamsRunning,2));
|
||||||
CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2));
|
CU_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2));
|
||||||
|
|
||||||
check_media_direction(marie,linphone_core_get_current_call(marie->lc),pauline,LinphoneMediaDirectionSendRecv,LinphoneMediaDirectionSendRecv);
|
check_media_direction(marie,linphone_core_get_current_call(marie->lc),lcs,LinphoneMediaDirectionSendRecv,LinphoneMediaDirectionSendRecv);
|
||||||
check_media_direction(pauline,linphone_core_get_current_call(pauline->lc),marie,LinphoneMediaDirectionSendRecv,LinphoneMediaDirectionSendRecv);
|
check_media_direction(pauline,linphone_core_get_current_call(pauline->lc),lcs,LinphoneMediaDirectionSendRecv,LinphoneMediaDirectionSendRecv);
|
||||||
|
|
||||||
}
|
}
|
||||||
end_call(marie,pauline);
|
end_call(marie,pauline);
|
||||||
|
|
@ -3782,9 +3838,8 @@ test_t call_tests[] = {
|
||||||
{ "DTLS SRTP ice video call",dtls_srtp_ice_video_call},
|
{ "DTLS SRTP ice video call",dtls_srtp_ice_video_call},
|
||||||
{ "DTLS SRTP ice video call with relay",dtls_srtp_ice_video_call_with_relay},
|
{ "DTLS SRTP ice video call with relay",dtls_srtp_ice_video_call_with_relay},
|
||||||
{ "Video call with limited bandwidth", video_call_limited_bandwidth},
|
{ "Video call with limited bandwidth", video_call_limited_bandwidth},
|
||||||
#if 0
|
|
||||||
{ "Video call accepted in send only", accept_call_in_send_only},
|
{ "Video call accepted in send only", accept_call_in_send_only},
|
||||||
#endif /*0*/
|
{ "2 Video call accepted in send only", two_accept_call_in_send_only},
|
||||||
{ "Video call with re-invite(inactive) followed by re-invite", video_call_with_re_invite_inactive_followed_by_re_invite},
|
{ "Video call with re-invite(inactive) followed by re-invite", video_call_with_re_invite_inactive_followed_by_re_invite},
|
||||||
{ "Video call with re-invite(inactive) followed by re-invite(no sdp)", video_call_with_re_invite_inactive_followed_by_re_invite_no_sdp},
|
{ "Video call with re-invite(inactive) followed by re-invite(no sdp)", video_call_with_re_invite_inactive_followed_by_re_invite_no_sdp},
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue