[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Linphone-developers] coreapi/callbacks.c : Call state Remote ringin
From: |
Simon Morlat |
Subject: |
Re: [Linphone-developers] coreapi/callbacks.c : Call state Remote ringing : Set only when soundcard working |
Date: |
Mon, 14 Feb 2011 17:32:28 +0100 |
Hello,
Thanks Romary for pointing this mistake. THis is now fixed in git.
Simon
Le vendredi 11 février 2011 à 11:38 +0100, Romary Sonrier a écrit :
> Hello,
>
> I have a question about the following piece of code ( from
> coreapi/callbacks.c) :
>
> The function call_ringing function, only call
>
> linphone_call_set_state(call,LinphoneCallOutgoingRinging,"Remote
> ringing");
> when the soundcard works. This is depending of the meaning of the
> state LinphoneCallOutgoingRinging, which seems to be done when the
> remote is ringing.
>
> In my case, i don't use soundcards, but files instead, so i don't get
> the call state "Ringing", which is a issue to me.
>
> > static void call_ringing(SalOp *h){
> > LinphoneCore *lc=(LinphoneCore
> > *)sal_get_user_pointer(sal_op_get_sal(h));
> > LinphoneCall
> > *call=(LinphoneCall*)sal_op_get_user_pointer(h);
> > SalMediaDescription *md;
> >
> > if (call==NULL) return;
> >
> > if (lc->vtable.display_status)
> > lc->vtable.display_status(lc,_("Remote ringing."));
> >
> > md=sal_call_get_final_media_description(h);
> > if (md==NULL){
> > if (lc->ringstream && lc->dmfs_playing_start_time!
> > =0){
> > ring_stop(lc->ringstream);
> > lc->ringstream=NULL;
> > lc->dmfs_playing_start_time=0;
> > }
> > if (lc->ringstream!=NULL) return; /*already
> > ringing !*/
> > if (lc->sound_conf.play_sndcard!=NULL){
> > MSSndCard
> > *ringcard=lc->sound_conf.lsd_card ? lc->sound_conf.lsd_card :
> > lc->sound_conf.play_sndcard;
> > ms_message("Remote ringing...");
> >
> > lc->ringstream=ring_start(lc->sound_conf.remote_ring,2000,ringcard);
> >
> > linphone_call_set_state(call,LinphoneCallOutgoingRinging,"Remote
> > ringing");
> > }
> > }else{
> > /*accept early media */
> > if (call->audiostream && call->audiostream->ticker!
> > =NULL){
> > /*streams already started */
> > ms_message("Early media already started.");
> > return;
> > }
> > if (lc->vtable.show) lc->vtable.show(lc);
> > if (lc->vtable.display_status)
> > lc->vtable.display_status(lc,_("Early
> > media."));
> >
> > linphone_call_set_state(call,LinphoneCallOutgoingEarlyMedia,"Early
> > media");
> > if (lc->ringstream!=NULL){
> > ring_stop(lc->ringstream);
> > lc->ringstream=NULL;
> > }
> > ms_message("Doing early media...");
> > linphone_core_update_streams (lc,call,md);
> > }
> > }
>
> So i made a small patch, to resolved this issue.
> > diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c
> > index f40cc44..9fc36b8 100644
> > --- a/coreapi/callbacks.c
> > +++ b/coreapi/callbacks.c
> > @@ -237,8 +237,8 @@ static void call_ringing(SalOp *h){
> > MSSndCard
> > *ringcard=lc->sound_conf.lsd_card ? lc->sound_conf.lsd_card :
> > lc->sound_conf.play_sndcard;
> > ms_message("Remote ringing...");
> >
> > lc->ringstream=ring_start(lc->sound_conf.remote_ring,2000,ringcard);
> > -
> > linphone_call_set_state(call,LinphoneCallOutgoingRinging,"Remote
> > ringing");
> > }
> > +
> > linphone_call_set_state(call,LinphoneCallOutgoingRinging,"Remote
> > ringing");
> > }else{
> > /*accept early media */
> > if (call->audiostream && call->audiostream->ticker!
> > =NULL){
>
> There is still an issue, maybe, because linphone_call_set_state could
> be called each time a 180/ringing packet arrives.
>
> Another patch that could be done, woudl be to add a new call state
> LinphoneCallOutgoingRemoteRinging ( and replace
> LinphoneCallOutgoingRinging by LinphoneCallOutgoingLocalRinging ),
> This would permit to clearly distinguish which side of the call is
> ringing.
>
> Does someone have a point of view on this suject ?
> What would be the right way to have a more generic API ?
>
>
> Regards,
>
> Romary
> _______________________________________________
> Linphone-developers mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/linphone-developers