linphonec (console interface)
+
Liblinphone is GPL (see COPYING file). Please understand the licencing details before using it!
+
+
For any use of this library beyond the rights granted to you by the GPL license, please contact Belledonne Communications (contact@belledonne-communications.com)
+
+
+
+
+Package Specification
+
+LibLinphone package is organized in submodules.
+
+
+
+
+Related Documentation
+
+For overviews, tutorials, examples, guides, and tool documentation, please see:
+
+
+
+
+User registration is controled by {@link org.linphone.core.LinphoneProxyConfig } settings.
+
Each {@link org.linphone.core.LinphoneProxyConfig } object can be configured with registration informations
+like {@link org.linphone.core.LinphoneProxyConfig#setProxy proxy address } , {@link org.linphone.core.LinphoneProxyConfig#setIdentity user id}, and so on.
+
A created proxy config using {@link org.linphone.core.LinphoneCoreFactory#createProxyConfig }, once configured, must be added to {@link org.linphone.core.LinphoneCore} using function {@link org.linphone.core.LinphoneCore#addProxyConfig }.
+
It is recommended to set a default {@link org.linphone.core.LinphoneProxyConfig proxy config } using function {@link org.linphone.core.LinphoneCore#setDefaultProxyConfig }. Once done, if {@link org.linphone.core.LinphoneProxyConfig a proxy config } has been configured with attribute {@link org.linphone.core.LinphoneProxyConfig#enableRegister enable register } , next call to {@link org.linphone.core.LinphoneCore#iterate } triggers a SIP register.
+
Registration status is reported by {@link org.linphone.core.LinphoneCoreListener#registrationState registration listener}.
+
+
This pseudo code demonstrates basic registration operations:
+
+
+
+
+ LinphoneProxyConfig proxy_cfg;
+ /*create proxy config*/
+ proxy_cfg = LinphoneCoreFactory.instance().createProxyConfig();
+ /*parse identity*/
+ LinphoneAddress from = LinphoneCoreFactory.instance().createAddress("sip:toto@sip.titi.com");
+ LinphoneAuthInfo info;
+ if (password!=NULL){
+ info=LinphoneCoreFactory.instance().createAuthInfo(from.getUsername(),null,"secret",null,null); /*create authentication structure from identity*/
+ lc.addAuthInfo(info); /*add authentication info to LinphoneCore*/
+ }
+ // configure proxy entries
+ proxy_cfg.setIdenty(identity); /*set identity with user name and domain*/
+ String server_addr = from.getDomain(); /*extract domain address from identity*/
+ proxy_cfg.setProxy(server_addr); /* we assume domain = proxy server address*/
+ proxy_cfg.enableRegister(true); /*activate registration for this proxy config*/
+
+ lc.addProxyConfig(proxy_cfg); /*add proxy config to linphone core*/
+ lc.setDefaultProxyconfig(proxy_cfg); /*set to default proxy*/
+
+
+
+ {@link org.linphone.core.LinphoneCoreListener#registrationState Registration state listener} :
+
+
+ void registrationState(LinphoneCore lc, LinphoneProxyConfig cfg, LinphoneCore.RegistrationState cstate, String message){
+ System.out.println(New registration state ["+cstate+"] for user id ["+cfg.getUserName()+"] at proxy ["+cfg.getProxy()+"]";
+}
+
+
+
+
Authentication:
+
Most of the time, registration requires {@link org.linphone.core.LinphoneAuthInfo authentication } to succed. {@link org.linphone.core.LinphoneAuthInfo} info must be either added to {@link org.linphone.core.LinphoneCore } using method {@link org.linphone.core.LinphoneCore#addAuthInfo } before {@link org.linphone.core.LinphoneProxyConfig} is added to Linphone core, or on demand from listener {@link org.linphone.core.LinphoneCoreListener#authInfoRequested(LinphoneCore, String, String)} .
+
+
Unregistration:
+
Unregistration or any changes to {@link org.linphone.core.LinphoneProxyConfig} must be first started by a call to function {@link org.linphone.core.LinphoneProxyConfig#edit } and validated by function {@link org.linphone.core.LinphoneProxyConfig#done }
+
This pseudo code shows how to unregister a user associated to a{@link org.linphone.core.LinphoneProxyConfig}
+
+
+ LinphoneProxyConfig proxy_cfg;
+ lc.setDefaultProxyConfig(proxy_cfg); /* get default proxy config*/
+ proxy_cfg.edit(); /*start editing proxy configuration*/
+ proxy_cfg.enableRegister(false); /*de-activate registration for this proxy config*/
+ proxy_cfg.done(); /*initiate REGISTER with expire = 0*/
+
+
+
+
+
+
+Buddies and buddy list
+
Each buddy is represented by a {@link org.linphone.core.LinphoneFriend } object created by function {@link org.linphone.core.LinphoneCoreFactory#createLinphoneFriend()}.
+Buddy configuration parameters like {@link org.linphone.core.LinphoneFriend#setAddress(LinphoneAddress) sip uri} or {@link org.linphone.core.LinphoneFriend#setIncSubscribePolicy(LinphoneFriend.SubscribePolicy) status publication} are configurable for each buddy.
+
Here under a typical buddy creation:
+
+
+
+ LinphoneFriend my_friend=LinphoneFactory.instance().createFriend("sip:joe@sip.linphone.org"); /*creates friend object for buddy joe*/
+ my_friend.enableSubscribes(true); /*configure this friend to emit SUBSCRIBE message after being added to LinphoneCore*/
+ my_friend.setIncSubscribePolicy(LinphoneFriend.SubscribePolicy.Accept); /* accept Incoming subscription request for this friend*/
+
+
+{@link LinphoneFriend friends } status changes are reported by {@link org.linphone.core.LinphoneCoreListener#notifyPresenceReceived(LinphoneCore lc, LinphoneFriend lf)} .
+
+
+ void notifyPresenceReceived(LinphoneCore lc, LinphoneFriend lf){
+ LinphoneAddress friend_address = lf.getAddress();
+ System.out.println("New state ["+lf.getStatus()+"] for user id ["+friend_address+"] ");
+}
+
+
+
+
Once created a buddy can be added to the buddy list using function {@link org.linphone.core.LinphoneCore#addFriend(LinphoneFriend lf) } . Added friends will be notified about {@link org.linphone.core.LinphoneCore#setPresenceInfo(int minute_away,String alternative_contact, OnlineStatus status) local status changes }
+
+Any subsequente modifications to {@link org.linphone.core.LinphoneFriend} must be first started by a call to function to {@link org.linphone.core.LinphoneFriend#edit()} and validated by function {@link org.linphone.core.LinphoneFriend#done()}
+
+
+ my_friend.edit(); /* start editing friend */
+ my_friend.enableSubscribes(true); /*disable subscription for this friend*/
+ my_friend.done(); /*commit changes triggering an UNSUBSCRIBE message*/
+
+
+
+ Publishing presence status
+
Local presence status can be changed using function {@link org.linphone.core.LinphoneCore#setPresenceInfo }.New status is propagated to all friends {@link org.linphone.core.LinphoneCore#addFriend(LinphoneFriend lf) previously added } to LinphoneCore.
+
+
+Handling incoming subscription request
+
New incoming subscription requests are process according to{@link org.linphone.core.LinphoneFriend#setIncSubscribePolicy(LinphoneFriend.SubscribePolicy) the incoming subscription policy state} for subscription initiated by {@link org.linphone.core.LinphoneCore#addFriend(LinphoneFriend lf) members of the buddy list. }
+
For incoming request coming from an unknown buddy, the call back {@link org.linphone.core.LinphoneCoreListener#newSubscriptionRequest(LinphoneCore lc, LinphoneFriend lf, String url)}
+
+
+ Exchanging text messages
+
Messages are sent using {@link org.linphone.core.LinphoneChatRoom} object. First step is to create a {@link org.linphone.core.LinphoneCore#createChatRoom chat room }
+from a peer sip uri.
+
+
+ LinphoneChatRoom chat_room = lc.createChatRoom("sip:joe@sip.linphone.org");
+
+
+
Once created, messages are sent using function {@link org.linphone.core.LinphoneChatRoom#sendMessage } .
+
+
+ chat_room.sendMessage("Hello world"); /*sending message*/
+
+
+
Incoming message are received from {@link org.linphone.core.LinphoneCoreListener#textReceived a listener }
+
+
+ void textReceived(LinphoneCore lc, LinphoneChatRoom cr,LinphoneAddress from,String message) {
+ System.out.println("Message ["+message+"] received from ["+from+"] ");
+ }
+
+
+
+
\ No newline at end of file
diff --git a/linphone-deps.filelist b/linphone-deps.filelist
index 54ae39fbf..de770f850 100755
--- a/linphone-deps.filelist
+++ b/linphone-deps.filelist
@@ -2,8 +2,8 @@
./bin/avformat-52.dll
./bin/avutil-50.dll
./bin/libeXosip2-4.dll
-./bin/libogg-0.dll
-./bin/libtheora-0.dll
+./bin/libogg.dll
+./bin/libtheora.dll
./bin/libxml2-2.dll
./bin/libosip2-4.dll
./bin/libosipparser2-4.dll
diff --git a/m4/exosip.m4 b/m4/exosip.m4
index fb75e6727..c25d8ad96 100644
--- a/m4/exosip.m4
+++ b/m4/exosip.m4
@@ -6,7 +6,7 @@ AC_REQUIRE([LP_CHECK_OSIP2])
case $target_os in
*darwin*)
- OSIP_LIBS="$OSIP_LIBS -framework CoreFoundation -framework CFNetwork "
+ OSIP_LIBS="$OSIP_LIBS -framework CoreFoundation "
;;
esac
diff --git a/mediastreamer2 b/mediastreamer2
index 955a7d6b8..ffacf5671 160000
--- a/mediastreamer2
+++ b/mediastreamer2
@@ -1 +1 @@
-Subproject commit 955a7d6b8aa205e8a97d751dd8d3920de1595455
+Subproject commit ffacf56718c198cb80a290f7a65975916d8a9b6b
diff --git a/oRTP b/oRTP
index 461dd13a0..7faf69b5e 160000
--- a/oRTP
+++ b/oRTP
@@ -1 +1 @@
-Subproject commit 461dd13a0aad2a075a075bf618e68443475f7a24
+Subproject commit 7faf69b5eb260ae82ef1efbc49713ccedac7d737
diff --git a/pixmaps/Makefile.am b/pixmaps/Makefile.am
index b462cf8e7..087e6fcd4 100644
--- a/pixmaps/Makefile.am
+++ b/pixmaps/Makefile.am
@@ -12,6 +12,6 @@ status-orange.png \
status-red.png \
status-offline.png \
contact-orange.png dialer-orange.png history-orange.png\
-startcall-green.png stopcall-red.png
+startcall-green.png stopcall-red.png addcall-green.png
EXTRA_DIST=$(pixmap_DATA)
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 1e699aa8a..c69378f97 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -20,7 +20,6 @@ gtk/call_logs.ui
gtk/main.ui
gtk/sip_account.ui
gtk/chatroom.ui
-gtk/incoming_call.ui
gtk/parameters.ui
gtk/buddylookup.ui
gtk/waiting.ui
@@ -73,4 +72,4 @@ mediastreamer2/src/chanadapt.c
mediastreamer2/src/itc.c
mediastreamer2/src/extdisplay.c
mediastreamer2/src/msiounit.c
-
+mediastreamer2/src/x11video.c
diff --git a/scripts/builder-mingw.mk b/scripts/builder-mingw.mk
index 3559ee8be..7363218af 100644
--- a/scripts/builder-mingw.mk
+++ b/scripts/builder-mingw.mk
@@ -22,7 +22,7 @@ $(INSTALL_ROOT): $(WORKDIR)
#Inno Setup 5 compiler
-ISCC=ISCC.exe
+ISCC="c:\Program Files\Inno setup 5\ISCC.exe"
$(LINPHONE_SRC_DIR)/configure:
cd $(LINPHONE_SRC_DIR) && ./autogen.sh
diff --git a/share/Makefile.am b/share/Makefile.am
index 57f26a8a1..6def02724 100644
--- a/share/Makefile.am
+++ b/share/Makefile.am
@@ -5,6 +5,7 @@ LINPHONE_SOUNDS=ringback.wav hello8000.wav hello16000.wav
LINPHONE_RINGS=rings/orig.wav \
rings/oldphone.wav \
rings/oldphone-mono.wav \
+ rings/oldphone-mono-30s.caf \
rings/rock.wav \
rings/bigben.wav \
rings/toy.wav \
diff --git a/share/rings/oldphone-mono-30s.caf b/share/rings/oldphone-mono-30s.caf
new file mode 100644
index 000000000..148592939
Binary files /dev/null and b/share/rings/oldphone-mono-30s.caf differ