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 4b5164714..28a6e7f22 160000
--- a/mediastreamer2
+++ b/mediastreamer2
@@ -1 +1 @@
-Subproject commit 4b5164714c2cf77a284f0213fc79e9b147e8563a
+Subproject commit 28a6e7f22fbdd93a01676fc9cc47a2605c846d75
diff --git a/oRTP b/oRTP
index 534074027..7faf69b5e 160000
--- a/oRTP
+++ b/oRTP
@@ -1 +1 @@
-Subproject commit 534074027a2163694ce6f8a520f0d6f6ac82b15d
+Subproject commit 7faf69b5eb260ae82ef1efbc49713ccedac7d737
diff --git a/pixmaps/Makefile.am b/pixmaps/Makefile.am
index bf2f03a8c..087e6fcd4 100644
--- a/pixmaps/Makefile.am
+++ b/pixmaps/Makefile.am
@@ -3,6 +3,7 @@
pixmapdir=$(datadir)/pixmaps/linphone
pixmap_DATA= \
+hold_on.png hold_off.png \
mic_muted.png mic_active.png \
linphone-3-250x130.png linphone-3.png linphone2-57x57.png \
linphone.png linphone-banner.png \
@@ -11,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/pixmaps/addcall-green.png b/pixmaps/addcall-green.png
new file mode 100644
index 000000000..3e6ae3b7a
Binary files /dev/null and b/pixmaps/addcall-green.png differ
diff --git a/pixmaps/hold_off.png b/pixmaps/hold_off.png
new file mode 100644
index 000000000..61ab330c6
Binary files /dev/null and b/pixmaps/hold_off.png differ
diff --git a/pixmaps/hold_on.png b/pixmaps/hold_on.png
new file mode 100644
index 000000000..94469b2d6
Binary files /dev/null and b/pixmaps/hold_on.png differ
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 2b0f2734f..c69378f97 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,29 +1,28 @@
# List of source files containing translatable strings.
-gtk-glade/calllogs.c
-gtk-glade/logging.c
-gtk-glade/support.c
-gtk-glade/chat.c
-gtk-glade/main.c
-gtk-glade/friendlist.c
-gtk-glade/propertybox.c
-gtk-glade/update.c
-gtk-glade/buddylookup.c
-gtk-glade/setupwizard.c
-gtk-glade/incall_view.c
-gtk-glade/loginframe.c
-gtk-glade/main.glade
-gtk-glade/about.glade
-gtk-glade/contact.glade
-gtk-glade/log.glade
-gtk-glade/password.glade
-gtk-glade/call_logs.glade
-gtk-glade/main.glade
-gtk-glade/sip_account.glade
-gtk-glade/chatroom.glade
-gtk-glade/incoming_call.glade
-gtk-glade/parameters.glade
-gtk-glade/buddylookup.glade
-gtk-glade/waiting.glade
+gtk/calllogs.c
+gtk/logging.c
+gtk/support.c
+gtk/chat.c
+gtk/main.c
+gtk/friendlist.c
+gtk/propertybox.c
+gtk/update.c
+gtk/buddylookup.c
+gtk/setupwizard.c
+gtk/incall_view.c
+gtk/loginframe.c
+gtk/main.ui
+gtk/about.ui
+gtk/contact.ui
+gtk/log.ui
+gtk/password.ui
+gtk/call_logs.ui
+gtk/main.ui
+gtk/sip_account.ui
+gtk/chatroom.ui
+gtk/parameters.ui
+gtk/buddylookup.ui
+gtk/waiting.ui
coreapi/linphonecore.c
coreapi/misc.c
coreapi/presence.c
@@ -72,3 +71,5 @@ mediastreamer2/src/audiomixer.c
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