#endif
static int lpc_cmd_states(LinphoneCore *lc, char *args);
static int lpc_cmd_identify(LinphoneCore *lc, char *args);
+static int lpc_cmd_ringback(LinphoneCore *lc, char *args);
/* Command handler helpers */
static void linphonec_proxy_add(LinphoneCore *lc);
"'identify' \t: returns remote user-agent string for current call.\n"
"'identify <id>' \t: returns remote user-agent string for call with supplied id.\n"
},
+ { "ringback", lpc_cmd_ringback, "Specifies a ringback tone to be played to remote end during incoming calls",
+ "'ringback <path of mono .wav file>'\t: Specifies a ringback tone to be played to remote end during incoming calls\n"
+ "'ringback disable'\t: Disable playing of ringback tone to callers\n"
+ },
{ NULL,NULL,NULL,NULL}
};
lpc_cmd_terminate(LinphoneCore *lc, char *args)
{
if (linphone_core_get_calls(lc)==NULL){
- linphonec_out("No active calls");
+ linphonec_out("No active calls\n");
return 1;
}
if (!args)
LinphoneCall *call=linphonec_get_call(id);
if (call){
if (linphone_core_terminate_call(lc,call)==-1){
- linphonec_out("Could not stop the call with id %li",id);
+ linphonec_out("Could not stop the call with id %li\n",id);
}
}else return 0;
return 1;
return 1;
}
+static int lpc_cmd_ringback(LinphoneCore *lc, char *args){
+ if (!args) return 0;
+ if (strcmp(args,"disable")==0){
+ linphone_core_set_remote_ringback_tone(lc,NULL);
+ linphonec_out("Disabling ringback tone.\n");
+ return 1;
+ }
+ linphone_core_set_remote_ringback_tone (lc,args);
+ linphonec_out("Using %s as ringback tone to be played to callers.",args);
+ return 1;
+}
+
/***************************************************************************
*
* Command table management funx
const char *from,*to;
char *tmp;
LinphoneAddress *from_parsed;
- bool_t early_media=lp_config_get_int(lc->config,"sip","send_early_media",0);
-
+ const char * early_media=linphone_core_get_remote_ringback_tone (lc);
+
/* first check if we can answer successfully to this invite */
if (lc->presence_mode==LinphoneStatusBusy ||
lc->presence_mode==LinphoneStatusOffline ||
}else{
/*TODO : play a tone within the context of the current call */
}
- sal_call_notify_ringing(h,early_media);
+ sal_call_notify_ringing(h,early_media!=NULL);
#if !(__IPHONE_OS_VERSION_MIN_REQUIRED >= 40000)
linphone_call_init_media_streams(call);
- if (early_media){
+ if (early_media!=NULL){
linphone_call_start_early_media (call);
}
#endif
}
static void setup_ring_player(LinphoneCore *lc, LinphoneCall *call){
- const char *ringfile=lc->sound_conf.remote_ring;
int pause_time=3000;
- if (lc->play_file!=NULL){
- audio_stream_play(call->audiostream,lc->play_file);
- pause_time=0;
- }else{
- audio_stream_play(call->audiostream,ringfile);
- }
+ audio_stream_play(call->audiostream,lc->sound_conf.ringback_tone);
ms_filter_call_method(call->audiostream->soundread,MS_FILE_PLAYER_LOOP,&pause_time);
}
playcard=NULL;
captcard=NULL;
recfile=NULL;
+ if (send_early_media)
+ playfile=NULL;
}
/*if playfile are supplied don't use soundcards*/
if (lc->use_files) {
gain=lp_config_get_float(lc->config,"sound","playback_gain_db",0);
linphone_core_set_playback_gain_db (lc,gain);
+
+ linphone_core_set_remote_ringback_tone (lc,lp_config_get_string(lc->config,"sound","ringback_tone",NULL));
}
static void sip_config_read(LinphoneCore *lc)
return 0;
}
+/**
+ * Specifiies a ring back tone to be played to far end during incoming calls.
+**/
+void linphone_core_set_remote_ringback_tone(LinphoneCore *lc, const char *file){
+ if (lc->sound_conf.ringback_tone){
+ ms_free(lc->sound_conf.ringback_tone);
+ lc->sound_conf.ringback_tone=NULL;
+ }
+ if (file)
+ lc->sound_conf.ringback_tone=ms_strdup(file);
+}
+
+/**
+ * Returns the ring back tone played to far end during incoming calls.
+**/
+const char *linphone_core_get_remote_ringback_tone(const LinphoneCore *lc){
+ return lc->sound_conf.ringback_tone;
+}
+
static PayloadType* find_payload_type_from_list(const char* type, int rate,const MSList* from) {
const MSList *elem;
for(elem=from;elem!=NULL;elem=elem->next){
const char *linphone_core_get_ring(const LinphoneCore *lc);
void linphone_core_set_ringback(LinphoneCore *lc, const char *path);
const char * linphone_core_get_ringback(const LinphoneCore *lc);
+void linphone_core_set_remote_ringback_tone(LinphoneCore *lc,const char *);
+const char *linphone_core_get_remote_ringback_tone(const LinphoneCore *lc);
int linphone_core_preview_ring(LinphoneCore *lc, const char *ring,LinphoneCoreCbFunc func,void * userdata);
void linphone_core_enable_echo_cancellation(LinphoneCore *lc, bool_t val);
bool_t linphone_core_echo_cancellation_enabled(LinphoneCore *lc);
char source;
char *local_ring;
char *remote_ring;
+ char *ringback_tone;
bool_t ec;
bool_t ea;
bool_t agc;