From 189e0dc15494d40d80ce72ed61b42d6298f2ccd0 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Fri, 15 Mar 2013 21:46:36 +0100 Subject: [PATCH 01/53] fix liblinphone.xcodeproj --- .../liblinphone.xcodeproj/project.pbxproj | 986 +++++++++--------- 1 file changed, 471 insertions(+), 515 deletions(-) diff --git a/submodules/liblinphone.xcodeproj/project.pbxproj b/submodules/liblinphone.xcodeproj/project.pbxproj index 5b7ff9953..1248357b9 100644 --- a/submodules/liblinphone.xcodeproj/project.pbxproj +++ b/submodules/liblinphone.xcodeproj/project.pbxproj @@ -16,20 +16,15 @@ 220ED1A313A903BF00AC21E0 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED1A213A903BF00AC21E0 /* libgsm.a */; }; 220ED1A713A9040700AC21E0 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED1A613A9040700AC21E0 /* AudioToolbox.framework */; }; 220ED1A913A9041800AC21E0 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED1A813A9041800AC21E0 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Required, ); }; }; - 220ED1AC13A9062600AC21E0 /* nowebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 220ED1AA13A9062500AC21E0 /* nowebcam.h */; }; 2211DB9F14765CED00DEE054 /* libmssilk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB9E14765CEC00DEE054 /* libmssilk.a */; }; 2211DBA1147660BB00DEE054 /* libSKP_SILK_SDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DBA0147660BB00DEE054 /* libSKP_SILK_SDK.a */; }; - 221DCB4D1529E2EB0025E54D /* msiounit.m in Sources */ = {isa = PBXBuildFile; fileRef = 222CA60511F6CF7600621220 /* msiounit.m */; }; 221DCB561529FE660025E54D /* linphonecall.c in Sources */ = {isa = PBXBuildFile; fileRef = 225D3559124B1FF60008581C /* linphonecall.c */; }; 221DCB57152A07050025E54D /* ec-calibrator.c in Sources */ = {isa = PBXBuildFile; fileRef = 2252935A12F6CA4700DD9BFB /* ec-calibrator.c */; }; - 221DCB6815347EF80025E54D /* opengles_display.c in Sources */ = {isa = PBXBuildFile; fileRef = 221DCB6715347EF80025E54D /* opengles_display.c */; }; - 221DCB6915347EF80025E54D /* opengles_display.c in Sources */ = {isa = PBXBuildFile; fileRef = 221DCB6715347EF80025E54D /* opengles_display.c */; }; 221DCB6C153584410025E54D /* yuv2rgb.fs in Sources */ = {isa = PBXBuildFile; fileRef = 221DCB6A153584410025E54D /* yuv2rgb.fs */; }; 221DCB6D153584410025E54D /* yuv2rgb.fs in Sources */ = {isa = PBXBuildFile; fileRef = 221DCB6A153584410025E54D /* yuv2rgb.fs */; }; 221DCB6E153584410025E54D /* yuv2rgb.vs in Sources */ = {isa = PBXBuildFile; fileRef = 221DCB6B153584410025E54D /* yuv2rgb.vs */; }; 221DCB6F153584410025E54D /* yuv2rgb.vs in Sources */ = {isa = PBXBuildFile; fileRef = 221DCB6B153584410025E54D /* yuv2rgb.vs */; }; 221F58A013AB50F800D603C9 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 221F589F13AB50F800D603C9 /* CoreMedia.framework */; }; - 221F58E413AF44B300D603C9 /* scaler.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58E313AF44B300D603C9 /* scaler.h */; }; 222CA63211F6CF7600621220 /* allfilters.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5BE11F6CF7600621220 /* allfilters.h */; }; 222CA63311F6CF7600621220 /* dsptools.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5BF11F6CF7600621220 /* dsptools.h */; }; 222CA63411F6CF7600621220 /* dtmfgen.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5C011F6CF7600621220 /* dtmfgen.h */; }; @@ -58,13 +53,6 @@ 222CA64B11F6CF7600621220 /* mswebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5D911F6CF7600621220 /* mswebcam.h */; }; 222CA64C11F6CF7600621220 /* rfc3984.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5DA11F6CF7600621220 /* rfc3984.h */; }; 222CA64D11F6CF7600621220 /* waveheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5DB11F6CF7600621220 /* waveheader.h */; }; - 222CA64E11F6CF7600621220 /* _kiss_fft_guts.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5DE11F6CF7600621220 /* _kiss_fft_guts.h */; }; - 222CA65E11F6CF7600621220 /* ffmpeg-priv.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5EE11F6CF7600621220 /* ffmpeg-priv.h */; }; - 222CA65F11F6CF7600621220 /* g711common.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5EF11F6CF7600621220 /* g711common.h */; }; - 222CA66511F6CF7600621220 /* kiss_fft.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5F511F6CF7600621220 /* kiss_fft.h */; }; - 222CA66711F6CF7600621220 /* kiss_fftr.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5F711F6CF7600621220 /* kiss_fftr.h */; }; - 222CA68811F6CF7600621220 /* rfc2429.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA61B11F6CF7600621220 /* rfc2429.h */; }; - 222CA69111F6CF7600621220 /* vfw-missing.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA62411F6CF7600621220 /* vfw-missing.h */; }; 222CA6F411F6CF9F00621220 /* b64.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6A511F6CF9F00621220 /* b64.h */; }; 222CA6F511F6CF9F00621220 /* event.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6A611F6CF9F00621220 /* event.h */; }; 222CA6F611F6CF9F00621220 /* ortp.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6A911F6CF9F00621220 /* ortp.h */; }; @@ -105,20 +93,97 @@ 222CA77B11F6CFB100621220 /* proxy.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA75911F6CFB100621220 /* proxy.c */; }; 222CA77C11F6CFB100621220 /* sal.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA75A11F6CFB100621220 /* sal.c */; }; 222CA77D11F6CFB100621220 /* sal.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA75B11F6CFB100621220 /* sal.h */; }; - 222CA77E11F6CFB100621220 /* sal_eXosip2.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA75C11F6CFB100621220 /* sal_eXosip2.c */; }; - 222CA77F11F6CFB100621220 /* sal_eXosip2.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA75D11F6CFB100621220 /* sal_eXosip2.h */; }; - 222CA78011F6CFB100621220 /* sal_eXosip2_presence.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA75E11F6CFB100621220 /* sal_eXosip2_presence.c */; }; - 222CA78111F6CFB100621220 /* sal_eXosip2_sdp.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA75F11F6CFB100621220 /* sal_eXosip2_sdp.c */; }; 222CA78411F6CFB100621220 /* siplogin.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA76211F6CFB100621220 /* siplogin.c */; }; 222CA78511F6CFB100621220 /* sipsetup.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA76311F6CFB100621220 /* sipsetup.c */; }; 222CA78611F6CFB100621220 /* sipsetup.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA76411F6CFB100621220 /* sipsetup.h */; }; + 223CA86716D9268D00EF1BEC /* alaw.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7F016D9268D00EF1BEC /* alaw.c */; }; + 223CA86916D9268D00EF1BEC /* aqsnd.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7F216D9268D00EF1BEC /* aqsnd.c */; }; + 223CA86B16D9268D00EF1BEC /* audiomixer.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7F416D9268D00EF1BEC /* audiomixer.c */; }; + 223CA86C16D9268D00EF1BEC /* chanadapt.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7F516D9268D00EF1BEC /* chanadapt.c */; }; + 223CA86D16D9268D00EF1BEC /* dtmfgen.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7F616D9268D00EF1BEC /* dtmfgen.c */; }; + 223CA86E16D9268D00EF1BEC /* equalizer.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7F716D9268D00EF1BEC /* equalizer.c */; }; + 223CA87016D9268D00EF1BEC /* genericplc.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7F916D9268D00EF1BEC /* genericplc.c */; }; + 223CA87116D9268D00EF1BEC /* gsm.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7FA16D9268D00EF1BEC /* gsm.c */; }; + 223CA87216D9268D00EF1BEC /* l16.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7FB16D9268D00EF1BEC /* l16.c */; }; + 223CA87416D9268D00EF1BEC /* msconf.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7FD16D9268D00EF1BEC /* msconf.c */; }; + 223CA87516D9268D00EF1BEC /* msfileplayer.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7FE16D9268D00EF1BEC /* msfileplayer.c */; }; + 223CA87616D9268D00EF1BEC /* msfilerec.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA7FF16D9268D00EF1BEC /* msfilerec.c */; }; + 223CA87716D9268D00EF1BEC /* msg722.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA80016D9268D00EF1BEC /* msg722.c */; }; + 223CA87816D9268D00EF1BEC /* msiounit.m in Sources */ = {isa = PBXBuildFile; fileRef = 223CA80116D9268D00EF1BEC /* msiounit.m */; }; + 223CA87916D9268D00EF1BEC /* msresample.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA80216D9268D00EF1BEC /* msresample.c */; }; + 223CA87A16D9268D00EF1BEC /* msspeex.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA80316D9268D00EF1BEC /* msspeex.c */; }; + 223CA87B16D9268D00EF1BEC /* msvolume.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA80416D9268D00EF1BEC /* msvolume.c */; }; + 223CA88016D9268D00EF1BEC /* tonedetector.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA80916D9268D00EF1BEC /* tonedetector.c */; }; + 223CA88116D9268D00EF1BEC /* ulaw.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA80A16D9268D00EF1BEC /* ulaw.c */; }; + 223CA88216D9268D00EF1BEC /* waveheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA80B16D9268D00EF1BEC /* waveheader.h */; }; + 223CA88816D9268D00EF1BEC /* eventqueue.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81216D9268D00EF1BEC /* eventqueue.c */; }; + 223CA88916D9268D00EF1BEC /* mscommon.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81316D9268D00EF1BEC /* mscommon.c */; }; + 223CA88A16D9268D00EF1BEC /* msfilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81416D9268D00EF1BEC /* msfilter.c */; }; + 223CA88B16D9268D00EF1BEC /* msqueue.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81516D9268D00EF1BEC /* msqueue.c */; }; + 223CA88C16D9268D00EF1BEC /* mssndcard.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81616D9268D00EF1BEC /* mssndcard.c */; }; + 223CA88D16D9268D00EF1BEC /* msticker.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81716D9268D00EF1BEC /* msticker.c */; }; + 223CA88E16D9268D00EF1BEC /* mswebcam.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81816D9268D00EF1BEC /* mswebcam.c */; }; + 223CA88F16D9268D00EF1BEC /* mtu.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81916D9268D00EF1BEC /* mtu.c */; }; + 223CA89016D9268D00EF1BEC /* itc.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81B16D9268D00EF1BEC /* itc.c */; }; + 223CA89116D9268D00EF1BEC /* join.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81C16D9268D00EF1BEC /* join.c */; }; + 223CA89216D9268D00EF1BEC /* msrtp.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81D16D9268D00EF1BEC /* msrtp.c */; }; + 223CA89316D9268D00EF1BEC /* tee.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81E16D9268D00EF1BEC /* tee.c */; }; + 223CA89416D9268D00EF1BEC /* void.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA81F16D9268D00EF1BEC /* void.c */; }; + 223CA89516D9268D00EF1BEC /* _kiss_fft_guts.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA82116D9268D00EF1BEC /* _kiss_fft_guts.h */; }; + 223CA89616D9268D00EF1BEC /* dsptools.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA82216D9268D00EF1BEC /* dsptools.c */; }; + 223CA89716D9268D00EF1BEC /* ffmpeg-priv.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA82316D9268D00EF1BEC /* ffmpeg-priv.h */; }; + 223CA89816D9268D00EF1BEC /* g711common.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA82416D9268D00EF1BEC /* g711common.h */; }; + 223CA89916D9268D00EF1BEC /* g722.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA82516D9268D00EF1BEC /* g722.h */; }; + 223CA89A16D9268D00EF1BEC /* g722_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA82616D9268D00EF1BEC /* g722_decode.c */; }; + 223CA89B16D9268D00EF1BEC /* g722_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA82716D9268D00EF1BEC /* g722_encode.c */; }; + 223CA89C16D9268D00EF1BEC /* kiss_fft.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA82816D9268D00EF1BEC /* kiss_fft.c */; }; + 223CA89D16D9268D00EF1BEC /* kiss_fft.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA82916D9268D00EF1BEC /* kiss_fft.h */; }; + 223CA89E16D9268D00EF1BEC /* kiss_fftr.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA82A16D9268D00EF1BEC /* kiss_fftr.c */; }; + 223CA89F16D9268D00EF1BEC /* kiss_fftr.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA82B16D9268D00EF1BEC /* kiss_fftr.h */; }; + 223CA8A116D9268D00EF1BEC /* opengles_display.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA82D16D9268D00EF1BEC /* opengles_display.c */; }; + 223CA8A216D9268D00EF1BEC /* opengles_display.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA82E16D9268D00EF1BEC /* opengles_display.h */; }; + 223CA8A316D9268D00EF1BEC /* shaders.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA82F16D9268D00EF1BEC /* shaders.c */; }; + 223CA8A416D9268D00EF1BEC /* shaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA83016D9268D00EF1BEC /* shaders.h */; }; + 223CA8A516D9268D00EF1BEC /* swscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA83116D9268D00EF1BEC /* swscale.h */; }; + 223CA8A616D9268D00EF1BEC /* vfw-missing.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA83216D9268D00EF1BEC /* vfw-missing.h */; }; + 223CA8A816D9268D00EF1BEC /* extdisplay.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA83516D9268D00EF1BEC /* extdisplay.c */; }; + 223CA8AA16D9268D00EF1BEC /* h264dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA83716D9268D00EF1BEC /* h264dec.c */; }; + 223CA8AB16D9268D00EF1BEC /* ioscapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 223CA83816D9268D00EF1BEC /* ioscapture.m */; }; + 223CA8AC16D9268D00EF1BEC /* iosdisplay.m in Sources */ = {isa = PBXBuildFile; fileRef = 223CA83916D9268D00EF1BEC /* iosdisplay.m */; }; + 223CA8AD16D9268D00EF1BEC /* jpegwriter.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA83A16D9268D00EF1BEC /* jpegwriter.c */; }; + 223CA8AE16D9268D00EF1BEC /* mire.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA83B16D9268D00EF1BEC /* mire.c */; }; + 223CA8B316D9268D00EF1BEC /* nowebcam.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA84016D9268D00EF1BEC /* nowebcam.c */; }; + 223CA8B416D9268D00EF1BEC /* pixconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA84116D9268D00EF1BEC /* pixconv.c */; }; + 223CA8B616D9268D00EF1BEC /* sizeconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA84316D9268D00EF1BEC /* sizeconv.c */; }; + 223CA8B816D9268D00EF1BEC /* videodec.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA84516D9268D00EF1BEC /* videodec.c */; }; + 223CA8B916D9268D00EF1BEC /* videoenc.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA84616D9268D00EF1BEC /* videoenc.c */; }; + 223CA8BB16D9268D00EF1BEC /* vp8.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA84816D9268D00EF1BEC /* vp8.c */; }; + 223CA8C116D9268D00EF1BEC /* audioconference.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA84F16D9268D00EF1BEC /* audioconference.c */; }; + 223CA8C216D9268D00EF1BEC /* audiostream.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA85016D9268D00EF1BEC /* audiostream.c */; }; + 223CA8C316D9268D00EF1BEC /* bitratecontrol.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA85116D9268D00EF1BEC /* bitratecontrol.c */; }; + 223CA8C416D9268D00EF1BEC /* bitratedriver.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA85216D9268D00EF1BEC /* bitratedriver.c */; }; + 223CA8C516D9268D00EF1BEC /* ice.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA85316D9268D00EF1BEC /* ice.c */; }; + 223CA8C616D9268D00EF1BEC /* layouts.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA85416D9268D00EF1BEC /* layouts.c */; }; + 223CA8C716D9268D00EF1BEC /* layouts.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA85516D9268D00EF1BEC /* layouts.h */; }; + 223CA8C816D9268D00EF1BEC /* mediastream.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA85616D9268D00EF1BEC /* mediastream.c */; }; + 223CA8C916D9268D00EF1BEC /* msvideo.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA85716D9268D00EF1BEC /* msvideo.c */; }; + 223CA8CA16D9268D00EF1BEC /* msvideo_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA85816D9268D00EF1BEC /* msvideo_neon.c */; }; + 223CA8CB16D9268D00EF1BEC /* msvideo_neon.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA85916D9268D00EF1BEC /* msvideo_neon.h */; }; + 223CA8CC16D9268D00EF1BEC /* msvoip.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA85A16D9268D00EF1BEC /* msvoip.c */; }; + 223CA8CD16D9268D00EF1BEC /* nowebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA85B16D9268D00EF1BEC /* nowebcam.h */; }; + 223CA8CE16D9268D00EF1BEC /* private.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA85D16D9268D00EF1BEC /* private.h */; }; + 223CA8CF16D9268D00EF1BEC /* qosanalyzer.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA85E16D9268D00EF1BEC /* qosanalyzer.c */; }; + 223CA8D016D9268D00EF1BEC /* qualityindicator.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA85F16D9268D00EF1BEC /* qualityindicator.c */; }; + 223CA8D116D9268D00EF1BEC /* rfc2429.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA86016D9268D00EF1BEC /* rfc2429.h */; }; + 223CA8D216D9268D00EF1BEC /* rfc3984.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA86116D9268D00EF1BEC /* rfc3984.c */; }; + 223CA8D316D9268D00EF1BEC /* ringstream.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA86216D9268D00EF1BEC /* ringstream.c */; }; + 223CA8D416D9268D00EF1BEC /* scaler.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA86316D9268D00EF1BEC /* scaler.c */; }; + 223CA8D516D9268D00EF1BEC /* scaler.h in Headers */ = {isa = PBXBuildFile; fileRef = 223CA86416D9268D00EF1BEC /* scaler.h */; }; + 223CA8D716D9268D00EF1BEC /* videostream.c in Sources */ = {isa = PBXBuildFile; fileRef = 223CA86616D9268D00EF1BEC /* videostream.c */; }; 22405EDD160065C200B92522 /* basedescs.h in Headers */ = {isa = PBXBuildFile; fileRef = 22405EDC160065C200B92522 /* basedescs.h */; }; - 22405EE01600668800B92522 /* msvoip.c in Sources */ = {isa = PBXBuildFile; fileRef = 22405EDF1600668800B92522 /* msvoip.c */; }; 22405EE2160066C700B92522 /* voipdescs.h in Headers */ = {isa = PBXBuildFile; fileRef = 22405EE1160066C700B92522 /* voipdescs.h */; }; 22405EE51600671D00B92522 /* logging.c in Sources */ = {isa = PBXBuildFile; fileRef = 22405EE31600671D00B92522 /* logging.c */; }; 22405EE61600671D00B92522 /* rtpprofile.c in Sources */ = {isa = PBXBuildFile; fileRef = 22405EE41600671D00B92522 /* rtpprofile.c */; }; - 22405EE81600675C00B92522 /* genericplc.c in Sources */ = {isa = PBXBuildFile; fileRef = 22405EE71600675C00B92522 /* genericplc.c */; }; - 2258C44113A9377B0087A596 /* swscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 2258C44013A9377B0087A596 /* swscale.h */; }; 2258C44513A945520087A596 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2258C44213A945520087A596 /* libswscale.a */; }; 2258C44613A945520087A596 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2258C44313A945520087A596 /* libavutil.a */; }; 2258C44713A945520087A596 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2258C44413A945520087A596 /* libavcodec.a */; }; @@ -151,13 +216,6 @@ 225D64491521BFA6008B2E81 /* mswebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5D911F6CF7600621220 /* mswebcam.h */; }; 225D644A1521BFA6008B2E81 /* rfc3984.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5DA11F6CF7600621220 /* rfc3984.h */; }; 225D644B1521BFA6008B2E81 /* waveheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5DB11F6CF7600621220 /* waveheader.h */; }; - 225D644C1521BFA6008B2E81 /* _kiss_fft_guts.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5DE11F6CF7600621220 /* _kiss_fft_guts.h */; }; - 225D644D1521BFA6008B2E81 /* ffmpeg-priv.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5EE11F6CF7600621220 /* ffmpeg-priv.h */; }; - 225D644E1521BFA6008B2E81 /* g711common.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5EF11F6CF7600621220 /* g711common.h */; }; - 225D644F1521BFA6008B2E81 /* kiss_fft.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5F511F6CF7600621220 /* kiss_fft.h */; }; - 225D64501521BFA6008B2E81 /* kiss_fftr.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5F711F6CF7600621220 /* kiss_fftr.h */; }; - 225D64511521BFA6008B2E81 /* rfc2429.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA61B11F6CF7600621220 /* rfc2429.h */; }; - 225D64521521BFA6008B2E81 /* vfw-missing.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA62411F6CF7600621220 /* vfw-missing.h */; }; 225D64531521BFA6008B2E81 /* b64.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6A511F6CF9F00621220 /* b64.h */; }; 225D64541521BFA6008B2E81 /* event.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6A611F6CF9F00621220 /* event.h */; }; 225D64551521BFA6008B2E81 /* ortp.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6A911F6CF9F00621220 /* ortp.h */; }; @@ -185,7 +243,6 @@ 225D646B1521BFA6008B2E81 /* offeranswer.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA74811F6CFB100621220 /* offeranswer.h */; }; 225D646C1521BFA6008B2E81 /* private.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA75811F6CFB100621220 /* private.h */; }; 225D646D1521BFA6008B2E81 /* sal.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA75B11F6CFB100621220 /* sal.h */; }; - 225D646E1521BFA6008B2E81 /* sal_eXosip2.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA75D11F6CFB100621220 /* sal_eXosip2.h */; }; 225D646F1521BFA6008B2E81 /* sipsetup.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA76411F6CFB100621220 /* sipsetup.h */; }; 225D64701521BFA6008B2E81 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B4F11F84E2D00373793 /* config.h */; }; 225D64711521BFA6008B2E81 /* gsm.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5011F84E2D00373793 /* gsm.h */; }; @@ -194,79 +251,12 @@ 225D64741521BFA6008B2E81 /* toast.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5411F84E2D00373793 /* toast.h */; }; 225D64751521BFA6008B2E81 /* unproto.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5511F84E2D00373793 /* unproto.h */; }; 225D64761521BFA6008B2E81 /* linphonecore_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */; }; - 225D64781521BFA6008B2E81 /* nowebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 220ED1AA13A9062500AC21E0 /* nowebcam.h */; }; - 225D64791521BFA6008B2E81 /* swscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 2258C44013A9377B0087A596 /* swscale.h */; }; - 225D647B1521BFA6008B2E81 /* scaler.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58E313AF44B300D603C9 /* scaler.h */; }; - 225D647C1521BFA6008B2E81 /* g722.h in Headers */ = {isa = PBXBuildFile; fileRef = 229A614B13DDFE3500090183 /* g722.h */; }; - 225D647D1521BFA6008B2E81 /* shaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 70E542F613E14816002BA2C0 /* shaders.h */; }; 225D64811521BFA6008B2E81 /* zrtp.h in Headers */ = {isa = PBXBuildFile; fileRef = 7014533B13FA7ECA00A01D86 /* zrtp.h */; }; - 225D64831521BFA6008B2E81 /* alaw.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5DF11F6CF7600621220 /* alaw.c */; }; - 225D64841521BFA6008B2E81 /* audiomixer.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5E311F6CF7600621220 /* audiomixer.c */; }; - 225D64851521BFA6008B2E81 /* audiostream.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5E411F6CF7600621220 /* audiostream.c */; }; - 225D64861521BFA6008B2E81 /* chanadapt.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5E511F6CF7600621220 /* chanadapt.c */; }; - 225D64871521BFA6008B2E81 /* dsptools.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5E711F6CF7600621220 /* dsptools.c */; }; - 225D64881521BFA6008B2E81 /* dtmfgen.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5E811F6CF7600621220 /* dtmfgen.c */; }; - 225D64891521BFA6008B2E81 /* equalizer.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5EB11F6CF7600621220 /* equalizer.c */; }; - 225D648A1521BFA6008B2E81 /* eventqueue.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5EC11F6CF7600621220 /* eventqueue.c */; }; - 225D648B1521BFA6008B2E81 /* extdisplay.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5ED11F6CF7600621220 /* extdisplay.c */; }; - 225D648C1521BFA6008B2E81 /* gsm.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5F011F6CF7600621220 /* gsm.c */; }; - 225D648D1521BFA6008B2E81 /* ice.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5F211F6CF7600621220 /* ice.c */; }; - 225D648E1521BFA6008B2E81 /* itc.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5F311F6CF7600621220 /* itc.c */; }; - 225D648F1521BFA6008B2E81 /* kiss_fft.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5F411F6CF7600621220 /* kiss_fft.c */; }; - 225D64901521BFA6008B2E81 /* kiss_fftr.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5F611F6CF7600621220 /* kiss_fftr.c */; }; - 225D64911521BFA6008B2E81 /* mire.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5FB11F6CF7600621220 /* mire.c */; }; - 225D64921521BFA6008B2E81 /* mscommon.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5FD11F6CF7600621220 /* mscommon.c */; }; - 225D64931521BFA6008B2E81 /* msconf.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5FE11F6CF7600621220 /* msconf.c */; }; - 225D64941521BFA6008B2E81 /* msfileplayer.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA60011F6CF7600621220 /* msfileplayer.c */; }; - 225D64951521BFA6008B2E81 /* msfilerec.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA60211F6CF7600621220 /* msfilerec.c */; }; - 225D64961521BFA6008B2E81 /* msfilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA60411F6CF7600621220 /* msfilter.c */; }; - 225D64981521BFA6008B2E81 /* msjoin.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA60611F6CF7600621220 /* msjoin.c */; }; - 225D64991521BFA6008B2E81 /* msqueue.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA60711F6CF7600621220 /* msqueue.c */; }; - 225D649A1521BFA6008B2E81 /* msresample.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA60811F6CF7600621220 /* msresample.c */; }; - 225D649B1521BFA6008B2E81 /* msrtp.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA60911F6CF7600621220 /* msrtp.c */; }; - 225D649C1521BFA6008B2E81 /* mssndcard.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA60A11F6CF7600621220 /* mssndcard.c */; }; - 225D649D1521BFA6008B2E81 /* msspeex.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA60B11F6CF7600621220 /* msspeex.c */; }; - 225D649E1521BFA6008B2E81 /* msticker.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA60C11F6CF7600621220 /* msticker.c */; }; - 225D649F1521BFA6008B2E81 /* msvolume.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA61111F6CF7600621220 /* msvolume.c */; }; - 225D64A01521BFA6008B2E81 /* mtu.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA61311F6CF7600621220 /* mtu.c */; }; - 225D64A11521BFA6008B2E81 /* rfc3984.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA61C11F6CF7600621220 /* rfc3984.c */; }; - 225D64A21521BFA6008B2E81 /* speexec.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA61F11F6CF7600621220 /* speexec.c */; }; - 225D64A31521BFA6008B2E81 /* tee.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA62111F6CF7600621220 /* tee.c */; }; - 225D64A41521BFA6008B2E81 /* ulaw.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA62311F6CF7600621220 /* ulaw.c */; }; - 225D64A51521BFA6008B2E81 /* void.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA62911F6CF7600621220 /* void.c */; }; 225D64BC1521BFA6008B2E81 /* address.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA72F11F6CFB100621220 /* address.c */; }; 225D64BD1521BFA6008B2E81 /* authentication.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA73011F6CFB100621220 /* authentication.c */; }; 225D64BE1521BFA6008B2E81 /* callbacks.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA73111F6CFB100621220 /* callbacks.c */; }; 225D64BF1521BFA6008B2E81 /* chat.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA73211F6CFB100621220 /* chat.c */; }; - 225D64CE1521BFA6008B2E81 /* mswebcam.c in Sources */ = {isa = PBXBuildFile; fileRef = 22A10EE711F8920F00373793 /* mswebcam.c */; }; - 225D64D11521BFA6008B2E81 /* ioscapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 22D15AB3139F505400C7713A /* ioscapture.m */; }; - 225D64D21521BFA6008B2E81 /* iosdisplay.m in Sources */ = {isa = PBXBuildFile; fileRef = 2203127113A247B40049A2ED /* iosdisplay.m */; }; 225D64D31521BFA6008B2E81 /* filter-template.c in Sources */ = {isa = PBXBuildFile; fileRef = 2203127413A249F70049A2ED /* filter-template.c */; }; - 225D64D41521BFA6008B2E81 /* nowebcam.c in Sources */ = {isa = PBXBuildFile; fileRef = 220ED1AB13A9062500AC21E0 /* nowebcam.c */; }; - 225D64D51521BFA6008B2E81 /* videostream.c in Sources */ = {isa = PBXBuildFile; fileRef = 2258C44813A946890087A596 /* videostream.c */; }; - 225D64D61521BFA6008B2E81 /* videoenc.c in Sources */ = {isa = PBXBuildFile; fileRef = 2258C44913A946890087A596 /* videoenc.c */; }; - 225D64D71521BFA6008B2E81 /* videodec.c in Sources */ = {isa = PBXBuildFile; fileRef = 2258C44A13A946890087A596 /* videodec.c */; }; - 225D64D81521BFA6008B2E81 /* msvideo.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F589B13AB4FC500D603C9 /* msvideo.c */; }; - 225D64D91521BFA6008B2E81 /* pixconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58A113AB6F8000D603C9 /* pixconv.c */; }; - 225D64DA1521BFA6008B2E81 /* tonedetector.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58A513AB716300D603C9 /* tonedetector.c */; }; - 225D64DB1521BFA6008B2E81 /* jpegwriter.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58A613AB716300D603C9 /* jpegwriter.c */; }; - 225D64DC1521BFA6008B2E81 /* h264dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58A713AB716300D603C9 /* h264dec.c */; }; - 225D64DD1521BFA6008B2E81 /* sizeconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58AB13AB71A400D603C9 /* sizeconv.c */; }; - 225D64DE1521BFA6008B2E81 /* scaler.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58AD13ABA42800D603C9 /* scaler.c */; }; - 225D64DF1521BFA6008B2E81 /* qualityindicator.c in Sources */ = {isa = PBXBuildFile; fileRef = 22FC56A713CB69FA002FD0F1 /* qualityindicator.c */; }; - 225D64E01521BFA6008B2E81 /* bitratecontrol.c in Sources */ = {isa = PBXBuildFile; fileRef = 22FC56A913CB6A4F002FD0F1 /* bitratecontrol.c */; }; - 225D64E11521BFA6008B2E81 /* g722_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 229A614913DDFE3500090183 /* g722_decode.c */; }; - 225D64E21521BFA6008B2E81 /* g722_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 229A614A13DDFE3500090183 /* g722_encode.c */; }; - 225D64E31521BFA6008B2E81 /* msg722.c in Sources */ = {isa = PBXBuildFile; fileRef = 229A614C13DDFE3500090183 /* msg722.c */; }; - 225D64E41521BFA6008B2E81 /* vp8.c in Sources */ = {isa = PBXBuildFile; fileRef = 7066FC0613E82A3600EFC6DC /* vp8.c */; }; - 225D64E61521BFA6008B2E81 /* shaders.c in Sources */ = {isa = PBXBuildFile; fileRef = 7014533713FA7AEA00A01D86 /* shaders.c */; }; - 225D64E81521BFA6008B2E81 /* msvideo_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 229ECDEA143AEA6300D611B8 /* msvideo_neon.c */; }; - 225D64E91521BFA6008B2E81 /* conference.c in Sources */ = {isa = PBXBuildFile; fileRef = 229ECDEC143AEBDA00D611B8 /* conference.c */; }; - 225D64EA1521BFA6008B2E81 /* audioconference.c in Sources */ = {isa = PBXBuildFile; fileRef = 229ECDEE143AEC2400D611B8 /* audioconference.c */; }; - 225D64ED1521BFA6008B2E81 /* bitratedriver.c in Sources */ = {isa = PBXBuildFile; fileRef = F4D9F25E14583B580035B0D0 /* bitratedriver.c */; }; - 225D64EE1521BFA6008B2E81 /* qosanalyzer.c in Sources */ = {isa = PBXBuildFile; fileRef = F4D9F25F14583B580035B0D0 /* qosanalyzer.c */; }; - 225D64EF1521BFA6008B2E81 /* aqsnd.c in Sources */ = {isa = PBXBuildFile; fileRef = 22512698145F13CE0041FBF2 /* aqsnd.c */; }; - 225D64F01521BFA6008B2E81 /* l16.c in Sources */ = {isa = PBXBuildFile; fileRef = 2211DB9B1476539600DEE054 /* l16.c */; }; 225D64F21521BFA6008B2E81 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; 225D64F31521BFA6008B2E81 /* libSKP_SILK_SDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DBA0147660BB00DEE054 /* libSKP_SILK_SDK.a */; }; 225D64FC1521C009008B2E81 /* liblinphone_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = AA747D9E0F9514B9006C5449 /* liblinphone_Prefix.pch */; }; @@ -298,13 +288,6 @@ 225D65161521C009008B2E81 /* mswebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5D911F6CF7600621220 /* mswebcam.h */; }; 225D65171521C009008B2E81 /* rfc3984.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5DA11F6CF7600621220 /* rfc3984.h */; }; 225D65181521C009008B2E81 /* waveheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5DB11F6CF7600621220 /* waveheader.h */; }; - 225D65191521C009008B2E81 /* _kiss_fft_guts.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5DE11F6CF7600621220 /* _kiss_fft_guts.h */; }; - 225D651A1521C009008B2E81 /* ffmpeg-priv.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5EE11F6CF7600621220 /* ffmpeg-priv.h */; }; - 225D651B1521C009008B2E81 /* g711common.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5EF11F6CF7600621220 /* g711common.h */; }; - 225D651C1521C009008B2E81 /* kiss_fft.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5F511F6CF7600621220 /* kiss_fft.h */; }; - 225D651D1521C009008B2E81 /* kiss_fftr.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5F711F6CF7600621220 /* kiss_fftr.h */; }; - 225D651E1521C009008B2E81 /* rfc2429.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA61B11F6CF7600621220 /* rfc2429.h */; }; - 225D651F1521C009008B2E81 /* vfw-missing.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA62411F6CF7600621220 /* vfw-missing.h */; }; 225D65201521C009008B2E81 /* b64.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6A511F6CF9F00621220 /* b64.h */; }; 225D65211521C009008B2E81 /* event.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6A611F6CF9F00621220 /* event.h */; }; 225D65221521C009008B2E81 /* ortp.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6A911F6CF9F00621220 /* ortp.h */; }; @@ -332,7 +315,6 @@ 225D65381521C009008B2E81 /* offeranswer.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA74811F6CFB100621220 /* offeranswer.h */; }; 225D65391521C009008B2E81 /* private.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA75811F6CFB100621220 /* private.h */; }; 225D653A1521C009008B2E81 /* sal.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA75B11F6CFB100621220 /* sal.h */; }; - 225D653B1521C009008B2E81 /* sal_eXosip2.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA75D11F6CFB100621220 /* sal_eXosip2.h */; }; 225D653C1521C009008B2E81 /* sipsetup.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA76411F6CFB100621220 /* sipsetup.h */; }; 225D653D1521C009008B2E81 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B4F11F84E2D00373793 /* config.h */; }; 225D653E1521C009008B2E81 /* gsm.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5011F84E2D00373793 /* gsm.h */; }; @@ -341,11 +323,6 @@ 225D65411521C009008B2E81 /* toast.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5411F84E2D00373793 /* toast.h */; }; 225D65421521C009008B2E81 /* unproto.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5511F84E2D00373793 /* unproto.h */; }; 225D65431521C009008B2E81 /* linphonecore_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */; }; - 225D65451521C009008B2E81 /* nowebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 220ED1AA13A9062500AC21E0 /* nowebcam.h */; }; - 225D65461521C009008B2E81 /* swscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 2258C44013A9377B0087A596 /* swscale.h */; }; - 225D65481521C009008B2E81 /* scaler.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58E313AF44B300D603C9 /* scaler.h */; }; - 225D65491521C009008B2E81 /* g722.h in Headers */ = {isa = PBXBuildFile; fileRef = 229A614B13DDFE3500090183 /* g722.h */; }; - 225D654A1521C009008B2E81 /* shaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 70E542F613E14816002BA2C0 /* shaders.h */; }; 225D654E1521C009008B2E81 /* zrtp.h in Headers */ = {isa = PBXBuildFile; fileRef = 7014533B13FA7ECA00A01D86 /* zrtp.h */; }; 225D65731521C009008B2E81 /* avprofile.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA6B811F6CF9F00621220 /* avprofile.c */; }; 225D65741521C009008B2E81 /* b64.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA6B911F6CF9F00621220 /* b64.c */; }; @@ -376,7 +353,6 @@ 225D65C01521C009008B2E81 /* libSKP_SILK_SDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DBA0147660BB00DEE054 /* libSKP_SILK_SDK.a */; }; 225D65CC1521C195008B2E81 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 225D64F81521BFA6008B2E81 /* libmediastreamer.a */; }; 225D65CD1521C19A008B2E81 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 225D65C51521C009008B2E81 /* libortp.a */; }; - 229A614F13DDFE3500090183 /* g722.h in Headers */ = {isa = PBXBuildFile; fileRef = 229A614B13DDFE3500090183 /* g722.h */; }; 229A615313DEE8A500090183 /* libx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 229A615113DEE8A400090183 /* libx264.a */; }; 229A615413DEE8A500090183 /* libmsx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 229A615213DEE8A400090183 /* libmsx264.a */; }; 229B9D5913043EAB00EFCD1C /* linphonecore_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */; }; @@ -387,21 +363,21 @@ 22A10B5911F84E2D00373793 /* proto.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5311F84E2D00373793 /* proto.h */; }; 22A10B5A11F84E2D00373793 /* toast.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5411F84E2D00373793 /* toast.h */; }; 22A10B5B11F84E2D00373793 /* unproto.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5511F84E2D00373793 /* unproto.h */; }; - 22B5106913B060E100CD87DA /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 22B5106813AFD37B00CD87DA /* nowebcamCIF.jpg */; }; + 22D07CD016F3BC5F009F2C9E /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 22D07CB416F3BC5F009F2C9E /* InfoPlist.strings */; }; + 22D07CD116F3BC5F009F2C9E /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22D07CB616F3BC5F009F2C9E /* MainWindow.xib */; }; + 22D07CD216F3BC5F009F2C9E /* mediastreamViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22D07CB816F3BC5F009F2C9E /* mediastreamViewController.xib */; }; + 22D07CD316F3BC5F009F2C9E /* mediastream-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22D07CBA16F3BC5F009F2C9E /* mediastream-Info.plist */; }; + 22D07CD416F3BC5F009F2C9E /* mediastreamAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22D07CBD16F3BC5F009F2C9E /* mediastreamAppDelegate.m */; }; + 22D07CD516F3BC5F009F2C9E /* mediastreamViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22D07CBF16F3BC5F009F2C9E /* mediastreamViewController.m */; }; + 22D07CD616F3BC5F009F2C9E /* mediastream.c in Sources */ = {isa = PBXBuildFile; fileRef = 22D07CC016F3BC5F009F2C9E /* mediastream.c */; }; + 22D07CE516F3BFCB009F2C9E /* speexec.c in Sources */ = {isa = PBXBuildFile; fileRef = 22D07CE416F3BFCB009F2C9E /* speexec.c */; }; 22DD19C113A8D7FA0018ECD4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22DD19C013A8D7FA0018ECD4 /* UIKit.framework */; }; 22DD19C213A8D7FA0018ECD4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; 22DD19C413A8D7FA0018ECD4 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22DD19C313A8D7FA0018ECD4 /* CoreGraphics.framework */; }; - 22DD19F713A8DFA70018ECD4 /* mediastream.c in Sources */ = {isa = PBXBuildFile; fileRef = 22DD19E713A8D82C0018ECD4 /* mediastream.c */; }; - 22DD21AE13A8E3310018ECD4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 22DD21A113A8E3310018ECD4 /* InfoPlist.strings */; }; - 22DD21AF13A8E3310018ECD4 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22DD21A313A8E3310018ECD4 /* MainWindow.xib */; }; - 22DD21B013A8E3310018ECD4 /* mediastreamViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22DD21A513A8E3310018ECD4 /* mediastreamViewController.xib */; }; - 22DD21B313A8E3310018ECD4 /* mediastreamAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22DD21AB13A8E3310018ECD4 /* mediastreamAppDelegate.m */; }; - 22DD21B413A8E3310018ECD4 /* mediastreamViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22DD21AD13A8E3310018ECD4 /* mediastreamViewController.m */; }; 7014533C13FA7ECA00A01D86 /* zrtp.h in Headers */ = {isa = PBXBuildFile; fileRef = 7014533B13FA7ECA00A01D86 /* zrtp.h */; }; 7066FC0A13E830B800EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0913E830B800EFC6DC /* libvpx.a */; }; 70E542EE13E147C7002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542ED13E147C7002BA2C0 /* OpenGLES.framework */; }; 70E542F113E147CE002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F013E147CE002BA2C0 /* QuartzCore.framework */; }; - 70E542FA13E14816002BA2C0 /* shaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 70E542F613E14816002BA2C0 /* shaders.h */; }; AA747D9F0F9514B9006C5449 /* liblinphone_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = AA747D9E0F9514B9006C5449 /* liblinphone_Prefix.pch */; }; AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; /* End PBXBuildFile section */ @@ -445,7 +421,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 2203127113A247B40049A2ED /* iosdisplay.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iosdisplay.m; sourceTree = ""; }; 2203127413A249F70049A2ED /* filter-template.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "filter-template.c"; sourceTree = ""; }; 220ED19713A8F87700AC21E0 /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "../liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = ""; }; 220ED19813A8F87700AC21E0 /* libspeex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeex.a; path = "../liblinphone-sdk/apple-darwin/lib/libspeex.a"; sourceTree = ""; }; @@ -456,25 +431,13 @@ 220ED1A413A903E100AC21E0 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; 220ED1A613A9040700AC21E0 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 220ED1A813A9041800AC21E0 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 220ED1AA13A9062500AC21E0 /* nowebcam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nowebcam.h; sourceTree = ""; }; - 220ED1AB13A9062500AC21E0 /* nowebcam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nowebcam.c; sourceTree = ""; }; - 2211DB9B1476539600DEE054 /* l16.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = l16.c; sourceTree = ""; }; 2211DB9E14765CEC00DEE054 /* libmssilk.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmssilk.a; path = "../liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmssilk.a"; sourceTree = ""; }; 2211DBA0147660BB00DEE054 /* libSKP_SILK_SDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libSKP_SILK_SDK.a; path = "../liblinphone-sdk/apple-darwin/lib/libSKP_SILK_SDK.a"; sourceTree = ""; }; - 221DCB6715347EF80025E54D /* opengles_display.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = opengles_display.c; sourceTree = ""; }; 221DCB6A153584410025E54D /* yuv2rgb.fs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = yuv2rgb.fs; sourceTree = ""; }; 221DCB6B153584410025E54D /* yuv2rgb.vs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = yuv2rgb.vs; sourceTree = ""; }; 221F589913AB4EEE00D603C9 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; - 221F589B13AB4FC500D603C9 /* msvideo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msvideo.c; sourceTree = ""; }; 221F589D13AB503F00D603C9 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; 221F589F13AB50F800D603C9 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; - 221F58A113AB6F8000D603C9 /* pixconv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pixconv.c; sourceTree = ""; }; - 221F58A513AB716300D603C9 /* tonedetector.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tonedetector.c; sourceTree = ""; }; - 221F58A613AB716300D603C9 /* jpegwriter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jpegwriter.c; sourceTree = ""; }; - 221F58A713AB716300D603C9 /* h264dec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264dec.c; sourceTree = ""; }; - 221F58AB13AB71A400D603C9 /* sizeconv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sizeconv.c; sourceTree = ""; }; - 221F58AD13ABA42800D603C9 /* scaler.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = scaler.c; sourceTree = ""; }; - 221F58E313AF44B300D603C9 /* scaler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scaler.h; sourceTree = ""; }; 222CA5B911F6CF7600621220 /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; 222CA5BA11F6CF7600621220 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; 222CA5BB11F6CF7600621220 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; @@ -510,50 +473,8 @@ 222CA5DA11F6CF7600621220 /* rfc3984.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rfc3984.h; sourceTree = ""; }; 222CA5DB11F6CF7600621220 /* waveheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = waveheader.h; sourceTree = ""; }; 222CA5DD11F6CF7600621220 /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; - 222CA5DE11F6CF7600621220 /* _kiss_fft_guts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _kiss_fft_guts.h; sourceTree = ""; }; - 222CA5DF11F6CF7600621220 /* alaw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = alaw.c; sourceTree = ""; }; - 222CA5E311F6CF7600621220 /* audiomixer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = audiomixer.c; sourceTree = ""; }; - 222CA5E411F6CF7600621220 /* audiostream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = audiostream.c; sourceTree = ""; }; - 222CA5E511F6CF7600621220 /* chanadapt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = chanadapt.c; sourceTree = ""; }; - 222CA5E711F6CF7600621220 /* dsptools.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dsptools.c; sourceTree = ""; }; - 222CA5E811F6CF7600621220 /* dtmfgen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dtmfgen.c; sourceTree = ""; }; - 222CA5EB11F6CF7600621220 /* equalizer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = equalizer.c; sourceTree = ""; }; - 222CA5EC11F6CF7600621220 /* eventqueue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = eventqueue.c; sourceTree = ""; }; - 222CA5ED11F6CF7600621220 /* extdisplay.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = extdisplay.c; sourceTree = ""; }; - 222CA5EE11F6CF7600621220 /* ffmpeg-priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ffmpeg-priv.h"; sourceTree = ""; }; - 222CA5EF11F6CF7600621220 /* g711common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = g711common.h; sourceTree = ""; }; - 222CA5F011F6CF7600621220 /* gsm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gsm.c; sourceTree = ""; }; - 222CA5F211F6CF7600621220 /* ice.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ice.c; sourceTree = ""; }; - 222CA5F311F6CF7600621220 /* itc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = itc.c; sourceTree = ""; }; - 222CA5F411F6CF7600621220 /* kiss_fft.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kiss_fft.c; sourceTree = ""; }; - 222CA5F511F6CF7600621220 /* kiss_fft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kiss_fft.h; sourceTree = ""; }; - 222CA5F611F6CF7600621220 /* kiss_fftr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kiss_fftr.c; sourceTree = ""; }; - 222CA5F711F6CF7600621220 /* kiss_fftr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kiss_fftr.h; sourceTree = ""; }; 222CA5F911F6CF7600621220 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; 222CA5FA11F6CF7600621220 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; - 222CA5FB11F6CF7600621220 /* mire.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mire.c; sourceTree = ""; }; - 222CA5FD11F6CF7600621220 /* mscommon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mscommon.c; sourceTree = ""; }; - 222CA5FE11F6CF7600621220 /* msconf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msconf.c; sourceTree = ""; }; - 222CA60011F6CF7600621220 /* msfileplayer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msfileplayer.c; sourceTree = ""; }; - 222CA60211F6CF7600621220 /* msfilerec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msfilerec.c; sourceTree = ""; }; - 222CA60411F6CF7600621220 /* msfilter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msfilter.c; sourceTree = ""; }; - 222CA60511F6CF7600621220 /* msiounit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = msiounit.m; sourceTree = ""; }; - 222CA60611F6CF7600621220 /* msjoin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msjoin.c; sourceTree = ""; }; - 222CA60711F6CF7600621220 /* msqueue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msqueue.c; sourceTree = ""; }; - 222CA60811F6CF7600621220 /* msresample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msresample.c; sourceTree = ""; }; - 222CA60911F6CF7600621220 /* msrtp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msrtp.c; sourceTree = ""; }; - 222CA60A11F6CF7600621220 /* mssndcard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mssndcard.c; sourceTree = ""; }; - 222CA60B11F6CF7600621220 /* msspeex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msspeex.c; sourceTree = ""; }; - 222CA60C11F6CF7600621220 /* msticker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msticker.c; sourceTree = ""; }; - 222CA61111F6CF7600621220 /* msvolume.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msvolume.c; sourceTree = ""; }; - 222CA61311F6CF7600621220 /* mtu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mtu.c; sourceTree = ""; }; - 222CA61B11F6CF7600621220 /* rfc2429.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rfc2429.h; sourceTree = ""; }; - 222CA61C11F6CF7600621220 /* rfc3984.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rfc3984.c; sourceTree = ""; }; - 222CA61F11F6CF7600621220 /* speexec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = speexec.c; sourceTree = ""; }; - 222CA62111F6CF7600621220 /* tee.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tee.c; sourceTree = ""; }; - 222CA62311F6CF7600621220 /* ulaw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ulaw.c; sourceTree = ""; }; - 222CA62411F6CF7600621220 /* vfw-missing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "vfw-missing.h"; sourceTree = ""; }; - 222CA62911F6CF7600621220 /* void.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = void.c; sourceTree = ""; }; 222CA6A011F6CF9E00621220 /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; 222CA6A111F6CF9E00621220 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; 222CA6A211F6CF9F00621220 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; @@ -633,42 +554,109 @@ 222CA75911F6CFB100621220 /* proxy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = proxy.c; sourceTree = ""; }; 222CA75A11F6CFB100621220 /* sal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sal.c; sourceTree = ""; }; 222CA75B11F6CFB100621220 /* sal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sal.h; sourceTree = ""; }; - 222CA75C11F6CFB100621220 /* sal_eXosip2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sal_eXosip2.c; sourceTree = ""; }; - 222CA75D11F6CFB100621220 /* sal_eXosip2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sal_eXosip2.h; sourceTree = ""; }; - 222CA75E11F6CFB100621220 /* sal_eXosip2_presence.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sal_eXosip2_presence.c; sourceTree = ""; }; - 222CA75F11F6CFB100621220 /* sal_eXosip2_sdp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sal_eXosip2_sdp.c; sourceTree = ""; }; 222CA76211F6CFB100621220 /* siplogin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = siplogin.c; sourceTree = ""; }; 222CA76311F6CFB100621220 /* sipsetup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sipsetup.c; sourceTree = ""; }; 222CA76411F6CFB100621220 /* sipsetup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sipsetup.h; sourceTree = ""; }; - 22313679143DED490035C1F4 /* msandroidvideo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = msandroidvideo.cpp; sourceTree = ""; }; + 223CA7F016D9268D00EF1BEC /* alaw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = alaw.c; sourceTree = ""; }; + 223CA7F216D9268D00EF1BEC /* aqsnd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = aqsnd.c; sourceTree = ""; }; + 223CA7F416D9268D00EF1BEC /* audiomixer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = audiomixer.c; sourceTree = ""; }; + 223CA7F516D9268D00EF1BEC /* chanadapt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = chanadapt.c; sourceTree = ""; }; + 223CA7F616D9268D00EF1BEC /* dtmfgen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dtmfgen.c; sourceTree = ""; }; + 223CA7F716D9268D00EF1BEC /* equalizer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = equalizer.c; sourceTree = ""; }; + 223CA7F916D9268D00EF1BEC /* genericplc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = genericplc.c; sourceTree = ""; }; + 223CA7FA16D9268D00EF1BEC /* gsm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gsm.c; sourceTree = ""; }; + 223CA7FB16D9268D00EF1BEC /* l16.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = l16.c; sourceTree = ""; }; + 223CA7FD16D9268D00EF1BEC /* msconf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msconf.c; sourceTree = ""; }; + 223CA7FE16D9268D00EF1BEC /* msfileplayer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msfileplayer.c; sourceTree = ""; }; + 223CA7FF16D9268D00EF1BEC /* msfilerec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msfilerec.c; sourceTree = ""; }; + 223CA80016D9268D00EF1BEC /* msg722.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msg722.c; sourceTree = ""; }; + 223CA80116D9268D00EF1BEC /* msiounit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = msiounit.m; sourceTree = ""; }; + 223CA80216D9268D00EF1BEC /* msresample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msresample.c; sourceTree = ""; }; + 223CA80316D9268D00EF1BEC /* msspeex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msspeex.c; sourceTree = ""; }; + 223CA80416D9268D00EF1BEC /* msvolume.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msvolume.c; sourceTree = ""; }; + 223CA80916D9268D00EF1BEC /* tonedetector.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tonedetector.c; sourceTree = ""; }; + 223CA80A16D9268D00EF1BEC /* ulaw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ulaw.c; sourceTree = ""; }; + 223CA80B16D9268D00EF1BEC /* waveheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = waveheader.h; sourceTree = ""; }; + 223CA81216D9268D00EF1BEC /* eventqueue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = eventqueue.c; sourceTree = ""; }; + 223CA81316D9268D00EF1BEC /* mscommon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mscommon.c; sourceTree = ""; }; + 223CA81416D9268D00EF1BEC /* msfilter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msfilter.c; sourceTree = ""; }; + 223CA81516D9268D00EF1BEC /* msqueue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msqueue.c; sourceTree = ""; }; + 223CA81616D9268D00EF1BEC /* mssndcard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mssndcard.c; sourceTree = ""; }; + 223CA81716D9268D00EF1BEC /* msticker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msticker.c; sourceTree = ""; }; + 223CA81816D9268D00EF1BEC /* mswebcam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mswebcam.c; sourceTree = ""; }; + 223CA81916D9268D00EF1BEC /* mtu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mtu.c; sourceTree = ""; }; + 223CA81B16D9268D00EF1BEC /* itc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = itc.c; sourceTree = ""; }; + 223CA81C16D9268D00EF1BEC /* join.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = join.c; sourceTree = ""; }; + 223CA81D16D9268D00EF1BEC /* msrtp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msrtp.c; sourceTree = ""; }; + 223CA81E16D9268D00EF1BEC /* tee.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tee.c; sourceTree = ""; }; + 223CA81F16D9268D00EF1BEC /* void.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = void.c; sourceTree = ""; }; + 223CA82116D9268D00EF1BEC /* _kiss_fft_guts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _kiss_fft_guts.h; sourceTree = ""; }; + 223CA82216D9268D00EF1BEC /* dsptools.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dsptools.c; sourceTree = ""; }; + 223CA82316D9268D00EF1BEC /* ffmpeg-priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ffmpeg-priv.h"; sourceTree = ""; }; + 223CA82416D9268D00EF1BEC /* g711common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = g711common.h; sourceTree = ""; }; + 223CA82516D9268D00EF1BEC /* g722.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = g722.h; sourceTree = ""; }; + 223CA82616D9268D00EF1BEC /* g722_decode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = g722_decode.c; sourceTree = ""; }; + 223CA82716D9268D00EF1BEC /* g722_encode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = g722_encode.c; sourceTree = ""; }; + 223CA82816D9268D00EF1BEC /* kiss_fft.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kiss_fft.c; sourceTree = ""; }; + 223CA82916D9268D00EF1BEC /* kiss_fft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kiss_fft.h; sourceTree = ""; }; + 223CA82A16D9268D00EF1BEC /* kiss_fftr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kiss_fftr.c; sourceTree = ""; }; + 223CA82B16D9268D00EF1BEC /* kiss_fftr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kiss_fftr.h; sourceTree = ""; }; + 223CA82D16D9268D00EF1BEC /* opengles_display.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = opengles_display.c; sourceTree = ""; }; + 223CA82E16D9268D00EF1BEC /* opengles_display.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opengles_display.h; sourceTree = ""; }; + 223CA82F16D9268D00EF1BEC /* shaders.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shaders.c; sourceTree = ""; }; + 223CA83016D9268D00EF1BEC /* shaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shaders.h; sourceTree = ""; }; + 223CA83116D9268D00EF1BEC /* swscale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = swscale.h; sourceTree = ""; }; + 223CA83216D9268D00EF1BEC /* vfw-missing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "vfw-missing.h"; sourceTree = ""; }; + 223CA83516D9268D00EF1BEC /* extdisplay.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = extdisplay.c; sourceTree = ""; }; + 223CA83716D9268D00EF1BEC /* h264dec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264dec.c; sourceTree = ""; }; + 223CA83816D9268D00EF1BEC /* ioscapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ioscapture.m; sourceTree = ""; }; + 223CA83916D9268D00EF1BEC /* iosdisplay.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iosdisplay.m; sourceTree = ""; }; + 223CA83A16D9268D00EF1BEC /* jpegwriter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jpegwriter.c; sourceTree = ""; }; + 223CA83B16D9268D00EF1BEC /* mire.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mire.c; sourceTree = ""; }; + 223CA84016D9268D00EF1BEC /* nowebcam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nowebcam.c; sourceTree = ""; }; + 223CA84116D9268D00EF1BEC /* pixconv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pixconv.c; sourceTree = ""; }; + 223CA84316D9268D00EF1BEC /* sizeconv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sizeconv.c; sourceTree = ""; }; + 223CA84516D9268D00EF1BEC /* videodec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = videodec.c; sourceTree = ""; }; + 223CA84616D9268D00EF1BEC /* videoenc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = videoenc.c; sourceTree = ""; }; + 223CA84816D9268D00EF1BEC /* vp8.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vp8.c; sourceTree = ""; }; + 223CA84F16D9268D00EF1BEC /* audioconference.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = audioconference.c; sourceTree = ""; }; + 223CA85016D9268D00EF1BEC /* audiostream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = audiostream.c; sourceTree = ""; }; + 223CA85116D9268D00EF1BEC /* bitratecontrol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitratecontrol.c; sourceTree = ""; }; + 223CA85216D9268D00EF1BEC /* bitratedriver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitratedriver.c; sourceTree = ""; }; + 223CA85316D9268D00EF1BEC /* ice.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ice.c; sourceTree = ""; }; + 223CA85416D9268D00EF1BEC /* layouts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = layouts.c; sourceTree = ""; }; + 223CA85516D9268D00EF1BEC /* layouts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = layouts.h; sourceTree = ""; }; + 223CA85616D9268D00EF1BEC /* mediastream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mediastream.c; sourceTree = ""; }; + 223CA85716D9268D00EF1BEC /* msvideo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msvideo.c; sourceTree = ""; }; + 223CA85816D9268D00EF1BEC /* msvideo_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msvideo_neon.c; sourceTree = ""; }; + 223CA85916D9268D00EF1BEC /* msvideo_neon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = msvideo_neon.h; sourceTree = ""; }; + 223CA85A16D9268D00EF1BEC /* msvoip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msvoip.c; sourceTree = ""; }; + 223CA85B16D9268D00EF1BEC /* nowebcam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nowebcam.h; sourceTree = ""; }; + 223CA85C16D9268D00EF1BEC /* nowebcamCIF.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = nowebcamCIF.jpg; sourceTree = ""; }; + 223CA85D16D9268D00EF1BEC /* private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = private.h; sourceTree = ""; }; + 223CA85E16D9268D00EF1BEC /* qosanalyzer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qosanalyzer.c; sourceTree = ""; }; + 223CA85F16D9268D00EF1BEC /* qualityindicator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qualityindicator.c; sourceTree = ""; }; + 223CA86016D9268D00EF1BEC /* rfc2429.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rfc2429.h; sourceTree = ""; }; + 223CA86116D9268D00EF1BEC /* rfc3984.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rfc3984.c; sourceTree = ""; }; + 223CA86216D9268D00EF1BEC /* ringstream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ringstream.c; sourceTree = ""; }; + 223CA86316D9268D00EF1BEC /* scaler.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = scaler.c; sourceTree = ""; }; + 223CA86416D9268D00EF1BEC /* scaler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scaler.h; sourceTree = ""; }; + 223CA86616D9268D00EF1BEC /* videostream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = videostream.c; sourceTree = ""; }; 22405EDC160065C200B92522 /* basedescs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = basedescs.h; path = build/iphone/basedescs.h; sourceTree = ""; }; - 22405EDF1600668800B92522 /* msvoip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msvoip.c; sourceTree = ""; }; 22405EE1160066C700B92522 /* voipdescs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = voipdescs.h; path = build/iphone/voipdescs.h; sourceTree = ""; }; 22405EE31600671D00B92522 /* logging.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = logging.c; sourceTree = ""; }; 22405EE41600671D00B92522 /* rtpprofile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rtpprofile.c; sourceTree = ""; }; - 22405EE71600675C00B92522 /* genericplc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = genericplc.c; sourceTree = ""; }; - 22512698145F13CE0041FBF2 /* aqsnd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = aqsnd.c; sourceTree = ""; }; 2252935A12F6CA4700DD9BFB /* ec-calibrator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ec-calibrator.c"; path = "linphone/coreapi/ec-calibrator.c"; sourceTree = SOURCE_ROOT; }; - 2258C44013A9377B0087A596 /* swscale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = swscale.h; sourceTree = ""; }; 2258C44213A945520087A596 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = "../liblinphone-sdk/apple-darwin/lib/libswscale.a"; sourceTree = ""; }; 2258C44313A945520087A596 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = "../liblinphone-sdk/apple-darwin/lib/libavutil.a"; sourceTree = ""; }; 2258C44413A945520087A596 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "../liblinphone-sdk/apple-darwin/lib/libavcodec.a"; sourceTree = ""; }; - 2258C44813A946890087A596 /* videostream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = videostream.c; sourceTree = ""; }; - 2258C44913A946890087A596 /* videoenc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = videoenc.c; sourceTree = ""; }; - 2258C44A13A946890087A596 /* videodec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = videodec.c; sourceTree = ""; }; 225D3559124B1FF60008581C /* linphonecall.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = linphonecall.c; sourceTree = ""; }; 225D64F81521BFA6008B2E81 /* libmediastreamer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmediastreamer.a; sourceTree = BUILT_PRODUCTS_DIR; }; 225D65C51521C009008B2E81 /* libortp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libortp.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 229A614913DDFE3500090183 /* g722_decode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = g722_decode.c; sourceTree = ""; }; - 229A614A13DDFE3500090183 /* g722_encode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = g722_encode.c; sourceTree = ""; }; - 229A614B13DDFE3500090183 /* g722.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = g722.h; sourceTree = ""; }; - 229A614C13DDFE3500090183 /* msg722.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msg722.c; sourceTree = ""; }; 229A615113DEE8A400090183 /* libx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libx264.a; path = "../liblinphone-sdk/apple-darwin/lib/libx264.a"; sourceTree = ""; }; 229A615213DEE8A400090183 /* libmsx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsx264.a; path = "../liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsx264.a"; sourceTree = ""; }; 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphonecore_utils.h; sourceTree = ""; }; - 229ECDEA143AEA6300D611B8 /* msvideo_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msvideo_neon.c; sourceTree = ""; }; 229ECDEC143AEBDA00D611B8 /* conference.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = conference.c; sourceTree = ""; }; - 229ECDEE143AEC2400D611B8 /* audioconference.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = audioconference.c; sourceTree = ""; }; 22A10B4F11F84E2D00373793 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; 22A10B5011F84E2D00373793 /* gsm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gsm.h; sourceTree = ""; }; 22A10B5111F84E2D00373793 /* gsm.h.orig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gsm.h.orig; sourceTree = ""; }; @@ -676,40 +664,30 @@ 22A10B5311F84E2D00373793 /* proto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = proto.h; sourceTree = ""; }; 22A10B5411F84E2D00373793 /* toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = toast.h; sourceTree = ""; }; 22A10B5511F84E2D00373793 /* unproto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unproto.h; sourceTree = ""; }; - 22A10EE711F8920F00373793 /* mswebcam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mswebcam.c; path = linphone/mediastreamer2/src/mswebcam.c; sourceTree = SOURCE_ROOT; }; - 22B5106813AFD37B00CD87DA /* nowebcamCIF.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = nowebcamCIF.jpg; path = src/nowebcamCIF.jpg; sourceTree = ""; }; - 22D15AB3139F505400C7713A /* ioscapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ioscapture.m; sourceTree = ""; }; - 22D15AB5139F579D00C7713A /* qtcapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = qtcapture.m; sourceTree = ""; }; + 22D07CB516F3BC5F009F2C9E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 22D07CB716F3BC5F009F2C9E /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; }; + 22D07CB916F3BC5F009F2C9E /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/mediastreamViewController.xib; sourceTree = ""; }; + 22D07CBA16F3BC5F009F2C9E /* mediastream-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "mediastream-Info.plist"; sourceTree = ""; }; + 22D07CBB16F3BC5F009F2C9E /* mediastream-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "mediastream-Prefix.pch"; sourceTree = ""; }; + 22D07CBC16F3BC5F009F2C9E /* mediastreamAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mediastreamAppDelegate.h; sourceTree = ""; }; + 22D07CBD16F3BC5F009F2C9E /* mediastreamAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = mediastreamAppDelegate.m; sourceTree = ""; }; + 22D07CBE16F3BC5F009F2C9E /* mediastreamViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mediastreamViewController.h; sourceTree = ""; }; + 22D07CBF16F3BC5F009F2C9E /* mediastreamViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = mediastreamViewController.m; sourceTree = ""; }; + 22D07CC016F3BC5F009F2C9E /* mediastream.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = mediastream.c; sourceTree = ""; }; + 22D07CE416F3BFCB009F2C9E /* speexec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = speexec.c; sourceTree = ""; }; 22DD19BE13A8D7FA0018ECD4 /* mediastream.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mediastream.app; sourceTree = BUILT_PRODUCTS_DIR; }; 22DD19C013A8D7FA0018ECD4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 22DD19C313A8D7FA0018ECD4 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 22DD19E713A8D82C0018ECD4 /* mediastream.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = mediastream.c; sourceTree = ""; }; - 22DD21A213A8E3310018ECD4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 22DD21A413A8E3310018ECD4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; }; - 22DD21A613A8E3310018ECD4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/mediastreamViewController.xib; sourceTree = ""; }; - 22DD21A813A8E3310018ECD4 /* mediastream-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "mediastream-Info.plist"; sourceTree = ""; }; - 22DD21A913A8E3310018ECD4 /* mediastream-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "mediastream-Prefix.pch"; sourceTree = ""; }; - 22DD21AA13A8E3310018ECD4 /* mediastreamAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mediastreamAppDelegate.h; sourceTree = ""; }; - 22DD21AB13A8E3310018ECD4 /* mediastreamAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = mediastreamAppDelegate.m; sourceTree = ""; }; - 22DD21AC13A8E3310018ECD4 /* mediastreamViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mediastreamViewController.h; sourceTree = ""; }; - 22DD21AD13A8E3310018ECD4 /* mediastreamViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = mediastreamViewController.m; sourceTree = ""; }; - 22FC56A713CB69FA002FD0F1 /* qualityindicator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qualityindicator.c; sourceTree = ""; }; - 22FC56A913CB6A4F002FD0F1 /* bitratecontrol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitratecontrol.c; sourceTree = ""; }; - 7014533713FA7AEA00A01D86 /* shaders.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shaders.c; sourceTree = ""; }; 7014533B13FA7ECA00A01D86 /* zrtp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zrtp.h; sourceTree = ""; }; 7014533D13FA841E00A01D86 /* zrtp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zrtp.c; sourceTree = ""; }; - 7066FC0613E82A3600EFC6DC /* vp8.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vp8.c; sourceTree = ""; }; 7066FC0913E830B800EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "../liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; }; 70E542ED13E147C7002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 70E542F013E147CE002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - 70E542F613E14816002BA2C0 /* shaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shaders.h; sourceTree = ""; }; AA747D9E0F9514B9006C5449 /* liblinphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = liblinphone_Prefix.pch; sourceTree = SOURCE_ROOT; }; AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; D2AAC07E0554694100DB518D /* liblinphone.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = liblinphone.a; sourceTree = BUILT_PRODUCTS_DIR; }; F4D9F23D145710540035B0D0 /* netsim.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = netsim.c; sourceTree = ""; }; F4D9F23E145710540035B0D0 /* ortp_srtp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ortp_srtp.c; sourceTree = ""; }; - F4D9F25E14583B580035B0D0 /* bitratedriver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitratedriver.c; sourceTree = ""; }; - F4D9F25F14583B580035B0D0 /* qosanalyzer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qosanalyzer.c; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -852,10 +830,9 @@ 222CA4CF11F6CF2000621220 /* mediastreamer2 */ = { isa = PBXGroup; children = ( + 22D07CAB16F3BC5F009F2C9E /* tools */, 22405EE1160066C700B92522 /* voipdescs.h */, 22405EDC160065C200B92522 /* basedescs.h */, - 22B5106813AFD37B00CD87DA /* nowebcamCIF.jpg */, - 22DD19E013A8D82C0018ECD4 /* tests */, 222CA5B811F6CF7600621220 /* include */, 222CA5DC11F6CF7600621220 /* src */, ); @@ -923,89 +900,17 @@ 222CA5DC11F6CF7600621220 /* src */ = { isa = PBXGroup; children = ( + 223CA7EF16D9268D00EF1BEC /* audiofilters */, + 223CA81116D9268D00EF1BEC /* base */, + 223CA81A16D9268D00EF1BEC /* otherfilters */, + 223CA82016D9268D00EF1BEC /* utils */, + 223CA83316D9268D00EF1BEC /* videofilters */, + 223CA84E16D9268D00EF1BEC /* voip */, 222CA5DD11F6CF7600621220 /* .gitignore */, - 222CA5DE11F6CF7600621220 /* _kiss_fft_guts.h */, - 222CA5DF11F6CF7600621220 /* alaw.c */, - 22512698145F13CE0041FBF2 /* aqsnd.c */, - 229ECDEE143AEC2400D611B8 /* audioconference.c */, - 222CA5E311F6CF7600621220 /* audiomixer.c */, - 222CA5E411F6CF7600621220 /* audiostream.c */, - 22FC56A913CB6A4F002FD0F1 /* bitratecontrol.c */, - F4D9F25E14583B580035B0D0 /* bitratedriver.c */, - 222CA5E511F6CF7600621220 /* chanadapt.c */, - 222CA5E711F6CF7600621220 /* dsptools.c */, - 222CA5E811F6CF7600621220 /* dtmfgen.c */, 2252935A12F6CA4700DD9BFB /* ec-calibrator.c */, - 222CA5EB11F6CF7600621220 /* equalizer.c */, - 222CA5EC11F6CF7600621220 /* eventqueue.c */, - 222CA5ED11F6CF7600621220 /* extdisplay.c */, - 222CA5EE11F6CF7600621220 /* ffmpeg-priv.h */, 2203127413A249F70049A2ED /* filter-template.c */, - 222CA5EF11F6CF7600621220 /* g711common.h */, - 229A614B13DDFE3500090183 /* g722.h */, - 229A614913DDFE3500090183 /* g722_decode.c */, - 229A614A13DDFE3500090183 /* g722_encode.c */, - 22405EE71600675C00B92522 /* genericplc.c */, - 222CA5F011F6CF7600621220 /* gsm.c */, - 221F58A713AB716300D603C9 /* h264dec.c */, - 222CA5F211F6CF7600621220 /* ice.c */, - 22D15AB3139F505400C7713A /* ioscapture.m */, - 2203127113A247B40049A2ED /* iosdisplay.m */, - 222CA5F311F6CF7600621220 /* itc.c */, - 221F58A613AB716300D603C9 /* jpegwriter.c */, - 222CA5F411F6CF7600621220 /* kiss_fft.c */, - 222CA5F511F6CF7600621220 /* kiss_fft.h */, - 222CA5F611F6CF7600621220 /* kiss_fftr.c */, - 222CA5F711F6CF7600621220 /* kiss_fftr.h */, - 2211DB9B1476539600DEE054 /* l16.c */, 222CA5F911F6CF7600621220 /* Makefile.am */, 222CA5FA11F6CF7600621220 /* Makefile.in */, - 222CA5FB11F6CF7600621220 /* mire.c */, - 22313679143DED490035C1F4 /* msandroidvideo.cpp */, - 222CA5FD11F6CF7600621220 /* mscommon.c */, - 222CA5FE11F6CF7600621220 /* msconf.c */, - 222CA60011F6CF7600621220 /* msfileplayer.c */, - 222CA60211F6CF7600621220 /* msfilerec.c */, - 222CA60411F6CF7600621220 /* msfilter.c */, - 229A614C13DDFE3500090183 /* msg722.c */, - 222CA60511F6CF7600621220 /* msiounit.m */, - 222CA60611F6CF7600621220 /* msjoin.c */, - 222CA60711F6CF7600621220 /* msqueue.c */, - 222CA60811F6CF7600621220 /* msresample.c */, - 222CA60911F6CF7600621220 /* msrtp.c */, - 222CA60A11F6CF7600621220 /* mssndcard.c */, - 222CA60B11F6CF7600621220 /* msspeex.c */, - 222CA60C11F6CF7600621220 /* msticker.c */, - 221F589B13AB4FC500D603C9 /* msvideo.c */, - 229ECDEA143AEA6300D611B8 /* msvideo_neon.c */, - 22405EDF1600668800B92522 /* msvoip.c */, - 222CA61111F6CF7600621220 /* msvolume.c */, - 222CA61311F6CF7600621220 /* mtu.c */, - 220ED1AB13A9062500AC21E0 /* nowebcam.c */, - 220ED1AA13A9062500AC21E0 /* nowebcam.h */, - 221DCB6715347EF80025E54D /* opengles_display.c */, - 221F58A113AB6F8000D603C9 /* pixconv.c */, - F4D9F25F14583B580035B0D0 /* qosanalyzer.c */, - 22D15AB5139F579D00C7713A /* qtcapture.m */, - 22FC56A713CB69FA002FD0F1 /* qualityindicator.c */, - 222CA61B11F6CF7600621220 /* rfc2429.h */, - 222CA61C11F6CF7600621220 /* rfc3984.c */, - 221F58AD13ABA42800D603C9 /* scaler.c */, - 221F58E313AF44B300D603C9 /* scaler.h */, - 7014533713FA7AEA00A01D86 /* shaders.c */, - 70E542F613E14816002BA2C0 /* shaders.h */, - 221F58AB13AB71A400D603C9 /* sizeconv.c */, - 222CA61F11F6CF7600621220 /* speexec.c */, - 2258C44013A9377B0087A596 /* swscale.h */, - 222CA62111F6CF7600621220 /* tee.c */, - 221F58A513AB716300D603C9 /* tonedetector.c */, - 222CA62311F6CF7600621220 /* ulaw.c */, - 222CA62411F6CF7600621220 /* vfw-missing.h */, - 2258C44A13A946890087A596 /* videodec.c */, - 2258C44913A946890087A596 /* videoenc.c */, - 2258C44813A946890087A596 /* videostream.c */, - 222CA62911F6CF7600621220 /* void.c */, - 7066FC0613E82A3600EFC6DC /* vp8.c */, 221DCB6A153584410025E54D /* yuv2rgb.fs */, 221DCB6B153584410025E54D /* yuv2rgb.vs */, ); @@ -1100,7 +1005,6 @@ 229ECDEC143AEBDA00D611B8 /* conference.c */, 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */, 225D3559124B1FF60008581C /* linphonecall.c */, - 22A10EE711F8920F00373793 /* mswebcam.c */, 222CA72E11F6CFB100621220 /* .gitignore */, 222CA72F11F6CFB100621220 /* address.c */, 222CA73011F6CFB100621220 /* authentication.c */, @@ -1124,10 +1028,6 @@ 222CA75911F6CFB100621220 /* proxy.c */, 222CA75A11F6CFB100621220 /* sal.c */, 222CA75B11F6CFB100621220 /* sal.h */, - 222CA75C11F6CFB100621220 /* sal_eXosip2.c */, - 222CA75D11F6CFB100621220 /* sal_eXosip2.h */, - 222CA75E11F6CFB100621220 /* sal_eXosip2_presence.c */, - 222CA75F11F6CFB100621220 /* sal_eXosip2_sdp.c */, 222CA76211F6CFB100621220 /* siplogin.c */, 222CA76311F6CFB100621220 /* sipsetup.c */, 222CA76411F6CFB100621220 /* sipsetup.h */, @@ -1145,6 +1045,134 @@ path = help; sourceTree = ""; }; + 223CA7EF16D9268D00EF1BEC /* audiofilters */ = { + isa = PBXGroup; + children = ( + 22D07CE416F3BFCB009F2C9E /* speexec.c */, + 223CA7F016D9268D00EF1BEC /* alaw.c */, + 223CA7F216D9268D00EF1BEC /* aqsnd.c */, + 223CA7F416D9268D00EF1BEC /* audiomixer.c */, + 223CA7F516D9268D00EF1BEC /* chanadapt.c */, + 223CA7F616D9268D00EF1BEC /* dtmfgen.c */, + 223CA7F716D9268D00EF1BEC /* equalizer.c */, + 223CA7F916D9268D00EF1BEC /* genericplc.c */, + 223CA7FA16D9268D00EF1BEC /* gsm.c */, + 223CA7FB16D9268D00EF1BEC /* l16.c */, + 223CA7FD16D9268D00EF1BEC /* msconf.c */, + 223CA7FE16D9268D00EF1BEC /* msfileplayer.c */, + 223CA7FF16D9268D00EF1BEC /* msfilerec.c */, + 223CA80016D9268D00EF1BEC /* msg722.c */, + 223CA80116D9268D00EF1BEC /* msiounit.m */, + 223CA80216D9268D00EF1BEC /* msresample.c */, + 223CA80316D9268D00EF1BEC /* msspeex.c */, + 223CA80416D9268D00EF1BEC /* msvolume.c */, + 223CA80916D9268D00EF1BEC /* tonedetector.c */, + 223CA80A16D9268D00EF1BEC /* ulaw.c */, + 223CA80B16D9268D00EF1BEC /* waveheader.h */, + ); + path = audiofilters; + sourceTree = ""; + }; + 223CA81116D9268D00EF1BEC /* base */ = { + isa = PBXGroup; + children = ( + 223CA81216D9268D00EF1BEC /* eventqueue.c */, + 223CA81316D9268D00EF1BEC /* mscommon.c */, + 223CA81416D9268D00EF1BEC /* msfilter.c */, + 223CA81516D9268D00EF1BEC /* msqueue.c */, + 223CA81616D9268D00EF1BEC /* mssndcard.c */, + 223CA81716D9268D00EF1BEC /* msticker.c */, + 223CA81816D9268D00EF1BEC /* mswebcam.c */, + 223CA81916D9268D00EF1BEC /* mtu.c */, + ); + path = base; + sourceTree = ""; + }; + 223CA81A16D9268D00EF1BEC /* otherfilters */ = { + isa = PBXGroup; + children = ( + 223CA81B16D9268D00EF1BEC /* itc.c */, + 223CA81C16D9268D00EF1BEC /* join.c */, + 223CA81D16D9268D00EF1BEC /* msrtp.c */, + 223CA81E16D9268D00EF1BEC /* tee.c */, + 223CA81F16D9268D00EF1BEC /* void.c */, + ); + path = otherfilters; + sourceTree = ""; + }; + 223CA82016D9268D00EF1BEC /* utils */ = { + isa = PBXGroup; + children = ( + 223CA82116D9268D00EF1BEC /* _kiss_fft_guts.h */, + 223CA82216D9268D00EF1BEC /* dsptools.c */, + 223CA82316D9268D00EF1BEC /* ffmpeg-priv.h */, + 223CA82416D9268D00EF1BEC /* g711common.h */, + 223CA82516D9268D00EF1BEC /* g722.h */, + 223CA82616D9268D00EF1BEC /* g722_decode.c */, + 223CA82716D9268D00EF1BEC /* g722_encode.c */, + 223CA82816D9268D00EF1BEC /* kiss_fft.c */, + 223CA82916D9268D00EF1BEC /* kiss_fft.h */, + 223CA82A16D9268D00EF1BEC /* kiss_fftr.c */, + 223CA82B16D9268D00EF1BEC /* kiss_fftr.h */, + 223CA82D16D9268D00EF1BEC /* opengles_display.c */, + 223CA82E16D9268D00EF1BEC /* opengles_display.h */, + 223CA82F16D9268D00EF1BEC /* shaders.c */, + 223CA83016D9268D00EF1BEC /* shaders.h */, + 223CA83116D9268D00EF1BEC /* swscale.h */, + 223CA83216D9268D00EF1BEC /* vfw-missing.h */, + ); + path = utils; + sourceTree = ""; + }; + 223CA83316D9268D00EF1BEC /* videofilters */ = { + isa = PBXGroup; + children = ( + 223CA83516D9268D00EF1BEC /* extdisplay.c */, + 223CA83716D9268D00EF1BEC /* h264dec.c */, + 223CA83816D9268D00EF1BEC /* ioscapture.m */, + 223CA83916D9268D00EF1BEC /* iosdisplay.m */, + 223CA83A16D9268D00EF1BEC /* jpegwriter.c */, + 223CA83B16D9268D00EF1BEC /* mire.c */, + 223CA84016D9268D00EF1BEC /* nowebcam.c */, + 223CA84116D9268D00EF1BEC /* pixconv.c */, + 223CA84316D9268D00EF1BEC /* sizeconv.c */, + 223CA84516D9268D00EF1BEC /* videodec.c */, + 223CA84616D9268D00EF1BEC /* videoenc.c */, + 223CA84816D9268D00EF1BEC /* vp8.c */, + ); + path = videofilters; + sourceTree = ""; + }; + 223CA84E16D9268D00EF1BEC /* voip */ = { + isa = PBXGroup; + children = ( + 223CA84F16D9268D00EF1BEC /* audioconference.c */, + 223CA85016D9268D00EF1BEC /* audiostream.c */, + 223CA85116D9268D00EF1BEC /* bitratecontrol.c */, + 223CA85216D9268D00EF1BEC /* bitratedriver.c */, + 223CA85316D9268D00EF1BEC /* ice.c */, + 223CA85416D9268D00EF1BEC /* layouts.c */, + 223CA85516D9268D00EF1BEC /* layouts.h */, + 223CA85616D9268D00EF1BEC /* mediastream.c */, + 223CA85716D9268D00EF1BEC /* msvideo.c */, + 223CA85816D9268D00EF1BEC /* msvideo_neon.c */, + 223CA85916D9268D00EF1BEC /* msvideo_neon.h */, + 223CA85A16D9268D00EF1BEC /* msvoip.c */, + 223CA85B16D9268D00EF1BEC /* nowebcam.h */, + 223CA85C16D9268D00EF1BEC /* nowebcamCIF.jpg */, + 223CA85D16D9268D00EF1BEC /* private.h */, + 223CA85E16D9268D00EF1BEC /* qosanalyzer.c */, + 223CA85F16D9268D00EF1BEC /* qualityindicator.c */, + 223CA86016D9268D00EF1BEC /* rfc2429.h */, + 223CA86116D9268D00EF1BEC /* rfc3984.c */, + 223CA86216D9268D00EF1BEC /* ringstream.c */, + 223CA86316D9268D00EF1BEC /* scaler.c */, + 223CA86416D9268D00EF1BEC /* scaler.h */, + 223CA86616D9268D00EF1BEC /* videostream.c */, + ); + path = voip; + sourceTree = ""; + }; 22A10B4C11F84DE300373793 /* externals */ = { isa = PBXGroup; children = ( @@ -1176,27 +1204,27 @@ path = externals/gsm/inc; sourceTree = ""; }; - 22DD19E013A8D82C0018ECD4 /* tests */ = { + 22D07CAB16F3BC5F009F2C9E /* tools */ = { isa = PBXGroup; children = ( - 22DD21A013A8E3310018ECD4 /* ios */, - 22DD19E713A8D82C0018ECD4 /* mediastream.c */, + 22D07CB316F3BC5F009F2C9E /* ios */, + 22D07CC016F3BC5F009F2C9E /* mediastream.c */, ); - path = tests; + path = tools; sourceTree = ""; }; - 22DD21A013A8E3310018ECD4 /* ios */ = { + 22D07CB316F3BC5F009F2C9E /* ios */ = { isa = PBXGroup; children = ( - 22DD21A113A8E3310018ECD4 /* InfoPlist.strings */, - 22DD21A313A8E3310018ECD4 /* MainWindow.xib */, - 22DD21A513A8E3310018ECD4 /* mediastreamViewController.xib */, - 22DD21A813A8E3310018ECD4 /* mediastream-Info.plist */, - 22DD21A913A8E3310018ECD4 /* mediastream-Prefix.pch */, - 22DD21AA13A8E3310018ECD4 /* mediastreamAppDelegate.h */, - 22DD21AB13A8E3310018ECD4 /* mediastreamAppDelegate.m */, - 22DD21AC13A8E3310018ECD4 /* mediastreamViewController.h */, - 22DD21AD13A8E3310018ECD4 /* mediastreamViewController.m */, + 22D07CB416F3BC5F009F2C9E /* InfoPlist.strings */, + 22D07CB616F3BC5F009F2C9E /* MainWindow.xib */, + 22D07CB816F3BC5F009F2C9E /* mediastreamViewController.xib */, + 22D07CBA16F3BC5F009F2C9E /* mediastream-Info.plist */, + 22D07CBB16F3BC5F009F2C9E /* mediastream-Prefix.pch */, + 22D07CBC16F3BC5F009F2C9E /* mediastreamAppDelegate.h */, + 22D07CBD16F3BC5F009F2C9E /* mediastreamAppDelegate.m */, + 22D07CBE16F3BC5F009F2C9E /* mediastreamViewController.h */, + 22D07CBF16F3BC5F009F2C9E /* mediastreamViewController.m */, ); path = ios; sourceTree = ""; @@ -1245,13 +1273,6 @@ 225D64491521BFA6008B2E81 /* mswebcam.h in Headers */, 225D644A1521BFA6008B2E81 /* rfc3984.h in Headers */, 225D644B1521BFA6008B2E81 /* waveheader.h in Headers */, - 225D644C1521BFA6008B2E81 /* _kiss_fft_guts.h in Headers */, - 225D644D1521BFA6008B2E81 /* ffmpeg-priv.h in Headers */, - 225D644E1521BFA6008B2E81 /* g711common.h in Headers */, - 225D644F1521BFA6008B2E81 /* kiss_fft.h in Headers */, - 225D64501521BFA6008B2E81 /* kiss_fftr.h in Headers */, - 225D64511521BFA6008B2E81 /* rfc2429.h in Headers */, - 225D64521521BFA6008B2E81 /* vfw-missing.h in Headers */, 225D64531521BFA6008B2E81 /* b64.h in Headers */, 225D64541521BFA6008B2E81 /* event.h in Headers */, 225D64551521BFA6008B2E81 /* ortp.h in Headers */, @@ -1279,7 +1300,6 @@ 225D646B1521BFA6008B2E81 /* offeranswer.h in Headers */, 225D646C1521BFA6008B2E81 /* private.h in Headers */, 225D646D1521BFA6008B2E81 /* sal.h in Headers */, - 225D646E1521BFA6008B2E81 /* sal_eXosip2.h in Headers */, 225D646F1521BFA6008B2E81 /* sipsetup.h in Headers */, 225D64701521BFA6008B2E81 /* config.h in Headers */, 225D64711521BFA6008B2E81 /* gsm.h in Headers */, @@ -1288,14 +1308,26 @@ 225D64741521BFA6008B2E81 /* toast.h in Headers */, 225D64751521BFA6008B2E81 /* unproto.h in Headers */, 225D64761521BFA6008B2E81 /* linphonecore_utils.h in Headers */, - 225D64781521BFA6008B2E81 /* nowebcam.h in Headers */, - 225D64791521BFA6008B2E81 /* swscale.h in Headers */, - 225D647B1521BFA6008B2E81 /* scaler.h in Headers */, - 225D647C1521BFA6008B2E81 /* g722.h in Headers */, - 225D647D1521BFA6008B2E81 /* shaders.h in Headers */, 225D64811521BFA6008B2E81 /* zrtp.h in Headers */, 22405EDD160065C200B92522 /* basedescs.h in Headers */, 22405EE2160066C700B92522 /* voipdescs.h in Headers */, + 223CA88216D9268D00EF1BEC /* waveheader.h in Headers */, + 223CA89516D9268D00EF1BEC /* _kiss_fft_guts.h in Headers */, + 223CA89716D9268D00EF1BEC /* ffmpeg-priv.h in Headers */, + 223CA89816D9268D00EF1BEC /* g711common.h in Headers */, + 223CA89916D9268D00EF1BEC /* g722.h in Headers */, + 223CA89D16D9268D00EF1BEC /* kiss_fft.h in Headers */, + 223CA89F16D9268D00EF1BEC /* kiss_fftr.h in Headers */, + 223CA8A216D9268D00EF1BEC /* opengles_display.h in Headers */, + 223CA8A416D9268D00EF1BEC /* shaders.h in Headers */, + 223CA8A516D9268D00EF1BEC /* swscale.h in Headers */, + 223CA8A616D9268D00EF1BEC /* vfw-missing.h in Headers */, + 223CA8C716D9268D00EF1BEC /* layouts.h in Headers */, + 223CA8CB16D9268D00EF1BEC /* msvideo_neon.h in Headers */, + 223CA8CD16D9268D00EF1BEC /* nowebcam.h in Headers */, + 223CA8CE16D9268D00EF1BEC /* private.h in Headers */, + 223CA8D116D9268D00EF1BEC /* rfc2429.h in Headers */, + 223CA8D516D9268D00EF1BEC /* scaler.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1332,13 +1364,6 @@ 225D65161521C009008B2E81 /* mswebcam.h in Headers */, 225D65171521C009008B2E81 /* rfc3984.h in Headers */, 225D65181521C009008B2E81 /* waveheader.h in Headers */, - 225D65191521C009008B2E81 /* _kiss_fft_guts.h in Headers */, - 225D651A1521C009008B2E81 /* ffmpeg-priv.h in Headers */, - 225D651B1521C009008B2E81 /* g711common.h in Headers */, - 225D651C1521C009008B2E81 /* kiss_fft.h in Headers */, - 225D651D1521C009008B2E81 /* kiss_fftr.h in Headers */, - 225D651E1521C009008B2E81 /* rfc2429.h in Headers */, - 225D651F1521C009008B2E81 /* vfw-missing.h in Headers */, 225D65201521C009008B2E81 /* b64.h in Headers */, 225D65211521C009008B2E81 /* event.h in Headers */, 225D65221521C009008B2E81 /* ortp.h in Headers */, @@ -1366,7 +1391,6 @@ 225D65381521C009008B2E81 /* offeranswer.h in Headers */, 225D65391521C009008B2E81 /* private.h in Headers */, 225D653A1521C009008B2E81 /* sal.h in Headers */, - 225D653B1521C009008B2E81 /* sal_eXosip2.h in Headers */, 225D653C1521C009008B2E81 /* sipsetup.h in Headers */, 225D653D1521C009008B2E81 /* config.h in Headers */, 225D653E1521C009008B2E81 /* gsm.h in Headers */, @@ -1375,11 +1399,6 @@ 225D65411521C009008B2E81 /* toast.h in Headers */, 225D65421521C009008B2E81 /* unproto.h in Headers */, 225D65431521C009008B2E81 /* linphonecore_utils.h in Headers */, - 225D65451521C009008B2E81 /* nowebcam.h in Headers */, - 225D65461521C009008B2E81 /* swscale.h in Headers */, - 225D65481521C009008B2E81 /* scaler.h in Headers */, - 225D65491521C009008B2E81 /* g722.h in Headers */, - 225D654A1521C009008B2E81 /* shaders.h in Headers */, 225D654E1521C009008B2E81 /* zrtp.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1417,13 +1436,6 @@ 222CA64B11F6CF7600621220 /* mswebcam.h in Headers */, 222CA64C11F6CF7600621220 /* rfc3984.h in Headers */, 222CA64D11F6CF7600621220 /* waveheader.h in Headers */, - 222CA64E11F6CF7600621220 /* _kiss_fft_guts.h in Headers */, - 222CA65E11F6CF7600621220 /* ffmpeg-priv.h in Headers */, - 222CA65F11F6CF7600621220 /* g711common.h in Headers */, - 222CA66511F6CF7600621220 /* kiss_fft.h in Headers */, - 222CA66711F6CF7600621220 /* kiss_fftr.h in Headers */, - 222CA68811F6CF7600621220 /* rfc2429.h in Headers */, - 222CA69111F6CF7600621220 /* vfw-missing.h in Headers */, 222CA6F411F6CF9F00621220 /* b64.h in Headers */, 222CA6F511F6CF9F00621220 /* event.h in Headers */, 222CA6F611F6CF9F00621220 /* ortp.h in Headers */, @@ -1451,7 +1463,6 @@ 222CA77711F6CFB100621220 /* offeranswer.h in Headers */, 222CA77A11F6CFB100621220 /* private.h in Headers */, 222CA77D11F6CFB100621220 /* sal.h in Headers */, - 222CA77F11F6CFB100621220 /* sal_eXosip2.h in Headers */, 222CA78611F6CFB100621220 /* sipsetup.h in Headers */, 22A10B5611F84E2D00373793 /* config.h in Headers */, 22A10B5711F84E2D00373793 /* gsm.h in Headers */, @@ -1460,11 +1471,6 @@ 22A10B5A11F84E2D00373793 /* toast.h in Headers */, 22A10B5B11F84E2D00373793 /* unproto.h in Headers */, 229B9D5913043EAB00EFCD1C /* linphonecore_utils.h in Headers */, - 220ED1AC13A9062600AC21E0 /* nowebcam.h in Headers */, - 2258C44113A9377B0087A596 /* swscale.h in Headers */, - 221F58E413AF44B300D603C9 /* scaler.h in Headers */, - 229A614F13DDFE3500090183 /* g722.h in Headers */, - 70E542FA13E14816002BA2C0 /* shaders.h in Headers */, 7014533C13FA7ECA00A01D86 /* zrtp.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1581,10 +1587,10 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 22DD21AE13A8E3310018ECD4 /* InfoPlist.strings in Resources */, - 22DD21AF13A8E3310018ECD4 /* MainWindow.xib in Resources */, - 22DD21B013A8E3310018ECD4 /* mediastreamViewController.xib in Resources */, - 22B5106913B060E100CD87DA /* nowebcamCIF.jpg in Resources */, + 22D07CD016F3BC5F009F2C9E /* InfoPlist.strings in Resources */, + 22D07CD116F3BC5F009F2C9E /* MainWindow.xib in Resources */, + 22D07CD216F3BC5F009F2C9E /* mediastreamViewController.xib in Resources */, + 22D07CD316F3BC5F009F2C9E /* mediastream-Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1595,79 +1601,81 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 225D64831521BFA6008B2E81 /* alaw.c in Sources */, - 225D64841521BFA6008B2E81 /* audiomixer.c in Sources */, - 225D64851521BFA6008B2E81 /* audiostream.c in Sources */, - 225D64861521BFA6008B2E81 /* chanadapt.c in Sources */, - 225D64871521BFA6008B2E81 /* dsptools.c in Sources */, - 225D64881521BFA6008B2E81 /* dtmfgen.c in Sources */, - 225D64891521BFA6008B2E81 /* equalizer.c in Sources */, - 225D648A1521BFA6008B2E81 /* eventqueue.c in Sources */, - 225D648B1521BFA6008B2E81 /* extdisplay.c in Sources */, - 225D648C1521BFA6008B2E81 /* gsm.c in Sources */, - 225D648D1521BFA6008B2E81 /* ice.c in Sources */, - 225D648E1521BFA6008B2E81 /* itc.c in Sources */, - 225D648F1521BFA6008B2E81 /* kiss_fft.c in Sources */, - 225D64901521BFA6008B2E81 /* kiss_fftr.c in Sources */, - 225D64911521BFA6008B2E81 /* mire.c in Sources */, - 225D64921521BFA6008B2E81 /* mscommon.c in Sources */, - 225D64931521BFA6008B2E81 /* msconf.c in Sources */, - 225D64941521BFA6008B2E81 /* msfileplayer.c in Sources */, - 225D64951521BFA6008B2E81 /* msfilerec.c in Sources */, - 225D64961521BFA6008B2E81 /* msfilter.c in Sources */, - 225D64981521BFA6008B2E81 /* msjoin.c in Sources */, - 225D64991521BFA6008B2E81 /* msqueue.c in Sources */, - 225D649A1521BFA6008B2E81 /* msresample.c in Sources */, - 225D649B1521BFA6008B2E81 /* msrtp.c in Sources */, - 225D649C1521BFA6008B2E81 /* mssndcard.c in Sources */, - 225D649D1521BFA6008B2E81 /* msspeex.c in Sources */, - 225D649E1521BFA6008B2E81 /* msticker.c in Sources */, - 225D649F1521BFA6008B2E81 /* msvolume.c in Sources */, - 225D64A01521BFA6008B2E81 /* mtu.c in Sources */, - 225D64A11521BFA6008B2E81 /* rfc3984.c in Sources */, - 225D64A21521BFA6008B2E81 /* speexec.c in Sources */, - 225D64A31521BFA6008B2E81 /* tee.c in Sources */, - 225D64A41521BFA6008B2E81 /* ulaw.c in Sources */, - 225D64A51521BFA6008B2E81 /* void.c in Sources */, 225D64BC1521BFA6008B2E81 /* address.c in Sources */, 225D64BD1521BFA6008B2E81 /* authentication.c in Sources */, 225D64BE1521BFA6008B2E81 /* callbacks.c in Sources */, 225D64BF1521BFA6008B2E81 /* chat.c in Sources */, - 225D64CE1521BFA6008B2E81 /* mswebcam.c in Sources */, - 225D64D11521BFA6008B2E81 /* ioscapture.m in Sources */, - 225D64D21521BFA6008B2E81 /* iosdisplay.m in Sources */, 225D64D31521BFA6008B2E81 /* filter-template.c in Sources */, - 225D64D41521BFA6008B2E81 /* nowebcam.c in Sources */, - 225D64D51521BFA6008B2E81 /* videostream.c in Sources */, - 225D64D61521BFA6008B2E81 /* videoenc.c in Sources */, - 225D64D71521BFA6008B2E81 /* videodec.c in Sources */, - 225D64D81521BFA6008B2E81 /* msvideo.c in Sources */, - 225D64D91521BFA6008B2E81 /* pixconv.c in Sources */, - 225D64DA1521BFA6008B2E81 /* tonedetector.c in Sources */, - 225D64DB1521BFA6008B2E81 /* jpegwriter.c in Sources */, - 225D64DC1521BFA6008B2E81 /* h264dec.c in Sources */, - 225D64DD1521BFA6008B2E81 /* sizeconv.c in Sources */, - 225D64DE1521BFA6008B2E81 /* scaler.c in Sources */, - 225D64DF1521BFA6008B2E81 /* qualityindicator.c in Sources */, - 225D64E01521BFA6008B2E81 /* bitratecontrol.c in Sources */, - 225D64E11521BFA6008B2E81 /* g722_decode.c in Sources */, - 225D64E21521BFA6008B2E81 /* g722_encode.c in Sources */, - 225D64E31521BFA6008B2E81 /* msg722.c in Sources */, - 225D64E41521BFA6008B2E81 /* vp8.c in Sources */, - 225D64E61521BFA6008B2E81 /* shaders.c in Sources */, - 225D64E81521BFA6008B2E81 /* msvideo_neon.c in Sources */, - 225D64E91521BFA6008B2E81 /* conference.c in Sources */, - 225D64EA1521BFA6008B2E81 /* audioconference.c in Sources */, - 225D64ED1521BFA6008B2E81 /* bitratedriver.c in Sources */, - 225D64EE1521BFA6008B2E81 /* qosanalyzer.c in Sources */, - 225D64EF1521BFA6008B2E81 /* aqsnd.c in Sources */, - 225D64F01521BFA6008B2E81 /* l16.c in Sources */, - 221DCB4D1529E2EB0025E54D /* msiounit.m in Sources */, - 221DCB6915347EF80025E54D /* opengles_display.c in Sources */, 221DCB6D153584410025E54D /* yuv2rgb.fs in Sources */, 221DCB6F153584410025E54D /* yuv2rgb.vs in Sources */, - 22405EE01600668800B92522 /* msvoip.c in Sources */, - 22405EE81600675C00B92522 /* genericplc.c in Sources */, + 223CA86716D9268D00EF1BEC /* alaw.c in Sources */, + 223CA86916D9268D00EF1BEC /* aqsnd.c in Sources */, + 223CA86B16D9268D00EF1BEC /* audiomixer.c in Sources */, + 223CA86C16D9268D00EF1BEC /* chanadapt.c in Sources */, + 223CA86D16D9268D00EF1BEC /* dtmfgen.c in Sources */, + 223CA86E16D9268D00EF1BEC /* equalizer.c in Sources */, + 223CA87016D9268D00EF1BEC /* genericplc.c in Sources */, + 223CA87116D9268D00EF1BEC /* gsm.c in Sources */, + 223CA87216D9268D00EF1BEC /* l16.c in Sources */, + 223CA87416D9268D00EF1BEC /* msconf.c in Sources */, + 223CA87516D9268D00EF1BEC /* msfileplayer.c in Sources */, + 223CA87616D9268D00EF1BEC /* msfilerec.c in Sources */, + 223CA87716D9268D00EF1BEC /* msg722.c in Sources */, + 223CA87816D9268D00EF1BEC /* msiounit.m in Sources */, + 223CA87916D9268D00EF1BEC /* msresample.c in Sources */, + 223CA87A16D9268D00EF1BEC /* msspeex.c in Sources */, + 223CA87B16D9268D00EF1BEC /* msvolume.c in Sources */, + 223CA88016D9268D00EF1BEC /* tonedetector.c in Sources */, + 223CA88116D9268D00EF1BEC /* ulaw.c in Sources */, + 223CA88816D9268D00EF1BEC /* eventqueue.c in Sources */, + 223CA88916D9268D00EF1BEC /* mscommon.c in Sources */, + 223CA88A16D9268D00EF1BEC /* msfilter.c in Sources */, + 223CA88B16D9268D00EF1BEC /* msqueue.c in Sources */, + 223CA88C16D9268D00EF1BEC /* mssndcard.c in Sources */, + 223CA88D16D9268D00EF1BEC /* msticker.c in Sources */, + 223CA88E16D9268D00EF1BEC /* mswebcam.c in Sources */, + 223CA88F16D9268D00EF1BEC /* mtu.c in Sources */, + 223CA89016D9268D00EF1BEC /* itc.c in Sources */, + 223CA89116D9268D00EF1BEC /* join.c in Sources */, + 223CA89216D9268D00EF1BEC /* msrtp.c in Sources */, + 223CA89316D9268D00EF1BEC /* tee.c in Sources */, + 223CA89416D9268D00EF1BEC /* void.c in Sources */, + 223CA89616D9268D00EF1BEC /* dsptools.c in Sources */, + 223CA89A16D9268D00EF1BEC /* g722_decode.c in Sources */, + 223CA89B16D9268D00EF1BEC /* g722_encode.c in Sources */, + 223CA89C16D9268D00EF1BEC /* kiss_fft.c in Sources */, + 223CA89E16D9268D00EF1BEC /* kiss_fftr.c in Sources */, + 223CA8A116D9268D00EF1BEC /* opengles_display.c in Sources */, + 223CA8A316D9268D00EF1BEC /* shaders.c in Sources */, + 223CA8A816D9268D00EF1BEC /* extdisplay.c in Sources */, + 223CA8AA16D9268D00EF1BEC /* h264dec.c in Sources */, + 223CA8AB16D9268D00EF1BEC /* ioscapture.m in Sources */, + 223CA8AC16D9268D00EF1BEC /* iosdisplay.m in Sources */, + 223CA8AD16D9268D00EF1BEC /* jpegwriter.c in Sources */, + 223CA8AE16D9268D00EF1BEC /* mire.c in Sources */, + 223CA8B316D9268D00EF1BEC /* nowebcam.c in Sources */, + 223CA8B416D9268D00EF1BEC /* pixconv.c in Sources */, + 223CA8B616D9268D00EF1BEC /* sizeconv.c in Sources */, + 223CA8B816D9268D00EF1BEC /* videodec.c in Sources */, + 223CA8B916D9268D00EF1BEC /* videoenc.c in Sources */, + 223CA8BB16D9268D00EF1BEC /* vp8.c in Sources */, + 223CA8C116D9268D00EF1BEC /* audioconference.c in Sources */, + 223CA8C216D9268D00EF1BEC /* audiostream.c in Sources */, + 223CA8C316D9268D00EF1BEC /* bitratecontrol.c in Sources */, + 223CA8C416D9268D00EF1BEC /* bitratedriver.c in Sources */, + 223CA8C516D9268D00EF1BEC /* ice.c in Sources */, + 223CA8C616D9268D00EF1BEC /* layouts.c in Sources */, + 223CA8C816D9268D00EF1BEC /* mediastream.c in Sources */, + 223CA8C916D9268D00EF1BEC /* msvideo.c in Sources */, + 223CA8CA16D9268D00EF1BEC /* msvideo_neon.c in Sources */, + 223CA8CC16D9268D00EF1BEC /* msvoip.c in Sources */, + 223CA8CF16D9268D00EF1BEC /* qosanalyzer.c in Sources */, + 223CA8D016D9268D00EF1BEC /* qualityindicator.c in Sources */, + 223CA8D216D9268D00EF1BEC /* rfc3984.c in Sources */, + 223CA8D316D9268D00EF1BEC /* ringstream.c in Sources */, + 223CA8D416D9268D00EF1BEC /* scaler.c in Sources */, + 223CA8D716D9268D00EF1BEC /* videostream.c in Sources */, + 22D07CE516F3BFCB009F2C9E /* speexec.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1709,9 +1717,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 22DD19F713A8DFA70018ECD4 /* mediastream.c in Sources */, - 22DD21B313A8E3310018ECD4 /* mediastreamAppDelegate.m in Sources */, - 22DD21B413A8E3310018ECD4 /* mediastreamViewController.m in Sources */, + 22D07CD416F3BC5F009F2C9E /* mediastreamAppDelegate.m in Sources */, + 22D07CD516F3BC5F009F2C9E /* mediastreamViewController.m in Sources */, + 22D07CD616F3BC5F009F2C9E /* mediastream.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1732,15 +1740,11 @@ 222CA77911F6CFB100621220 /* presence.c in Sources */, 222CA77B11F6CFB100621220 /* proxy.c in Sources */, 222CA77C11F6CFB100621220 /* sal.c in Sources */, - 222CA77E11F6CFB100621220 /* sal_eXosip2.c in Sources */, - 222CA78011F6CFB100621220 /* sal_eXosip2_presence.c in Sources */, - 222CA78111F6CFB100621220 /* sal_eXosip2_sdp.c in Sources */, 222CA78411F6CFB100621220 /* siplogin.c in Sources */, 222CA78511F6CFB100621220 /* sipsetup.c in Sources */, 229ECDED143AEBDA00D611B8 /* conference.c in Sources */, 221DCB561529FE660025E54D /* linphonecall.c in Sources */, 221DCB57152A07050025E54D /* ec-calibrator.c in Sources */, - 221DCB6815347EF80025E54D /* opengles_display.c in Sources */, 221DCB6C153584410025E54D /* yuv2rgb.fs in Sources */, 221DCB6E153584410025E54D /* yuv2rgb.vs in Sources */, ); @@ -1767,26 +1771,26 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - 22DD21A113A8E3310018ECD4 /* InfoPlist.strings */ = { + 22D07CB416F3BC5F009F2C9E /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( - 22DD21A213A8E3310018ECD4 /* en */, + 22D07CB516F3BC5F009F2C9E /* en */, ); name = InfoPlist.strings; sourceTree = ""; }; - 22DD21A313A8E3310018ECD4 /* MainWindow.xib */ = { + 22D07CB616F3BC5F009F2C9E /* MainWindow.xib */ = { isa = PBXVariantGroup; children = ( - 22DD21A413A8E3310018ECD4 /* en */, + 22D07CB716F3BC5F009F2C9E /* en */, ); name = MainWindow.xib; sourceTree = ""; }; - 22DD21A513A8E3310018ECD4 /* mediastreamViewController.xib */ = { + 22D07CB816F3BC5F009F2C9E /* mediastreamViewController.xib */ = { isa = PBXVariantGroup; children = ( - 22DD21A613A8E3310018ECD4 /* en */, + 22D07CB916F3BC5F009F2C9E /* en */, ); name = mediastreamViewController.xib; sourceTree = ""; @@ -1805,27 +1809,6 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = liblinphone_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "_BYTE_ORDER=_LITTLE_ENDIAN", - ORTP_INET6, - ENABLE_TRACE, - "LINPHONE_VERSION=\\\"debug\\\"", - "LINPHONE_PLUGINS_DIR=\\\"\\\\tmp\\\"", - "LOG_DOMAIN=\\\"Linphone\\\"", - "ORTP_MAJOR_VERSION=0", - "ORTP_MICRO_VERSION=0", - "ORTP_MINOR_VERSION=15", - "ORTP_VERSION=\\\"0.15.0\\\"", - "PACKAGE=\\\"ortp\\\"", - "POSIXTIMER_INTERVAL=10000", - IN_LINPHONE, - __MAC_AQ_ENABLED__, - MS2_INTERNAL, - VIDEO_ENABLED, - HAVE_LIBAVCODEC_AVCODEC_H, - HAVE_LIBSWSCALE_SWSCALE_H, - TARGET_OS_IPHONE, - ); GCC_THUMB_SUPPORT = NO; GCC_UNROLL_LOOPS = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; @@ -1859,27 +1842,6 @@ GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = liblinphone_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "_BYTE_ORDER=_LITTLE_ENDIAN", - ORTP_INET6, - ENABLE_TRACE, - "LINPHONE_VERSION=\\\"debug\\\"", - "LINPHONE_PLUGINS_DIR=\\\"\\\\tmp\\\"", - "LOG_DOMAIN=\\\"Linphone\\\"", - "ORTP_MAJOR_VERSION=0", - "ORTP_MICRO_VERSION=0", - "ORTP_MINOR_VERSION=15", - "ORTP_VERSION=\\\"0.15.0\\\"", - "PACKAGE=\\\"ortp\\\"", - "POSIXTIMER_INTERVAL=10000", - IN_LINPHONE, - __MAC_AQ_ENABLED__, - MS2_INTERNAL, - VIDEO_ENABLED, - HAVE_LIBAVCODEC_AVCODEC_H, - HAVE_LIBSWSCALE_SWSCALE_H, - TARGET_OS_IPHONE, - ); GCC_THUMB_SUPPORT = NO; GCC_UNROLL_LOOPS = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; @@ -1916,18 +1878,23 @@ ORTP_INET6, ENABLE_TRACE, "LINPHONE_VERSION=\\\"debug\\\"", - "LINPHONE_PLUGINS_DIR=\\\"\\\\tmp\\\"", + "LINPHONE_PLUGINS_DIR=\\\"tmp\\\"", "LOG_DOMAIN=\\\"Linphone\\\"", "ORTP_MAJOR_VERSION=0", "ORTP_MICRO_VERSION=0", "ORTP_MINOR_VERSION=15", "ORTP_VERSION=\\\"0.15.0\\\"", "PACKAGE=\\\"ortp\\\"", - "POSIXTIMER_INTERVAL=10000", IN_LINPHONE, - __MACIOUNIT_ENABLED__, - HAVE_EXOSIP_GET_SOCKET, + __MAC_AQ_ENABLED__, MS2_INTERNAL, + VIDEO_ENABLED, + HAVE_LIBAVCODEC_AVCODEC_H, + HAVE_LIBSWSCALE_SWSCALE_H, + "TARGET_OS_IPHONE=1", + USE_CAINSIP, + "PACKAGE_NAME=\\\"Linphone\\\"", + "POSIXTIMER_INTERVAL=10000", ); GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; @@ -1956,18 +1923,23 @@ ORTP_INET6, ENABLE_TRACE, "LINPHONE_VERSION=\\\"debug\\\"", - "LINPHONE_PLUGINS_DIR=\\\"\\\\tmp\\\"", + "LINPHONE_PLUGINS_DIR=\\\"tmp\\\"", "LOG_DOMAIN=\\\"Linphone\\\"", "ORTP_MAJOR_VERSION=0", "ORTP_MICRO_VERSION=0", "ORTP_MINOR_VERSION=15", "ORTP_VERSION=\\\"0.15.0\\\"", "PACKAGE=\\\"ortp\\\"", - "POSIXTIMER_INTERVAL=10000", IN_LINPHONE, - __MACIOUNIT_ENABLED__, - HAVE_EXOSIP_GET_SOCKET, + __MAC_AQ_ENABLED__, MS2_INTERNAL, + VIDEO_ENABLED, + HAVE_LIBAVCODEC_AVCODEC_H, + HAVE_LIBSWSCALE_SWSCALE_H, + "TARGET_OS_IPHONE=1", + USE_CAINSIP, + "PACKAGE_NAME=\\\"Linphone\\\"", + "POSIXTIMER_INTERVAL=10000", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -2336,18 +2308,23 @@ ORTP_INET6, ENABLE_TRACE, "LINPHONE_VERSION=\\\"debug\\\"", - "LINPHONE_PLUGINS_DIR=\\\"\\\\tmp\\\"", + "LINPHONE_PLUGINS_DIR=\\\"tmp\\\"", "LOG_DOMAIN=\\\"Linphone\\\"", "ORTP_MAJOR_VERSION=0", "ORTP_MICRO_VERSION=0", "ORTP_MINOR_VERSION=15", "ORTP_VERSION=\\\"0.15.0\\\"", "PACKAGE=\\\"ortp\\\"", - "POSIXTIMER_INTERVAL=10000", IN_LINPHONE, - __MACIOUNIT_ENABLED__, - HAVE_EXOSIP_GET_SOCKET, + __MAC_AQ_ENABLED__, MS2_INTERNAL, + VIDEO_ENABLED, + HAVE_LIBAVCODEC_AVCODEC_H, + HAVE_LIBSWSCALE_SWSCALE_H, + "TARGET_OS_IPHONE=1", + USE_CAINSIP, + "PACKAGE_NAME=\\\"Linphone\\\"", + "POSIXTIMER_INTERVAL=10000", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -2375,27 +2352,6 @@ GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = liblinphone_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "_BYTE_ORDER=_LITTLE_ENDIAN", - ORTP_INET6, - ENABLE_TRACE, - "LINPHONE_VERSION=\\\"debug\\\"", - "LINPHONE_PLUGINS_DIR=\\\"\\\\tmp\\\"", - "LOG_DOMAIN=\\\"Linphone\\\"", - "ORTP_MAJOR_VERSION=0", - "ORTP_MICRO_VERSION=0", - "ORTP_MINOR_VERSION=15", - "ORTP_VERSION=\\\"0.15.0\\\"", - "PACKAGE=\\\"ortp\\\"", - "POSIXTIMER_INTERVAL=10000", - IN_LINPHONE, - __MAC_AQ_ENABLED__, - MS2_INTERNAL, - VIDEO_ENABLED, - HAVE_LIBAVCODEC_AVCODEC_H, - HAVE_LIBSWSCALE_SWSCALE_H, - TARGET_OS_IPHONE, - ); GCC_THUMB_SUPPORT = NO; GCC_UNROLL_LOOPS = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; @@ -2429,7 +2385,7 @@ COPY_PHASE_STRIP = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "linphone/mediastreamer2/tests/ios/mediastream-Prefix.pch"; + GCC_PREFIX_HEADER = "linphone/mediastreamer2/tools/ios/mediastream-Prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( HAVE_SILK, "_BYTE_ORDER=_LITTLE_ENDIAN", @@ -2454,8 +2410,8 @@ "TARGET_OS_IPHONE=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvmgcc42; - INFOPLIST_FILE = "linphone/mediastreamer2/tests/ios/mediastream-Info.plist"; + GCC_VERSION = ""; + INFOPLIST_FILE = "$(SRCROOT)/linphone/mediastreamer2/tools/ios/mediastream-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -2479,7 +2435,7 @@ GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "linphone/mediastreamer2/tests/ios/mediastream-Prefix.pch"; + GCC_PREFIX_HEADER = "linphone/mediastreamer2/tools/ios/mediastream-Prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( HAVE_SILK, "_BYTE_ORDER=_LITTLE_ENDIAN", @@ -2504,8 +2460,8 @@ "TARGET_OS_IPHONE=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvmgcc42; - INFOPLIST_FILE = "linphone/mediastreamer2/tests/ios/mediastream-Info.plist"; + GCC_VERSION = ""; + INFOPLIST_FILE = "$(SRCROOT)/linphone/mediastreamer2/tools/ios/mediastream-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -2526,7 +2482,7 @@ COPY_PHASE_STRIP = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "linphone/mediastreamer2/tests/ios/mediastream-Prefix.pch"; + GCC_PREFIX_HEADER = "linphone/mediastreamer2/tools/ios/mediastream-Prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( HAVE_SILK, "_BYTE_ORDER=_LITTLE_ENDIAN", @@ -2551,8 +2507,8 @@ "TARGET_OS_IPHONE=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvmgcc42; - INFOPLIST_FILE = "linphone/mediastreamer2/tests/ios/mediastream-Info.plist"; + GCC_VERSION = ""; + INFOPLIST_FILE = "$(SRCROOT)/linphone/mediastreamer2/tools/ios/mediastream-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ( "$(inherited)", From 799f149d3b1e8c6306985aa09c92c2b1eca363e5 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 19 Mar 2013 12:13:52 +0100 Subject: [PATCH 02/53] Update linphone submodule. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 2048bac55..71f31347f 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 2048bac55a33458b4c0a85c9b79f5679045ae252 +Subproject commit 71f31347fcddaa5f0e9e329a7320efe60bc7c281 From 9f3a9b3737fda360afb89a6714e2821d6d144214 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 14 Mar 2013 11:54:18 +0100 Subject: [PATCH 03/53] Add buttons to select the audio route (bluetooth, receiver, speaker). --- Classes/LinphoneManager.h | 3 + Classes/LinphoneManager.m | 47 +- Classes/LinphoneUI/UICallBar.h | 10 +- Classes/LinphoneUI/UICallBar.m | 119 +- Classes/LinphoneUI/en.lproj/UICallBar.xib | 1070 +++++++++++------ Classes/LinphoneUI/fr.lproj/UICallBar.xib | 1006 +++++++++++----- Classes/LinphoneUI/ru.lproj/UICallBar.xib | 1006 +++++++++++----- Resources/route_bluetooth_off_default.png | Bin 0 -> 4684 bytes .../route_bluetooth_off_default_landscape.png | Bin 0 -> 3904 bytes Resources/route_bluetooth_off_disabled.png | Bin 0 -> 4541 bytes ...route_bluetooth_off_disabled_landscape.png | Bin 0 -> 3824 bytes Resources/route_bluetooth_off_over.png | Bin 0 -> 4694 bytes .../route_bluetooth_off_over_landscape.png | Bin 0 -> 3971 bytes Resources/route_bluetooth_on_default.png | Bin 0 -> 4145 bytes .../route_bluetooth_on_default_landscape.png | Bin 0 -> 3393 bytes Resources/route_phone_off_default.png | Bin 0 -> 4687 bytes .../route_phone_off_default_landscape.png | Bin 0 -> 4005 bytes Resources/route_phone_off_disabled.png | Bin 0 -> 4523 bytes .../route_phone_off_disabled_landscape.png | Bin 0 -> 3808 bytes Resources/route_phone_off_over.png | Bin 0 -> 4702 bytes Resources/route_phone_off_over_landscape.png | Bin 0 -> 4010 bytes Resources/route_phone_on_default.png | Bin 0 -> 4078 bytes .../route_phone_on_default_landscape.png | Bin 0 -> 3435 bytes Resources/route_speaker_off_default.png | Bin 0 -> 4466 bytes .../route_speaker_off_default_landscape.png | Bin 0 -> 3783 bytes Resources/route_speaker_off_disabled.png | Bin 0 -> 4329 bytes .../route_speaker_off_disabled_landscape.png | Bin 0 -> 3604 bytes Resources/route_speaker_off_over.png | Bin 0 -> 4562 bytes .../route_speaker_off_over_landscape.png | Bin 0 -> 3826 bytes Resources/route_speaker_on_default.png | Bin 0 -> 3624 bytes .../route_speaker_on_default_landscape.png | Bin 0 -> 2908 bytes Resources/routes_default.png | Bin 0 -> 3239 bytes Resources/routes_default_landscape.png | Bin 0 -> 3685 bytes Resources/routes_disabled.png | Bin 0 -> 3071 bytes Resources/routes_disabled_landscape.png | Bin 0 -> 3517 bytes Resources/routes_over.png | Bin 0 -> 3327 bytes Resources/routes_over_landscape.png | Bin 0 -> 3778 bytes Resources/routes_selected.png | Bin 0 -> 4972 bytes Resources/routes_selected_landscape.png | Bin 0 -> 4617 bytes linphone.ldb/Contents.plist | 320 ++++- .../UICallBar/{12 => 13}/UICallBar.xib | 1070 +++++++++++------ linphone.xcodeproj/project.pbxproj | 192 +++ 42 files changed, 3426 insertions(+), 1417 deletions(-) create mode 100644 Resources/route_bluetooth_off_default.png create mode 100644 Resources/route_bluetooth_off_default_landscape.png create mode 100644 Resources/route_bluetooth_off_disabled.png create mode 100644 Resources/route_bluetooth_off_disabled_landscape.png create mode 100644 Resources/route_bluetooth_off_over.png create mode 100644 Resources/route_bluetooth_off_over_landscape.png create mode 100644 Resources/route_bluetooth_on_default.png create mode 100644 Resources/route_bluetooth_on_default_landscape.png create mode 100644 Resources/route_phone_off_default.png create mode 100644 Resources/route_phone_off_default_landscape.png create mode 100644 Resources/route_phone_off_disabled.png create mode 100644 Resources/route_phone_off_disabled_landscape.png create mode 100644 Resources/route_phone_off_over.png create mode 100644 Resources/route_phone_off_over_landscape.png create mode 100644 Resources/route_phone_on_default.png create mode 100644 Resources/route_phone_on_default_landscape.png create mode 100644 Resources/route_speaker_off_default.png create mode 100644 Resources/route_speaker_off_default_landscape.png create mode 100644 Resources/route_speaker_off_disabled.png create mode 100644 Resources/route_speaker_off_disabled_landscape.png create mode 100644 Resources/route_speaker_off_over.png create mode 100644 Resources/route_speaker_off_over_landscape.png create mode 100644 Resources/route_speaker_on_default.png create mode 100644 Resources/route_speaker_on_default_landscape.png create mode 100644 Resources/routes_default.png create mode 100644 Resources/routes_default_landscape.png create mode 100644 Resources/routes_disabled.png create mode 100644 Resources/routes_disabled_landscape.png create mode 100644 Resources/routes_over.png create mode 100644 Resources/routes_over_landscape.png create mode 100644 Resources/routes_selected.png create mode 100644 Resources/routes_selected_landscape.png rename linphone.ldb/Resources/LinphoneUI/UICallBar/{12 => 13}/UICallBar.xib (79%) diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 5b4e8f741..b90e36f74 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -45,6 +45,7 @@ extern NSString *const kLinphoneMainViewChange; extern NSString *const kLinphoneAddressBookUpdate; extern NSString *const kLinphoneLogsUpdate; extern NSString *const kLinphoneSettingsUpdate; +extern NSString *const kLinphoneBluetoothAvailabilityUpdate; extern NSString *const kContactSipField; @@ -164,6 +165,8 @@ typedef struct _LinphoneManagerSounds { @property (readonly) LinphoneManagerSounds sounds; @property (readonly) NSMutableArray *logs; @property (nonatomic, assign) BOOL speakerEnabled; +@property (nonatomic, assign) BOOL bluetoothAvailable; +@property (nonatomic, assign) BOOL bluetoothEnabled; @property (readonly) ALAssetsLibrary *photoLibrary; @end diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index adb9244eb..d2674539d 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -56,6 +56,7 @@ NSString *const kLinphoneAddressBookUpdate = @"LinphoneAddressBookUpdate"; NSString *const kLinphoneMainViewChange = @"LinphoneMainViewChange"; NSString *const kLinphoneLogsUpdate = @"LinphoneLogsUpdate"; NSString *const kLinphoneSettingsUpdate = @"LinphoneSettingsUpdate"; +NSString *const kLinphoneBluetoothAvailabilityUpdate = @"LinphoneBluetoothAvailabilityUpdate"; NSString *const kContactSipField = @"SIP"; @@ -105,6 +106,8 @@ extern void libmsbcg729_init(); @synthesize sounds; @synthesize logs; @synthesize speakerEnabled; +@synthesize bluetoothAvailable; +@synthesize bluetoothEnabled; @synthesize photoLibrary; struct codec_name_pref_table{ @@ -235,6 +238,7 @@ struct codec_name_pref_table codec_pref_table[]={ logs = [[NSMutableArray alloc] init]; database = NULL; speakerEnabled = FALSE; + bluetoothEnabled = FALSE; [self openDatabase]; [self copyDefaultSettings]; pendindCallIdFromRemoteNotif = [[NSMutableArray alloc] init ]; @@ -466,6 +470,8 @@ static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char if(linphone_core_get_calls_nb(theLinphoneCore) == 0) { [self setSpeakerEnabled:FALSE]; [self removeCTCallCenterCb]; + bluetoothAvailable = FALSE; + bluetoothEnabled = FALSE; } if (incallBgTask) { [[UIApplication sharedApplication] endBackgroundTask:incallBgTask]; @@ -1087,7 +1093,6 @@ static int comp_call_state_paused (const LinphoneCall* call, const void* param) /*IOS specific*/ linphone_core_start_dtmf_stream(theLinphoneCore); - } @@ -1119,7 +1124,7 @@ static int comp_call_state_paused (const LinphoneCall* call, const void* param) } -#pragma mark - Speaker Functions +#pragma mark - Audio route Functions - (bool)allowSpeaker { bool notallow = false; @@ -1147,35 +1152,63 @@ static void audioRouteChangeListenerCallback ( if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return; // 5 LinphoneManager* lm = (LinphoneManager*)inUserData; - bool enabled = false; + bool speakerEnabled = false; CFStringRef lNewRoute = CFSTR("Unknown"); UInt32 lNewRouteSize = sizeof(lNewRoute); OSStatus lStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &lNewRouteSize, &lNewRoute); if (!lStatus && lNewRouteSize > 0) { NSString *route = (NSString *) lNewRoute; [LinphoneLogger logc:LinphoneLoggerLog format:"Current audio route is [%s]", [route cStringUsingEncoding:[NSString defaultCStringEncoding]]]; - enabled = [route isEqualToString: @"Speaker"] || [route isEqualToString: @"SpeakerAndMicrophone"]; + speakerEnabled = [route isEqualToString: @"Speaker"] || [route isEqualToString: @"SpeakerAndMicrophone"]; + if (![LinphoneManager runningOnIpad] && [route isEqualToString:@"HeadsetBT"] && !speakerEnabled) { + lm.bluetoothEnabled = TRUE; + lm.bluetoothAvailable = TRUE; + NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithBool:lm.bluetoothAvailable], @"available", nil]; + [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneBluetoothAvailabilityUpdate object:lm userInfo:dict]; + } else { + lm.bluetoothEnabled = FALSE; + } CFRelease(lNewRoute); } - if(enabled != lm.speakerEnabled) { // Reforce value + if(speakerEnabled != lm.speakerEnabled) { // Reforce value lm.speakerEnabled = lm.speakerEnabled; } } - (void)setSpeakerEnabled:(BOOL)enable { speakerEnabled = enable; + if(enable && [self allowSpeaker]) { - UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; + UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute , sizeof (audioRouteOverride) , &audioRouteOverride); + bluetoothEnabled = FALSE; } else { - UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None; + UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None; AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute , sizeof (audioRouteOverride) , &audioRouteOverride); } + + if (bluetoothAvailable) { + UInt32 bluetoothInputOverride = bluetoothEnabled; + AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryEnableBluetoothInput, sizeof(bluetoothInputOverride), &bluetoothInputOverride); + } +} + +- (void)setBluetoothEnabled:(BOOL)enable { + if (bluetoothAvailable) { + // The change of route will be done in setSpeakerEnabled + bluetoothEnabled = enable; + if (bluetoothEnabled) { + [self setSpeakerEnabled:FALSE]; + } else { + [self setSpeakerEnabled:speakerEnabled]; + } + } } #pragma mark - Call Functions diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index d328c2173..791ea4d52 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -35,11 +35,15 @@ @property (nonatomic, retain) IBOutlet UIVideoButton* videoButton; @property (nonatomic, retain) IBOutlet UIMicroButton* microButton; @property (nonatomic, retain) IBOutlet UISpeakerButton* speakerButton; +@property (nonatomic, retain) IBOutlet UIToggleButton* routesButton; @property (nonatomic, retain) IBOutlet UIToggleButton* optionsButton; @property (nonatomic, retain) IBOutlet UIHangUpButton* hangupButton; @property (nonatomic, retain) IBOutlet UIView* padView; +@property (nonatomic, retain) IBOutlet UIView* routesView; @property (nonatomic, retain) IBOutlet UIView* optionsView; - +@property (nonatomic, retain) IBOutlet UIButton* routesReceiverButton; +@property (nonatomic, retain) IBOutlet UIButton* routesSpeakerButton; +@property (nonatomic, retain) IBOutlet UIButton* routesBluetoothButton; @property (nonatomic, retain) IBOutlet UIButton* optionsAddButton; @property (nonatomic, retain) IBOutlet UIButton* optionsTransferButton; @property (nonatomic, retain) IBOutlet UIToggleButton* dialerButton; @@ -57,6 +61,10 @@ @property (nonatomic, retain) IBOutlet UIDigitButton* zeroButton; @property (nonatomic, retain) IBOutlet UIDigitButton* sharpButton; +- (IBAction)onRoutesClick:(id)sender; +- (IBAction)onRoutesBluetoothClick:(id)sender; +- (IBAction)onRoutesReceiverClick:(id)sender; +- (IBAction)onRoutesSpeakerClick:(id)sender; - (IBAction)onOptionsClick:(id)sender; - (IBAction)onOptionsTransferClick:(id)sender; - (IBAction)onOptionsAddClick:(id)sender; diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index c1848ad14..b56cfc255 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -31,15 +31,19 @@ @synthesize conferenceButton; @synthesize videoButton; @synthesize microButton; -@synthesize speakerButton; +@synthesize speakerButton; +@synthesize routesButton; @synthesize optionsButton; @synthesize hangupButton; - +@synthesize routesBluetoothButton; +@synthesize routesReceiverButton; +@synthesize routesSpeakerButton; @synthesize optionsAddButton; @synthesize optionsTransferButton; @synthesize dialerButton; @synthesize padView; +@synthesize routesView; @synthesize optionsView; @synthesize oneButton; @@ -67,9 +71,12 @@ [conferenceButton release]; [videoButton release]; [microButton release]; - [speakerButton release]; + [speakerButton release]; + [routesButton release]; [optionsButton release]; - + [routesBluetoothButton release]; + [routesReceiverButton release]; + [routesSpeakerButton release]; [optionsAddButton release]; [optionsTransferButton release]; [dialerButton release]; @@ -88,6 +95,7 @@ [sharpButton release]; [padView release]; + [routesView release]; [optionsView release]; [[NSNotificationCenter defaultCenter] removeObserver:self]; @@ -125,7 +133,7 @@ [starButton setDtmf:true]; [sharpButton setDigit:'#']; [sharpButton setDtmf:true]; - + { UIButton *videoButtonLandscape = (UIButton*)[landscapeView viewWithTag:[videoButton tag]]; // Set selected+disabled background: IB lack ! @@ -162,6 +170,18 @@ [LinphoneUtils buttonFixStates:speakerButtonLandscape]; } + if (![LinphoneManager runningOnIpad]) { + UIButton *routesButtonLandscape = (UIButton*) [landscapeView viewWithTag:[routesButton tag]]; + // Set selected+over background: IB lack ! + [routesButton setBackgroundImage:[UIImage imageNamed:@"routes_over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [routesButtonLandscape setBackgroundImage:[UIImage imageNamed:@"routes_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + [LinphoneUtils buttonFixStates:routesButton]; + [LinphoneUtils buttonFixStates:routesButtonLandscape]; + } + { UIButton *microButtonLandscape = (UIButton*) [landscapeView viewWithTag:[microButton tag]]; // Set selected+disabled background: IB lack ! @@ -226,12 +246,18 @@ selector:@selector(callUpdateEvent:) name:kLinphoneCallUpdate object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(bluetoothAvailabilityUpdateEvent:) + name:kLinphoneBluetoothAvailabilityUpdate + object:nil]; // Update on show LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; [self callUpdate:call state:state]; + [self hideRoutes:FALSE]; [self hideOptions:FALSE]; [self hidePad:FALSE]; + [self showSpeaker]; } - (void)viewWillDisappear:(BOOL)animated { @@ -254,6 +280,11 @@ [self callUpdate:call state:state]; } +- (void)bluetoothAvailabilityUpdateEvent:(NSNotification*)notif { + bool available = [[notif.userInfo objectForKey:@"available"] intValue]; + [self bluetoothAvailabilityUpdate:available]; +} + #pragma mark - @@ -314,13 +345,22 @@ LinphoneCallOutgoing: [self hidePad:TRUE]; [self hideOptions:TRUE]; + [self hideRoutes:TRUE]; default: break; } } +- (void)bluetoothAvailabilityUpdate:(bool)available { + if (available) { + [self hideSpeaker]; + } else { + [self showSpeaker]; + } +} -#pragma mark - + +#pragma mark - - (void)showAnimation:(NSString*)animationID target:(UIView*)target completion:(void (^)(BOOL finished))completion { CGRect frame = [target frame]; @@ -386,6 +426,35 @@ } } +- (void)showRoutes:(BOOL)animated { + if (![LinphoneManager runningOnIpad]) { + [routesButton setOn]; + [routesBluetoothButton setSelected:[[LinphoneManager instance] bluetoothEnabled]]; + [routesSpeakerButton setSelected:[[LinphoneManager instance] speakerEnabled]]; + [routesReceiverButton setSelected:!([[LinphoneManager instance] bluetoothEnabled] || [[LinphoneManager instance] speakerEnabled])]; + if([routesView isHidden]) { + if(animated) { + [self showAnimation:@"show" target:routesView completion:^(BOOL finished){}]; + } else { + [routesView setHidden:FALSE]; + } + } + } +} + +- (void)hideRoutes:(BOOL)animated { + if (![LinphoneManager runningOnIpad]) { + [routesButton setOff]; + if(![routesView isHidden]) { + if(animated) { + [self hideAnimation:@"hide" target:routesView completion:^(BOOL finished){}]; + } else { + [routesView setHidden:TRUE]; + } + } + } +} + - (void)showOptions:(BOOL)animated { [optionsButton setOn]; if([optionsView isHidden]) { @@ -408,6 +477,20 @@ } } +- (void)showSpeaker { + if (![LinphoneManager runningOnIpad]) { + [speakerButton setHidden:FALSE]; + [routesButton setHidden:TRUE]; + } +} + +- (void)hideSpeaker { + if (![LinphoneManager runningOnIpad]) { + [speakerButton setHidden:TRUE]; + [routesButton setHidden:FALSE]; + } +} + #pragma mark - Action Functions @@ -419,6 +502,30 @@ } } +- (IBAction)onRoutesBluetoothClick:(id)sender { + [self hideRoutes:TRUE]; + [[LinphoneManager instance] setBluetoothEnabled:TRUE]; +} + +- (IBAction)onRoutesReceiverClick:(id)sender { + [self hideRoutes:TRUE]; + [[LinphoneManager instance] setSpeakerEnabled:FALSE]; + [[LinphoneManager instance] setBluetoothEnabled:FALSE]; +} + +- (IBAction)onRoutesSpeakerClick:(id)sender { + [self hideRoutes:TRUE]; + [[LinphoneManager instance] setSpeakerEnabled:TRUE]; +} + +- (IBAction)onRoutesClick:(id)sender { + if([routesView isHidden]) { + [self showRoutes:[[LinphoneManager instance] lpConfigBoolForKey:@"animations_preference"]]; + } else { + [self hideRoutes:[[LinphoneManager instance] lpConfigBoolForKey:@"animations_preference"]]; + } +} + - (IBAction)onOptionsTransferClick:(id)sender { [self hideOptions:TRUE]; // Go to dialer view diff --git a/Classes/LinphoneUI/en.lproj/UICallBar.xib b/Classes/LinphoneUI/en.lproj/UICallBar.xib index 3398db0d7..103729845 100644 --- a/Classes/LinphoneUI/en.lproj/UICallBar.xib +++ b/Classes/LinphoneUI/en.lproj/UICallBar.xib @@ -1,14 +1,14 @@ - 1536 - 11G63 - 2840 - 1138.51 - 569.00 + 1552 + 12D78 + 3084 + 1187.37 + 626.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1926 + 2083 IBProxyObject @@ -42,7 +42,7 @@ -2147483355 {{0, 335}, {320, 125}} - + _NS:9 1 @@ -64,7 +64,6 @@ 274 {281, 260} - _NS:9 2 @@ -80,7 +79,6 @@ 292 {{-20, 10}, {107, 54}} - 1 @@ -124,7 +122,6 @@ 292 {{87, 10}, {106, 54}} - NO NO @@ -152,7 +149,6 @@ 292 {{193, 10}, {107, 54}} - NO NO @@ -180,7 +176,6 @@ 292 {{-20, 72}, {107, 54}} - NO NO @@ -208,7 +203,6 @@ 292 {{87, 72}, {106, 54}} - NO NO @@ -236,7 +230,6 @@ 292 {{193, 72}, {107, 54}} - NO NO @@ -264,7 +257,6 @@ 292 {{-20, 134}, {107, 54}} - NO NO @@ -292,7 +284,6 @@ 292 {{87, 134}, {106, 54}} - NO NO @@ -320,7 +311,6 @@ 292 {{193, 134}, {107, 54}} - NO NO @@ -348,7 +338,6 @@ 292 {{-20, 196}, {107, 54}} - NO NO @@ -376,7 +365,6 @@ 292 {{87, 196}, {106, 54}} - NO NO @@ -404,7 +392,6 @@ 292 {{193, 196}, {107, 54}} - NO NO @@ -430,7 +417,6 @@ {{20, 57}, {281, 260}} - _NS:9 @@ -440,6 +426,179 @@ 1 IBCocoaTouchFramework + + + 293 + + + + 292 + {80, 63} + + + _NS:9 + NO + 30 + + Bluetooth + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Bluetooth + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_bluetooth_off_over.png + + + NSImage + route_bluetooth_off_disabled.png + + + NSImage + route_bluetooth_on_default.png + + + NSImage + route_bluetooth_off_default.png + + + 1 + 13 + + + Helvetica + 13 + 16 + + + + + 292 + {{0, 60}, {80, 63}} + + + _NS:9 + NO + 31 + + Receiver + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Receiver + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_phone_off_over.png + + + NSImage + route_phone_off_disabled.png + + + NSImage + route_phone_on_default.png + + + NSImage + route_phone_off_default.png + + + + + + + 292 + {{0, 118}, {80, 67}} + + + _NS:9 + NO + 32 + + Speaker + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Speaker + + + + + + NSImage + route_speaker_off_over.png + + + NSImage + route_speaker_off_disabled.png + + + NSImage + route_speaker_on_default.png + + + NSImage + route_speaker_off_default.png + + + + + + {{160, 156}, {80, 185}} + + + _NS:9 + + 33 + IBCocoaTouchFramework + 293 @@ -449,7 +608,6 @@ 292 {{3, 0}, {77, 68}} - _NS:9 NO @@ -492,23 +650,14 @@ NSImage options_transfer_default.png - - 1 - 13 - - - Helvetica - 13 - 16 - + + 292 {{3, 58}, {77, 68}} - - _NS:9 NO 17 @@ -542,12 +691,11 @@ options_add_default.png - + {{240, 208}, {80, 126}} - _NS:9 @@ -563,7 +711,6 @@ 292 {{-44, -8}, {44, 90}} - _NS:9 100 @@ -579,7 +726,6 @@ 292 {{320, -8}, {44, 90}} - _NS:9 101 @@ -595,8 +741,7 @@ 290 {{0, 135}, {320, 2000}} - - + _NS:9 1 @@ -610,7 +755,6 @@ 292 {80, 67} - _NS:9 NO @@ -650,14 +794,13 @@ video_off_default.png - + -2147483356 {{20, 20}, {37, 37}} - _NS:9 NO @@ -670,7 +813,6 @@ 292 {{80, 0}, {80, 67}} - _NS:9 NO @@ -710,15 +852,14 @@ micro_off_default.png - + 292 {{160, 0}, {80, 67}} - - + _NS:9 NO 22 @@ -757,14 +898,68 @@ speaker_off_default.png - + + + + + 292 + {{160, 0}, {80, 67}} + + + _NS:9 + NO + 29 + + Route + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 38 + 0.0 + 0.0 + 0.0 + Route + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + + NSImage + routes_over.png + + + NSImage + routes_disabled.png + + + NSImage + routes_selected.png + + + NSImage + routes_default.png + + + 292 {{240, 0}, {80, 67}} - _NS:9 NO @@ -804,14 +999,13 @@ options_default.png - + 264 {{0, 67}, {105, 68}} - _NS:9 NO @@ -848,7 +1042,6 @@ -2147483384 {{0, 67}, {105, 68}} - _NS:9 NO @@ -878,7 +1071,6 @@ 264 {{105, 67}, {111, 68}} - _NS:9 NO @@ -908,7 +1100,6 @@ 264 {{215, 67}, {105, 68}} - _NS:9 NO @@ -944,7 +1135,6 @@ {{0, 325}, {320, 135}} - _NS:9 @@ -954,7 +1144,6 @@ {320, 460} - _NS:9 @@ -969,7 +1158,6 @@ -2147483355 {{0, 248}, {480, 72}} - _NS:9 @@ -992,7 +1180,6 @@ 274 {281, 260} - _NS:9 2 @@ -1005,7 +1192,6 @@ 292 {{-20, 10}, {107, 54}} - 1 @@ -1028,7 +1214,6 @@ 292 {{87, 10}, {106, 54}} - NO NO @@ -1047,7 +1232,6 @@ 292 {{193, 10}, {107, 54}} - NO NO @@ -1066,7 +1250,6 @@ 292 {{-20, 72}, {107, 54}} - NO NO @@ -1085,7 +1268,6 @@ 292 {{87, 72}, {106, 54}} - NO NO @@ -1104,7 +1286,6 @@ 292 {{193, 72}, {107, 54}} - NO NO @@ -1123,7 +1304,6 @@ 292 {{-20, 134}, {107, 54}} - NO NO @@ -1142,7 +1322,6 @@ 292 {{87, 134}, {106, 54}} - NO NO @@ -1161,7 +1340,6 @@ 292 {{193, 134}, {107, 54}} - NO NO @@ -1180,7 +1358,6 @@ 292 {{-20, 196}, {107, 54}} - NO NO @@ -1199,7 +1376,6 @@ 292 {{87, 196}, {106, 54}} - NO NO @@ -1218,7 +1394,7 @@ 292 {{193, 196}, {107, 54}} - + NO NO 14 @@ -1234,13 +1410,178 @@ {{91, 0}, {281, 260}} - _NS:9 1 IBCocoaTouchFramework + + + 293 + + + + 292 + {65, 57} + + + _NS:9 + NO + 30 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Bluetooth + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_bluetooth_off_over_landscape.png + + + NSImage + route_bluetooth_off_disabled_landscape.png + + + NSImage + route_bluetooth_on_default_landscape.png + + + NSImage + route_bluetooth_off_default_landscape.png + + + + + + + 292 + {{0, 55}, {65, 57}} + + + _NS:9 + NO + 31 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Receiver + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_phone_off_over_landscape.png + + + NSImage + route_phone_off_disabled_landscape.png + + + NSImage + route_phone_on_default_landscape.png + + + NSImage + route_phone_off_default_landscape.png + + + + + + + 292 + {{0, 108}, {65, 57}} + + + _NS:9 + NO + 32 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Speaker + + + + + + NSImage + route_speaker_off_over_landscape.png + + + NSImage + route_speaker_off_disabled_landscape.png + + + NSImage + route_speaker_on_default_landscape.png + + + NSImage + route_speaker_off_default_landscape.png + + + + + + {{285, 85}, {65, 170}} + + + _NS:9 + + 33 + IBCocoaTouchFramework + 293 @@ -1250,7 +1591,6 @@ 292 {65, 55} - _NS:9 NO @@ -1285,15 +1625,13 @@ options_transfer_default_landscape.png - + 292 {{0, 51}, {65, 55}} - - _NS:9 NO 17 @@ -1327,12 +1665,11 @@ options_add_default_landscape.png - + {{415, 140}, {65, 105}} - _NS:9 @@ -1348,7 +1685,6 @@ 292 {{-44, -8}, {44, 90}} - _NS:9 100 @@ -1361,7 +1697,6 @@ 292 {{480, -8}, {44, 90}} - _NS:9 101 @@ -1374,8 +1709,7 @@ 290 {{0, 82}, {480, 2000}} - - + _NS:9 1 @@ -1389,7 +1723,6 @@ 292 {{65, 0}, {65, 82}} - _NS:9 NO @@ -1429,14 +1762,13 @@ video_off_default_landscape.png - + -2147483356 {{79, 20}, {37, 37}} - _NS:9 NO @@ -1449,7 +1781,6 @@ 292 {{130, 0}, {65, 82}} - _NS:9 NO @@ -1489,15 +1820,14 @@ micro_off_default_landscape.png - + 292 {{285, 0}, {65, 82}} - - + _NS:9 NO 22 @@ -1536,14 +1866,68 @@ speaker_off_default_landscape.png - + + + + + 292 + {{285, 0}, {65, 82}} + + + _NS:9 + NO + 29 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 24 + 0.0 + 0.0 + 0.0 + Route + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + + NSImage + routes_over_landscape.png + + + NSImage + routes_disabled_landscape.png + + + NSImage + routes_selected_landscape.png + + + NSImage + routes_default_landscape.png + + + 292 {{350, 0}, {65, 82}} - _NS:9 NO @@ -1583,14 +1967,13 @@ options_default_landscape.png - + 264 {65, 82} - _NS:9 NO @@ -1624,7 +2007,6 @@ -2147483384 {65, 82} - _NS:9 NO @@ -1654,7 +2036,6 @@ 264 {{195, 0}, {90, 82}} - _NS:9 NO @@ -1684,7 +2065,6 @@ 264 {{415, 0}, {65, 82}} - _NS:9 NO @@ -1717,7 +2097,6 @@ {{0, 238}, {480, 82}} - _NS:9 @@ -1727,7 +2106,6 @@ {480, 320} - _NS:9 @@ -1956,6 +2334,46 @@ 140 + + + routesButton + + + + 202 + + + + routesBluetoothButton + + + + 203 + + + + routesReceiverButton + + + + 204 + + + + routesSpeakerButton + + + + 205 + + + + routesView + + + + 206 + onPadClick: @@ -2098,6 +2516,42 @@ 133 + + + onRoutesClick: + + + 7 + + 211 + + + + onRoutesSpeakerClick: + + + 7 + + 210 + + + + onRoutesReceiverClick: + + + 7 + + 209 + + + + onRoutesBluetoothClick: + + + 7 + + 208 + @@ -2126,6 +2580,7 @@ + Portrait View @@ -2153,6 +2608,7 @@ + buttons @@ -2340,6 +2796,7 @@ + Landscape View @@ -2481,6 +2938,7 @@ + buttons @@ -2581,6 +3039,76 @@ leftPadding + + 164 + + + routesButton + + + 167 + + + + + + + + routesView + + + 168 + + + routesSpeakerButton + + + 169 + + + routesReceiverButton + + + 174 + + + routesBluetoothButton + + + 183 + + + routesButton + + + 186 + + + + + + + + routesView + + + 187 + + + routesSpeakerButton + + + 188 + + + routesReceiverButton + + + 193 + + + routesBluetoothButton + @@ -2591,7 +3119,7 @@ UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UITransparentView com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2683,6 +3211,34 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2743,7 +3299,7 @@ UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2753,289 +3309,9 @@ - 163 - - - - - TPMultiLayoutViewController - UIViewController - - UIView - UIView - - - - landscapeView - UIView - - - portraitView - UIView - - - - IBProjectSource - ./Classes/TPMultiLayoutViewController.h - - - - UICallBar - TPMultiLayoutViewController - - id - id - id - id - id - - - - onConferenceClick: - id - - - onOptionsAddClick: - id - - - onOptionsClick: - id - - - onOptionsTransferClick: - id - - - onPadClick: - id - - - - UIButton - UIToggleButton - UIDigitButton - UIDigitButton - UIDigitButton - UIHangUpButton - UIMicroButton - UIDigitButton - UIDigitButton - UIButton - UIToggleButton - UIButton - UIView - UIView - UIPauseButton - UIDigitButton - UIDigitButton - UIDigitButton - UISpeakerButton - UIDigitButton - UIDigitButton - UIDigitButton - UIVideoButton - UIDigitButton - - - - conferenceButton - UIButton - - - dialerButton - UIToggleButton - - - eightButton - UIDigitButton - - - fiveButton - UIDigitButton - - - fourButton - UIDigitButton - - - hangupButton - UIHangUpButton - - - microButton - UIMicroButton - - - nineButton - UIDigitButton - - - oneButton - UIDigitButton - - - optionsAddButton - UIButton - - - optionsButton - UIToggleButton - - - optionsTransferButton - UIButton - - - optionsView - UIView - - - padView - UIView - - - pauseButton - UIPauseButton - - - sevenButton - UIDigitButton - - - sharpButton - UIDigitButton - - - sixButton - UIDigitButton - - - speakerButton - UISpeakerButton - - - starButton - UIDigitButton - - - threeButton - UIDigitButton - - - twoButton - UIDigitButton - - - videoButton - UIVideoButton - - - zeroButton - UIDigitButton - - - - IBProjectSource - ./Classes/UICallBar.h - - - - UIDigitButton - UILongTouchButton - - addressField - UITextField - - - addressField - - addressField - UITextField - - - - IBProjectSource - ./Classes/UIDigitButton.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UILongTouchButton - UIButton - - IBProjectSource - ./Classes/UILongTouchButton.h - - - - UIMicroButton - UIToggleButton - - IBProjectSource - ./Classes/UIMicroButton.h - - - - UIPauseButton - UIToggleButton - - IBProjectSource - ./Classes/UIPauseButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - ./Classes/UISpeakerButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - UITransparentView - UIView - - IBProjectSource - ./Classes/UITransparentView.h - - - - UIVideoButton - UIToggleButton - - waitView - UIActivityIndicatorView - - - waitView - - waitView - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/UIVideoButton.h - - - + 211 + 0 IBCocoaTouchFramework YES @@ -3117,6 +3393,38 @@ {130, 163} {209, 136} {130, 163} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 134} + {130, 163} + {160, 134} + {130, 163} + {160, 134} + {130, 163} + {160, 134} + {130, 163} {160, 134} {130, 163} {160, 134} @@ -3134,6 +3442,6 @@ {160, 134} {130, 163} - 1926 + 2083 diff --git a/Classes/LinphoneUI/fr.lproj/UICallBar.xib b/Classes/LinphoneUI/fr.lproj/UICallBar.xib index 166865260..a0dc7c585 100644 --- a/Classes/LinphoneUI/fr.lproj/UICallBar.xib +++ b/Classes/LinphoneUI/fr.lproj/UICallBar.xib @@ -1,14 +1,14 @@ - 1536 - 11G63 - 2840 - 1138.51 - 569.00 + 1552 + 12D78 + 3084 + 1187.37 + 626.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1926 + 2083 IBProxyObject @@ -42,6 +42,7 @@ -2147483355 {{0, 335}, {320, 125}} + _NS:9 1 @@ -425,6 +426,179 @@ 1 IBCocoaTouchFramework + + + 293 + + + + 292 + {80, 63} + + + _NS:9 + NO + 30 + + Bluetooth + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Bluetooth + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_bluetooth_off_over.png + + + NSImage + route_bluetooth_off_disabled.png + + + NSImage + route_bluetooth_on_default.png + + + NSImage + route_bluetooth_off_default.png + + + 1 + 13 + + + Helvetica + 13 + 16 + + + + + 292 + {{0, 60}, {80, 63}} + + + _NS:9 + NO + 31 + + Écouteur + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Écouteur + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_phone_off_over.png + + + NSImage + route_phone_off_disabled.png + + + NSImage + route_phone_on_default.png + + + NSImage + route_phone_off_default.png + + + + + + + 292 + {{0, 118}, {80, 67}} + + + _NS:9 + NO + 32 + + Haut parleur + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Haut parleur + + + + + + NSImage + route_speaker_off_over.png + + + NSImage + route_speaker_off_disabled.png + + + NSImage + route_speaker_on_default.png + + + NSImage + route_speaker_off_default.png + + + + + + {{160, 156}, {80, 185}} + + + _NS:9 + + 33 + IBCocoaTouchFramework + 293 @@ -476,22 +650,14 @@ NSImage options_transfer_default.png - - 1 - 13 - - - Helvetica - 13 - 16 - + + 292 {{3, 58}, {77, 68}} - _NS:9 NO 17 @@ -525,7 +691,7 @@ options_add_default.png - + {{240, 208}, {80, 126}} @@ -575,7 +741,7 @@ 290 {{0, 135}, {320, 2000}} - + _NS:9 1 @@ -628,7 +794,7 @@ video_off_default.png - + @@ -686,14 +852,14 @@ micro_off_default.png - + 292 {{160, 0}, {80, 67}} - + _NS:9 NO 22 @@ -732,7 +898,62 @@ speaker_off_default.png - + + + + + 292 + {{160, 0}, {80, 67}} + + + _NS:9 + NO + 29 + + Route + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 38 + 0.0 + 0.0 + 0.0 + Route + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + + NSImage + routes_over.png + + + NSImage + routes_disabled.png + + + NSImage + routes_selected.png + + + NSImage + routes_default.png + + + @@ -778,7 +999,7 @@ options_default.png - + @@ -1172,6 +1393,7 @@ 292 {{193, 196}, {107, 54}} + NO NO 14 @@ -1193,6 +1415,172 @@ 1 IBCocoaTouchFramework + + + 293 + + + + 292 + {65, 57} + + + _NS:9 + NO + 30 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Bluetooth + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_bluetooth_off_over_landscape.png + + + NSImage + route_bluetooth_off_disabled_landscape.png + + + NSImage + route_bluetooth_on_default_landscape.png + + + NSImage + route_bluetooth_off_default_landscape.png + + + + + + + 292 + {{0, 55}, {65, 57}} + + + _NS:9 + NO + 31 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Écouteur + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_phone_off_over_landscape.png + + + NSImage + route_phone_off_disabled_landscape.png + + + NSImage + route_phone_on_default_landscape.png + + + NSImage + route_phone_off_default_landscape.png + + + + + + + 292 + {{0, 108}, {65, 57}} + + + _NS:9 + NO + 32 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Haut parleur + + + + + + NSImage + route_speaker_off_over_landscape.png + + + NSImage + route_speaker_off_disabled_landscape.png + + + NSImage + route_speaker_on_default_landscape.png + + + NSImage + route_speaker_off_default_landscape.png + + + + + + {{285, 85}, {65, 170}} + + + _NS:9 + + 33 + IBCocoaTouchFramework + 293 @@ -1236,14 +1624,13 @@ options_transfer_default_landscape.png - + 292 {{0, 51}, {65, 55}} - _NS:9 NO 17 @@ -1277,7 +1664,7 @@ options_add_default_landscape.png - + {{415, 140}, {65, 105}} @@ -1321,7 +1708,7 @@ 290 {{0, 82}, {480, 2000}} - + _NS:9 1 @@ -1374,7 +1761,7 @@ video_off_default_landscape.png - + @@ -1432,14 +1819,14 @@ micro_off_default_landscape.png - + 292 {{285, 0}, {65, 82}} - + _NS:9 NO 22 @@ -1478,7 +1865,62 @@ speaker_off_default_landscape.png - + + + + + 292 + {{285, 0}, {65, 82}} + + + _NS:9 + NO + 29 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 24 + 0.0 + 0.0 + 0.0 + Route + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + + NSImage + routes_over_landscape.png + + + NSImage + routes_disabled_landscape.png + + + NSImage + routes_selected_landscape.png + + + NSImage + routes_default_landscape.png + + + @@ -1524,7 +1966,7 @@ options_default_landscape.png - + @@ -1890,6 +2332,46 @@ 140 + + + routesButton + + + + 202 + + + + routesBluetoothButton + + + + 203 + + + + routesReceiverButton + + + + 204 + + + + routesSpeakerButton + + + + 205 + + + + routesView + + + + 206 + onPadClick: @@ -2032,6 +2514,42 @@ 133 + + + onRoutesClick: + + + 7 + + 211 + + + + onRoutesSpeakerClick: + + + 7 + + 210 + + + + onRoutesReceiverClick: + + + 7 + + 209 + + + + onRoutesBluetoothClick: + + + 7 + + 208 + @@ -2060,6 +2578,7 @@ + Portrait View @@ -2087,6 +2606,7 @@ + buttons @@ -2274,6 +2794,7 @@ + Landscape View @@ -2415,6 +2936,7 @@ + buttons @@ -2515,6 +3037,76 @@ leftPadding + + 164 + + + routesButton + + + 167 + + + + + + + + routesView + + + 168 + + + routesSpeakerButton + + + 169 + + + routesReceiverButton + + + 174 + + + routesBluetoothButton + + + 183 + + + routesButton + + + 186 + + + + + + + + routesView + + + 187 + + + routesSpeakerButton + + + 188 + + + routesReceiverButton + + + 193 + + + routesBluetoothButton + @@ -2525,7 +3117,7 @@ UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UITransparentView com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2617,6 +3209,34 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2677,7 +3297,7 @@ UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2687,289 +3307,9 @@ - 163 - - - - - TPMultiLayoutViewController - UIViewController - - UIView - UIView - - - - landscapeView - UIView - - - portraitView - UIView - - - - IBProjectSource - ./Classes/TPMultiLayoutViewController.h - - - - UICallBar - TPMultiLayoutViewController - - id - id - id - id - id - - - - onConferenceClick: - id - - - onOptionsAddClick: - id - - - onOptionsClick: - id - - - onOptionsTransferClick: - id - - - onPadClick: - id - - - - UIButton - UIToggleButton - UIDigitButton - UIDigitButton - UIDigitButton - UIHangUpButton - UIMicroButton - UIDigitButton - UIDigitButton - UIButton - UIToggleButton - UIButton - UIView - UIView - UIPauseButton - UIDigitButton - UIDigitButton - UIDigitButton - UISpeakerButton - UIDigitButton - UIDigitButton - UIDigitButton - UIVideoButton - UIDigitButton - - - - conferenceButton - UIButton - - - dialerButton - UIToggleButton - - - eightButton - UIDigitButton - - - fiveButton - UIDigitButton - - - fourButton - UIDigitButton - - - hangupButton - UIHangUpButton - - - microButton - UIMicroButton - - - nineButton - UIDigitButton - - - oneButton - UIDigitButton - - - optionsAddButton - UIButton - - - optionsButton - UIToggleButton - - - optionsTransferButton - UIButton - - - optionsView - UIView - - - padView - UIView - - - pauseButton - UIPauseButton - - - sevenButton - UIDigitButton - - - sharpButton - UIDigitButton - - - sixButton - UIDigitButton - - - speakerButton - UISpeakerButton - - - starButton - UIDigitButton - - - threeButton - UIDigitButton - - - twoButton - UIDigitButton - - - videoButton - UIVideoButton - - - zeroButton - UIDigitButton - - - - IBProjectSource - ./Classes/UICallBar.h - - - - UIDigitButton - UILongTouchButton - - addressField - UITextField - - - addressField - - addressField - UITextField - - - - IBProjectSource - ./Classes/UIDigitButton.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UILongTouchButton - UIButton - - IBProjectSource - ./Classes/UILongTouchButton.h - - - - UIMicroButton - UIToggleButton - - IBProjectSource - ./Classes/UIMicroButton.h - - - - UIPauseButton - UIToggleButton - - IBProjectSource - ./Classes/UIPauseButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - ./Classes/UISpeakerButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - UITransparentView - UIView - - IBProjectSource - ./Classes/UITransparentView.h - - - - UIVideoButton - UIToggleButton - - waitView - UIActivityIndicatorView - - - waitView - - waitView - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/UIVideoButton.h - - - + 211 + 0 IBCocoaTouchFramework YES @@ -3051,6 +3391,38 @@ {130, 163} {209, 136} {130, 163} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 134} + {130, 163} + {160, 134} + {130, 163} + {160, 134} + {130, 163} + {160, 134} + {130, 163} {160, 134} {130, 163} {160, 134} @@ -3068,6 +3440,6 @@ {160, 134} {130, 163} - 1926 + 2083 diff --git a/Classes/LinphoneUI/ru.lproj/UICallBar.xib b/Classes/LinphoneUI/ru.lproj/UICallBar.xib index 5c3284b42..eb48de3a3 100644 --- a/Classes/LinphoneUI/ru.lproj/UICallBar.xib +++ b/Classes/LinphoneUI/ru.lproj/UICallBar.xib @@ -1,14 +1,14 @@ - 1536 - 12C60 - 2844 - 1187.34 - 625.00 + 1552 + 12D78 + 3084 + 1187.37 + 626.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1930 + 2083 IBProxyObject @@ -42,6 +42,7 @@ -2147483355 {{0, 335}, {320, 125}} + _NS:9 1 @@ -425,6 +426,179 @@ 1 IBCocoaTouchFramework + + + 293 + + + + 292 + {80, 63} + + + _NS:9 + NO + 30 + + Bluetooth + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Bluetooth + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_bluetooth_off_over.png + + + NSImage + route_bluetooth_off_disabled.png + + + NSImage + route_bluetooth_on_default.png + + + NSImage + route_bluetooth_off_default.png + + + 1 + 13 + + + Helvetica + 13 + 16 + + + + + 292 + {{0, 60}, {80, 63}} + + + _NS:9 + NO + 31 + + Receiver + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Receiver + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_phone_off_over.png + + + NSImage + route_phone_off_disabled.png + + + NSImage + route_phone_on_default.png + + + NSImage + route_phone_off_default.png + + + + + + + 292 + {{0, 118}, {80, 67}} + + + _NS:9 + NO + 32 + + Динамик + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Динамик + + + + + + NSImage + route_speaker_off_over.png + + + NSImage + route_speaker_off_disabled.png + + + NSImage + route_speaker_on_default.png + + + NSImage + route_speaker_off_default.png + + + + + + {{160, 156}, {80, 185}} + + + _NS:9 + + 33 + IBCocoaTouchFramework + 293 @@ -476,22 +650,14 @@ NSImage options_transfer_default.png - - 1 - 13 - - - Helvetica - 13 - 16 - + + 292 {{3, 58}, {77, 68}} - _NS:9 NO 17 @@ -525,7 +691,7 @@ options_add_default.png - + {{240, 208}, {80, 126}} @@ -575,7 +741,7 @@ 290 {{0, 135}, {320, 2000}} - + _NS:9 1 @@ -628,7 +794,7 @@ video_off_default.png - + @@ -686,14 +852,14 @@ micro_off_default.png - + 292 {{160, 0}, {80, 67}} - + _NS:9 NO 22 @@ -732,7 +898,62 @@ speaker_off_default.png - + + + + + 292 + {{160, 0}, {80, 67}} + + + _NS:9 + NO + 29 + + Route + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 38 + 0.0 + 0.0 + 0.0 + Route + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + + NSImage + routes_over.png + + + NSImage + routes_disabled.png + + + NSImage + routes_selected.png + + + NSImage + routes_default.png + + + @@ -778,7 +999,7 @@ options_default.png - + @@ -1175,6 +1396,7 @@ 292 {{193, 196}, {107, 54}} + NO NO 14 @@ -1199,6 +1421,172 @@ 1 IBCocoaTouchFramework + + + 293 + + + + 292 + {65, 57} + + + _NS:9 + NO + 30 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Bluetooth + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_bluetooth_off_over_landscape.png + + + NSImage + route_bluetooth_off_disabled_landscape.png + + + NSImage + route_bluetooth_on_default_landscape.png + + + NSImage + route_bluetooth_off_default_landscape.png + + + + + + + 292 + {{0, 55}, {65, 57}} + + + _NS:9 + NO + 31 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Receiver + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_phone_off_over_landscape.png + + + NSImage + route_phone_off_disabled_landscape.png + + + NSImage + route_phone_on_default_landscape.png + + + NSImage + route_phone_off_default_landscape.png + + + + + + + 292 + {{0, 108}, {65, 57}} + + + _NS:9 + NO + 32 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Динамик + + + + + + NSImage + route_speaker_off_over_landscape.png + + + NSImage + route_speaker_off_disabled_landscape.png + + + NSImage + route_speaker_on_default_landscape.png + + + NSImage + route_speaker_off_default_landscape.png + + + + + + {{285, 85}, {65, 170}} + + + _NS:9 + + 33 + IBCocoaTouchFramework + 293 @@ -1242,14 +1630,13 @@ options_transfer_default_landscape.png - + 292 {{0, 51}, {70, 55}} - _NS:9 NO 17 @@ -1283,7 +1670,7 @@ options_add_default_landscape.png - + {{410, 140}, {70, 105}} @@ -1327,7 +1714,7 @@ 290 {{0, 82}, {480, 2000}} - + _NS:9 1 @@ -1380,7 +1767,7 @@ video_off_default_landscape.png - + @@ -1438,14 +1825,14 @@ micro_off_default_landscape.png - + 292 {{285, 0}, {65, 82}} - + _NS:9 NO 22 @@ -1484,7 +1871,62 @@ speaker_off_default_landscape.png - + + + + + 292 + {{285, 0}, {65, 82}} + + + _NS:9 + NO + 29 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 24 + 0.0 + 0.0 + 0.0 + Route + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + + NSImage + routes_over_landscape.png + + + NSImage + routes_disabled_landscape.png + + + NSImage + routes_selected_landscape.png + + + NSImage + routes_default_landscape.png + + + @@ -1530,7 +1972,7 @@ options_default_landscape.png - + @@ -1896,6 +2338,46 @@ 140 + + + routesButton + + + + 202 + + + + routesBluetoothButton + + + + 203 + + + + routesReceiverButton + + + + 204 + + + + routesSpeakerButton + + + + 205 + + + + routesView + + + + 206 + onPadClick: @@ -2038,6 +2520,42 @@ 133 + + + onRoutesClick: + + + 7 + + 211 + + + + onRoutesSpeakerClick: + + + 7 + + 210 + + + + onRoutesReceiverClick: + + + 7 + + 209 + + + + onRoutesBluetoothClick: + + + 7 + + 208 + @@ -2066,6 +2584,7 @@ + Portrait View @@ -2093,6 +2612,7 @@ + buttons @@ -2280,6 +2800,7 @@ + Landscape View @@ -2421,6 +2942,7 @@ + buttons @@ -2521,6 +3043,76 @@ leftPadding + + 164 + + + routesButton + + + 167 + + + + + + + + routesView + + + 168 + + + routesSpeakerButton + + + 169 + + + routesReceiverButton + + + 174 + + + routesBluetoothButton + + + 183 + + + routesButton + + + 186 + + + + + + + + routesView + + + 187 + + + routesSpeakerButton + + + 188 + + + routesReceiverButton + + + 193 + + + routesBluetoothButton + @@ -2531,7 +3123,7 @@ UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UITransparentView com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2623,6 +3215,34 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2683,7 +3303,7 @@ UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2693,289 +3313,9 @@ - 163 - - - - - TPMultiLayoutViewController - UIViewController - - UIView - UIView - - - - landscapeView - UIView - - - portraitView - UIView - - - - IBProjectSource - ./Classes/TPMultiLayoutViewController.h - - - - UICallBar - TPMultiLayoutViewController - - id - id - id - id - id - - - - onConferenceClick: - id - - - onOptionsAddClick: - id - - - onOptionsClick: - id - - - onOptionsTransferClick: - id - - - onPadClick: - id - - - - UIButton - UIToggleButton - UIDigitButton - UIDigitButton - UIDigitButton - UIHangUpButton - UIMicroButton - UIDigitButton - UIDigitButton - UIButton - UIToggleButton - UIButton - UIView - UIView - UIPauseButton - UIDigitButton - UIDigitButton - UIDigitButton - UISpeakerButton - UIDigitButton - UIDigitButton - UIDigitButton - UIVideoButton - UIDigitButton - - - - conferenceButton - UIButton - - - dialerButton - UIToggleButton - - - eightButton - UIDigitButton - - - fiveButton - UIDigitButton - - - fourButton - UIDigitButton - - - hangupButton - UIHangUpButton - - - microButton - UIMicroButton - - - nineButton - UIDigitButton - - - oneButton - UIDigitButton - - - optionsAddButton - UIButton - - - optionsButton - UIToggleButton - - - optionsTransferButton - UIButton - - - optionsView - UIView - - - padView - UIView - - - pauseButton - UIPauseButton - - - sevenButton - UIDigitButton - - - sharpButton - UIDigitButton - - - sixButton - UIDigitButton - - - speakerButton - UISpeakerButton - - - starButton - UIDigitButton - - - threeButton - UIDigitButton - - - twoButton - UIDigitButton - - - videoButton - UIVideoButton - - - zeroButton - UIDigitButton - - - - IBProjectSource - ./Classes/UICallBar.h - - - - UIDigitButton - UILongTouchButton - - addressField - UITextField - - - addressField - - addressField - UITextField - - - - IBProjectSource - ./Classes/UIDigitButton.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UILongTouchButton - UIButton - - IBProjectSource - ./Classes/UILongTouchButton.h - - - - UIMicroButton - UIToggleButton - - IBProjectSource - ./Classes/UIMicroButton.h - - - - UIPauseButton - UIToggleButton - - IBProjectSource - ./Classes/UIPauseButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - ./Classes/UISpeakerButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - UITransparentView - UIView - - IBProjectSource - ./Classes/UITransparentView.h - - - - UIVideoButton - UIToggleButton - - waitView - UIActivityIndicatorView - - - waitView - - waitView - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/UIVideoButton.h - - - + 211 + 0 IBCocoaTouchFramework YES @@ -3057,6 +3397,38 @@ {130, 163} {209, 136} {130, 163} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 134} + {130, 163} + {160, 134} + {130, 163} + {160, 134} + {130, 163} + {160, 134} + {130, 163} {160, 134} {130, 163} {160, 134} @@ -3074,6 +3446,6 @@ {160, 134} {130, 163} - 1930 + 2083 diff --git a/Resources/route_bluetooth_off_default.png b/Resources/route_bluetooth_off_default.png new file mode 100644 index 0000000000000000000000000000000000000000..01bc1f29168b4b5bf6923b8dc1162f875c0f7ea9 GIT binary patch literal 4684 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 literal 0 HcmV?d00001 diff --git a/Resources/route_bluetooth_off_disabled.png b/Resources/route_bluetooth_off_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..3d03f1cba815a53c5558fd99715eeedeabd7ab69 GIT binary patch literal 4541 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 Gqy7i%zBEn% literal 0 HcmV?d00001 diff --git a/Resources/route_bluetooth_off_over_landscape.png b/Resources/route_bluetooth_off_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..ebaffea54d2e0d7ae876c7b59f1741b2aaf0f812 GIT binary patch literal 3971 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 literal 0 HcmV?d00001 diff --git a/Resources/route_bluetooth_on_default.png b/Resources/route_bluetooth_on_default.png new file mode 100644 index 0000000000000000000000000000000000000000..841c93b65d9239cdc437ed3a3a94729e0a88f7d2 GIT binary patch literal 4145 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 literal 0 HcmV?d00001 diff --git a/Resources/route_bluetooth_on_default_landscape.png b/Resources/route_bluetooth_on_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..9cbdf574d5a53c6e91a62c7e4a4737fe7f59ab27 GIT binary patch literal 3393 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 WV`|3xUtO91sj(sLB1)`0BmNE7M$^Rr literal 0 HcmV?d00001 diff --git a/Resources/route_phone_off_default.png b/Resources/route_phone_off_default.png new file mode 100644 index 0000000000000000000000000000000000000000..4510f0bcb117d33a1c6388647cf7f89aa8278296 GIT binary patch literal 4687 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 TqglUf`^VXoXi3O5bYlM><2(dC literal 0 HcmV?d00001 diff --git a/Resources/route_phone_off_disabled.png b/Resources/route_phone_off_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..8c94055331dc68d0d3474202ad5409eeb5dabc08 GIT binary patch literal 4523 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 literal 0 HcmV?d00001 diff --git a/Resources/route_phone_off_disabled_landscape.png b/Resources/route_phone_off_disabled_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..1d58d39c89e90f0a19d9c21be5812c6e6e851087 GIT binary patch literal 3808 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 literal 0 HcmV?d00001 diff --git a/Resources/route_phone_off_over.png b/Resources/route_phone_off_over.png new file mode 100644 index 0000000000000000000000000000000000000000..bc383167e549569eaaa7ba93cb60831301912f1d GIT binary patch literal 4702 zcmbVQc|4Ts+n*uInw_a+$R1{4Y-JszkflisLSqaj%#1OzO`$A_BBddQBtjWWr|e5n zLNOI7O9)ApETtJW`Hgc<=Y9V;@9&TI`8@Y?Z`b#GE%$XjpXc+Wx;PyY6W%2Z006}7 z4%?u4{Y_qr+abt%2Hoi%;&mV@3PU|c3ZO<}DR_XDKgkadwhP4u;?a1le{@(k{vZIr zA4G7)P%(~2OmU=8J?xf@UQ{TVhXw!+T11htxL`aL?1v8|5Y1G+G_|RK3I1j(?g&Sy zBN>SgA{>sP;E%;Px#D7iaVGvM7UtlCQKmeCP&^e2jtUJShMPv2sr<=n${TMjLsY5wh8JHprP2oo1 zzb_S@Hj00MDcZ*NZ(Y2ZnMx3qN;ZW+A|oU9BK7r1lt2i~#KdHa0}j{aN$7@06RFrJ zU1IpY-wZbRa2$m|rV>a*@D?N1j}$>QQ{h?qmkXg}N5_ANiQ#_-iWf3S6qXEu=|Lf( zp<90aDIHElYo;9Y<6aw#1upu@i zTtq0INVT&uQ{nCC`4jw2kybF2p|J@928BZnjbSijINS<_G)CzgSVNKe);7O6{tb(= zfx(QBC|hHM2@i>a8^cgWCNLY6G0Mu?&=v{*jkP0&Q?W!G{qED!{|oE?|A`ueXAER3J^oj^{9fYa;MVY; z2@|&u2I7ajNnX}LD??n$no4WwN1}@KGa?m?m^1P zJULWym?nGt2BuZ&SdE`{wxxtY_RfpD)FfmKZmgb{N>#sEf+@Er80`834SS05lR=>b zT&+bDQ70oo*T-_l7>wM$mPn`m^#xpMU}JZF0|Tp;eNtxo9(?`8Fkf;6lk|x^_NY#`B2-KcupG zPk*nCkNU*;R1|0$uLLPvsXb4JM9uAKrSP$u+%7FAM%kTg-<~{ZBL0Z*u|$wAG!+?k zqBTkW`ZUn7#Q8vGn=SaTh~{ zQ$ezp9YSK7RkyB~VbaqjTqAKOJzs+Se3VR^1Q|m(N{px?q*SBm{6<)A`KRZarZqw% zBWdIOPO;GXQ1%(4fCzo2QEI5n{KcF-vX5poCVzESzu%TWeqsJo$HoIpAmDqKOJ2Y> z42oqiI^;G=*W?>a`}SGljr!L>#Ku5~-RP`UNFI<@e%mjzlmI)yVq9i4Up zt=Vu@A?b1QuMAi@>KR(DJ{cKY^>F!n6WNK7I9LoA3qMtZ& ztC)F5UDD%<-@F#1JTDX=NC_j>Je=J#B}$?s$uOW~ik-BCU8ZFp-Mf&FQczl!YpPrt z@TPnx0FCcMocP|Bv51s&i`Eb8)(&Mo|nVLz-hYwzjyJJ&Y za{HL|k;%f>YaC&HN@a0=+WOtn2$1oGs?Hd6jD0}Q8J7!v_2hd8IZmx&9-=Z?98r>!;~ z=V(~zKMG#=^^BIuJ%Y6AD{dt2=6{RZ{Q}_ggh4gh`TXD#Tz4w}UiveJ8OYcc6nEjK zruqze?OvcJp=KWTu+ppd!(>ljSzZMjn*RR5PJwt875UXw07QQBr5wn^MCaBAa#^vuHq~h_0LnhwN zR@0a0MYCgVNNSgx3ldw#Kqz_AnS7NG-=F>zC2IS=v$Db}{-q+IQD}ibqcV}{UI_Zu zH0&{p9Cdu7xYe4`C`MEz=l62CBeo!J2T zu)XaM*FuCr$3V*FwxZOl4#}kP3MH$BsXE&M6V9XAqL|@@ulL=5ieT^EJVeItJuqom zu0Z?oOKfr8-80!4^8usr#~O23i=C)Qqdf>UkG$XT5t!{{s!gYeu>B5<>qaqJlz#Hx zDhx?#)Sn#@FRcD$HZoJsQrOw}vhMWP3kgvQUokxr(cFHCkrk(x^NYjH-4t*0fh#EU zOCfk7JMp+9gWq0r!LCgX&BrxZ#eMl%`Nz!od(mZd1>M#p;!ws!|FOu@nes5i}VRUbowZeQ->GEWv0L=3~ zwle=ac0ep(db{XTS>2iVehA;mh5g~UsUBdXAu~0y5X+KYxi$2X%867SHC6NCEP0Eb zxjr$1ajBa(vVyK>M;Bdj@+iX#caB8LH=kGp$y-mU4OzZcbEg9e&-BdB=$Wt}`|p`Y zC*uJf8cr#xMq`4AI}8C&{jc@MaT{6|92j;HX4@^MB-Hx1KWEl?&-77Z< z$0k%)ElDr8FyvdMm$V93qY3FtscDk=je;=R>YPhN59sTrb`*sSl^6CvDL@8u}oTE;5Aaz#5rQch->+1yAh4+b^Y_D zwzHsguPCG^=Z#Ln*|g=EW9Am@>f5lJ?tNw^Gwl_G`$ebw_%4LTg@>@2UV@i~^sa{* z*RKaSEI%0KHl?pNl#J+VBwqFvJ64`fQOUeS_qI@vmuj7t>+Mf!cQ?Zw=G@!pb#7bn zY~A&=>VVsYL0>Xx;CX9MXAX0&v4lllRB3pD45nLeii<3Be+re|@X232u2Q~V?95GP zn?S8GS)%};=7jVZv-;e`ert}lkZp-`c@28k#2vljrRKDvv%joAjcvGlO-R4Sk(#%) zd}$TrHa+YfFSyH*j9ko}?Wh-U7jzR#`9haUdvcKDzfB`Q+jv0y%8+j+kF(>u2>VyI zd~0f?net9!n>_2H%>2DRZNiPdn^R@IuFe+nPhYgj++c24u?`gENL{jZ;A1&!2bp)D z(4=J^v8*pOtfXzyK;o56`@XE7n$?THj@lnD%SjZl0AN-j$}{Flp9Z3J!_K`k?xsCc zp>>UOj1%wlCq3eBCLr(1TYV4i?;SDNmsj}kBRAuHVoRMj|CuK99n;>auQFO%S`ysb zb!K8ufiwPV;-_=G#a7VnA#SZsMYIFsHG)do zzC*>4!{UY5mpjMLCGRJG^%uPel45_ROYFCTb_{)+sJuQA?9;l}x{P+{&De|r4J}|X z{xNtn1HfWFUwIr~k70L~%hklKgp!Pf3#CteT(5^3nZ6L}q6-(YlW;%l=zw5_oeby7 zuzO>JuV)+N0yLzo=9ZQo&KRWU>FbKLrkoXCp)Hq-s_Vq*h?uYadh(stqfEP}``}>uZmEXC*$9MWDi$H!L#^$@e zu`$Mg=Ej^oP`d)WK;($r-iUQL6}*;(aA}*!lYpja9m?4IfJYV4!Dk-!h4?i)uxPg7 z(CXvJ(be&1YqW-IB-iXkwy;WnWy&Wni0ojWP}-NIn6&Su>?4wk0<2KEj4tIt`J|3s zy)e<%do=;K`D1+EZQ~Zk`4ec*ZfGE<9yn-=`>M%izB_YmT29uWz!O>@8*8aRM9&pOhTf!G@-07eywbH_OdXzHv zc6qGTslZ;*z0m8;;yy=azHO3zd(DHz=8hyV;IAVydY3U-o!6L5y+Z)1 zgQeJxOEAV>C4hi$+>9)nmcIw~(SKshj}JbD@Mxcu1}gr#U|_WUoddmD_H$SJsC@pH z>^nY9%$Joy$I6sEO5UUGWdS z!MFzYvVwk3k=PY|LM*(BMT4kmaz<3!^^kKB+R)eGMd4rzzTzfrmv0jc&_1J-kM*}Ta`LYDuv35W^ zUhDp(nX~n6B~oxy{)nycVYv{%+;+!WdymCU0R@1veWRts@CWGDA0IoElMU1QNFx;X8Y5?2ui002^U zM7*0|*5C zO7rk$dpkOqlNk|)qzxWJZbXy-4FFi$aHB|MI+YCxqK42St)QQ7wLu{?iWPM4PDi+7 z6pk87BgQeQ?r}~YhFEgV1p*?dY!ZYU5gy4h=UPGkl4~xQZ;*|kkiS^i zbSvoJMtM8BKyVBu6|&P12_wT12nY&gh%niSLLqiQjNu4lBeCi zD$vHH1e?3zcm2{OSXn_s+3YBDBO?xnW5_`oGMFJo2s1OY4H?G9FaZaQ6&uMWabc0H z?Y|}9sVp*+7R9D9A|V?RNkNPlwiQ%h>EA9yL^(SCBRG=vD^P-v8F5KbMhHW=QAEUs zUw?74*lyJSG2>skSst-bR3kSkixI;l3-S@X{Wn+;yZ^3egHd3Oxiga{ND3(&&mhM{ zP$SuPcq^#jjUk0bF~?yL1QgnACjxE^N1+i2w6QUUfI}0ICRjKQiN*hx@o!ix3Wr3S z!V&157z6@AFh(N?re+8{0ZqVQQM+))zp-|aEH){UO#Q8wCeZr}3;(ZJa~zXOVl$W? z3`Y3x3UCQ!uo9<wwYdWpz7Nn9yyts8Yi`_@;4`{zOwkE*=k;_oO9Bg&zQWiw~l zjzs8Q*&la?z4V63G?A1S3YP~B?uVeW)7L$DKhwt=j*6?kQdj7ee3MKx)xCfCxNdgt zIeoP``6nWH<%2;svdi#ypA@O$_CIspf50gI6Zx7Ka|nA`|Q|-bh_^Gt9!KU zc7NNe&r$Mn$`{v$LV?i_{SIj4VmqB&ZLjP4;lmtW80Ff+zlwDQbjmV6DJ%4PzoO%* z6r$wnt0}6-)Z9@>r7&)37rAY>n!8+Fc=u zt>bdE4rWv3I66nQONQcJkEdwO6)Cu6W*i&MEXE#xv6_8n7!tfM{9KTZeK#Vy$kXp2 zUEV59I`{UDX8fS5~6Yf!u1s~)8X9IE=2c$r@}>lnPulZg$m`LGI`HKL!1MMoE#OL?VyJz`eLyAu#%7K z0=ZOa;FV$qb4R{WwR(SUwalZgteU7xCo4)G(Dqiux!Da@s3_OFR%oaTW86+@b?3BT z%lDtVTT*r5_o_SDb07~= z`=xk&h_hB++rWr_pRJrKeC@L6x1fYD@afq4woU1M#Vc>C_ZPl?+5GA8X8xIx<^5?> zJmQ=(gcfw878DTaEt=5lhO_mM(lN0lIcXyo7l{vy)#|_rz1c5|dfMNTui@a-PJe3` zExSST#M3@m(4^?odfOYfU~kx~HjE|(=~fC^NJ7TJzX1oYv3}>L-S+V+(geLF#pS(- z@9-x7NP7!H_{80lGs1ghJVqZEz87=a=fnP}gt;0LWBKf9u~s7!eOFWnx9P*z2~OP z4uqx?2@7-ke1{iDCxcW$sT%TQX7N$sp)NIawhu>GN~F=LJh&sf-6}flAbRW>V7&ms zy$G3w6y~`4Cle<9UR=Ol`p$l>AN9htoj*^QX=Axc%VZuzUy8|`c_~tvK@Zs{+F?Z% z&GcP0sA?feSCxn5i5}UC;tQ?v3pIF0om;>qXSy3eXA1fr8XWW2d{ChOu0FAP^}87^ zP#1H#LH^|9+eb3ajA8;g!eSQtY-=taPo8;xLXwB0X@0x^V$t43vQgLq!)}6d>kH2_ zO!ry0k@-`#nt{TdLGD5p3}1_%v7k@=aqk~xD>J4nZUoBmHqrT|1|3hzk&0-yg z22b0dqwPkL>GR6EwkA-=x2tWY`K38z-a*S-fv;NfxEFMvkOB~Jv z0VTxx4H^4^!o4sow5)IEi&r9Wn@OXF1b zZuX9!J|A%I3aZXuNSOblsVYRu3pG4BInO1eyYr@NQxXZ_({d?i2QhtFo-#M1bS@Y> zJX^S8_B5&tiq-&qpThLHZ>~%Qph0afj`u)9CoijDw+@cE72JEu7q8bFDblSPke2EO z0UJk8T{9a!RZ&yZmzx2>4c&*J7hU7PUY~}0L9XD5l7xOQu%zmjk;m|`*=+T#Dr&I} z7!7#^c~HL~yJ_#@KXRscc_%tCPrs(YFfO;kw%+)2cZk^hVBI}cP`}UxYrVPJ4nz0* zKp_-?VyuE*J=cPrp|Bi6b2>37nM=O+es=fS)_ukO==1&J(nek$`#r%^$KH*fP2KHCK>9AUVojFaAyzZY; z)9`6DiHo!V7es)j*W!yUy(%i|>guX6=}Rkj^7A>tk{GY=F-^9E(|l0Upeku0oV=QQ zU|y@rze%m-dbT9!nxU>DtSsoI75C<4h|I##p1I32ZT#H1xb}PHGNEe#Q73KO?8RGB zmW`3XY2LO(x3{X%+s1`F>2&%-18g6TBel7sd~mV5%ukbu3`&jS{J{^I7LS+kg=PJ8 zM-6UY=y@FPx16v!TMcAsB;vtWa-oME6MO!pxJhaLO;-?5N)ZUt0I6w}o`?Q@(yIv2zYhKXJ1sb|9*_tGkanZFC#tWH QZTvmk5uEV#*g)QY0A`KB#Q*>R literal 0 HcmV?d00001 diff --git a/Resources/route_phone_on_default.png b/Resources/route_phone_on_default.png new file mode 100644 index 0000000000000000000000000000000000000000..16cc9e2f3a0b476ba50c388fd3c534711264dfaf GIT binary patch literal 4078 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 UM^C)}wEYKegLlB)xA2bsKQQnMc>n+a literal 0 HcmV?d00001 diff --git a/Resources/route_phone_on_default_landscape.png b/Resources/route_phone_on_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..b35b9aa64c9455b9484391c6232f9893ae91ff53 GIT binary patch literal 3435 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 C0k(kv literal 0 HcmV?d00001 diff --git a/Resources/route_speaker_off_default.png b/Resources/route_speaker_off_default.png new file mode 100644 index 0000000000000000000000000000000000000000..908031972bea19cfb766248985d4c6dee851fa64 GIT binary patch literal 4466 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 H%uM(XyIxb6 literal 0 HcmV?d00001 diff --git a/Resources/route_speaker_off_disabled.png b/Resources/route_speaker_off_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..8294f5251284215d6787ecbb2051d1caa256cbd2 GIT binary patch literal 4329 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 literal 0 HcmV?d00001 diff --git a/Resources/route_speaker_off_disabled_landscape.png b/Resources/route_speaker_off_disabled_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..f750b1610b14c1fe9abe98f8d1f58dbb3c2f2a0b GIT binary patch literal 3604 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 H5X}2GVgU=v literal 0 HcmV?d00001 diff --git a/Resources/route_speaker_off_over.png b/Resources/route_speaker_off_over.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c5ce9f62ee204014afc8078853b794239bbeea GIT binary patch literal 4562 zcmbVQXH-*JyAD<9iXt6jkg5=BNurc#70{{Rv1AQF}>X=7u zVP_esy<2hbICbFl(Y5ul#JTwRBk(AIrZdh71vJ1QTu~M%gma*GFG>XfpmTG#vh}ew zF;+t2Fw%%q8R-Cw7ZnWvsHg{cA&?#@AD|P;)g7w}BES9<1ax;+1=+}($e4I(quku} zgYYQJAX6)3kOva(3{qDEsst!e2{0%h1TX;Oi6tlnsDl3DRie&Mx4|IbUm`vps-VA( zvNbUWYUA)Ipu99x3Mm7D02LIZA#(Bx3XtnSSs92dScdv4NI~S3Fn~#r|5*Y07?=S5SmB!&+!4Nnce##*$D@B!%A_QW65CKwHg77Z} z9TWkHclYvf$6#l+5t%)TAIhb#O>u3<~RG zprZ<+o=7{pJ1c2xLUa{iaCwM~tc(H-0)ffOYU*mkbfI!uGTKlronIXPhJ|QCwW(kj zOdhTYf#}M@Ai9chh>k8yS5r$tPh0jE)&NWJL12-nUwYlCdjG*H{#UG$HXeoW!QriN zIL}`dVD5(V!4ceWUO;V21)#VI0_l!D-Hrv!bYc$;FGurRT4Ml!9bllNX%#T}Eho@ZU{tU>47api$?-MG;0D={7R z%B^-ms$-euyd2YSoZ~bb;0O<{iaL$3+D{zVscyRyhY`Q{S4Q>Y=e|6oS+R>PbLM+i zZXZ7jcg9qtiOARr&^^@zSbW;TuruC}G+@D|wv8Lko&40+Sjtylo(NxU!|;3Aw=MEX znhBQjICgI2-8a@^iLkGj{V$>TO3Ogdmi_5@SNGuxgjF(cIzFwSN#^+ z#Q-}~H@(309Dz<3RCK`)dd4D_oGTfR^6J(`0;3d)IsTYmoOfTzySh<#E(acM>e+ts ztaB$kF^Xq8uEqZY(G@$B>U82w}vpWfkJjkyF zpu`Nhxv+F;5PsWE9QMp>$Kd-okA1RyjcooG%tjw;|^JK1GYK z;=HB&jgc*>=*t7sW?kOGkC}3FncM1gUK`f;>)J;u!zGO3m|;YB=C;p_xaQ;G9EQse zX=RA55Cq3z5*5A=gsL3Nyz=~KgnTtlhCAZtC6j`j zpBCD2%9;o&7p;nVHOJ1Zx-bnyS#L-r&U<<(Ec#g-2kQijT-M-i1hf38x=gK-@%C*5{{|LPA)cIj7+Wz>a}Z@PMf)2UlxDT(25A_ zq|;w6>$gHHCa*V{Pj;y`I*200Q4hN1UmACS+LNzIefo%E+I*3RaN?(lPrCdY5fCwJ zn4{z1i^(=+3^1r`KAE(X`pgP+Z(M#d3Pktn zfvLmQ+UT+wp1cK^N2=wH$~CA|SvKdq@exMaH8wfbgKqKmu0x$*e}`seN_Q{ct#og+ zX!um8FI2eVoz29xS3OSQG*M!Qc`lsOI_5&Sqn&~A6cH_AC?lQdYfytFO{XKOA{0tc zkIl;r%PK|MF85GwN+h{#=7k`nEb}I2ULFov2^FQdtMrIe=BCF*&{qDg66}%jiHq{E zD7IPZk#AgK2P$X~ejsMqX%B}nC#XA{|8CM$&)LmuW_Mk6%!7Zh7Upnp-S>knMi@a; zWReO9+k#?VC(SqAv#!t5^?HI<`q2MOZK7|Yz6kN|SxtGlzRWwGOD90ai6sx1_kO8c zd^}rAZ%?Ts6VptFj(v>HKyMEk&Dk~t46(}ZQK1=L^;MItEd>OK{!YH1k{n1oJ|9D%a*>BUV89&Yy4UQ*y2qlK#`}u}IX>Tnnjy5ZqpWU0G{L#=DX*QW$yixgp zR6-wYD_vGNt*1bD!%r1(?@!XA+hM-{T>?XH{lbYVTII#t3&d@V$Pr(ha)GrHU}E8H z$Uep7`8IJ5tqw1#o>8vfvEvC{9(_I~cIg?oD`nICFdaLx_P*;!Vn=)MnAX;D!=3eU z?@>J)3M5B+`RkOn`tA}|;_;Tw)xeoMG$b_7+L|w$!(r)8<&3iLn%O9QXS0y4JJ+6( zz@2N3FVDOTWjIT_Z6}Gafh<1#cfV4n3$19*M41POo}HUxagQAEj4Sej5GdMvx<=B11CNlgVMK&-W`% zkyL;AUq^bcsWe?ywlNt#LkcKVqEt+ut@v!~N4~`- z{CFmK(tCm}3uwFC8#UZ(IN8<@wmPE*S+eX~W+wKDJ0uz57rrp@9*mQ&1+~0NSJW`t zLo;ZSRXrRRE*H+OHQ(dDItWPzi`RWdYYH_%9Q~ZDpHp7?Wo6h+x4GI7(e#S?o0~g4 z!$a(twJ!jvYsQO*D|eYlYa+8*1ba*xSRc8qk>>d4y&{u#vA#+s*1wd%N)(A}dCIq#ORMvE)vVHA^@sXo@f!^efzA;3Bp?rim(w9LW7s z;PK^8_FkV87T5At`#ek*4^MVvz58T=0&nJ+R=!TKx3qc)5U<5--Fwrt6%k&A z{GQmAj?04XM~15BpgW~6W+0{+qx^H&3FMy)tVds&94qSbS0Ca^7Q2NS+s}tU8A7&{ za;=E-iJxg#6L-(dwH(7dmTn4WtPEg=@dHn$O@N6;`@5~T_=xs?8b{YH4}QGD`7t;Q zW819azt19iI`NT7ro~(#?{Bx??_0h^tS&<|8JsKi*UDyWXLle)@e8z%kJQmQy$Cr@ z#BFkgXqwXAEqTXe$ScjQ2A>Vz=E)A&ovodXp9^mNEtlcYUEwx57ACmw44h|sB;zrE zd@lEAiAG6EZk3fAqV+8{^k-LB*Tryj$1J_tBkjW?G2IDO(sizBfr=F=!QsGVX}87| zi_#`8{pexIJXMIOI7yrT$|61SnHZsuJN~U`nyl1KjymiQ8aW3)U&nh3+$_i4HRYsP zac(uE15pN(a*x&@%5APW%*R7&=38SJ-+1uu=$^(A?UgF$8%MC2mwg+<@k7dyRTax| zOsIyBaCs?v5nwi5_bVJDvYwK&b&wr1O!O-wN0RS_;e+hA7P4u;- z)a>mxM&kNv?L9kGf`#fUn*R8f!aZ8$Y8}G5QoIF}Yq+F4MC>kB}M(Y~!BmFqh5LPBT*C1aou2k1JlAkMFovhCTFkaEH6e=I|Ca0!?Q^Guly~YPpZqQ*(+u-uup7dv z#I7K6)6Cyba1LtDd6SWxf+7i?oR{Jt9CH<;ZgZSM^B3tY^vr0s?PpdA0V9Tnrlw-P zR{_1CtQXT{F)fiyLm8A(`ud6_P{OG(H8ZsO>AMeCmo+)WC7h~Lvs3GOS}p=iN#4Nk z762GL`khgJ9?OXHGiHXw=T7FCyNR3Pu9q`800oXoS}C+Cr!Con+F9rg%He5v(;aJj zp7=|)TYWL0>3v>ST@YSCZO(EmqQcbAljp8hk-hrV12$l5zQIzu{EG)@eeTcu{W)H*`*j~8xjQNL>R$3drW-iAWLLvYZYW^M>K zCXpHz?i9zOdd9hXQQ{&fm=LIqHN=XGl@QRV95RGUi=?x$TpaW#FIKW%7Q>;CpDLUP z9P}TjeB4M7B7;SRm>HXFr67<=o~V4E1kXZ zH-jCOO<{#IIpGXCWSNm1%!uaTpb}6234z9RbNiQ=&i<7sNy^|{G82w8M!;#b<+y%o zvpF8r|99h$+H9|VOe)-i%4S5fD3W^Y+4vhQ$=!c9w5%xc2D^q%P z!=sQ$dlVXJZ-GJD*`w|81ak)>>NnPz&gPKm6zXrg;S#&Qu;~Aa#S&RmGKazPVlX0q zcK|7j!C|n&7)%J!(;Q;xMy7<*mjy=41^OpmJ1Q$Yh8p6)V$dKzGmH)Yg9i?1I|ACo z0&PP46*&TJVsC;pBbcI0Oc2Z7|AP(rU$O?5I0Ij9kN;?w-y%s5E-(LWe#z$F<3puO z&J0U(I95mQRh5!j330Z=dvW{Uor#EC+pF5raaN~dH@X_Bl$E7s!4q6_^O!9tfnMKR ze8HpGZpFYyVt2_7nPFwy>~!8HQ$4+KnQ*PAQbzLn3MthWe-KIyk6L>jvT}K5mnEon zk(XaBW8U0+_)5devjg$dXL1`BDsjo7^Pn@jBXZSSwHc8`(nqgq^O zuwb4Y!S;UgT~q7e4@2&U?~b_dap+C!z36 z7V?f-(cOrh1)dr)!oi)q0hm?$eYTr_Y;||AfqvAkt;XS3GJ?K#`vfXXnmNPfxq+Iy zBiKD7-15Y!+MZ18ps*QLahJ8US=c?Q-rl2iX_unfgDa%5Q!cPtmw_?UB84sVy<U7JVUAQ0CK!_HKWQ?b=7x1hs!6?~m3lI4V*eG|(D4aO8<@)Z1Ri zlU>|UJ-)ZnTJGW}YA0x~nmPNW!%b8Hx`1wc_GVW-*{Wskle@4= zROi%_4fEu>PuDq`2+ydAt$@VFH-l!-2 zDBjNisyg9Qej^9dNOay5N>9_|mIum@a|ed~BMjJ#Ms>>xg19 zb>BlHtx{QJ+3`2BbsY%Q9gSD;$r~^kL19B(q6%kzz9p4S(YWjrBP^Wvb`3Z%{%GqNs91lh zdr5}tX|gl;{%)9B*Qu*5u^D{_m<^eNg!<9AtREo=VfV0#(h-Z^btS$RRb^W<5^F{j zg-tnDJ&0>Dys3OEBXxrxKUbl}JW-2!IU66X|Z(yY61P0{+HU%xf0 zSI*`(F?Ht$38_yx6w`pQa+xoNY~8C&e$Z(2Cauymjp)SO(|BXZM(_g=5C!1Dq`;fv z;Q1MAc^S4pg(*&&W5ccmt`j$cutQfb!$9iRL~=$p)UHuaYMj$A(8a8hksBgauwL}J zr-Pw?#U!o@h_7i(O%<@19S0M- zZY@cfzMK!ZK9o=&aCg)?;bYVW>2qx&jQ-0-E$x9?z~urSe_^Dzoi9}EAlC1@anmg` zMvhOJOp;o+daA>cG1_cn+pUCmhNd_-B?^B5t*%a)emnP0uR2+1Bs_$h|RAU?!o=J!JjkSMX)?y>P<@t1EmhhN1nv{>EpFa(qyObagAD~Ns>f61Ix zzA}^Mvx>N3{cQBh97fs93hBeS2-*{D?CZGsxf2Si*&Znc=a-bhFn+ekeF$v2)n{TQ zf3nA>Ld9PAIk!#hfJqhnRk?EMyQTI}tw&1g%0-AzrOKunxVH}Hm9Bi_p#SD21Q?EB+jNfjH8>N`X)rbR}+Djz5t{XNM|~>#BUrF?=&LWDfu{ zq@ik(T)xhNINf?P;iScOkhVVP>FuVJ&GqRJ?K9lT4(9t4LwCi)HBF{8L}g)~8Z52( zQ@odfXg{~W095|tgS)cQ=#AlX>Su*3cbvlz)Kwcb*Yn$Vb8KI2fXf9|rv$MUROVl< z1~z#CPMc)}pS4-i)l;hXI|lY|KXZq-^QVxfonJi38 zZZ(Ss1%$m#h-O4Vz!;tfU^m#mj|m=M03|Oa7Qo4C;cK=2>?)5D*DQ^-6SY30w(Hem$qli6kMTcJgYIjc0&B53GrH*AO6|K zAV)m67w1}Y*3j zx%{AsA037w&s0S#TghjQ^Mdax!JsP-R<(#Oe40V#k4k*{*684owKwHd<&5&anidw4LTwNN>h_K}hLA zzG`@}GT)>1Z)m~>UT&25((C8owspfnA|0h0iBMfG+aFXOcvI(; zC9V5#IYm6PYlK)Cmv>sn2^5!D*K7iOy5~K{r@Vld_Q^MSvFvrLG~Q?w#Cu6npcF^z zzwN6XTm$sPR^yu@Ee+70Kl%-UbM|I}`$9f==w=<#Ejq?b>|H~Z#*4`pDk|Wn82);t z?*#Gw{^t{uyz>0AlxVs7uM#_*Ll=`$0H-(6k@TD9i1H%)a|tQN0oL(`5p z1L*3($#t`Dd#DxYR*q8`493GP1ffc#pR_X^%!z#L!LNU^@zLbKoSt6bhs70rlQ9jR z)#;?!D%r6Xm;nIac;Dq+>C&f!pg^2VTr5NL^Om_2>|3@~f-N|=938~W)59Xjslh8v zigJMtu2a4Jx;<7pan+YsSnt15dHh0>g62A$PfwL>Pgj@c(*pcs62!YS_FfDd@a^-|+PW5Lr+mxe^|3qKzOQ<=|HC9{uGq4>Z0cC+$K+LtI#!;939cBJG&t zHHMqX5M^reitwQa+_Z*RJS)7qT$4u_m0ijpWn#xU#PRayInaUi2r|rcX?<4 literal 0 HcmV?d00001 diff --git a/Resources/route_speaker_on_default.png b/Resources/route_speaker_on_default.png new file mode 100644 index 0000000000000000000000000000000000000000..8cfdc036ad034fbcb66cd3ed35273d590be87b17 GIT binary patch literal 3624 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 literal 0 HcmV?d00001 diff --git a/Resources/route_speaker_on_default_landscape.png b/Resources/route_speaker_on_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..293e675e22e24831fc9acb55461b05707bad862c GIT binary patch literal 2908 zcmbVNdpuP87T+W$ovE3k65Xb8loIn`#>^lwGhQ8!Gbr+EhRsaOdzdjEN0MiXBd;RS z5l&K6oI+BR$GxK{QA(mXg_CD`oVt4|=iblf_Bnst{n`8XSnK;;YyH-5tx(r zA_=uZe+kOV*$qYIi$D~?#MC$ti^HLaL=&7Dfk?z{N8zzJJO&HBL}Q#8g+Qd>%~4+; zG~`Vb6ii{z?7sSfc2;P%L?WPIFjA@1L~3fn7lmMOWHMQ41CKX`5XRz2o`fkg=85$e zEzm%5pok-oaQHlw(jt?^50_Y>p-8_Rfh%x!{>v~={54Tf$}lpf0E08ZVz^x8xjv)C z5(fC6FusWvdqfIA3ls8=EiT zi`jeuit0{889FlqIXtCctMY=roRPcrh#k*zS5xwQ*V4^FkNEsDOQ z_QOu!198cAw1b-Qn(Lplb|dL5GZAvBN5;D6EVO?{zi!*)xWc9XzF2gq^ovwdc!Hmv{u3GTbi9AGk>0pu6S~M4xB{sVd<2Q&M zZ6n>Dy!J7+Mt_Xfo-}IKBW#|zsDonmP3iTvjYd}0XBKXgU6A;v_GtPlUW9UYyy?bU zIy4sK44ob%zw7&mt<4>cfJ=`oU$`0@+oh)Hi9Y8oeK>YIvY@w%*cDRmQ!u>jy_SM# z!6`|BZzI0U=IpzfZg=uQrXBA$u5Xrko)P)nAStohifeTHNLE2_%fw8<7E%o9V$=2C ziPFAM{>ITr#g^JfofG^Q^RhYb@$26O8?ENUvUYcQfR80`at*(=ceT8>B8K5L|S`} zOP0au)EQEMw4kfTQtXla(z#vR<#D$#9u{$m1pK;p&}EsY0b4U-_Z_47^M>Ur+bj0h zdR9zT4Hj&6s_6UPM}kiXj(cSlh{)IGc|TuK@j5=qDBtOry2te8VEs$OX)E^FS<^Wg zyTToYYHh9*8F=RiCZdKbJ9lmEXc*~#aV8V|uEym~B;#E|mf~!s|Iq52mj{H;ejz=) z8$KZ9-73pA3@BZ98oZ(nbKg7AMRAt5=%0j@7iUe!9-Y z>SniG%~otfNveB5-bu!ppVORTR>#w#BXAv=a?gE-@RC53-yQ>va+P`8oh>OqKpYIE z3ZQ|{!`vzx=4k+}6ea)fWbh$&WTianU+*u4cDjITtqCIrInQA7Uzc^WiO1-F8yh&}m?@H$~ zjpY^f^;@p)`V&i~u5!Fk9IoFu+Yx$f_Cj7V;YRx;Z`x*}0yW3|3CLsndce0BIY049#|fe8h;~ij zg`9xhJHMNF&BKPBeE$s$#foWBLGIK`NGx8rUVS2jjbO5oL%tur^V>yENK`{q=ZIEK zs_j&}z7pO%IIa?X6yd!25%KxVTiUAPoOhuHyGEq&-1Lq18Y?#>qVM(JYCDgdyf!mW zOFDDmNSo1(B|T-`TZ*{F)}P+#re=)zQ7MII%1%ZXnC$04aA6DUJ&8BIP9FPF?>O=K zKb*=KeTstgtCH~W)|b4olfH_^gTF7N{A8pX;5PeqZ9uo;kBB73gTyzxTMf(%@AmiS z|Muva^^;5aImQ8=(!&9tCOi5Nn=+dS1J+zkKTElmu~$RT^&}<@Opj}273PtKHXpZ$ z+DtG%+M;T6c9*@qeMwPXckdG$e5#}64Wb^JJrV5Bh~|k zs*v^+4A4@ELj!JVKq?Ri18kQ-tqFreLYN;?(5VYSqUofY(=vwUnlwm@kUnictJES? n(!NrXmAr2ZJN*`1<5Yl-9xaFCF$K_H82}vVF0?A!eewSWx=g~C literal 0 HcmV?d00001 diff --git a/Resources/routes_default.png b/Resources/routes_default.png new file mode 100644 index 0000000000000000000000000000000000000000..a0502e2934f56996fedde27e7b7c871609664f4d GIT binary patch literal 3239 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 vb!NA+hU2XQy5AvKq1w2t?lAj_eAq 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 literal 0 HcmV?d00001 diff --git a/Resources/routes_over_landscape.png b/Resources/routes_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..958cdc28cb6ff6e5941a10b52e9e2f25a137aee7 GIT binary patch literal 3778 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 literal 0 HcmV?d00001 diff --git a/Resources/routes_selected.png b/Resources/routes_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..9930fd81ec4ea0fec1f9514eb8db935c00dfa4ec GIT binary patch literal 4972 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 literal 0 HcmV?d00001 diff --git a/Resources/routes_selected_landscape.png b/Resources/routes_selected_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..54a0aa48cb40589c762ed7af0f3a01c296077e7a GIT binary patch literal 4617 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 literal 0 HcmV?d00001 diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist index a44da0b0c..170d97bda 100644 --- a/linphone.ldb/Contents.plist +++ b/linphone.ldb/Contents.plist @@ -7915,17 +7915,17 @@ backup - 12 + 13 class BLWrapperHandle name - LinphoneUI/UICallBar/12/UICallBar.xib + LinphoneUI/UICallBar/13/UICallBar.xib change date - 2012-11-13T08:39:33Z + 2013-03-19T11:14:29Z changed values class @@ -7935,7 +7935,7 @@ flags 0 hash - 6ce20b228103dd1de3d5c07ecc8cc68a + 9f9815d56c4734db373f49582fd9605c name UICallBar.xib @@ -8839,6 +8839,312 @@ snapshots + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; accessibilityLabel = "Route"; ObjectID = "164"; + errors + + flags + 0 + key + 164.accessibilityLabel + localizations + + en + Route + fr + Route + + snapshots + + + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; normalTitle = "Route"; ObjectID = "164"; + errors + + flags + 0 + key + 164.normalTitle + localizations + + en + Route + fr + Route + + snapshots + + + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; accessibilityLabel = "Speaker"; ObjectID = "168"; + errors + + flags + 0 + key + 168.accessibilityLabel + localizations + + en + Speaker + fr + Haut parleur + ru + Динамик + + snapshots + + + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; normalTitle = "Speaker"; ObjectID = "168"; + errors + + flags + 0 + key + 168.normalTitle + localizations + + en + Speaker + fr + Haut parleur + ru + Динамик + + snapshots + + + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; accessibilityLabel = "Receiver"; ObjectID = "169"; + errors + + flags + 0 + key + 169.accessibilityLabel + localizations + + en + Receiver + fr + Écouteur + + snapshots + + + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; normalTitle = "Receiver"; ObjectID = "169"; + errors + + flags + 0 + key + 169.normalTitle + localizations + + en + Receiver + fr + Écouteur + + snapshots + + + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; accessibilityLabel = "Bluetooth"; ObjectID = "174"; + errors + + flags + 0 + key + 174.accessibilityLabel + localizations + + en + Bluetooth + fr + Bluetooth + + snapshots + + + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; normalTitle = "Bluetooth"; ObjectID = "174"; + errors + + flags + 0 + key + 174.normalTitle + localizations + + en + Bluetooth + fr + Bluetooth + + snapshots + + + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; normalTitle = "Route"; ObjectID = "183"; + errors + + flags + 0 + key + 183.normalTitle + localizations + + en + Route + fr + Route + + snapshots + + + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; normalTitle = "Speaker"; ObjectID = "187"; + errors + + flags + 0 + key + 187.normalTitle + localizations + + en + Speaker + fr + Haut parleur + ru + Динамик + + snapshots + + + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; normalTitle = "Receiver"; ObjectID = "188"; + errors + + flags + 0 + key + 188.normalTitle + localizations + + en + Receiver + fr + Écouteur + + snapshots + + + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Class = "IBUIButton"; normalTitle = "Bluetooth"; ObjectID = "193"; + errors + + flags + 0 + key + 193.normalTitle + localizations + + en + Bluetooth + fr + Bluetooth + + snapshots + + old objects @@ -9085,11 +9391,11 @@ versions en - 12 + 13 fr - 12 + 13 ru - 12 + 13 diff --git a/linphone.ldb/Resources/LinphoneUI/UICallBar/12/UICallBar.xib b/linphone.ldb/Resources/LinphoneUI/UICallBar/13/UICallBar.xib similarity index 79% rename from linphone.ldb/Resources/LinphoneUI/UICallBar/12/UICallBar.xib rename to linphone.ldb/Resources/LinphoneUI/UICallBar/13/UICallBar.xib index 3398db0d7..103729845 100644 --- a/linphone.ldb/Resources/LinphoneUI/UICallBar/12/UICallBar.xib +++ b/linphone.ldb/Resources/LinphoneUI/UICallBar/13/UICallBar.xib @@ -1,14 +1,14 @@ - 1536 - 11G63 - 2840 - 1138.51 - 569.00 + 1552 + 12D78 + 3084 + 1187.37 + 626.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1926 + 2083 IBProxyObject @@ -42,7 +42,7 @@ -2147483355 {{0, 335}, {320, 125}} - + _NS:9 1 @@ -64,7 +64,6 @@ 274 {281, 260} - _NS:9 2 @@ -80,7 +79,6 @@ 292 {{-20, 10}, {107, 54}} - 1 @@ -124,7 +122,6 @@ 292 {{87, 10}, {106, 54}} - NO NO @@ -152,7 +149,6 @@ 292 {{193, 10}, {107, 54}} - NO NO @@ -180,7 +176,6 @@ 292 {{-20, 72}, {107, 54}} - NO NO @@ -208,7 +203,6 @@ 292 {{87, 72}, {106, 54}} - NO NO @@ -236,7 +230,6 @@ 292 {{193, 72}, {107, 54}} - NO NO @@ -264,7 +257,6 @@ 292 {{-20, 134}, {107, 54}} - NO NO @@ -292,7 +284,6 @@ 292 {{87, 134}, {106, 54}} - NO NO @@ -320,7 +311,6 @@ 292 {{193, 134}, {107, 54}} - NO NO @@ -348,7 +338,6 @@ 292 {{-20, 196}, {107, 54}} - NO NO @@ -376,7 +365,6 @@ 292 {{87, 196}, {106, 54}} - NO NO @@ -404,7 +392,6 @@ 292 {{193, 196}, {107, 54}} - NO NO @@ -430,7 +417,6 @@ {{20, 57}, {281, 260}} - _NS:9 @@ -440,6 +426,179 @@ 1 IBCocoaTouchFramework + + + 293 + + + + 292 + {80, 63} + + + _NS:9 + NO + 30 + + Bluetooth + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Bluetooth + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_bluetooth_off_over.png + + + NSImage + route_bluetooth_off_disabled.png + + + NSImage + route_bluetooth_on_default.png + + + NSImage + route_bluetooth_off_default.png + + + 1 + 13 + + + Helvetica + 13 + 16 + + + + + 292 + {{0, 60}, {80, 63}} + + + _NS:9 + NO + 31 + + Receiver + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Receiver + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_phone_off_over.png + + + NSImage + route_phone_off_disabled.png + + + NSImage + route_phone_on_default.png + + + NSImage + route_phone_off_default.png + + + + + + + 292 + {{0, 118}, {80, 67}} + + + _NS:9 + NO + 32 + + Speaker + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Speaker + + + + + + NSImage + route_speaker_off_over.png + + + NSImage + route_speaker_off_disabled.png + + + NSImage + route_speaker_on_default.png + + + NSImage + route_speaker_off_default.png + + + + + + {{160, 156}, {80, 185}} + + + _NS:9 + + 33 + IBCocoaTouchFramework + 293 @@ -449,7 +608,6 @@ 292 {{3, 0}, {77, 68}} - _NS:9 NO @@ -492,23 +650,14 @@ NSImage options_transfer_default.png - - 1 - 13 - - - Helvetica - 13 - 16 - + + 292 {{3, 58}, {77, 68}} - - _NS:9 NO 17 @@ -542,12 +691,11 @@ options_add_default.png - + {{240, 208}, {80, 126}} - _NS:9 @@ -563,7 +711,6 @@ 292 {{-44, -8}, {44, 90}} - _NS:9 100 @@ -579,7 +726,6 @@ 292 {{320, -8}, {44, 90}} - _NS:9 101 @@ -595,8 +741,7 @@ 290 {{0, 135}, {320, 2000}} - - + _NS:9 1 @@ -610,7 +755,6 @@ 292 {80, 67} - _NS:9 NO @@ -650,14 +794,13 @@ video_off_default.png - +

-2147483356 {{20, 20}, {37, 37}} - _NS:9 NO @@ -670,7 +813,6 @@ 292 {{80, 0}, {80, 67}} - _NS:9 NO @@ -710,15 +852,14 @@ micro_off_default.png - + 292 {{160, 0}, {80, 67}} - - + _NS:9 NO 22 @@ -757,14 +898,68 @@ speaker_off_default.png - + + + + + 292 + {{160, 0}, {80, 67}} + + + _NS:9 + NO + 29 + + Route + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 38 + 0.0 + 0.0 + 0.0 + Route + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + + NSImage + routes_over.png + + + NSImage + routes_disabled.png + + + NSImage + routes_selected.png + + + NSImage + routes_default.png + + + 292 {{240, 0}, {80, 67}} - _NS:9 NO @@ -804,14 +999,13 @@ options_default.png - + 264 {{0, 67}, {105, 68}} - _NS:9 NO @@ -848,7 +1042,6 @@ -2147483384 {{0, 67}, {105, 68}} - _NS:9 NO @@ -878,7 +1071,6 @@ 264 {{105, 67}, {111, 68}} - _NS:9 NO @@ -908,7 +1100,6 @@ 264 {{215, 67}, {105, 68}} - _NS:9 NO @@ -944,7 +1135,6 @@ {{0, 325}, {320, 135}} - _NS:9 @@ -954,7 +1144,6 @@ {320, 460} - _NS:9 @@ -969,7 +1158,6 @@ -2147483355 {{0, 248}, {480, 72}} - _NS:9 @@ -992,7 +1180,6 @@ 274 {281, 260} - _NS:9 2 @@ -1005,7 +1192,6 @@ 292 {{-20, 10}, {107, 54}} - 1 @@ -1028,7 +1214,6 @@ 292 {{87, 10}, {106, 54}} - NO NO @@ -1047,7 +1232,6 @@ 292 {{193, 10}, {107, 54}} - NO NO @@ -1066,7 +1250,6 @@ 292 {{-20, 72}, {107, 54}} - NO NO @@ -1085,7 +1268,6 @@ 292 {{87, 72}, {106, 54}} - NO NO @@ -1104,7 +1286,6 @@ 292 {{193, 72}, {107, 54}} - NO NO @@ -1123,7 +1304,6 @@ 292 {{-20, 134}, {107, 54}} - NO NO @@ -1142,7 +1322,6 @@ 292 {{87, 134}, {106, 54}} - NO NO @@ -1161,7 +1340,6 @@ 292 {{193, 134}, {107, 54}} - NO NO @@ -1180,7 +1358,6 @@ 292 {{-20, 196}, {107, 54}} - NO NO @@ -1199,7 +1376,6 @@ 292 {{87, 196}, {106, 54}} - NO NO @@ -1218,7 +1394,7 @@ 292 {{193, 196}, {107, 54}} - + NO NO 14 @@ -1234,13 +1410,178 @@ {{91, 0}, {281, 260}} - _NS:9 1 IBCocoaTouchFramework + + + 293 + + + + 292 + {65, 57} + + + _NS:9 + NO + 30 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Bluetooth + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_bluetooth_off_over_landscape.png + + + NSImage + route_bluetooth_off_disabled_landscape.png + + + NSImage + route_bluetooth_on_default_landscape.png + + + NSImage + route_bluetooth_off_default_landscape.png + + + + + + + 292 + {{0, 55}, {65, 57}} + + + _NS:9 + NO + 31 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Receiver + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + NSImage + route_phone_off_over_landscape.png + + + NSImage + route_phone_off_disabled_landscape.png + + + NSImage + route_phone_on_default_landscape.png + + + NSImage + route_phone_off_default_landscape.png + + + + + + + 292 + {{0, 108}, {65, 57}} + + + _NS:9 + NO + 32 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 28 + 0.0 + 0.0 + 0.0 + Speaker + + + + + + NSImage + route_speaker_off_over_landscape.png + + + NSImage + route_speaker_off_disabled_landscape.png + + + NSImage + route_speaker_on_default_landscape.png + + + NSImage + route_speaker_off_default_landscape.png + + + + + + {{285, 85}, {65, 170}} + + + _NS:9 + + 33 + IBCocoaTouchFramework + 293 @@ -1250,7 +1591,6 @@ 292 {65, 55} - _NS:9 NO @@ -1285,15 +1625,13 @@ options_transfer_default_landscape.png - + 292 {{0, 51}, {65, 55}} - - _NS:9 NO 17 @@ -1327,12 +1665,11 @@ options_add_default_landscape.png - + {{415, 140}, {65, 105}} - _NS:9 @@ -1348,7 +1685,6 @@ 292 {{-44, -8}, {44, 90}} - _NS:9 100 @@ -1361,7 +1697,6 @@ 292 {{480, -8}, {44, 90}} - _NS:9 101 @@ -1374,8 +1709,7 @@ 290 {{0, 82}, {480, 2000}} - - + _NS:9 1 @@ -1389,7 +1723,6 @@ 292 {{65, 0}, {65, 82}} - _NS:9 NO @@ -1429,14 +1762,13 @@ video_off_default_landscape.png - + -2147483356 {{79, 20}, {37, 37}} - _NS:9 NO @@ -1449,7 +1781,6 @@ 292 {{130, 0}, {65, 82}} - _NS:9 NO @@ -1489,15 +1820,14 @@ micro_off_default_landscape.png - + 292 {{285, 0}, {65, 82}} - - + _NS:9 NO 22 @@ -1536,14 +1866,68 @@ speaker_off_default_landscape.png - + + + + + 292 + {{285, 0}, {65, 82}} + + + _NS:9 + NO + 29 + + + + IBCocoaTouchFramework + 0 + 0 + NO + NO + 24 + 0.0 + 0.0 + 0.0 + Route + + 2 + MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA + + + 2 + MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA + + + 2 + MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA + + + + + NSImage + routes_over_landscape.png + + + NSImage + routes_disabled_landscape.png + + + NSImage + routes_selected_landscape.png + + + NSImage + routes_default_landscape.png + + + 292 {{350, 0}, {65, 82}} - _NS:9 NO @@ -1583,14 +1967,13 @@ options_default_landscape.png - + 264 {65, 82} - _NS:9 NO @@ -1624,7 +2007,6 @@ -2147483384 {65, 82} - _NS:9 NO @@ -1654,7 +2036,6 @@ 264 {{195, 0}, {90, 82}} - _NS:9 NO @@ -1684,7 +2065,6 @@ 264 {{415, 0}, {65, 82}} - _NS:9 NO @@ -1717,7 +2097,6 @@ {{0, 238}, {480, 82}} - _NS:9 @@ -1727,7 +2106,6 @@ {480, 320} - _NS:9 @@ -1956,6 +2334,46 @@ 140 + + + routesButton + + + + 202 + + + + routesBluetoothButton + + + + 203 + + + + routesReceiverButton + + + + 204 + + + + routesSpeakerButton + + + + 205 + + + + routesView + + + + 206 + onPadClick: @@ -2098,6 +2516,42 @@ 133 + + + onRoutesClick: + + + 7 + + 211 + + + + onRoutesSpeakerClick: + + + 7 + + 210 + + + + onRoutesReceiverClick: + + + 7 + + 209 + + + + onRoutesBluetoothClick: + + + 7 + + 208 + @@ -2126,6 +2580,7 @@ + Portrait View @@ -2153,6 +2608,7 @@ + buttons @@ -2340,6 +2796,7 @@ + Landscape View @@ -2481,6 +2938,7 @@ + buttons @@ -2581,6 +3039,76 @@ leftPadding + + 164 + + + routesButton + + + 167 + + + + + + + + routesView + + + 168 + + + routesSpeakerButton + + + 169 + + + routesReceiverButton + + + 174 + + + routesBluetoothButton + + + 183 + + + routesButton + + + 186 + + + + + + + + routesView + + + 187 + + + routesSpeakerButton + + + 188 + + + routesReceiverButton + + + 193 + + + routesBluetoothButton + @@ -2591,7 +3119,7 @@ UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UITransparentView com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2683,6 +3211,34 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2743,7 +3299,7 @@ UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2753,289 +3309,9 @@ - 163 - - - - - TPMultiLayoutViewController - UIViewController - - UIView - UIView - - - - landscapeView - UIView - - - portraitView - UIView - - - - IBProjectSource - ./Classes/TPMultiLayoutViewController.h - - - - UICallBar - TPMultiLayoutViewController - - id - id - id - id - id - - - - onConferenceClick: - id - - - onOptionsAddClick: - id - - - onOptionsClick: - id - - - onOptionsTransferClick: - id - - - onPadClick: - id - - - - UIButton - UIToggleButton - UIDigitButton - UIDigitButton - UIDigitButton - UIHangUpButton - UIMicroButton - UIDigitButton - UIDigitButton - UIButton - UIToggleButton - UIButton - UIView - UIView - UIPauseButton - UIDigitButton - UIDigitButton - UIDigitButton - UISpeakerButton - UIDigitButton - UIDigitButton - UIDigitButton - UIVideoButton - UIDigitButton - - - - conferenceButton - UIButton - - - dialerButton - UIToggleButton - - - eightButton - UIDigitButton - - - fiveButton - UIDigitButton - - - fourButton - UIDigitButton - - - hangupButton - UIHangUpButton - - - microButton - UIMicroButton - - - nineButton - UIDigitButton - - - oneButton - UIDigitButton - - - optionsAddButton - UIButton - - - optionsButton - UIToggleButton - - - optionsTransferButton - UIButton - - - optionsView - UIView - - - padView - UIView - - - pauseButton - UIPauseButton - - - sevenButton - UIDigitButton - - - sharpButton - UIDigitButton - - - sixButton - UIDigitButton - - - speakerButton - UISpeakerButton - - - starButton - UIDigitButton - - - threeButton - UIDigitButton - - - twoButton - UIDigitButton - - - videoButton - UIVideoButton - - - zeroButton - UIDigitButton - - - - IBProjectSource - ./Classes/UICallBar.h - - - - UIDigitButton - UILongTouchButton - - addressField - UITextField - - - addressField - - addressField - UITextField - - - - IBProjectSource - ./Classes/UIDigitButton.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UILongTouchButton - UIButton - - IBProjectSource - ./Classes/UILongTouchButton.h - - - - UIMicroButton - UIToggleButton - - IBProjectSource - ./Classes/UIMicroButton.h - - - - UIPauseButton - UIToggleButton - - IBProjectSource - ./Classes/UIPauseButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - ./Classes/UISpeakerButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - UITransparentView - UIView - - IBProjectSource - ./Classes/UITransparentView.h - - - - UIVideoButton - UIToggleButton - - waitView - UIActivityIndicatorView - - - waitView - - waitView - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/UIVideoButton.h - - - + 211 + 0 IBCocoaTouchFramework YES @@ -3117,6 +3393,38 @@ {130, 163} {209, 136} {130, 163} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 127} + {130, 114} + {160, 134} + {130, 163} + {160, 134} + {130, 163} + {160, 134} + {130, 163} + {160, 134} + {130, 163} {160, 134} {130, 163} {160, 134} @@ -3134,6 +3442,6 @@ {160, 134} {130, 163} - 1926 + 2083 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 47d44ea1f..28efeaf74 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -7,6 +7,70 @@ objects = { /* Begin PBXBuildFile section */ + 1599105316F746B2007BF52B /* route_bluetooth_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104316F746B2007BF52B /* route_bluetooth_off_default_landscape.png */; }; + 1599105416F746B2007BF52B /* route_bluetooth_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104316F746B2007BF52B /* route_bluetooth_off_default_landscape.png */; }; + 1599105516F746B2007BF52B /* route_bluetooth_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104416F746B2007BF52B /* route_bluetooth_off_disabled_landscape.png */; }; + 1599105616F746B2007BF52B /* route_bluetooth_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104416F746B2007BF52B /* route_bluetooth_off_disabled_landscape.png */; }; + 1599105716F746B2007BF52B /* route_bluetooth_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104516F746B2007BF52B /* route_bluetooth_off_over_landscape.png */; }; + 1599105816F746B2007BF52B /* route_bluetooth_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104516F746B2007BF52B /* route_bluetooth_off_over_landscape.png */; }; + 1599105916F746B2007BF52B /* route_bluetooth_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104616F746B2007BF52B /* route_bluetooth_on_default_landscape.png */; }; + 1599105A16F746B2007BF52B /* route_bluetooth_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104616F746B2007BF52B /* route_bluetooth_on_default_landscape.png */; }; + 1599105B16F746B2007BF52B /* route_phone_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104716F746B2007BF52B /* route_phone_off_default_landscape.png */; }; + 1599105C16F746B2007BF52B /* route_phone_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104716F746B2007BF52B /* route_phone_off_default_landscape.png */; }; + 1599105D16F746B2007BF52B /* route_phone_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104816F746B2007BF52B /* route_phone_off_disabled_landscape.png */; }; + 1599105E16F746B2007BF52B /* route_phone_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104816F746B2007BF52B /* route_phone_off_disabled_landscape.png */; }; + 1599105F16F746B2007BF52B /* route_phone_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104916F746B2007BF52B /* route_phone_off_over_landscape.png */; }; + 1599106016F746B2007BF52B /* route_phone_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104916F746B2007BF52B /* route_phone_off_over_landscape.png */; }; + 1599106116F746B2007BF52B /* route_phone_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104A16F746B2007BF52B /* route_phone_on_default_landscape.png */; }; + 1599106216F746B2007BF52B /* route_phone_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104A16F746B2007BF52B /* route_phone_on_default_landscape.png */; }; + 1599106316F746B2007BF52B /* route_speaker_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104B16F746B2007BF52B /* route_speaker_off_default_landscape.png */; }; + 1599106416F746B2007BF52B /* route_speaker_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104B16F746B2007BF52B /* route_speaker_off_default_landscape.png */; }; + 1599106516F746B2007BF52B /* route_speaker_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104C16F746B2007BF52B /* route_speaker_off_disabled_landscape.png */; }; + 1599106616F746B2007BF52B /* route_speaker_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104C16F746B2007BF52B /* route_speaker_off_disabled_landscape.png */; }; + 1599106716F746B2007BF52B /* route_speaker_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104D16F746B2007BF52B /* route_speaker_off_over_landscape.png */; }; + 1599106816F746B2007BF52B /* route_speaker_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104D16F746B2007BF52B /* route_speaker_off_over_landscape.png */; }; + 1599106916F746B2007BF52B /* route_speaker_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104E16F746B2007BF52B /* route_speaker_on_default_landscape.png */; }; + 1599106A16F746B2007BF52B /* route_speaker_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104E16F746B2007BF52B /* route_speaker_on_default_landscape.png */; }; + 1599106B16F746B2007BF52B /* routes_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104F16F746B2007BF52B /* routes_default_landscape.png */; }; + 1599106C16F746B2007BF52B /* routes_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104F16F746B2007BF52B /* routes_default_landscape.png */; }; + 1599106D16F746B2007BF52B /* routes_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599105016F746B2007BF52B /* routes_disabled_landscape.png */; }; + 1599106E16F746B2007BF52B /* routes_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599105016F746B2007BF52B /* routes_disabled_landscape.png */; }; + 1599106F16F746B2007BF52B /* routes_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599105116F746B2007BF52B /* routes_over_landscape.png */; }; + 1599107016F746B2007BF52B /* routes_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599105116F746B2007BF52B /* routes_over_landscape.png */; }; + 1599107116F746B2007BF52B /* routes_selected_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599105216F746B2007BF52B /* routes_selected_landscape.png */; }; + 1599107216F746B2007BF52B /* routes_selected_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599105216F746B2007BF52B /* routes_selected_landscape.png */; }; + 15AF3C5416F37A3E00FC52EC /* route_bluetooth_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C4C16F37A3E00FC52EC /* route_bluetooth_off_default.png */; }; + 15AF3C5516F37A3E00FC52EC /* route_bluetooth_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C4C16F37A3E00FC52EC /* route_bluetooth_off_default.png */; }; + 15AF3C5616F37A3E00FC52EC /* route_bluetooth_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C4D16F37A3E00FC52EC /* route_bluetooth_off_disabled.png */; }; + 15AF3C5716F37A3E00FC52EC /* route_bluetooth_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C4D16F37A3E00FC52EC /* route_bluetooth_off_disabled.png */; }; + 15AF3C5816F37A3E00FC52EC /* route_bluetooth_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C4E16F37A3E00FC52EC /* route_bluetooth_off_over.png */; }; + 15AF3C5916F37A3E00FC52EC /* route_bluetooth_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C4E16F37A3E00FC52EC /* route_bluetooth_off_over.png */; }; + 15AF3C5C16F37A3E00FC52EC /* route_bluetooth_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C5016F37A3E00FC52EC /* route_bluetooth_on_default.png */; }; + 15AF3C5D16F37A3E00FC52EC /* route_bluetooth_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C5016F37A3E00FC52EC /* route_bluetooth_on_default.png */; }; + 15AF3C6C16F37A4A00FC52EC /* route_phone_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C6416F37A4A00FC52EC /* route_phone_off_default.png */; }; + 15AF3C6D16F37A4A00FC52EC /* route_phone_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C6416F37A4A00FC52EC /* route_phone_off_default.png */; }; + 15AF3C6E16F37A4A00FC52EC /* route_phone_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C6516F37A4A00FC52EC /* route_phone_off_disabled.png */; }; + 15AF3C6F16F37A4A00FC52EC /* route_phone_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C6516F37A4A00FC52EC /* route_phone_off_disabled.png */; }; + 15AF3C7016F37A4A00FC52EC /* route_phone_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C6616F37A4A00FC52EC /* route_phone_off_over.png */; }; + 15AF3C7116F37A4A00FC52EC /* route_phone_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C6616F37A4A00FC52EC /* route_phone_off_over.png */; }; + 15AF3C7416F37A4A00FC52EC /* route_phone_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C6816F37A4A00FC52EC /* route_phone_on_default.png */; }; + 15AF3C7516F37A4A00FC52EC /* route_phone_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C6816F37A4A00FC52EC /* route_phone_on_default.png */; }; + 15AF3C8416F37A5500FC52EC /* route_speaker_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C7C16F37A5500FC52EC /* route_speaker_off_default.png */; }; + 15AF3C8516F37A5500FC52EC /* route_speaker_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C7C16F37A5500FC52EC /* route_speaker_off_default.png */; }; + 15AF3C8616F37A5500FC52EC /* route_speaker_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C7D16F37A5500FC52EC /* route_speaker_off_disabled.png */; }; + 15AF3C8716F37A5500FC52EC /* route_speaker_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C7D16F37A5500FC52EC /* route_speaker_off_disabled.png */; }; + 15AF3C8816F37A5500FC52EC /* route_speaker_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C7E16F37A5500FC52EC /* route_speaker_off_over.png */; }; + 15AF3C8916F37A5500FC52EC /* route_speaker_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C7E16F37A5500FC52EC /* route_speaker_off_over.png */; }; + 15AF3C8C16F37A5500FC52EC /* route_speaker_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C8016F37A5500FC52EC /* route_speaker_on_default.png */; }; + 15AF3C8D16F37A5500FC52EC /* route_speaker_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C8016F37A5500FC52EC /* route_speaker_on_default.png */; }; + 15AF3C9816F37A5D00FC52EC /* routes_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C9416F37A5D00FC52EC /* routes_default.png */; }; + 15AF3C9916F37A5D00FC52EC /* routes_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C9416F37A5D00FC52EC /* routes_default.png */; }; + 15AF3C9A16F37A5D00FC52EC /* routes_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C9516F37A5D00FC52EC /* routes_disabled.png */; }; + 15AF3C9B16F37A5D00FC52EC /* routes_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C9516F37A5D00FC52EC /* routes_disabled.png */; }; + 15AF3C9C16F37A5D00FC52EC /* routes_over.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C9616F37A5D00FC52EC /* routes_over.png */; }; + 15AF3C9D16F37A5D00FC52EC /* routes_over.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C9616F37A5D00FC52EC /* routes_over.png */; }; + 15AF3C9E16F37A5D00FC52EC /* routes_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C9716F37A5D00FC52EC /* routes_selected.png */; }; + 15AF3C9F16F37A5D00FC52EC /* routes_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 15AF3C9716F37A5D00FC52EC /* routes_selected.png */; }; 1D3623260D0F684500981E51 /* LinphoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */; }; 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; @@ -1345,6 +1409,38 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 1599104316F746B2007BF52B /* route_bluetooth_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_bluetooth_off_default_landscape.png; path = Resources/route_bluetooth_off_default_landscape.png; sourceTree = ""; }; + 1599104416F746B2007BF52B /* route_bluetooth_off_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_bluetooth_off_disabled_landscape.png; path = Resources/route_bluetooth_off_disabled_landscape.png; sourceTree = ""; }; + 1599104516F746B2007BF52B /* route_bluetooth_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_bluetooth_off_over_landscape.png; path = Resources/route_bluetooth_off_over_landscape.png; sourceTree = ""; }; + 1599104616F746B2007BF52B /* route_bluetooth_on_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_bluetooth_on_default_landscape.png; path = Resources/route_bluetooth_on_default_landscape.png; sourceTree = ""; }; + 1599104716F746B2007BF52B /* route_phone_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_phone_off_default_landscape.png; path = Resources/route_phone_off_default_landscape.png; sourceTree = ""; }; + 1599104816F746B2007BF52B /* route_phone_off_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_phone_off_disabled_landscape.png; path = Resources/route_phone_off_disabled_landscape.png; sourceTree = ""; }; + 1599104916F746B2007BF52B /* route_phone_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_phone_off_over_landscape.png; path = Resources/route_phone_off_over_landscape.png; sourceTree = ""; }; + 1599104A16F746B2007BF52B /* route_phone_on_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_phone_on_default_landscape.png; path = Resources/route_phone_on_default_landscape.png; sourceTree = ""; }; + 1599104B16F746B2007BF52B /* route_speaker_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_speaker_off_default_landscape.png; path = Resources/route_speaker_off_default_landscape.png; sourceTree = ""; }; + 1599104C16F746B2007BF52B /* route_speaker_off_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_speaker_off_disabled_landscape.png; path = Resources/route_speaker_off_disabled_landscape.png; sourceTree = ""; }; + 1599104D16F746B2007BF52B /* route_speaker_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_speaker_off_over_landscape.png; path = Resources/route_speaker_off_over_landscape.png; sourceTree = ""; }; + 1599104E16F746B2007BF52B /* route_speaker_on_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_speaker_on_default_landscape.png; path = Resources/route_speaker_on_default_landscape.png; sourceTree = ""; }; + 1599104F16F746B2007BF52B /* routes_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = routes_default_landscape.png; path = Resources/routes_default_landscape.png; sourceTree = ""; }; + 1599105016F746B2007BF52B /* routes_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = routes_disabled_landscape.png; path = Resources/routes_disabled_landscape.png; sourceTree = ""; }; + 1599105116F746B2007BF52B /* routes_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = routes_over_landscape.png; path = Resources/routes_over_landscape.png; sourceTree = ""; }; + 1599105216F746B2007BF52B /* routes_selected_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = routes_selected_landscape.png; path = Resources/routes_selected_landscape.png; sourceTree = ""; }; + 15AF3C4C16F37A3E00FC52EC /* route_bluetooth_off_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_bluetooth_off_default.png; path = Resources/route_bluetooth_off_default.png; sourceTree = ""; }; + 15AF3C4D16F37A3E00FC52EC /* route_bluetooth_off_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_bluetooth_off_disabled.png; path = Resources/route_bluetooth_off_disabled.png; sourceTree = ""; }; + 15AF3C4E16F37A3E00FC52EC /* route_bluetooth_off_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_bluetooth_off_over.png; path = Resources/route_bluetooth_off_over.png; sourceTree = ""; }; + 15AF3C5016F37A3E00FC52EC /* route_bluetooth_on_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_bluetooth_on_default.png; path = Resources/route_bluetooth_on_default.png; sourceTree = ""; }; + 15AF3C6416F37A4A00FC52EC /* route_phone_off_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_phone_off_default.png; path = Resources/route_phone_off_default.png; sourceTree = ""; }; + 15AF3C6516F37A4A00FC52EC /* route_phone_off_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_phone_off_disabled.png; path = Resources/route_phone_off_disabled.png; sourceTree = ""; }; + 15AF3C6616F37A4A00FC52EC /* route_phone_off_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_phone_off_over.png; path = Resources/route_phone_off_over.png; sourceTree = ""; }; + 15AF3C6816F37A4A00FC52EC /* route_phone_on_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_phone_on_default.png; path = Resources/route_phone_on_default.png; sourceTree = ""; }; + 15AF3C7C16F37A5500FC52EC /* route_speaker_off_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_speaker_off_default.png; path = Resources/route_speaker_off_default.png; sourceTree = ""; }; + 15AF3C7D16F37A5500FC52EC /* route_speaker_off_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_speaker_off_disabled.png; path = Resources/route_speaker_off_disabled.png; sourceTree = ""; }; + 15AF3C7E16F37A5500FC52EC /* route_speaker_off_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_speaker_off_over.png; path = Resources/route_speaker_off_over.png; sourceTree = ""; }; + 15AF3C8016F37A5500FC52EC /* route_speaker_on_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_speaker_on_default.png; path = Resources/route_speaker_on_default.png; sourceTree = ""; }; + 15AF3C9416F37A5D00FC52EC /* routes_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = routes_default.png; path = Resources/routes_default.png; sourceTree = ""; }; + 15AF3C9516F37A5D00FC52EC /* routes_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = routes_disabled.png; path = Resources/routes_disabled.png; sourceTree = ""; }; + 15AF3C9616F37A5D00FC52EC /* routes_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = routes_over.png; path = Resources/routes_over.png; sourceTree = ""; }; + 15AF3C9716F37A5D00FC52EC /* routes_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = routes_selected.png; path = Resources/routes_selected.png; sourceTree = ""; }; 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1D3623240D0F684500981E51 /* LinphoneAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneAppDelegate.h; sourceTree = ""; }; 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneAppDelegate.m; sourceTree = ""; }; @@ -3321,6 +3417,38 @@ 2237D4081084D7A9001383EE /* ring.wav */, 22F254801073D99800AC9B3F /* ringback.wav */, 70571E1913FABCB000CDD3C2 /* rootca.pem */, + 15AF3C4C16F37A3E00FC52EC /* route_bluetooth_off_default.png */, + 1599104316F746B2007BF52B /* route_bluetooth_off_default_landscape.png */, + 15AF3C4D16F37A3E00FC52EC /* route_bluetooth_off_disabled.png */, + 1599104416F746B2007BF52B /* route_bluetooth_off_disabled_landscape.png */, + 15AF3C4E16F37A3E00FC52EC /* route_bluetooth_off_over.png */, + 1599104516F746B2007BF52B /* route_bluetooth_off_over_landscape.png */, + 15AF3C5016F37A3E00FC52EC /* route_bluetooth_on_default.png */, + 1599104616F746B2007BF52B /* route_bluetooth_on_default_landscape.png */, + 15AF3C6416F37A4A00FC52EC /* route_phone_off_default.png */, + 1599104716F746B2007BF52B /* route_phone_off_default_landscape.png */, + 15AF3C6516F37A4A00FC52EC /* route_phone_off_disabled.png */, + 1599104816F746B2007BF52B /* route_phone_off_disabled_landscape.png */, + 15AF3C6616F37A4A00FC52EC /* route_phone_off_over.png */, + 1599104916F746B2007BF52B /* route_phone_off_over_landscape.png */, + 15AF3C6816F37A4A00FC52EC /* route_phone_on_default.png */, + 1599104A16F746B2007BF52B /* route_phone_on_default_landscape.png */, + 15AF3C7C16F37A5500FC52EC /* route_speaker_off_default.png */, + 1599104B16F746B2007BF52B /* route_speaker_off_default_landscape.png */, + 15AF3C7D16F37A5500FC52EC /* route_speaker_off_disabled.png */, + 1599104C16F746B2007BF52B /* route_speaker_off_disabled_landscape.png */, + 15AF3C7E16F37A5500FC52EC /* route_speaker_off_over.png */, + 1599104D16F746B2007BF52B /* route_speaker_off_over_landscape.png */, + 15AF3C8016F37A5500FC52EC /* route_speaker_on_default.png */, + 1599104E16F746B2007BF52B /* route_speaker_on_default_landscape.png */, + 15AF3C9416F37A5D00FC52EC /* routes_default.png */, + 1599104F16F746B2007BF52B /* routes_default_landscape.png */, + 15AF3C9516F37A5D00FC52EC /* routes_disabled.png */, + 1599105016F746B2007BF52B /* routes_disabled_landscape.png */, + 15AF3C9616F37A5D00FC52EC /* routes_over.png */, + 1599105116F746B2007BF52B /* routes_over_landscape.png */, + 15AF3C9716F37A5D00FC52EC /* routes_selected.png */, + 1599105216F746B2007BF52B /* routes_selected_landscape.png */, D3D6A3A5159B0EFE005F692C /* security_ko.png */, D3D6A3A7159B0EFE005F692C /* security_ok.png */, D3D6A3A6159B0EFE005F692C /* security_pending.png */, @@ -4226,6 +4354,38 @@ D310392A162C3C5200C00C18 /* linphone_splashscreen-Portrait@2x.png in Resources */, D33E1F08164CF35100CFA363 /* callbar_left_padding.png in Resources */, D33E1F0A164CF35100CFA363 /* callbar_right_padding.png in Resources */, + 15AF3C5416F37A3E00FC52EC /* route_bluetooth_off_default.png in Resources */, + 15AF3C5616F37A3E00FC52EC /* route_bluetooth_off_disabled.png in Resources */, + 15AF3C5816F37A3E00FC52EC /* route_bluetooth_off_over.png in Resources */, + 15AF3C5C16F37A3E00FC52EC /* route_bluetooth_on_default.png in Resources */, + 15AF3C6C16F37A4A00FC52EC /* route_phone_off_default.png in Resources */, + 15AF3C6E16F37A4A00FC52EC /* route_phone_off_disabled.png in Resources */, + 15AF3C7016F37A4A00FC52EC /* route_phone_off_over.png in Resources */, + 15AF3C7416F37A4A00FC52EC /* route_phone_on_default.png in Resources */, + 15AF3C8416F37A5500FC52EC /* route_speaker_off_default.png in Resources */, + 15AF3C8616F37A5500FC52EC /* route_speaker_off_disabled.png in Resources */, + 15AF3C8816F37A5500FC52EC /* route_speaker_off_over.png in Resources */, + 15AF3C8C16F37A5500FC52EC /* route_speaker_on_default.png in Resources */, + 15AF3C9816F37A5D00FC52EC /* routes_default.png in Resources */, + 15AF3C9A16F37A5D00FC52EC /* routes_disabled.png in Resources */, + 15AF3C9C16F37A5D00FC52EC /* routes_over.png in Resources */, + 15AF3C9E16F37A5D00FC52EC /* routes_selected.png in Resources */, + 1599105316F746B2007BF52B /* route_bluetooth_off_default_landscape.png in Resources */, + 1599105516F746B2007BF52B /* route_bluetooth_off_disabled_landscape.png in Resources */, + 1599105716F746B2007BF52B /* route_bluetooth_off_over_landscape.png in Resources */, + 1599105916F746B2007BF52B /* route_bluetooth_on_default_landscape.png in Resources */, + 1599105B16F746B2007BF52B /* route_phone_off_default_landscape.png in Resources */, + 1599105D16F746B2007BF52B /* route_phone_off_disabled_landscape.png in Resources */, + 1599105F16F746B2007BF52B /* route_phone_off_over_landscape.png in Resources */, + 1599106116F746B2007BF52B /* route_phone_on_default_landscape.png in Resources */, + 1599106316F746B2007BF52B /* route_speaker_off_default_landscape.png in Resources */, + 1599106516F746B2007BF52B /* route_speaker_off_disabled_landscape.png in Resources */, + 1599106716F746B2007BF52B /* route_speaker_off_over_landscape.png in Resources */, + 1599106916F746B2007BF52B /* route_speaker_on_default_landscape.png in Resources */, + 1599106B16F746B2007BF52B /* routes_default_landscape.png in Resources */, + 1599106D16F746B2007BF52B /* routes_disabled_landscape.png in Resources */, + 1599106F16F746B2007BF52B /* routes_over_landscape.png in Resources */, + 1599107116F746B2007BF52B /* routes_selected_landscape.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4730,6 +4890,38 @@ D310392B162C3C5200C00C18 /* linphone_splashscreen-Portrait@2x.png in Resources */, D33E1F09164CF35100CFA363 /* callbar_left_padding.png in Resources */, D33E1F0B164CF35100CFA363 /* callbar_right_padding.png in Resources */, + 15AF3C5516F37A3E00FC52EC /* route_bluetooth_off_default.png in Resources */, + 15AF3C5716F37A3E00FC52EC /* route_bluetooth_off_disabled.png in Resources */, + 15AF3C5916F37A3E00FC52EC /* route_bluetooth_off_over.png in Resources */, + 15AF3C5D16F37A3E00FC52EC /* route_bluetooth_on_default.png in Resources */, + 15AF3C6D16F37A4A00FC52EC /* route_phone_off_default.png in Resources */, + 15AF3C6F16F37A4A00FC52EC /* route_phone_off_disabled.png in Resources */, + 15AF3C7116F37A4A00FC52EC /* route_phone_off_over.png in Resources */, + 15AF3C7516F37A4A00FC52EC /* route_phone_on_default.png in Resources */, + 15AF3C8516F37A5500FC52EC /* route_speaker_off_default.png in Resources */, + 15AF3C8716F37A5500FC52EC /* route_speaker_off_disabled.png in Resources */, + 15AF3C8916F37A5500FC52EC /* route_speaker_off_over.png in Resources */, + 15AF3C8D16F37A5500FC52EC /* route_speaker_on_default.png in Resources */, + 15AF3C9916F37A5D00FC52EC /* routes_default.png in Resources */, + 15AF3C9B16F37A5D00FC52EC /* routes_disabled.png in Resources */, + 15AF3C9D16F37A5D00FC52EC /* routes_over.png in Resources */, + 15AF3C9F16F37A5D00FC52EC /* routes_selected.png in Resources */, + 1599105416F746B2007BF52B /* route_bluetooth_off_default_landscape.png in Resources */, + 1599105616F746B2007BF52B /* route_bluetooth_off_disabled_landscape.png in Resources */, + 1599105816F746B2007BF52B /* route_bluetooth_off_over_landscape.png in Resources */, + 1599105A16F746B2007BF52B /* route_bluetooth_on_default_landscape.png in Resources */, + 1599105C16F746B2007BF52B /* route_phone_off_default_landscape.png in Resources */, + 1599105E16F746B2007BF52B /* route_phone_off_disabled_landscape.png in Resources */, + 1599106016F746B2007BF52B /* route_phone_off_over_landscape.png in Resources */, + 1599106216F746B2007BF52B /* route_phone_on_default_landscape.png in Resources */, + 1599106416F746B2007BF52B /* route_speaker_off_default_landscape.png in Resources */, + 1599106616F746B2007BF52B /* route_speaker_off_disabled_landscape.png in Resources */, + 1599106816F746B2007BF52B /* route_speaker_off_over_landscape.png in Resources */, + 1599106A16F746B2007BF52B /* route_speaker_on_default_landscape.png in Resources */, + 1599106C16F746B2007BF52B /* routes_default_landscape.png in Resources */, + 1599106E16F746B2007BF52B /* routes_disabled_landscape.png in Resources */, + 1599107016F746B2007BF52B /* routes_over_landscape.png in Resources */, + 1599107216F746B2007BF52B /* routes_selected_landscape.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 9842529e45dd8d61012210e899d6872547079611 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 19 Mar 2013 14:36:48 +0100 Subject: [PATCH 04/53] Update bcg729 submodule. --- submodules/bcg729 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/bcg729 b/submodules/bcg729 index 9579f5f78..715309618 160000 --- a/submodules/bcg729 +++ b/submodules/bcg729 @@ -1 +1 @@ -Subproject commit 9579f5f7824106bab671fa2449a5518e5e0473d6 +Subproject commit 715309618f3c5e20311d4c113d401f1c43f87511 From 5e6098e14f7885250e587dd4b441b5897f64bcdf Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 20 Mar 2013 15:48:04 +0100 Subject: [PATCH 05/53] Activate ICE when configuring a linphone.org account with the wizard. --- Resources/linphonerc-factory | 2 +- Resources/linphonerc-factory~ipad | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory index 0025fff93..e16499cd6 100644 --- a/Resources/linphonerc-factory +++ b/Resources/linphonerc-factory @@ -42,6 +42,6 @@ expires=604800 push_notification=1 transport=tls sharing_server=https://www.linphone.org:444/upload.php -ice=0 +ice=1 stun=stun.linphone.org diff --git a/Resources/linphonerc-factory~ipad b/Resources/linphonerc-factory~ipad index fac1148f1..e9e636be0 100644 --- a/Resources/linphonerc-factory~ipad +++ b/Resources/linphonerc-factory~ipad @@ -42,5 +42,5 @@ expires=604800 push_notification=1 transport=tls sharing_server=https://www.linphone.org:444/upload.php -ice=0 +ice=1 stun=stun.linphone.org From 453f5bf5c42d32c2c18630c23e2c2fc266e4d16b Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 21 Mar 2013 14:16:02 +0100 Subject: [PATCH 06/53] Fix call transfer to an email address. --- Classes/LinphoneManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index d2674539d..5f7cbee8a 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -1294,7 +1294,7 @@ static void audioRouteChangeListenerCallback ( linphone_address_set_display_name(linphoneAddress, [displayName cStringUsingEncoding:[NSString defaultCStringEncoding]]); } if(transfer) { - linphone_core_transfer_call(theLinphoneCore, linphone_core_get_current_call(theLinphoneCore), normalizedUserName); + linphone_core_transfer_call(theLinphoneCore, linphone_core_get_current_call(theLinphoneCore), linphone_address_as_string_uri_only(linphoneAddress)); } else { call=linphone_core_invite_address_with_params(theLinphoneCore, linphoneAddress, lcallParams); } From 151efc7d715a15959d1ec44a5ae905b783731770 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 29 Mar 2013 15:29:27 +0100 Subject: [PATCH 07/53] Do not use linphone_core_get_identity() when creating a LinphoneAddress to prevent a random port to appear. --- Classes/LinphoneCoreSettingsStore.m | 2 +- Classes/LinphoneManager.m | 2 +- Classes/WizardViewController.m | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index bb54f270f..3c82e864d 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -354,7 +354,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); //possible valid config detected proxyCfg = linphone_core_create_proxy_config(lc); char normalizedUserName[256]; - LinphoneAddress* linphoneAddress = linphone_address_new(linphone_core_get_identity(lc)); + LinphoneAddress* linphoneAddress = linphone_address_new("sip:user@domain.com"); linphone_proxy_config_normalize_number(proxyCfg, [username cStringUsingEncoding:[NSString defaultCStringEncoding]], normalizedUserName, sizeof(normalizedUserName)); linphone_address_set_username(linphoneAddress, normalizedUserName); linphone_address_set_domain(linphoneAddress, [domain cStringUsingEncoding:[NSString defaultCStringEncoding]]); diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 5f7cbee8a..768c7fcab 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -1287,7 +1287,7 @@ static void audioRouteChangeListenerCallback ( [error release]; } else { char normalizedUserName[256]; - LinphoneAddress* linphoneAddress = linphone_address_new(linphone_core_get_identity(theLinphoneCore)); + LinphoneAddress* linphoneAddress = linphone_address_new("sip:user@domain.com"); linphone_proxy_config_normalize_number(proxyCfg,[address cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); linphone_address_set_username(linphoneAddress, normalizedUserName); if(displayName!=nil) { diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 125a992b4..2b2be7e94 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -384,13 +384,12 @@ static UICompositeViewDescription *compositeDescription = nil; } - (void)addProxyConfig:(NSString*)username password:(NSString*)password domain:(NSString*)domain server:(NSString*)server { - LinphoneCore *lc = [LinphoneManager getLc]; [self clearProxyConfig]; if(server == nil) { server = domain; } char normalizedUserName[256]; - LinphoneAddress* linphoneAddress = linphone_address_new(linphone_core_get_identity(lc)); + LinphoneAddress* linphoneAddress = linphone_address_new("sip:user@domain.com"); linphone_proxy_config_normalize_number(NULL, [username cStringUsingEncoding:[NSString defaultCStringEncoding]], normalizedUserName, sizeof(normalizedUserName)); linphone_address_set_username(linphoneAddress, normalizedUserName); linphone_address_set_domain(linphoneAddress, [domain UTF8String]); @@ -416,7 +415,7 @@ static UICompositeViewDescription *compositeDescription = nil; - (NSString*)identityFromUsername:(NSString*)username { char normalizedUserName[256]; - LinphoneAddress* linphoneAddress = linphone_address_new(linphone_core_get_identity([LinphoneManager getLc])); + LinphoneAddress* linphoneAddress = linphone_address_new("sip:user@domain.com"); linphone_proxy_config_normalize_number(NULL, [username cStringUsingEncoding:[NSString defaultCStringEncoding]], normalizedUserName, sizeof(normalizedUserName)); linphone_address_set_username(linphoneAddress, normalizedUserName); linphone_address_set_domain(linphoneAddress, [[[LinphoneManager instance] lpConfigStringForKey:@"domain" forSection:@"wizard"] UTF8String]); From d64ae49c5113fbf49e9b0b857650bf2a85b6c368 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 2 Apr 2013 10:25:18 +0200 Subject: [PATCH 08/53] Fix issue 000624: App crash when editing contact in address book. Do not try to animate the email section of the contact details if it is not shown. --- Classes/ContactDetailsTableViewController.m | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 1ac0bf331..8f49fd838 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -643,7 +643,8 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C #pragma mark - UITableViewDelegate Functions -- (void)setEditing:(BOOL)editing animated:(BOOL)animated { +- (void)setEditing:(BOOL)editing animated:(BOOL)animated { + bool_t showEmails = [[LinphoneManager instance] lpConfigBoolForKey:@"show_contacts_emails_preference"]; // Resign keyboard if(!editing) { [LinphoneUtils findAndResignFirstResponder:[self tableView]]; @@ -659,14 +660,14 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C for (int section = 0; section < [self numberOfSectionsInTableView:[self tableView]]; ++section) { if(contactSections[section] == ContactSections_Number || contactSections[section] == ContactSections_Sip || - contactSections[section] == ContactSections_Email) + (showEmails && contactSections[section] == ContactSections_Email)) [self addEntry:self.tableView section:section animated:animated]; } } else { for (int section = 0; section < [self numberOfSectionsInTableView:[self tableView]]; ++section) { if(contactSections[section] == ContactSections_Number || contactSections[section] == ContactSections_Sip || - contactSections[section] == ContactSections_Email) + (showEmails && contactSections[section] == ContactSections_Email)) [self removeEmptyEntry:self.tableView section:section animated:animated]; } } From 221f3bcd8e3e3db6802952058fc10b99b9f64077 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 2 Apr 2013 10:47:35 +0200 Subject: [PATCH 09/53] Fix domain when performing an outgoing call without outgoing SIP proxy. --- Classes/LinphoneManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 768c7fcab..bb9dc1bce 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -1287,7 +1287,7 @@ static void audioRouteChangeListenerCallback ( [error release]; } else { char normalizedUserName[256]; - LinphoneAddress* linphoneAddress = linphone_address_new("sip:user@domain.com"); + LinphoneAddress* linphoneAddress = linphone_address_new(linphone_core_get_identity(theLinphoneCore)); linphone_proxy_config_normalize_number(proxyCfg,[address cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); linphone_address_set_username(linphoneAddress, normalizedUserName); if(displayName!=nil) { From 3eae0708740ba3101439155ee66751824c602865 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 2 Apr 2013 11:23:08 +0200 Subject: [PATCH 10/53] Start dtmf stream when all calls have ended. This has the effect to be able to play DTMFs faster and also resets the audio route when using bluetooth. This allows the route selection to work correctly on next outgoing call. --- Classes/LinphoneManager.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index bb9dc1bce..5ee4f8e62 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -472,6 +472,8 @@ static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char [self removeCTCallCenterCb]; bluetoothAvailable = FALSE; bluetoothEnabled = FALSE; + /*IOS specific*/ + linphone_core_start_dtmf_stream(theLinphoneCore); } if (incallBgTask) { [[UIApplication sharedApplication] endBackgroundTask:incallBgTask]; From 903e2af59e5f663634d425e39050b4c2a2fd88c7 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 4 Apr 2013 11:57:03 +0200 Subject: [PATCH 11/53] Add armv7s to the list of valid architectures for the liblinphone xcode project. --- submodules/liblinphone.xcodeproj/project.pbxproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/submodules/liblinphone.xcodeproj/project.pbxproj b/submodules/liblinphone.xcodeproj/project.pbxproj index 1248357b9..a85ff2e50 100644 --- a/submodules/liblinphone.xcodeproj/project.pbxproj +++ b/submodules/liblinphone.xcodeproj/project.pbxproj @@ -2015,6 +2015,7 @@ ); PRODUCT_NAME = mediastreamer; SKIP_INSTALL = YES; + VALID_ARCHS = "armv6 armv7 armv7s i386"; }; name = Debug; }; @@ -2071,6 +2072,7 @@ ); PRODUCT_NAME = mediastreamer; SKIP_INSTALL = YES; + VALID_ARCHS = "armv6 armv7 armv7s i386"; }; name = Release; }; @@ -2127,6 +2129,7 @@ ); PRODUCT_NAME = mediastreamer; SKIP_INSTALL = YES; + VALID_ARCHS = "armv6 armv7 armv7s i386"; }; name = DistributionAdhoc; }; From 78f49148aea3040966534095e82f858403291e1d Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 4 Apr 2013 12:23:15 +0200 Subject: [PATCH 12/53] Increase version number. --- linphone-Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linphone-Info.plist b/linphone-Info.plist index b24ab61b5..6118fb186 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -42,7 +42,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 3.5.100 + 3.5.101 CFBundleURLTypes @@ -59,7 +59,7 @@ CFBundleVersion - 2.0.2 + 2.0.3 NSMainNibFile LinphoneApp NSMainNibFile~ipad From 990a59791a2a292dda65c3649dd0cb0f1bad377d Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 4 Apr 2013 14:39:37 +0200 Subject: [PATCH 13/53] Update linphone submodule to prevent crash on video toggle. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 71f31347f..125779185 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 71f31347fcddaa5f0e9e329a7320efe60bc7c281 +Subproject commit 12577918593030541fd4d7b12e5881347e0eafb4 From 3dfd10bbe011c0d8defcbc0713a587ce65bba542 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 5 Apr 2013 10:45:52 +0200 Subject: [PATCH 14/53] Fix crash when using a phone number as username in the wizard. --- Classes/WizardViewController.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 2b2be7e94..bdd693925 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -388,13 +388,13 @@ static UICompositeViewDescription *compositeDescription = nil; if(server == nil) { server = domain; } + LinphoneProxyConfig* proxyCfg = linphone_core_create_proxy_config([LinphoneManager getLc]); char normalizedUserName[256]; LinphoneAddress* linphoneAddress = linphone_address_new("sip:user@domain.com"); - linphone_proxy_config_normalize_number(NULL, [username cStringUsingEncoding:[NSString defaultCStringEncoding]], normalizedUserName, sizeof(normalizedUserName)); + linphone_proxy_config_normalize_number(proxyCfg, [username cStringUsingEncoding:[NSString defaultCStringEncoding]], normalizedUserName, sizeof(normalizedUserName)); linphone_address_set_username(linphoneAddress, normalizedUserName); linphone_address_set_domain(linphoneAddress, [domain UTF8String]); const char* identity = linphone_address_as_string_uri_only(linphoneAddress); - LinphoneProxyConfig* proxyCfg = linphone_core_create_proxy_config([LinphoneManager getLc]); LinphoneAuthInfo* info = linphone_auth_info_new([username UTF8String], NULL, [password UTF8String], NULL, NULL); linphone_proxy_config_set_identity(proxyCfg, identity); linphone_proxy_config_set_server_addr(proxyCfg, [server UTF8String]); From 5e7c049641b6ec7b5bb54d59686ec74c8d516496 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 5 Apr 2013 15:56:06 +0200 Subject: [PATCH 15/53] update liblinphone because of bugfix for PUBLISH requests. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 125779185..d630e0a99 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 12577918593030541fd4d7b12e5881347e0eafb4 +Subproject commit d630e0a99decbed3e9a5437b680801dd236beb40 From 614061db7f5af9099509cccd78400a3d6067e011 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 10 Apr 2013 11:32:20 +0200 Subject: [PATCH 16/53] Fix tutorials xcode project. --- .../hello-world.xcodeproj/project.pbxproj | 108 ++++++++++++------ 1 file changed, 71 insertions(+), 37 deletions(-) diff --git a/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj b/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj index 2aa526a1c..9e5c2c61c 100755 --- a/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj +++ b/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj @@ -7,6 +7,35 @@ objects = { /* Begin PBXBuildFile section */ + 154E1A941715638900A0D168 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A931715638900A0D168 /* libmediastreamer_base.a */; }; + 154E1A961715639A00A0D168 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A951715639A00A0D168 /* libmediastreamer_voip.a */; }; + 154E1A981715642E00A0D168 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A971715642E00A0D168 /* libavutil.a */; }; + 154E1A9A1715644400A0D168 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A991715644400A0D168 /* libavcodec.a */; }; + 154E1A9C1715645F00A0D168 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A9B1715645F00A0D168 /* libswscale.a */; }; + 154E1A9D171564B500A0D168 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A991715644400A0D168 /* libavcodec.a */; }; + 154E1A9E171564B500A0D168 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A991715644400A0D168 /* libavcodec.a */; }; + 154E1A9F171564B600A0D168 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A991715644400A0D168 /* libavcodec.a */; }; + 154E1AA0171564BA00A0D168 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A971715642E00A0D168 /* libavutil.a */; }; + 154E1AA1171564BA00A0D168 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A971715642E00A0D168 /* libavutil.a */; }; + 154E1AA2171564BA00A0D168 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A971715642E00A0D168 /* libavutil.a */; }; + 154E1AA3171564C100A0D168 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFED14C41EBA00E1BC69 /* libilbc.a */; }; + 154E1AA4171564C100A0D168 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFED14C41EBA00E1BC69 /* libilbc.a */; }; + 154E1AA5171564C200A0D168 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFED14C41EBA00E1BC69 /* libilbc.a */; }; + 154E1AA6171564C600A0D168 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A931715638900A0D168 /* libmediastreamer_base.a */; }; + 154E1AA7171564C600A0D168 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A931715638900A0D168 /* libmediastreamer_base.a */; }; + 154E1AA8171564C700A0D168 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A931715638900A0D168 /* libmediastreamer_base.a */; }; + 154E1AA9171564C900A0D168 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A951715639A00A0D168 /* libmediastreamer_voip.a */; }; + 154E1AAA171564CA00A0D168 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A951715639A00A0D168 /* libmediastreamer_voip.a */; }; + 154E1AAB171564CA00A0D168 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A951715639A00A0D168 /* libmediastreamer_voip.a */; }; + 154E1AAC171564EA00A0D168 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCF133A2E760044EA25 /* libssl.a */; }; + 154E1AAD171564EA00A0D168 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCF133A2E760044EA25 /* libssl.a */; }; + 154E1AAE171564EB00A0D168 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCF133A2E760044EA25 /* libssl.a */; }; + 154E1AAF171564ED00A0D168 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFD0133A2E760044EA25 /* libcrypto.a */; }; + 154E1AB0171564EE00A0D168 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFD0133A2E760044EA25 /* libcrypto.a */; }; + 154E1AB1171564EE00A0D168 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFD0133A2E760044EA25 /* libcrypto.a */; }; + 154E1AB21715661100A0D168 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A9B1715645F00A0D168 /* libswscale.a */; }; + 154E1AB31715661100A0D168 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A9B1715645F00A0D168 /* libswscale.a */; }; + 154E1AB41715661200A0D168 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A9B1715645F00A0D168 /* libswscale.a */; }; 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 2220D5D81278461C008F2C2E /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5D71278461C008F2C2E /* CFNetwork.framework */; }; @@ -34,12 +63,6 @@ 229499FA12A5433F00D6CF48 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5E912784672008F2C2E /* AudioToolbox.framework */; }; 229499FB12A5433F00D6CF48 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 22D1B6A012A3E159001AE361 /* libresolv.dylib */; }; 22D1B6A112A3E159001AE361 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 22D1B6A012A3E159001AE361 /* libresolv.dylib */; }; - 22E5AFC5133A2E260044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFC3133A2E260044EA25 /* libssl.a */; }; - 22E5AFC6133A2E260044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFC4133A2E260044EA25 /* libcrypto.a */; }; - 22E5AFC9133A2E3F0044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFC7133A2E3F0044EA25 /* libssl.a */; }; - 22E5AFCA133A2E3F0044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFC8133A2E3F0044EA25 /* libcrypto.a */; }; - 22E5AFCD133A2E5C0044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCB133A2E5C0044EA25 /* libssl.a */; }; - 22E5AFCE133A2E5C0044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCC133A2E5C0044EA25 /* libcrypto.a */; }; 22E5AFD1133A2E760044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCF133A2E760044EA25 /* libssl.a */; }; 22E5AFD2133A2E760044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFD0133A2E760044EA25 /* libcrypto.a */; }; 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; @@ -48,7 +71,6 @@ 34F9DFF614C41EBA00E1BC69 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */; }; 34F9DFF714C41EBA00E1BC69 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFED14C41EBA00E1BC69 /* libilbc.a */; }; 34F9DFF814C41EBA00E1BC69 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */; }; - 34F9DFF914C41EBA00E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; }; 34F9DFFA14C41EBA00E1BC69 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF014C41EBA00E1BC69 /* libortp.a */; }; 34F9DFFB14C41EBA00E1BC69 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF114C41EBA00E1BC69 /* libosip2.a */; }; 34F9DFFC14C41EBA00E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; }; @@ -67,7 +89,6 @@ 34F9E00F14C4204600E1BC69 /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00514C41FCF00E1BC69 /* libvpx.a */; }; 34F9E01014C4207700E1BC69 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */; }; 34F9E01114C4208C00E1BC69 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */; }; - 34F9E01214C4208C00E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; }; 34F9E01314C4208C00E1BC69 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF014C41EBA00E1BC69 /* libortp.a */; }; 34F9E01414C420A200E1BC69 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF114C41EBA00E1BC69 /* libosip2.a */; }; 34F9E01514C420A200E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; }; @@ -82,7 +103,6 @@ 34F9E01E14C420DD00E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; }; 34F9E01F14C420DD00E1BC69 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF314C41EBA00E1BC69 /* libspeex.a */; }; 34F9E02014C420DD00E1BC69 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */; }; - 34F9E02114C420F000E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; }; 34F9E02214C420FA00E1BC69 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00A14C4202100E1BC69 /* QuartzCore.framework */; }; 34F9E02314C4210100E1BC69 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00214C41FB400E1BC69 /* OpenGLES.framework */; }; 34F9E02414C4211000E1BC69 /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00414C41FCF00E1BC69 /* libsrtp.a */; }; @@ -92,7 +112,6 @@ 34F9E02814C4214500E1BC69 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */; }; 34F9E02914C4214500E1BC69 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */; }; 34F9E02A14C4214500E1BC69 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */; }; - 34F9E02B14C4214500E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; }; 34F9E02C14C4214500E1BC69 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF014C41EBA00E1BC69 /* libortp.a */; }; 34F9E02D14C4214500E1BC69 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF114C41EBA00E1BC69 /* libosip2.a */; }; 34F9E02E14C4214500E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; }; @@ -115,6 +134,11 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 154E1A931715638900A0D168 /* libmediastreamer_base.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_base.a; path = "../../liblinphone-sdk/apple-darwin/lib/libmediastreamer_base.a"; sourceTree = ""; }; + 154E1A951715639A00A0D168 /* libmediastreamer_voip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_voip.a; path = "../../liblinphone-sdk/apple-darwin/lib/libmediastreamer_voip.a"; sourceTree = ""; }; + 154E1A971715642E00A0D168 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = "../../liblinphone-sdk/apple-darwin/lib/libavutil.a"; sourceTree = ""; }; + 154E1A991715644400A0D168 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "../../liblinphone-sdk/apple-darwin/lib/libavcodec.a"; sourceTree = ""; }; + 154E1A9B1715645F00A0D168 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = "../../liblinphone-sdk/apple-darwin/lib/libswscale.a"; sourceTree = ""; }; 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1D6058910D05DD3D006BFB54 /* hello-world.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hello-world.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; @@ -126,12 +150,6 @@ 229499BA12A5417D00D6CF48 /* hello-world.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hello-world.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 229499FF12A5433F00D6CF48 /* hello-world.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hello-world.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 22D1B6A012A3E159001AE361 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = usr/lib/libresolv.dylib; sourceTree = SDKROOT; }; - 22E5AFC3133A2E260044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "../../liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = ""; }; - 22E5AFC4133A2E260044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = ""; }; - 22E5AFC7133A2E3F0044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "../../liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = ""; }; - 22E5AFC8133A2E3F0044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = ""; }; - 22E5AFCB133A2E5C0044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "../../liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = ""; }; - 22E5AFCC133A2E5C0044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = ""; }; 22E5AFCF133A2E760044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "../../liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = ""; }; 22E5AFD0133A2E760044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = ""; }; 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; @@ -144,7 +162,6 @@ 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgsm.a; path = "../../liblinphone-sdk/apple-darwin/lib/libgsm.a"; sourceTree = ""; }; 34F9DFED14C41EBA00E1BC69 /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "../../liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = ""; }; 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphone.a; path = "../../liblinphone-sdk/apple-darwin/lib/liblinphone.a"; sourceTree = ""; }; - 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer.a; path = "../../liblinphone-sdk/apple-darwin/lib/libmediastreamer.a"; sourceTree = ""; }; 34F9DFF014C41EBA00E1BC69 /* libortp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libortp.a; path = "../../liblinphone-sdk/apple-darwin/lib/libortp.a"; sourceTree = ""; }; 34F9DFF114C41EBA00E1BC69 /* libosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosip2.a; path = "../../liblinphone-sdk/apple-darwin/lib/libosip2.a"; sourceTree = ""; }; 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosipparser2.a; path = "../../liblinphone-sdk/apple-darwin/lib/libosipparser2.a"; sourceTree = ""; }; @@ -165,6 +182,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 154E1A9C1715645F00A0D168 /* libswscale.a in Frameworks */, + 154E1A9A1715644400A0D168 /* libavcodec.a in Frameworks */, + 154E1A981715642E00A0D168 /* libavutil.a in Frameworks */, 34F9E03714C424AF00E1BC69 /* CoreMedia.framework in Frameworks */, 34F9E03514C4249600E1BC69 /* CoreVideo.framework in Frameworks */, 34F9E03414C4247A00E1BC69 /* AVFoundation.framework in Frameworks */, @@ -176,14 +196,13 @@ 34F9DFF614C41EBA00E1BC69 /* libgsm.a in Frameworks */, 34F9DFF714C41EBA00E1BC69 /* libilbc.a in Frameworks */, 34F9DFF814C41EBA00E1BC69 /* liblinphone.a in Frameworks */, - 34F9DFF914C41EBA00E1BC69 /* libmediastreamer.a in Frameworks */, + 154E1A941715638900A0D168 /* libmediastreamer_base.a in Frameworks */, + 154E1A961715639A00A0D168 /* libmediastreamer_voip.a in Frameworks */, 34F9DFFA14C41EBA00E1BC69 /* libortp.a in Frameworks */, 34F9DFFB14C41EBA00E1BC69 /* libosip2.a in Frameworks */, 34F9DFFC14C41EBA00E1BC69 /* libosipparser2.a in Frameworks */, 34F9DFFD14C41EBA00E1BC69 /* libspeex.a in Frameworks */, 34F9DFFE14C41EBA00E1BC69 /* libspeexdsp.a in Frameworks */, - 22E5AFC5133A2E260044EA25 /* libssl.a in Frameworks */, - 22E5AFC6133A2E260044EA25 /* libcrypto.a in Frameworks */, 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */, @@ -191,6 +210,8 @@ 2220D5DA1278461C008F2C2E /* CoreAudio.framework in Frameworks */, 2220D5EA12784672008F2C2E /* AudioToolbox.framework in Frameworks */, 22D1B6A112A3E159001AE361 /* libresolv.dylib in Frameworks */, + 154E1AAE171564EB00A0D168 /* libssl.a in Frameworks */, + 154E1AAF171564ED00A0D168 /* libcrypto.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -207,15 +228,12 @@ 34F9E01414C420A200E1BC69 /* libosip2.a in Frameworks */, 34F9E01514C420A200E1BC69 /* libosipparser2.a in Frameworks */, 34F9E01114C4208C00E1BC69 /* libeXosip2.a in Frameworks */, - 34F9E01214C4208C00E1BC69 /* libmediastreamer.a in Frameworks */, 34F9E01314C4208C00E1BC69 /* libortp.a in Frameworks */, 34F9E01014C4207700E1BC69 /* liblinphone.a in Frameworks */, 34F9E00E14C4204600E1BC69 /* libsrtp.a in Frameworks */, 34F9E00F14C4204600E1BC69 /* libvpx.a in Frameworks */, 34F9E00C14C4203900E1BC69 /* OpenGLES.framework in Frameworks */, 34F9E00D14C4203900E1BC69 /* QuartzCore.framework in Frameworks */, - 22E5AFC9133A2E3F0044EA25 /* libssl.a in Frameworks */, - 22E5AFCA133A2E3F0044EA25 /* libcrypto.a in Frameworks */, 2294996912A53FEE00D6CF48 /* Foundation.framework in Frameworks */, 2294996A12A53FEE00D6CF48 /* UIKit.framework in Frameworks */, 2294996B12A53FEE00D6CF48 /* CoreGraphics.framework in Frameworks */, @@ -223,6 +241,14 @@ 2294997712A53FEE00D6CF48 /* CoreAudio.framework in Frameworks */, 2294997812A53FEE00D6CF48 /* AudioToolbox.framework in Frameworks */, 2294997912A53FEE00D6CF48 /* libresolv.dylib in Frameworks */, + 154E1A9D171564B500A0D168 /* libavcodec.a in Frameworks */, + 154E1AA0171564BA00A0D168 /* libavutil.a in Frameworks */, + 154E1AA3171564C100A0D168 /* libilbc.a in Frameworks */, + 154E1AA6171564C600A0D168 /* libmediastreamer_base.a in Frameworks */, + 154E1AA9171564C900A0D168 /* libmediastreamer_voip.a in Frameworks */, + 154E1AAD171564EA00A0D168 /* libssl.a in Frameworks */, + 154E1AB0171564EE00A0D168 /* libcrypto.a in Frameworks */, + 154E1AB21715661100A0D168 /* libswscale.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -237,7 +263,6 @@ 34F9E02514C4211000E1BC69 /* libvpx.a in Frameworks */, 34F9E02314C4210100E1BC69 /* OpenGLES.framework in Frameworks */, 34F9E02214C420FA00E1BC69 /* QuartzCore.framework in Frameworks */, - 34F9E02114C420F000E1BC69 /* libmediastreamer.a in Frameworks */, 34F9E01914C420DD00E1BC69 /* libeXosip2.a in Frameworks */, 34F9E01A14C420DD00E1BC69 /* libgsm.a in Frameworks */, 34F9E01B14C420DD00E1BC69 /* liblinphone.a in Frameworks */, @@ -246,8 +271,6 @@ 34F9E01E14C420DD00E1BC69 /* libosipparser2.a in Frameworks */, 34F9E01F14C420DD00E1BC69 /* libspeex.a in Frameworks */, 34F9E02014C420DD00E1BC69 /* libspeexdsp.a in Frameworks */, - 22E5AFCD133A2E5C0044EA25 /* libssl.a in Frameworks */, - 22E5AFCE133A2E5C0044EA25 /* libcrypto.a in Frameworks */, 229499A612A5417D00D6CF48 /* Foundation.framework in Frameworks */, 229499A712A5417D00D6CF48 /* UIKit.framework in Frameworks */, 229499A812A5417D00D6CF48 /* CoreGraphics.framework in Frameworks */, @@ -255,6 +278,14 @@ 229499B412A5417D00D6CF48 /* CoreAudio.framework in Frameworks */, 229499B512A5417D00D6CF48 /* AudioToolbox.framework in Frameworks */, 229499B612A5417D00D6CF48 /* libresolv.dylib in Frameworks */, + 154E1A9E171564B500A0D168 /* libavcodec.a in Frameworks */, + 154E1AA1171564BA00A0D168 /* libavutil.a in Frameworks */, + 154E1AA4171564C100A0D168 /* libilbc.a in Frameworks */, + 154E1AA7171564C600A0D168 /* libmediastreamer_base.a in Frameworks */, + 154E1AAA171564CA00A0D168 /* libmediastreamer_voip.a in Frameworks */, + 154E1AAC171564EA00A0D168 /* libssl.a in Frameworks */, + 154E1AB1171564EE00A0D168 /* libcrypto.a in Frameworks */, + 154E1AB31715661100A0D168 /* libswscale.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -268,7 +299,6 @@ 34F9E02814C4214500E1BC69 /* libeXosip2.a in Frameworks */, 34F9E02914C4214500E1BC69 /* libgsm.a in Frameworks */, 34F9E02A14C4214500E1BC69 /* liblinphone.a in Frameworks */, - 34F9E02B14C4214500E1BC69 /* libmediastreamer.a in Frameworks */, 34F9E02C14C4214500E1BC69 /* libortp.a in Frameworks */, 34F9E02D14C4214500E1BC69 /* libosip2.a in Frameworks */, 34F9E02E14C4214500E1BC69 /* libosipparser2.a in Frameworks */, @@ -287,6 +317,12 @@ 229499F912A5433F00D6CF48 /* CoreAudio.framework in Frameworks */, 229499FA12A5433F00D6CF48 /* AudioToolbox.framework in Frameworks */, 229499FB12A5433F00D6CF48 /* libresolv.dylib in Frameworks */, + 154E1A9F171564B600A0D168 /* libavcodec.a in Frameworks */, + 154E1AA2171564BA00A0D168 /* libavutil.a in Frameworks */, + 154E1AA5171564C200A0D168 /* libilbc.a in Frameworks */, + 154E1AA8171564C700A0D168 /* libmediastreamer_base.a in Frameworks */, + 154E1AAB171564CA00A0D168 /* libmediastreamer_voip.a in Frameworks */, + 154E1AB41715661200A0D168 /* libswscale.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -318,27 +354,25 @@ 34F9E03314C4247A00E1BC69 /* AVFoundation.framework */, 34F9E00A14C4202100E1BC69 /* QuartzCore.framework */, 34F9E00814C41FE900E1BC69 /* CoreVideo.framework */, - 34F9E00414C41FCF00E1BC69 /* libsrtp.a */, - 34F9E00514C41FCF00E1BC69 /* libvpx.a */, 34F9E00214C41FB400E1BC69 /* OpenGLES.framework */, + 154E1A991715644400A0D168 /* libavcodec.a */, + 154E1A971715642E00A0D168 /* libavutil.a */, + 22E5AFD0133A2E760044EA25 /* libcrypto.a */, 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */, 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */, 34F9DFED14C41EBA00E1BC69 /* libilbc.a */, 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */, - 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */, + 154E1A931715638900A0D168 /* libmediastreamer_base.a */, + 154E1A951715639A00A0D168 /* libmediastreamer_voip.a */, 34F9DFF014C41EBA00E1BC69 /* libortp.a */, 34F9DFF114C41EBA00E1BC69 /* libosip2.a */, 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */, 34F9DFF314C41EBA00E1BC69 /* libspeex.a */, 34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */, + 34F9E00414C41FCF00E1BC69 /* libsrtp.a */, 22E5AFCF133A2E760044EA25 /* libssl.a */, - 22E5AFD0133A2E760044EA25 /* libcrypto.a */, - 22E5AFCB133A2E5C0044EA25 /* libssl.a */, - 22E5AFCC133A2E5C0044EA25 /* libcrypto.a */, - 22E5AFC7133A2E3F0044EA25 /* libssl.a */, - 22E5AFC8133A2E3F0044EA25 /* libcrypto.a */, - 22E5AFC3133A2E260044EA25 /* libssl.a */, - 22E5AFC4133A2E260044EA25 /* libcrypto.a */, + 154E1A9B1715645F00A0D168 /* libswscale.a */, + 34F9E00514C41FCF00E1BC69 /* libvpx.a */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97315FDCFA39411CA2CEA /* Other Sources */, 29B97317FDCFA39411CA2CEA /* Resources */, From 814545b13c24c2d401dd1b74dd4dba3422c714f7 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 10 Apr 2013 12:27:29 +0200 Subject: [PATCH 17/53] Install the tutorials source code in the sdk zip and use this installed source code in the tutorials xcode project. --- .../hello-world.xcodeproj/project.pbxproj | 32 +++++++++---------- submodules/build/builder-iphone-os.mk | 1 + 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj b/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj index 9e5c2c61c..0624e7e05 100755 --- a/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj +++ b/liblinphone-tutorials/hello-world/hello-world.xcodeproj/project.pbxproj @@ -36,6 +36,10 @@ 154E1AB21715661100A0D168 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A9B1715645F00A0D168 /* libswscale.a */; }; 154E1AB31715661100A0D168 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A9B1715645F00A0D168 /* libswscale.a */; }; 154E1AB41715661200A0D168 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A9B1715645F00A0D168 /* libswscale.a */; }; + 15FC168517157478003FDB31 /* buddy_status.c in Sources */ = {isa = PBXBuildFile; fileRef = 15FC167E17157478003FDB31 /* buddy_status.c */; }; + 15FC168817157478003FDB31 /* chatroom.c in Sources */ = {isa = PBXBuildFile; fileRef = 15FC167F17157478003FDB31 /* chatroom.c */; }; + 15FC168A17157478003FDB31 /* helloworld.c in Sources */ = {isa = PBXBuildFile; fileRef = 15FC168017157478003FDB31 /* helloworld.c */; }; + 15FC168F17157478003FDB31 /* registration.c in Sources */ = {isa = PBXBuildFile; fileRef = 15FC168117157478003FDB31 /* registration.c */; }; 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 2220D5D81278461C008F2C2E /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5D71278461C008F2C2E /* CFNetwork.framework */; }; @@ -66,7 +70,6 @@ 22E5AFD1133A2E760044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCF133A2E760044EA25 /* libssl.a */; }; 22E5AFD2133A2E760044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFD0133A2E760044EA25 /* libcrypto.a */; }; 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; - 34F9DFE914C418B600E1BC69 /* helloworld.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE514C418B600E1BC69 /* helloworld.c */; }; 34F9DFF514C41EBA00E1BC69 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */; }; 34F9DFF614C41EBA00E1BC69 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */; }; 34F9DFF714C41EBA00E1BC69 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFED14C41EBA00E1BC69 /* libilbc.a */; }; @@ -76,9 +79,6 @@ 34F9DFFC14C41EBA00E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; }; 34F9DFFD14C41EBA00E1BC69 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF314C41EBA00E1BC69 /* libspeex.a */; }; 34F9DFFE14C41EBA00E1BC69 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */; }; - 34F9DFFF14C41F4900E1BC69 /* buddy_status.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE314C418B600E1BC69 /* buddy_status.c */; }; - 34F9E00014C41F4E00E1BC69 /* chatroom.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE414C418B600E1BC69 /* chatroom.c */; }; - 34F9E00114C41F5300E1BC69 /* registration.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE614C418B600E1BC69 /* registration.c */; }; 34F9E00314C41FB400E1BC69 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00214C41FB400E1BC69 /* OpenGLES.framework */; }; 34F9E00614C41FCF00E1BC69 /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00414C41FCF00E1BC69 /* libsrtp.a */; }; 34F9E00714C41FCF00E1BC69 /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00514C41FCF00E1BC69 /* libvpx.a */; }; @@ -139,6 +139,10 @@ 154E1A971715642E00A0D168 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = "../../liblinphone-sdk/apple-darwin/lib/libavutil.a"; sourceTree = ""; }; 154E1A991715644400A0D168 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "../../liblinphone-sdk/apple-darwin/lib/libavcodec.a"; sourceTree = ""; }; 154E1A9B1715645F00A0D168 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = "../../liblinphone-sdk/apple-darwin/lib/libswscale.a"; sourceTree = ""; }; + 15FC167E17157478003FDB31 /* buddy_status.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = buddy_status.c; path = "../../liblinphone-sdk/apple-darwin/share/linphone/tutorials/buddy_status.c"; sourceTree = ""; }; + 15FC167F17157478003FDB31 /* chatroom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = chatroom.c; path = "../../liblinphone-sdk/apple-darwin/share/linphone/tutorials/chatroom.c"; sourceTree = ""; }; + 15FC168017157478003FDB31 /* helloworld.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = helloworld.c; path = "../../liblinphone-sdk/apple-darwin/share/linphone/tutorials/helloworld.c"; sourceTree = ""; }; + 15FC168117157478003FDB31 /* registration.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = registration.c; path = "../../liblinphone-sdk/apple-darwin/share/linphone/tutorials/registration.c"; sourceTree = ""; }; 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1D6058910D05DD3D006BFB54 /* hello-world.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hello-world.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; @@ -154,10 +158,6 @@ 22E5AFD0133A2E760044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = ""; }; 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 32CA4F630368D1EE00C91783 /* hello_world_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hello_world_Prefix.pch; sourceTree = ""; }; - 34F9DFE314C418B600E1BC69 /* buddy_status.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = buddy_status.c; path = ../../submodules/linphone/coreapi/help/buddy_status.c; sourceTree = ""; }; - 34F9DFE414C418B600E1BC69 /* chatroom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = chatroom.c; path = ../../submodules/linphone/coreapi/help/chatroom.c; sourceTree = ""; }; - 34F9DFE514C418B600E1BC69 /* helloworld.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = helloworld.c; path = ../../submodules/linphone/coreapi/help/helloworld.c; sourceTree = ""; }; - 34F9DFE614C418B600E1BC69 /* registration.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = registration.c; path = ../../submodules/linphone/coreapi/help/registration.c; sourceTree = ""; }; 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libeXosip2.a; path = "../../liblinphone-sdk/apple-darwin/lib/libeXosip2.a"; sourceTree = ""; }; 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgsm.a; path = "../../liblinphone-sdk/apple-darwin/lib/libgsm.a"; sourceTree = ""; }; 34F9DFED14C41EBA00E1BC69 /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "../../liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = ""; }; @@ -390,10 +390,10 @@ 29B97315FDCFA39411CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( - 34F9DFE314C418B600E1BC69 /* buddy_status.c */, - 34F9DFE414C418B600E1BC69 /* chatroom.c */, - 34F9DFE514C418B600E1BC69 /* helloworld.c */, - 34F9DFE614C418B600E1BC69 /* registration.c */, + 15FC167E17157478003FDB31 /* buddy_status.c */, + 15FC167F17157478003FDB31 /* chatroom.c */, + 15FC168017157478003FDB31 /* helloworld.c */, + 15FC168117157478003FDB31 /* registration.c */, 32CA4F630368D1EE00C91783 /* hello_world_Prefix.pch */, ); name = "Other Sources"; @@ -551,7 +551,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 34F9DFE914C418B600E1BC69 /* helloworld.c in Sources */, + 15FC168A17157478003FDB31 /* helloworld.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -559,7 +559,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 34F9E00114C41F5300E1BC69 /* registration.c in Sources */, + 15FC168F17157478003FDB31 /* registration.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -567,7 +567,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 34F9E00014C41F4E00E1BC69 /* chatroom.c in Sources */, + 15FC168817157478003FDB31 /* chatroom.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -575,7 +575,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 34F9DFFF14C41F4900E1BC69 /* buddy_status.c in Sources */, + 15FC168517157478003FDB31 /* buddy_status.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/submodules/build/builder-iphone-os.mk b/submodules/build/builder-iphone-os.mk index d481f90a5..e7643586d 100644 --- a/submodules/build/builder-iphone-os.mk +++ b/submodules/build/builder-iphone-os.mk @@ -111,6 +111,7 @@ veryclean: veryclean-linphone veryclean-msbcg729 .NOTPARALLEL build-linphone: init build-openssl build-srtp build-zrtpcpp build-osip2 build-eXosip2 build-speex build-libgsm build-ffmpeg build-libvpx detect_gpl_mode_switch $(LINPHONE_BUILD_DIR)/Makefile cd $(LINPHONE_BUILD_DIR) && export PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig export CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make newdate && make && make install + mkdir -p $(prefix)/share/linphone/tutorials && cp -f $(LINPHONE_SRC_DIR)/coreapi/help/*.c $(prefix)/share/linphone/tutorials/ clean-linphone: clean-osip2 clean-eXosip2 clean-speex clean-libgsm clean-srtp clean-zrtpcpp clean-msilbc clean-libilbc clean-openssl clean-msamr clean-mssilk clean-ffmpeg clean-libvpx clean-msx264 cd $(LINPHONE_BUILD_DIR) && make clean From 8e8f49949f07ba71f7d42319de223f82ceb0cadd Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 11 Apr 2013 14:36:12 +0200 Subject: [PATCH 18/53] Set the time of received chat messages from the content of this message instead of the current time. --- Classes/LinphoneManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 5ee4f8e62..f695d3329 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -578,7 +578,7 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo [chat setMessage:[NSString stringWithUTF8String:linphone_chat_message_get_text(msg)]]; } [chat setDirection:[NSNumber numberWithInt:1]]; - [chat setTime:[NSDate date]]; + [chat setTime:[NSDate dateWithTimeIntervalSince1970:linphone_chat_message_get_time(msg)]]; [chat setRead:[NSNumber numberWithInt:0]]; [chat create]; From 3d4296dce23edf2adb6d4d494bc7c0db40cc5bf2 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 12 Apr 2013 10:57:28 +0200 Subject: [PATCH 19/53] Update linphone submodule for fix of chat messages time. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index d630e0a99..5ddf9069f 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit d630e0a99decbed3e9a5437b680801dd236beb40 +Subproject commit 5ddf9069f0c5f487b65ef5b64dbd19a56066b350 From e5e3b4c02ee95d5dcd8a195bd985f63135243d4f Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 17 Apr 2013 15:52:50 +0200 Subject: [PATCH 20/53] update liblinphone for publish fix. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 5ddf9069f..bf492b427 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 5ddf9069f0c5f487b65ef5b64dbd19a56066b350 +Subproject commit bf492b4278d1c68b2da55c65da173a33aec32ea1 From ad1841751211bee730d2866e597c72a0ccd7fed6 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 19 Apr 2013 16:53:37 +0200 Subject: [PATCH 21/53] update linphone submodule --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index bf492b427..8b35826dd 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit bf492b4278d1c68b2da55c65da173a33aec32ea1 +Subproject commit 8b35826ddd1bdbdd88c61c3b76e6f4b1d3b43a39 From 5206fb1fb191a1defbab23dd58e9d6288698ae48 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Sun, 21 Apr 2013 22:11:13 +0200 Subject: [PATCH 22/53] Add aac-eld in the list of available codecs - two configurations (narrow band and wide band) --- Classes/LinphoneManager.m | 2 ++ Settings/InAppSettings.bundle/Audio.plist | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index f695d3329..92976227d 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -131,6 +131,8 @@ struct codec_name_pref_table codec_pref_table[]={ { "mp4v-es", 90000, @"mp4v-es_preference"}, { "h264", 90000, @"h264_preference"}, { "vp8", 90000, @"vp8_preference"}, + { "mpeg4-generic", 44100, @"aaceld_44k_preference"}, + { "mpeg4-generic", 22050, @"aaceld_22k_preference"}, { NULL,0,Nil } }; diff --git a/Settings/InAppSettings.bundle/Audio.plist b/Settings/InAppSettings.bundle/Audio.plist index 422f9fc29..4331a88d4 100644 --- a/Settings/InAppSettings.bundle/Audio.plist +++ b/Settings/InAppSettings.bundle/Audio.plist @@ -120,6 +120,26 @@ Type PSToggleSwitchSpecifier + + DefaultValue + + Key + aaceld_44k_preference + Title + AAC-ELD 44kHz + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + aaceld_22k_preference + Title + AAC-ELD 22kHz + Type + PSToggleSwitchSpecifier + Key audio_advanced_group From 10a1c722f087ba72b4b609864d00d4960cbfed8b Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Sun, 21 Apr 2013 22:14:34 +0200 Subject: [PATCH 23/53] Add aac-eld.c to the xcode project --- submodules/liblinphone.xcodeproj/project.pbxproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/submodules/liblinphone.xcodeproj/project.pbxproj b/submodules/liblinphone.xcodeproj/project.pbxproj index a85ff2e50..dc4fcbf65 100644 --- a/submodules/liblinphone.xcodeproj/project.pbxproj +++ b/submodules/liblinphone.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 0406A7661721FF79009FD24F /* aac-eld.c in Sources */ = {isa = PBXBuildFile; fileRef = 0406A7651721FF79009FD24F /* aac-eld.c */; }; 220ED19A13A8F87700AC21E0 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED19713A8F87700AC21E0 /* libspeexdsp.a */; }; 220ED19B13A8F87700AC21E0 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED19813A8F87700AC21E0 /* libspeex.a */; }; 220ED19C13A8F87700AC21E0 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED19913A8F87700AC21E0 /* libortp.a */; }; @@ -421,6 +422,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 0406A7651721FF79009FD24F /* aac-eld.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "aac-eld.c"; sourceTree = ""; }; 2203127413A249F70049A2ED /* filter-template.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "filter-template.c"; sourceTree = ""; }; 220ED19713A8F87700AC21E0 /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "../liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = ""; }; 220ED19813A8F87700AC21E0 /* libspeex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeex.a; path = "../liblinphone-sdk/apple-darwin/lib/libspeex.a"; sourceTree = ""; }; @@ -1048,6 +1050,7 @@ 223CA7EF16D9268D00EF1BEC /* audiofilters */ = { isa = PBXGroup; children = ( + 0406A7651721FF79009FD24F /* aac-eld.c */, 22D07CE416F3BFCB009F2C9E /* speexec.c */, 223CA7F016D9268D00EF1BEC /* alaw.c */, 223CA7F216D9268D00EF1BEC /* aqsnd.c */, @@ -1747,6 +1750,7 @@ 221DCB57152A07050025E54D /* ec-calibrator.c in Sources */, 221DCB6C153584410025E54D /* yuv2rgb.fs in Sources */, 221DCB6E153584410025E54D /* yuv2rgb.vs in Sources */, + 0406A7661721FF79009FD24F /* aac-eld.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 1edbbc56a112ca2771d373418cdc6666be91f995 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Mon, 22 Apr 2013 11:13:45 +0200 Subject: [PATCH 24/53] Add linphone with aac-eld support --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 8b35826dd..87a6e07ad 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 8b35826ddd1bdbdd88c61c3b76e6f4b1d3b43a39 +Subproject commit 87a6e07ad9eb8ceddd7d451f438d140e92f82e3d From 336d090a90b23e4f8dc74c10c7f6b64e5ff68591 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Mon, 22 Apr 2013 11:29:15 +0200 Subject: [PATCH 25/53] Typo in oRTP aac-eld payload type name --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 87a6e07ad..12540ce01 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 87a6e07ad9eb8ceddd7d451f438d140e92f82e3d +Subproject commit 12540ce01c9f024266f6f465c972f72a0c2594bb From ed0ad82970bf22a67fd191afcd836640f480c85a Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 22 Apr 2013 10:48:36 +0200 Subject: [PATCH 26/53] fix rotation issue introduced by fixe of mode display_filter_auto_rotate --- Classes/InCallViewController.m | 19 +------------------ Resources/linphonerc | 1 - Resources/linphonerc-factory | 2 ++ Resources/linphonerc-factory~ipad | 3 +++ Resources/linphonerc~ipad | 4 ++-- 5 files changed, 8 insertions(+), 21 deletions(-) diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index fe54143e8..e23e914ed 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -202,24 +202,7 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; - CGRect frame = [videoPreview frame]; - switch (toInterfaceOrientation) { - case UIInterfaceOrientationPortrait: - [videoPreview setTransform: CGAffineTransformMakeRotation(0)]; - break; - case UIInterfaceOrientationPortraitUpsideDown: - [videoPreview setTransform: CGAffineTransformMakeRotation(M_PI)]; - break; - case UIInterfaceOrientationLandscapeLeft: - [videoPreview setTransform: CGAffineTransformMakeRotation(M_PI / 2)]; - break; - case UIInterfaceOrientationLandscapeRight: - [videoPreview setTransform: CGAffineTransformMakeRotation(-M_PI / 2)]; - break; - default: - break; - } - [videoPreview setFrame:frame]; +// in mode display_filter_auto_rotate=0, no need to rotate the preview } diff --git a/Resources/linphonerc b/Resources/linphonerc index 040abc310..560a9780a 100644 --- a/Resources/linphonerc +++ b/Resources/linphonerc @@ -14,7 +14,6 @@ capture=1 show_local=0 enabled=1 size=qvga -display_filter_auto_rotate=1 automatically_initiate=0 automatically_accept=0 diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory index e16499cd6..fb48ebbdf 100644 --- a/Resources/linphonerc-factory +++ b/Resources/linphonerc-factory @@ -45,3 +45,5 @@ sharing_server=https://www.linphone.org:444/upload.php ice=1 stun=stun.linphone.org +[video] +display_filter_auto_rotate=0 diff --git a/Resources/linphonerc-factory~ipad b/Resources/linphonerc-factory~ipad index e9e636be0..80aa4e891 100644 --- a/Resources/linphonerc-factory~ipad +++ b/Resources/linphonerc-factory~ipad @@ -44,3 +44,6 @@ transport=tls sharing_server=https://www.linphone.org:444/upload.php ice=1 stun=stun.linphone.org + +[video] +display_filter_auto_rotate=0 diff --git a/Resources/linphonerc~ipad b/Resources/linphonerc~ipad index 9458f6e74..4efe5a33e 100644 --- a/Resources/linphonerc~ipad +++ b/Resources/linphonerc~ipad @@ -14,7 +14,6 @@ capture=1 show_local=1 enabled=1 size=vga -display_filter_auto_rotate=1 automatically_initiate=0 automatically_accept=0 @@ -27,4 +26,5 @@ animations_preference=1 edge_opt_preference=0 [default_values] -reg_expires=600 \ No newline at end of file +reg_expires=600 + From acbc41d7dc4ef5a00bcadf2fb8cbe9415df1b398 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 23 Apr 2013 12:12:01 +0200 Subject: [PATCH 27/53] update liblinphone for beep bug. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 12540ce01..6fcf76e40 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 12540ce01c9f024266f6f465c972f72a0c2594bb +Subproject commit 6fcf76e405a695f86a446f430903682f42155f43 From 731821bd24df26eba01f509c1d78e0d5d897268c Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Thu, 25 Apr 2013 10:43:17 +0200 Subject: [PATCH 28/53] add special case to compute aac network birate --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 6fcf76e40..bf3e43611 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 6fcf76e405a695f86a446f430903682f42155f43 +Subproject commit bf3e43611778efc483999cacc470aed67fc6b83d From ec30ae5a67860c9b73877f827042a226e04a8a03 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Thu, 25 Apr 2013 17:03:21 +0200 Subject: [PATCH 29/53] Aac-eld add missing headers according to RFC3640 3.3.6 --- submodules/Default-568h@2x.png | Bin 0 -> 18594 bytes submodules/linphone | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 submodules/Default-568h@2x.png diff --git a/submodules/Default-568h@2x.png b/submodules/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/submodules/linphone b/submodules/linphone index bf3e43611..5f109bfb5 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit bf3e43611778efc483999cacc470aed67fc6b83d +Subproject commit 5f109bfb55224b69dd598d95c2c0dd47fa87b960 From 6d3ae54e75e8be2ab07e559067fb0e759639fb40 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Fri, 26 Apr 2013 01:13:55 +0200 Subject: [PATCH 30/53] aac-eld support multiframe per packet decoding --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 5f109bfb5..a0a70a59d 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 5f109bfb55224b69dd598d95c2c0dd47fa87b960 +Subproject commit a0a70a59dfedfe22ed3fae3df88a6363bd8596e0 From 4c944f5538f35d0f1f817d9d0bab7096ab15cc8b Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 3 May 2013 14:39:04 +0200 Subject: [PATCH 31/53] update linphone submodule for Refer bugfix --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index a0a70a59d..4da039cd5 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit a0a70a59dfedfe22ed3fae3df88a6363bd8596e0 +Subproject commit 4da039cd52a3258f6ce0c09a9a53da1026beadfb From 979a0b0469872f4485cee259aed4866ffbbc6e5d Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 6 May 2013 22:11:11 +0200 Subject: [PATCH 32/53] update linphone submodule for conferencing bugfixes. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 4da039cd5..ca42ee87d 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 4da039cd52a3258f6ce0c09a9a53da1026beadfb +Subproject commit ca42ee87ded3fa4cbf44757f13e2f5537afbb498 From 3ce69628166929cd3835254532d8831050de83d1 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Thu, 9 May 2013 22:49:25 +0200 Subject: [PATCH 33/53] AAC-ELD: fix SDP/ftmp content according to new recommendation from Fraunhofer --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index ca42ee87d..12a3d7951 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit ca42ee87ded3fa4cbf44757f13e2f5537afbb498 +Subproject commit 12a3d795131ab1b367ae000f8b70f9b8af684df6 From 5ea8097dddec301784cb1259b22d174bb51ae732 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Wed, 22 May 2013 16:13:35 +0200 Subject: [PATCH 34/53] update libvpx to v1.2.0 --- Classes/ContactDetailsTableViewController.m | 2 +- .../LinphoneUI/UICompositeViewController.m | 12 ++-- linphone.xcodeproj/project.pbxproj | 32 ++++++++-- submodules/build/builders.d/libvpx.mk | 7 ++- submodules/build/builders.d/libvpx.patch | 59 ++----------------- submodules/build/iphone-config.site | 8 +-- submodules/externals/libvpx | 2 +- 7 files changed, 51 insertions(+), 71 deletions(-) diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 8f49fd838..7fe664112 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -537,7 +537,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C NSMutableArray *sectionDict = [self getSectionData:[indexPath section]]; Entry *entry = [sectionDict objectAtIndex:[indexPath row]]; if (![self isEditing]) { - NSString *dest; + NSString *dest=NULL;; if(contactSections[[indexPath section]] == ContactSections_Number) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index aa7237646..7a1913db0 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -103,7 +103,7 @@ - (void)initUICompositeViewController { viewControllerCache = [[NSMutableDictionary alloc] init]; - currentOrientation = UIDeviceOrientationUnknown; + currentOrientation = (UIInterfaceOrientation)UIDeviceOrientationUnknown; } - (id)init{ @@ -416,18 +416,18 @@ if(currentOrientation == UIDeviceOrientationUnknown) { return [UIApplication sharedApplication].statusBarOrientation; } - deviceOrientation = currentOrientation; + deviceOrientation = (UIDeviceOrientation)currentOrientation; } if (UIDeviceOrientationIsPortrait(deviceOrientation)) { if ([currentViewDescription portraitMode]) { - return deviceOrientation; + return (UIInterfaceOrientation)deviceOrientation; } else { return UIInterfaceOrientationLandscapeLeft; } } if (UIDeviceOrientationIsLandscape(deviceOrientation)) { if ([currentViewDescription landscapeMode]) { - return deviceOrientation; + return (UIInterfaceOrientation)deviceOrientation; } else { return UIInterfaceOrientationPortrait; } @@ -435,7 +435,7 @@ } else if([rotationPreference isEqualToString:@"portrait"]) { if ([currentViewDescription portraitMode]) { if (UIDeviceOrientationIsPortrait(deviceOrientation)) { - return deviceOrientation; + return (UIInterfaceOrientation)deviceOrientation; } else { if(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) { return [UIApplication sharedApplication].statusBarOrientation; @@ -449,7 +449,7 @@ } else if([rotationPreference isEqualToString:@"landscape"]) { if ([currentViewDescription landscapeMode]) { if (UIDeviceOrientationIsLandscape(deviceOrientation)) { - return deviceOrientation; + return (UIInterfaceOrientation)deviceOrientation; } else { if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { return [UIApplication sharedApplication].statusBarOrientation; diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 28efeaf74..8f5029539 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -75,6 +75,8 @@ 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 2200C2DB174BB87A002E9A70 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EED1600B4E400B92522 /* AssetsLibrary.framework */; }; + 2200C2DC174BBB24002E9A70 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 226EF06B15FA256B005865C7 /* MobileCoreServices.framework */; }; 22058C71116E305000B08DDD /* linphone_icon_57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* linphone_icon_57.png */; }; 220FAD3110765B400068D98F /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2810765B400068D98F /* libeXosip2.a */; }; 220FAD3210765B400068D98F /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2910765B400068D98F /* libgsm.a */; }; @@ -2481,6 +2483,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 2200C2DC174BBB24002E9A70 /* MobileCoreServices.framework in Frameworks */, + 2200C2DB174BB87A002E9A70 /* AssetsLibrary.framework in Frameworks */, D30562131671DC3E00C97967 /* libNinePatch.a in Frameworks */, D30562141671DC3E00C97967 /* libXMLRPC.a in Frameworks */, 22D8F170147548E2008C97DB /* AVFoundation.framework in Frameworks */, @@ -3800,7 +3804,7 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0450; + LastUpgradeCheck = 0460; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "linphone" */; compatibilityVersion = "Xcode 3.2"; @@ -5494,15 +5498,20 @@ isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ""; - PROVISIONING_PROFILE = "7763350E-083E-4ADA-8535-05883F19F947"; + PROVISIONING_PROFILE = "BB7E624F-8CD6-448B-A235-CE8DBB401F92"; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; TARGETED_DEVICE_FAMILY = "1,2"; @@ -5732,10 +5741,15 @@ isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; IPHONEOS_DEPLOYMENT_TARGET = 4.3; @@ -5798,10 +5812,15 @@ isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; IPHONEOS_DEPLOYMENT_TARGET = 4.3; @@ -5865,15 +5884,20 @@ isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer: jehan monnier (E8MYPN2NXL)"; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; IPHONEOS_DEPLOYMENT_TARGET = 4.3; LIBRARY_SEARCH_PATHS = ""; - PROVISIONING_PROFILE = ""; + PROVISIONING_PROFILE = "2AC0DC11-4546-47B6-8B8A-453CCA80903C"; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/submodules/build/builders.d/libvpx.mk b/submodules/build/builders.d/libvpx.mk index 8cf0564ec..badceee91 100644 --- a/submodules/build/builders.d/libvpx.mk +++ b/submodules/build/builders.d/libvpx.mk @@ -14,6 +14,9 @@ else libvpx_configure_options+= --target=x86-darwin10-gcc endif libvpx_dir?=externals/libvpx +all_p=armv6-darwin-gcc #neon Cortex-A8 +all_p+=armv7-darwin-gcc #neon Cortex-A8 +all_p+=armv7s-darwin-gcc #neon Cortex-A8 $(BUILDER_SRC_DIR)/$(libvpx_dir)/patched.stamp: cd $(BUILDER_SRC_DIR)/$(libvpx_dir) \ @@ -24,10 +27,10 @@ $(BUILDER_BUILD_DIR)/$(libvpx_dir)/config.mk: $(BUILDER_SRC_DIR)/$(libvpx_dir)/p mkdir -p $(BUILDER_BUILD_DIR)/$(libvpx_dir) cd $(BUILDER_BUILD_DIR)/$(libvpx_dir)/ \ && host_alias=${host} . $(BUILDER_SRC_DIR)/build/$(config_site) \ - && SYSROOT_PATH=$$SYSROOT_PATH SDK_BIN_PATH=$$SDK_BIN_PATH $(BUILDER_SRC_DIR)/$(libvpx_dir)/configure --prefix=$(prefix) $(libvpx_configure_options) + && export all_platforms="${all_p}" && $(BUILDER_SRC_DIR)/$(libvpx_dir)/configure --prefix=$(prefix) --sdk-path=$$SDK_BIN_PATH/../../ --libc=$$SYSROOT_PATH $(libvpx_configure_options) build-libvpx: $(BUILDER_BUILD_DIR)/$(libvpx_dir)/config.mk - cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install + cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) make && make install clean-libvpx: cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) && make clean diff --git a/submodules/build/builders.d/libvpx.patch b/submodules/build/builders.d/libvpx.patch index d651ccfc8..0cd793f5f 100644 --- a/submodules/build/builders.d/libvpx.patch +++ b/submodules/build/builders.d/libvpx.patch @@ -1,29 +1,9 @@ diff --git a/build/make/configure.sh b/build/make/configure.sh -index 0426f92..38fdcb2 100755 +index c99a01c..48f8876 100755 --- a/build/make/configure.sh +++ b/build/make/configure.sh -@@ -624,6 +624,9 @@ process_common_toolchain() { - if [ -d "/Developer/SDKs/MacOSX10.7.sdk" ]; then - osx_sdk_dir="/Developer/SDKs/MacOSX10.7.sdk" - fi -+ if test -n "$SYSROOT_PATH" ; then -+ osx_sdk_dir=$SYSROOT_PATH -+ fi - - case ${toolchain} in - *-darwin8-*) -@@ -743,9 +746,17 @@ process_common_toolchain() { - darwin*) - SDK_PATH=/Developer/Platforms/iPhoneOS.platform/Developer - TOOLCHAIN_PATH=${SDK_PATH}/usr/bin -+ if test -n "$SYSROOT_PATH" ; then -+ SDK_FULL_PATH=$SYSROOT_PATH -+ else -+ SDK_FULL_PATH="${SDK_PATH}/SDKs/iPhoneOS5.0.sdk" -+ fi -+ if test -n "$SDK_BIN_PATH" ; then -+ TOOLCHAIN_PATH=$SDK_BIN_PATH -+ fi +@@ -892,7 +892,7 @@ process_common_toolchain() { + CXX=${TOOLCHAIN_PATH}/g++ CC=${TOOLCHAIN_PATH}/gcc AR=${TOOLCHAIN_PATH}/ar - LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-llvm-gcc-4.2 @@ -31,39 +11,12 @@ index 0426f92..38fdcb2 100755 AS=${TOOLCHAIN_PATH}/as STRIP=${TOOLCHAIN_PATH}/strip NM=${TOOLCHAIN_PATH}/nm -@@ -757,12 +768,12 @@ process_common_toolchain() { +@@ -904,7 +904,7 @@ process_common_toolchain() { ASFLAGS="-version -arch ${tgt_isa} -g" add_cflags -arch ${tgt_isa} - add_ldflags -arch_only ${tgt_isa} + add_ldflags -arch ${tgt_isa} -- add_cflags "-isysroot ${SDK_PATH}/SDKs/iPhoneOS5.0.sdk" -+ add_cflags "-isysroot $SDK_FULL_PATH" - - # This should be overridable -- alt_libc=${SDK_PATH}/SDKs/iPhoneOS5.0.sdk -+ alt_libc=$SDK_FULL_PATH - - # Add the paths for the alternate libc - for d in usr/include; do -diff --git a/configure b/configure -index 6f20c6b..4638ea2 100755 ---- a/configure -+++ b/configure -@@ -94,6 +94,7 @@ all_platforms="${all_platforms} iwmmxt-linux-gcc" - all_platforms="${all_platforms} iwmmxt2-linux-rvct" - all_platforms="${all_platforms} iwmmxt2-linux-gcc" - all_platforms="${all_platforms} armv7-darwin-gcc" #neon Cortex-A8 -+all_platforms="${all_platforms} armv7s-darwin-gcc" #neon Cortex-A8 - all_platforms="${all_platforms} armv7-linux-rvct" #neon Cortex-A8 - all_platforms="${all_platforms} armv7-linux-gcc" #neon Cortex-A8 - all_platforms="${all_platforms} armv7-none-rvct" #neon Cortex-A8 -@@ -198,6 +199,7 @@ ARCH_EXT_LIST=" - armv5te - armv6 - armv7 -+ armv7s - iwmmxt - iwmmxt2 - + if [ -z "${alt_libc}" ]; then + alt_libc=${SDK_PATH}/SDKs/iPhoneOS5.1.sdk diff --git a/submodules/build/iphone-config.site b/submodules/build/iphone-config.site index ea15aad82..125bdebcd 100644 --- a/submodules/build/iphone-config.site +++ b/submodules/build/iphone-config.site @@ -27,11 +27,11 @@ else exit fi echo "Loading config.site for iPhone platform=${PLATFORM} version=${SDK_VERSION}" -XCODE_ROOT=/Applications/Xcode.app +XCODE_DEV_PATH=`xcode-select -print-path` #new path with Xcode 4.3: -if test -d ${XCODE_ROOT}/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs ; then - SDK_PATH_LIST=`ls -drt ${XCODE_ROOT}/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*` - SDK_BIN_PATH=${XCODE_ROOT}/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin +if test -d ${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs ; then + SDK_PATH_LIST=`ls -drt ${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*` + SDK_BIN_PATH=${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin else SDK_PATH_LIST=`ls -drt /Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*` SDK_BIN_PATH=/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin diff --git a/submodules/externals/libvpx b/submodules/externals/libvpx index c8df1656b..b9ce43029 160000 --- a/submodules/externals/libvpx +++ b/submodules/externals/libvpx @@ -1 +1 @@ -Subproject commit c8df1656bd94928059204242e778bd5b8b9dc7aa +Subproject commit b9ce43029298182668d4dcb0e0814189e4a63c2a From 1de660be1b23339e9b3a18c46a865dfa4d2102ae Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Wed, 22 May 2013 23:00:34 +0200 Subject: [PATCH 35/53] AAC-ELD: support PLC and multiple frames per RTP packet and fix uninit to free the audio converter. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 12a3d7951..889ff55a0 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 12a3d795131ab1b367ae000f8b70f9b8af684df6 +Subproject commit 889ff55a035ece493d053d5bd631df560c28c062 From 6bfdc61a725cf425d0d37d3e9e8f5928523b2f49 Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Thu, 23 May 2013 11:54:37 +0200 Subject: [PATCH 36/53] AAC-ELD : set an initial max ptime at 50ms - to avoid ptime automatic growing too high when packets are losts - setting overridden up to 100 by initial set ptime --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 889ff55a0..7cb2aa263 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 889ff55a035ece493d053d5bd631df560c28c062 +Subproject commit 7cb2aa2639fd6180e8996eee303cfbbcb3048941 From 944e0663932ef3c634718bbfb9facbfaa3034e21 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 27 May 2013 22:07:52 +0200 Subject: [PATCH 37/53] add opus submodule --- .gitmodules | 3 + submodules/build/builder-iphone-os.mk | 8 +-- submodules/build/builders.d/opus.mk | 67 +++++++++++++++++++ submodules/externals/opus | 1 + .../liblinphone.xcodeproj/project.pbxproj | 8 +++ submodules/linphone | 2 +- 6 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 submodules/build/builders.d/opus.mk create mode 160000 submodules/externals/opus diff --git a/.gitmodules b/.gitmodules index 48fa6c484..801c0cc77 100644 --- a/.gitmodules +++ b/.gitmodules @@ -49,3 +49,6 @@ [submodule "submodules/bcg729"] path = submodules/bcg729 url = git://git.linphone.org/bcg729.git +[submodule "submodules/externals/opus"] + path = submodules/externals/opus + url = git://git.opus-codec.org/opus.git diff --git a/submodules/build/builder-iphone-os.mk b/submodules/build/builder-iphone-os.mk index e7643586d..605e898c4 100644 --- a/submodules/build/builder-iphone-os.mk +++ b/submodules/build/builder-iphone-os.mk @@ -109,18 +109,18 @@ veryclean: veryclean-linphone veryclean-msbcg729 rm -rf $(BUILDER_BUILD_DIR) -.NOTPARALLEL build-linphone: init build-openssl build-srtp build-zrtpcpp build-osip2 build-eXosip2 build-speex build-libgsm build-ffmpeg build-libvpx detect_gpl_mode_switch $(LINPHONE_BUILD_DIR)/Makefile +.NOTPARALLEL build-linphone: init build-openssl build-srtp build-zrtpcpp build-osip2 build-eXosip2 build-speex build-libgsm build-ffmpeg build-libvpx build-opus detect_gpl_mode_switch $(LINPHONE_BUILD_DIR)/Makefile cd $(LINPHONE_BUILD_DIR) && export PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig export CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make newdate && make && make install mkdir -p $(prefix)/share/linphone/tutorials && cp -f $(LINPHONE_SRC_DIR)/coreapi/help/*.c $(prefix)/share/linphone/tutorials/ -clean-linphone: clean-osip2 clean-eXosip2 clean-speex clean-libgsm clean-srtp clean-zrtpcpp clean-msilbc clean-libilbc clean-openssl clean-msamr clean-mssilk clean-ffmpeg clean-libvpx clean-msx264 +clean-linphone: clean-osip2 clean-eXosip2 clean-speex clean-libgsm clean-srtp clean-zrtpcpp clean-msilbc clean-libilbc clean-openssl clean-msamr clean-mssilk clean-ffmpeg clean-libvpx clean-msx264 clean-opus cd $(LINPHONE_BUILD_DIR) && make clean -veryclean-linphone: veryclean-osip2 veryclean-eXosip2 veryclean-speex veryclean-srtp veryclean-zrtpcpp veryclean-libgsm veryclean-msilbc veryclean-libilbc veryclean-openssl veryclean-msamr veryclean-mssilk veryclean-msx264 veryclean-libvpx +veryclean-linphone: veryclean-osip2 veryclean-eXosip2 veryclean-speex veryclean-srtp veryclean-zrtpcpp veryclean-libgsm veryclean-msilbc veryclean-libilbc veryclean-openssl veryclean-msamr veryclean-mssilk veryclean-msx264 veryclean-libvpx veryclean-opus #-cd $(LINPHONE_BUILD_DIR) && make distclean -cd $(LINPHONE_SRC_DIR) && rm -f configure -clean-makefile-linphone: clean-makefile-osip2 clean-makefile-eXosip2 clean-makefile-speex clean-makefile-srtp clean-makefile-zrtpcpp clean-makefile-libilbc clean-makefile-msilbc clean-makefile-openssl clean-makefile-msamr clean-makefile-ffmpeg clean-makefile-libvpx clean-makefile-mssilk +clean-makefile-linphone: clean-makefile-osip2 clean-makefile-eXosip2 clean-makefile-speex clean-makefile-srtp clean-makefile-zrtpcpp clean-makefile-libilbc clean-makefile-msilbc clean-makefile-openssl clean-makefile-msamr clean-makefile-ffmpeg clean-makefile-libvpx clean-makefile-mssilk clean-makefile-opus cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile diff --git a/submodules/build/builders.d/opus.mk b/submodules/build/builders.d/opus.mk new file mode 100644 index 000000000..6d905843e --- /dev/null +++ b/submodules/build/builders.d/opus.mk @@ -0,0 +1,67 @@ +############################################################################ +# opus.mk +# Copyright (C) 2013 Belledonne Communications,Grenoble France +# +############################################################################ +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################ +opus_dir?=externals/opus +enable_opus?=yes + +libopus_configure_options=--disable-extra-programs --disable-doc +#ifeq (,$(findstring armv7s,$(host))) +# libopus_configure_options+= --enable-fixed-point +#compilation error with armv7, switching to fpu impl +#endif + +$(BUILDER_SRC_DIR)/$(opus_dir)/configure: + @echo -e "\033[01;32m Running autogen for msopus in $(BUILDER_SRC_DIR)/$(opus_dir) \033[0m" + cd $(BUILDER_SRC_DIR)/$(opus_dir) && ./autogen.sh + +$(BUILDER_BUILD_DIR)/$(opus_dir)/Makefile: $(BUILDER_SRC_DIR)/$(opus_dir)/configure + @echo -e "\033[01;32m Running configure in $(BUILDER_BUILD_DIR)/$(opus_dir) \033[0m" + mkdir -p $(BUILDER_BUILD_DIR)/$(opus_dir) + cd $(BUILDER_BUILD_DIR)/$(opus_dir)/ \ + && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \ + $(BUILDER_SRC_DIR)/$(opus_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \ + ${libopus_configure_options} + +ifeq ($(enable_opus),yes) + +build-opus: $(BUILDER_BUILD_DIR)/$(opus_dir)/Makefile + @echo -e "\033[01;32m building opus \033[0m" + cd $(BUILDER_BUILD_DIR)/$(opus_dir) \ + && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig \ + CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \ + make -j1 && make install + + +else +build-opus: + @echo "opus is disabled" + +endif + +clean-opus: + -cd $(BUILDER_BUILD_DIR)/$(opus_dir) && make clean + +veryclean-opus: + -cd $(BUILDER_BUILD_DIR)/$(opus_dir) && make distclean + rm -f $(BUILDER_SRC_DIR)/$(opus_dir)/configure + +clean-makefile-opus: + -cd $(BUILDER_BUILD_DIR)/$(opus_dir) && rm -f Makefile diff --git a/submodules/externals/opus b/submodules/externals/opus new file mode 160000 index 000000000..fcecd29ab --- /dev/null +++ b/submodules/externals/opus @@ -0,0 +1 @@ +Subproject commit fcecd29abf32164326e568acdcdf7d8e877b33b1 diff --git a/submodules/liblinphone.xcodeproj/project.pbxproj b/submodules/liblinphone.xcodeproj/project.pbxproj index dc4fcbf65..ddc235483 100644 --- a/submodules/liblinphone.xcodeproj/project.pbxproj +++ b/submodules/liblinphone.xcodeproj/project.pbxproj @@ -364,6 +364,8 @@ 22A10B5911F84E2D00373793 /* proto.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5311F84E2D00373793 /* proto.h */; }; 22A10B5A11F84E2D00373793 /* toast.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5411F84E2D00373793 /* toast.h */; }; 22A10B5B11F84E2D00373793 /* unproto.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5511F84E2D00373793 /* unproto.h */; }; + 22AF73BE1753E83700BE8398 /* msopus.c in Sources */ = {isa = PBXBuildFile; fileRef = 22AF73BD1753E83700BE8398 /* msopus.c */; }; + 22AF73C01753F3E100BE8398 /* libopus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AF73BF1753F3E100BE8398 /* libopus.a */; }; 22D07CD016F3BC5F009F2C9E /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 22D07CB416F3BC5F009F2C9E /* InfoPlist.strings */; }; 22D07CD116F3BC5F009F2C9E /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22D07CB616F3BC5F009F2C9E /* MainWindow.xib */; }; 22D07CD216F3BC5F009F2C9E /* mediastreamViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22D07CB816F3BC5F009F2C9E /* mediastreamViewController.xib */; }; @@ -666,6 +668,8 @@ 22A10B5311F84E2D00373793 /* proto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = proto.h; sourceTree = ""; }; 22A10B5411F84E2D00373793 /* toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = toast.h; sourceTree = ""; }; 22A10B5511F84E2D00373793 /* unproto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unproto.h; sourceTree = ""; }; + 22AF73BD1753E83700BE8398 /* msopus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msopus.c; sourceTree = ""; }; + 22AF73BF1753F3E100BE8398 /* libopus.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopus.a; path = "../liblinphone-sdk/apple-darwin/lib/libopus.a"; sourceTree = ""; }; 22D07CB516F3BC5F009F2C9E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 22D07CB716F3BC5F009F2C9E /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; }; 22D07CB916F3BC5F009F2C9E /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/mediastreamViewController.xib; sourceTree = ""; }; @@ -715,6 +719,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 22AF73C01753F3E100BE8398 /* libopus.a in Frameworks */, 225D65CD1521C19A008B2E81 /* libortp.a in Frameworks */, 225D65CC1521C195008B2E81 /* libmediastreamer.a in Frameworks */, 2211DB9F14765CED00DEE054 /* libmssilk.a in Frameworks */, @@ -767,6 +772,7 @@ 0867D691FE84028FC02AAC07 /* liblinphone */ = { isa = PBXGroup; children = ( + 22AF73BF1753F3E100BE8398 /* libopus.a */, 2211DBA0147660BB00DEE054 /* libSKP_SILK_SDK.a */, 2211DB9E14765CEC00DEE054 /* libmssilk.a */, 7066FC0913E830B800EFC6DC /* libvpx.a */, @@ -1050,6 +1056,7 @@ 223CA7EF16D9268D00EF1BEC /* audiofilters */ = { isa = PBXGroup; children = ( + 22AF73BD1753E83700BE8398 /* msopus.c */, 0406A7651721FF79009FD24F /* aac-eld.c */, 22D07CE416F3BFCB009F2C9E /* speexec.c */, 223CA7F016D9268D00EF1BEC /* alaw.c */, @@ -1679,6 +1686,7 @@ 223CA8D416D9268D00EF1BEC /* scaler.c in Sources */, 223CA8D716D9268D00EF1BEC /* videostream.c in Sources */, 22D07CE516F3BFCB009F2C9E /* speexec.c in Sources */, + 22AF73BE1753E83700BE8398 /* msopus.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/submodules/linphone b/submodules/linphone index 7cb2aa263..5355e3775 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 7cb2aa2639fd6180e8996eee303cfbbcb3048941 +Subproject commit 5355e37750d8c32fbd978161966ba80390a8bec0 From fbbbc249f78d77fe8e0d56cc6e260580217795de Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 28 May 2013 08:49:54 +0200 Subject: [PATCH 38/53] update speex submodule to fix symbole colission with opus --- submodules/externals/speex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/externals/speex b/submodules/externals/speex index 89e99a481..e780bd2ce 160000 --- a/submodules/externals/speex +++ b/submodules/externals/speex @@ -1 +1 @@ -Subproject commit 89e99a4814fd62945ff559d3d37d9aa92caf3169 +Subproject commit e780bd2ce36af4133fd0ff304ab2078f1dacaaf6 From 4639c7731875eece23af9c5b36a398a118b02c9b Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 28 May 2013 12:40:05 +0200 Subject: [PATCH 39/53] add opus library --- linphone.xcodeproj/project.pbxproj | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 8f5029539..c029ee1e5 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -129,6 +129,8 @@ 22AA8AFD13D7125600B30535 /* libx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AA8AFB13D7125500B30535 /* libx264.a */; }; 22AA8AFE13D7125600B30535 /* libmsx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AA8AFC13D7125500B30535 /* libmsx264.a */; }; 22AA8B0113D83F6300B30535 /* UICamSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AA8B0013D83F6300B30535 /* UICamSwitch.m */; }; + 22AF73C21754C0D100BE8398 /* libopus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AF73C11754C0D000BE8398 /* libopus.a */; }; + 22AF73C31754C0D800BE8398 /* libopus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AF73C11754C0D000BE8398 /* libopus.a */; }; 22B5EFA310CE50BD00777D97 /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */; }; 22B5F03510CE6B2F00777D97 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5F03410CE6B2F00777D97 /* AddressBook.framework */; }; 22BB1A69132FF16A005CD7AA /* UIEraseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */; }; @@ -1616,6 +1618,7 @@ 22AA8AFC13D7125500B30535 /* libmsx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsx264.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsx264.a"; sourceTree = ""; }; 22AA8AFF13D83F6300B30535 /* UICamSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICamSwitch.h; sourceTree = ""; }; 22AA8B0013D83F6300B30535 /* UICamSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICamSwitch.m; sourceTree = ""; }; + 22AF73C11754C0D000BE8398 /* libopus.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopus.a; path = "liblinphone-sdk/apple-darwin/lib/libopus.a"; sourceTree = ""; }; 22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; }; 22B5F03410CE6B2F00777D97 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; 22BB1A67132FF16A005CD7AA /* UIEraseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIEraseButton.h; sourceTree = ""; }; @@ -2423,6 +2426,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 22AF73C21754C0D100BE8398 /* libopus.a in Frameworks */, D30562151671DC4900C97967 /* libNinePatch.a in Frameworks */, D30562161671DC4900C97967 /* libXMLRPC.a in Frameworks */, 22B5F03510CE6B2F00777D97 /* AddressBook.framework in Frameworks */, @@ -2525,6 +2529,7 @@ 22D8F16F147548E2008C97DB /* libspeexdsp.a in Frameworks */, 22D8F163147548E2008C97DB /* libssl.a in Frameworks */, 22D8F15B147548E2008C97DB /* libvpx.a in Frameworks */, + 22AF73C31754C0D800BE8398 /* libopus.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2985,6 +2990,7 @@ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( + 22AF73C11754C0D000BE8398 /* libopus.a */, 2258633C11410BAC00C5A737 /* README */, 22276E8013C73D3100210156 /* libavcodec.a */, 22276E8113C73D3100210156 /* libavutil.a */, From a305436e080651e629585e76e4ad907810bb810c Mon Sep 17 00:00:00 2001 From: Johan Pascal Date: Tue, 28 May 2013 13:24:09 +0200 Subject: [PATCH 40/53] Add opus codec to the linphone application - only one mode available: 48kHz --- Classes/LinphoneManager.m | 1 + Settings/InAppSettings.bundle/Audio.plist | 52 ++++++++++++++--------- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 92976227d..0cf52f4be 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -133,6 +133,7 @@ struct codec_name_pref_table codec_pref_table[]={ { "vp8", 90000, @"vp8_preference"}, { "mpeg4-generic", 44100, @"aaceld_44k_preference"}, { "mpeg4-generic", 22050, @"aaceld_22k_preference"}, + { "opus", 48000, @"opus_preference"}, { NULL,0,Nil } }; diff --git a/Settings/InAppSettings.bundle/Audio.plist b/Settings/InAppSettings.bundle/Audio.plist index 4331a88d4..5fa9900a1 100644 --- a/Settings/InAppSettings.bundle/Audio.plist +++ b/Settings/InAppSettings.bundle/Audio.plist @@ -30,6 +30,16 @@ Type PSToggleSwitchSpecifier + + DefaultValue + + Key + opus_preference + Title + Opus 48kHz + Type + PSToggleSwitchSpecifier + DefaultValue @@ -50,6 +60,28 @@ Type PSToggleSwitchSpecifier + + DefaultValue + + Key + aaceld_22k_preference + Title + AAC-ELD 22kHz + Type + PSToggleSwitchSpecifier + + + New item + + DefaultValue + + Key + aaceld_44k_preference + Title + AAC-ELD 44kHz + Type + PSToggleSwitchSpecifier + DefaultValue @@ -120,26 +152,6 @@ Type PSToggleSwitchSpecifier - - DefaultValue - - Key - aaceld_44k_preference - Title - AAC-ELD 44kHz - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - aaceld_22k_preference - Title - AAC-ELD 22kHz - Type - PSToggleSwitchSpecifier - Key audio_advanced_group From 8553bac55d4a7ed505dc70d3b1d57a90aa8c14bd Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 28 May 2013 17:10:50 +0200 Subject: [PATCH 41/53] better address book sip address handling/filtering --- Classes/ChatViewController.m | 2 +- Classes/ContactDetailsTableViewController.m | 44 ++++++++++++++++++--- Classes/ContactsViewController.h | 5 ++- Classes/ContactsViewController.m | 10 ++--- Classes/LinphoneManager.h | 5 ++- Classes/LinphoneManager.m | 8 +++- Classes/Utils/FastAddressBook.m | 2 +- Resources/linphonerc-factory | 3 ++ 8 files changed, 61 insertions(+), 18 deletions(-) diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 4f52378a2..453f11927 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -122,7 +122,7 @@ static UICompositeViewDescription *compositeDescription = nil; if ([[addressField text ]length] == 0) { // if no address is manually set, lauch address book [ContactSelection setSelectionMode:ContactSelectionModeMessage]; [ContactSelection setAddAddress:nil]; - [ContactSelection setSipFilter:TRUE]; + [ContactSelection setSipFilter:@"*"]; [ContactSelection setEmailFilter:FALSE]; [[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE]; } else { diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 7fe664112..f43280bdc 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -198,7 +198,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); BOOL add = false; if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { - if(CFStringCompare((CFStringRef)kContactSipField, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { + if(CFStringCompare((CFStringRef)[LinphoneManager instance].contactSipField, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { add = true; } } else { @@ -285,7 +285,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C lMap = ABMultiValueCreateMutable(kABDictionaryPropertyType); } CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey }; - CFTypeRef values[] = { [value copy], kContactSipField }; + CFTypeRef values[] = { [value copy], [LinphoneManager instance].contactSipField }; CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 1, NULL, NULL); CFStringRef label = (CFStringRef)[labelArray objectAtIndex:0]; if(!ABMultiValueAddValueAndLabel(lMap, lDict, label, &identifier)) { @@ -497,7 +497,17 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, index); CFStringRef valueRef = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); if(valueRef != NULL) { - value = [NSString stringWithString:(NSString*) valueRef]; + LinphoneAddress* addr=NULL; + if ([[LinphoneManager instance] lpConfigBoolForKey:@"contact_display_username_only"] + && (addr=linphone_address_new([(NSString *)valueRef UTF8String]))) { + if (linphone_address_get_username(addr)) { + value = [NSString stringWithCString:linphone_address_get_username(addr) + encoding:[NSString defaultCStringEncoding]]; + } /*else value=@""*/ + } else { + value = [NSString stringWithString:(NSString*) valueRef]; + } + if (addr) linphone_address_destroy(addr); } CFRelease(lDict); CFRelease(lMap); @@ -825,11 +835,33 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C CFRelease(lcMap); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; - CFTypeRef values[] = { [value copy], kContactSipField }; + CFTypeRef values[] = { [value copy], [LinphoneManager instance].contactSipField }; CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); ABMultiValueReplaceValueAtIndex(lMap, lDict, index); - CFRelease(lDict); - ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); + ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); + CFRelease(lDict); + /*check if message type is kept or not*/ + lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + lDict = ABMultiValueCopyValueAtIndex(lMap,index); + if(!CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { + /*too bad probably a gtalk number, storing uri*/ + NSString* username = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); + LinphoneAddress* address = linphone_core_interpret_url([LinphoneManager getLc] + ,[username UTF8String]); + char* uri = linphone_address_as_string_uri_only(address); + CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; + CFTypeRef values[] = { [NSString stringWithCString:uri encoding:[NSString defaultCStringEncoding]], [LinphoneManager instance].contactSipField }; + CFDictionaryRef lDict2 = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); + ABMultiValueReplaceValueAtIndex(lMap, lDict2, index); + ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); + CFRelease(lDict2); + linphone_address_destroy(address); + ms_free(uri); + } + CFRelease(lDict); CFRelease(lMap); } else if(contactSections[[path section]] == ContactSections_Email) { ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonEmailProperty); diff --git a/Classes/ContactsViewController.h b/Classes/ContactsViewController.h index 00da1d3ad..c21948896 100644 --- a/Classes/ContactsViewController.h +++ b/Classes/ContactsViewController.h @@ -36,8 +36,9 @@ typedef enum _ContactSelectionMode { + (ContactSelectionMode)getSelectionMode; + (void)setAddAddress:(NSString*)address; + (NSString*)getAddAddress; -+ (void)setSipFilter:(BOOL)enable; -+ (BOOL)getSipFilter; +/* define sip filter, can be * or sip domain*/ ++ (void)setSipFilter:(NSString*) domain; ++ (NSString*)getSipFilter; + (void)setEmailFilter:(BOOL)enable; + (BOOL)getEmailFilter; diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index cf23d9d01..342ee059f 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -27,7 +27,7 @@ static ContactSelectionMode sSelectionMode = ContactSelectionModeNone; static NSString* sAddAddress = nil; -static BOOL sSipFilter = FALSE; +static NSString* sSipFilter = nil; static BOOL sEmailFilter = FALSE; + (void)setSelectionMode:(ContactSelectionMode)selectionMode { @@ -52,11 +52,11 @@ static BOOL sEmailFilter = FALSE; return sAddAddress; } -+ (void)setSipFilter:(BOOL)enable { - sSipFilter = enable; ++ (void)setSipFilter:(NSString*)domain { + sSipFilter = domain; } -+ (BOOL)getSipFilter { ++ (NSString*)getSipFilter { return sSipFilter; } @@ -206,7 +206,7 @@ static UICompositeViewDescription *compositeDescription = nil; } if(view == History_Linphone) { - [ContactSelection setSipFilter:TRUE]; + [ContactSelection setSipFilter:@"*"]; [ContactSelection setEmailFilter:FALSE]; [tableController loadData]; linphoneButton.selected = TRUE; diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index b90e36f74..4f9a27d06 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -47,8 +47,6 @@ extern NSString *const kLinphoneLogsUpdate; extern NSString *const kLinphoneSettingsUpdate; extern NSString *const kLinphoneBluetoothAvailabilityUpdate; -extern NSString *const kContactSipField; - typedef enum _NetworkType { network_none = 0, network_2g, @@ -117,6 +115,7 @@ typedef struct _LinphoneManagerSounds { + (NSSet *)unsupportedCodecs; + (NSString *)getUserAgent; + - (void)startLibLinphone; - (void)destroyLibLinphone; - (BOOL)resignActive; @@ -155,6 +154,7 @@ typedef struct _LinphoneManagerSounds { - (void)lpConfigSetBool:(BOOL)value forKey:(NSString*)key forSection:(NSString*)section; - (BOOL)lpConfigBoolForKey:(NSString*)key forSection:(NSString*)section; + @property (readonly) FastAddressBook* fastAddressBook; @property Connectivity connectivity; @property (readonly) NetworkType network; @@ -168,6 +168,7 @@ typedef struct _LinphoneManagerSounds { @property (nonatomic, assign) BOOL bluetoothAvailable; @property (nonatomic, assign) BOOL bluetoothEnabled; @property (readonly) ALAssetsLibrary *photoLibrary; +@property (readonly) NSString* contactSipField; @end diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 0cf52f4be..c24357942 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -57,7 +57,7 @@ NSString *const kLinphoneMainViewChange = @"LinphoneMainViewChange"; NSString *const kLinphoneLogsUpdate = @"LinphoneLogsUpdate"; NSString *const kLinphoneSettingsUpdate = @"LinphoneSettingsUpdate"; NSString *const kLinphoneBluetoothAvailabilityUpdate = @"LinphoneBluetoothAvailabilityUpdate"; -NSString *const kContactSipField = @"SIP"; + extern void libmsilbc_init(); @@ -246,6 +246,7 @@ struct codec_name_pref_table codec_pref_table[]={ [self copyDefaultSettings]; pendindCallIdFromRemoteNotif = [[NSMutableArray alloc] init ]; photoLibrary = [[ALAssetsLibrary alloc] init]; + } return self; } @@ -925,6 +926,11 @@ static LinphoneCoreVTable linphonec_vtable = { //go directly to bg mode [self resignActive]; } + + _contactSipField = [self lpConfigStringForKey:@"contact_im_type_value"]; + if (_contactSipField == nil) + _contactSipField =@"SIP"; + // Post event NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSValue valueWithPointer:theLinphoneCore] forKey:@"core"]; diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index ab5f0b1a3..9831c2812 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -179,7 +179,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); BOOL add = false; if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { - if(CFStringCompare((CFStringRef)kContactSipField, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { + if(CFStringCompare((CFStringRef)[LinphoneManager instance].contactSipField, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { add = true; } } else { diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory index fb48ebbdf..ec3d25d96 100644 --- a/Resources/linphonerc-factory +++ b/Resources/linphonerc-factory @@ -47,3 +47,6 @@ stun=stun.linphone.org [video] display_filter_auto_rotate=0 + +[app] +#contact_display_username_only=1 From bea35b0ac33d9e443d9759c7c51d0962ab0447e4 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Fri, 31 May 2013 11:25:00 +0200 Subject: [PATCH 42/53] enhanced management of sip uri in contact --- Classes/ChatViewController.m | 2 +- Classes/ContactDetailsTableViewController.m | 34 ++++++++++++++------- Classes/ContactsTableViewController.m | 25 +++++++++++---- Classes/ContactsViewController.m | 7 +++-- Classes/DialerViewController.m | 2 +- Classes/HistoryDetailsViewController.m | 18 ++++++----- Classes/LinphoneManager.h | 2 ++ Classes/LinphoneManager.m | 27 +++++++++++++--- Classes/LinphoneUI/UIMainBar.m | 2 +- Resources/linphonerc-factory | 1 + linphone.xcodeproj/project.pbxproj | 2 ++ 11 files changed, 86 insertions(+), 36 deletions(-) diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 453f11927..1bc923dbc 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -122,7 +122,7 @@ static UICompositeViewDescription *compositeDescription = nil; if ([[addressField text ]length] == 0) { // if no address is manually set, lauch address book [ContactSelection setSelectionMode:ContactSelectionModeMessage]; [ContactSelection setAddAddress:nil]; - [ContactSelection setSipFilter:@"*"]; + [ContactSelection setSipFilter: [LinphoneManager instance].contactFilter]; [ContactSelection setEmailFilter:FALSE]; [[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE]; } else { diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index f43280bdc..7b64c2990 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -201,17 +201,29 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C if(CFStringCompare((CFStringRef)[LinphoneManager instance].contactSipField, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { add = true; } - } else { - add = true; - } - if(add) { - Entry *entry = [[Entry alloc] initWithData:identifier]; - [subArray addObject: entry]; - [entry release]; - } - CFRelease(lDict); - } - CFRelease(lMap); + } else { //check domain + LinphoneAddress* address = linphone_address_new([(NSString*)CFDictionaryGetValue(lDict,kABPersonInstantMessageUsernameKey) UTF8String]); + if (address) { + if ([[ContactSelection getSipFilter] compare:@"*" options:NSCaseInsensitiveSearch] == NSOrderedSame) { + add = true; + } else { + NSString* domain = [NSString stringWithCString:linphone_address_get_domain(address) + encoding:[NSString defaultCStringEncoding]]; + add = [domain compare:[ContactSelection getSipFilter] options:NSCaseInsensitiveSearch] == NSOrderedSame; + } + linphone_address_destroy(address); + } else { + add = false; + } + } + if(add) { + Entry *entry = [[Entry alloc] initWithData:identifier]; + [subArray addObject: entry]; + [entry release]; + } + CFRelease(lDict); + } + CFRelease(lMap); } [dataCache addObject:subArray]; } diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 866b247ce..c424b1ea5 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -87,13 +87,26 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { CFStringRef serviceKey = CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey); - if(CFStringCompare((CFStringRef)@"SIP", serviceKey, kCFCompareCaseInsensitive) == 0) { - add = true; - } - } else { - NSString* usernameKey = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); - if([usernameKey hasPrefix:@"sip:"]) { + CFStringRef username = username=CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); + if(CFStringCompare((CFStringRef)[LinphoneManager instance].contactSipField, serviceKey, kCFCompareCaseInsensitive) == 0) { add = true; + } else { + add=false; + } + } else { + //check domain + LinphoneAddress* address = linphone_address_new([(NSString*)CFDictionaryGetValue(lDict,kABPersonInstantMessageUsernameKey) UTF8String]); + if (address) { + if ([[ContactSelection getSipFilter] compare:@"*" options:NSCaseInsensitiveSearch] == NSOrderedSame) { + add = true; + } else { + NSString* domain = [NSString stringWithCString:linphone_address_get_domain(address) + encoding:[NSString defaultCStringEncoding]]; + add = [domain compare:[ContactSelection getSipFilter] options:NSCaseInsensitiveSearch] == NSOrderedSame; + } + linphone_address_destroy(address); + } else { + add = false; } } CFRelease(lDict); diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 342ee059f..d3b54c122 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -53,7 +53,8 @@ static BOOL sEmailFilter = FALSE; } + (void)setSipFilter:(NSString*)domain { - sSipFilter = domain; + [sSipFilter release]; + sSipFilter = [domain retain]; } + (NSString*)getSipFilter { @@ -197,7 +198,7 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)changeView:(HistoryView)view { if(view == History_All) { - [ContactSelection setSipFilter:FALSE]; + [ContactSelection setSipFilter:nil]; [ContactSelection setEmailFilter:FALSE]; [tableController loadData]; allButton.selected = TRUE; @@ -206,7 +207,7 @@ static UICompositeViewDescription *compositeDescription = nil; } if(view == History_Linphone) { - [ContactSelection setSipFilter:@"*"]; + [ContactSelection setSipFilter:[LinphoneManager instance].contactFilter]; [ContactSelection setEmailFilter:FALSE]; [tableController loadData]; linphoneButton.selected = TRUE; diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 0263d8138..cb28fefaa 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -317,7 +317,7 @@ static UICompositeViewDescription *compositeDescription = nil; - (IBAction)onAddContactClick: (id) event { [ContactSelection setSelectionMode:ContactSelectionModeEdit]; [ContactSelection setAddAddress:[addressField text]]; - [ContactSelection setSipFilter:FALSE]; + [ContactSelection setSipFilter:nil]; [ContactSelection setEmailFilter:FALSE]; ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE], ContactsViewController); if(controller != nil) { diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index 16454d126..ec172566a 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -281,13 +281,15 @@ static UICompositeViewDescription *compositeDescription = nil; // contact name [plainAddressLabel setText:@""]; if (addr != NULL) { - char* lAddress = linphone_address_as_string_uri_only(addr); - if(lAddress != NULL) { - [plainAddressLabel setText:[NSString stringWithUTF8String:lAddress]]; - ms_free(lAddress); - } else { - - } + if ([[LinphoneManager instance] lpConfigBoolForKey:@"contact_display_username_only"]) { + [plainAddressLabel setText:[NSString stringWithUTF8String:linphone_address_get_username(addr)?linphone_address_get_username(addr):""]]; + } else { + char* lAddress = linphone_address_as_string_uri_only(addr); + if(lAddress != NULL) { + [plainAddressLabel setText:[NSString stringWithUTF8String:lAddress]]; + ms_free(lAddress); + } + } } if (addr != NULL) { @@ -327,7 +329,7 @@ static UICompositeViewDescription *compositeDescription = nil; [ContactSelection setAddAddress:[NSString stringWithUTF8String:lAddress]]; [ContactSelection setSelectionMode:ContactSelectionModeEdit]; - [ContactSelection setSipFilter:FALSE]; + [ContactSelection setSipFilter:nil]; [ContactSelection setEmailFilter:FALSE]; ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE], ContactsViewController); if(controller != nil) { diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 4f9a27d06..da64fca6c 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -143,6 +143,7 @@ typedef struct _LinphoneManagerSounds { - (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key; - (NSString*)lpConfigStringForKey:(NSString*)key; +- (NSString*)lpConfigStringForKey:(NSString*)key withDefault:(NSString*)value; - (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key forSection:(NSString*)section; - (NSString*)lpConfigStringForKey:(NSString*)key forSection:(NSString*)section; - (void)lpConfigSetInt:(NSInteger)value forKey:(NSString*)key; @@ -169,6 +170,7 @@ typedef struct _LinphoneManagerSounds { @property (nonatomic, assign) BOOL bluetoothEnabled; @property (readonly) ALAssetsLibrary *photoLibrary; @property (readonly) NSString* contactSipField; +@property (readonly,copy) NSString* contactFilter; @end diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index c24357942..882dae154 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -842,6 +842,11 @@ static LinphoneCoreVTable linphonec_vtable = { ,self); linphone_core_set_user_agent(theLinphoneCore,"LinphoneIPhone", [[[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kCFBundleVersionKey] UTF8String]); + + _contactSipField = [self lpConfigStringForKey:@"contact_im_type_value"]; + if (_contactSipField == nil) + _contactSipField =@"SIP"; + fastAddressBook = [[FastAddressBook alloc] init]; linphone_core_set_root_ca(theLinphoneCore, lRootCa); @@ -926,11 +931,7 @@ static LinphoneCoreVTable linphonec_vtable = { //go directly to bg mode [self resignActive]; } - - _contactSipField = [self lpConfigStringForKey:@"contact_im_type_value"]; - if (_contactSipField == nil) - _contactSipField =@"SIP"; - + // Post event NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSValue valueWithPointer:theLinphoneCore] forKey:@"core"]; @@ -1420,6 +1421,10 @@ static void audioRouteChangeListenerCallback ( - (NSString*)lpConfigStringForKey:(NSString*)key { return [self lpConfigStringForKey:key forSection:[NSString stringWithUTF8String:LINPHONERC_APPLICATION_KEY]]; } +- (NSString*)lpConfigStringForKey:(NSString*)key withDefault:(NSString*)defaultValue { + NSString* value = [self lpConfigStringForKey:key]; + return value?value:defaultValue; +} - (NSString*)lpConfigStringForKey:(NSString*)key forSection:(NSString *)section { if (!key) return nil; @@ -1504,4 +1509,16 @@ static void audioRouteChangeListenerCallback ( } } //else nop, keep call in paused state } +-(NSString*) contactFilter { + NSString* filter=@"*"; + if ( [self lpConfigBoolForKey:@"contact_filter_on_default_domain"]) { + LinphoneProxyConfig* proxy_cfg; + linphone_core_get_default_proxy(theLinphoneCore, &proxy_cfg); + if (proxy_cfg && linphone_proxy_config_get_addr(proxy_cfg)) { + return [NSString stringWithCString:linphone_proxy_config_get_domain(proxy_cfg) + encoding:[NSString defaultCStringEncoding]]; + } + } + return filter; +} @end diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 5e7cbe771..18d750620 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -400,7 +400,7 @@ static NSString * const kDisappearAnimation = @"disappear"; - (IBAction)onContactsClick:(id)event { [ContactSelection setSelectionMode:ContactSelectionModeNone]; [ContactSelection setAddAddress:nil]; - [ContactSelection setSipFilter:FALSE]; + [ContactSelection setSipFilter:nil]; [ContactSelection setEmailFilter:FALSE]; [[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription]]; } diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory index ec3d25d96..cc6384010 100644 --- a/Resources/linphonerc-factory +++ b/Resources/linphonerc-factory @@ -50,3 +50,4 @@ display_filter_auto_rotate=0 [app] #contact_display_username_only=1 +#contact_filter_on_default_domain=1 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index c029ee1e5..a585e11ca 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -5529,6 +5529,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CODE_SIGN_ENTITLEMENTS = ""; + CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; @@ -5567,6 +5568,7 @@ ORDER_FILE = ""; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = linphone; + PROVISIONING_PROFILE = "B0005B58-1160-4269-B1FC-C5BA54ACBA65"; SKIP_INSTALL = NO; TARGETED_DEVICE_FAMILY = "1,2"; }; From dec3c0bfd178a694af82e65502f1a2c92fb71ce3 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 3 Jun 2013 09:00:48 +0200 Subject: [PATCH 43/53] port sdk to clang except for mssilk & opencore-amr --- submodules/build/builder-iphone-os.mk | 1 + submodules/build/builders.d/mssilk.mk | 4 +- submodules/build/builders.d/opencore-amr.mk | 4 +- submodules/build/builders.d/opus.mk | 12 +++-- submodules/build/builders.d/srtp.mk | 2 +- submodules/build/iphone-config-gcc.site | 51 +++++++++++++++++++++ submodules/build/iphone-config.site | 12 ++--- submodules/externals/speex | 2 +- 8 files changed, 71 insertions(+), 17 deletions(-) create mode 100644 submodules/build/iphone-config-gcc.site diff --git a/submodules/build/builder-iphone-os.mk b/submodules/build/builder-iphone-os.mk index 605e898c4..d8b1f5938 100644 --- a/submodules/build/builder-iphone-os.mk +++ b/submodules/build/builder-iphone-os.mk @@ -22,6 +22,7 @@ host?=armv7-apple-darwin config_site:=iphone-config.site +config_site_gcc:=iphone-config-gcc.site library_mode:= --disable-shared --enable-static linphone_configure_controls= \ --disable-strict \ diff --git a/submodules/build/builders.d/mssilk.mk b/submodules/build/builders.d/mssilk.mk index bffd7de26..8c5aad5e4 100644 --- a/submodules/build/builders.d/mssilk.mk +++ b/submodules/build/builders.d/mssilk.mk @@ -30,7 +30,7 @@ $(BUILDER_BUILD_DIR)/$(mssilk_dir)/Makefile: $(BUILDER_SRC_DIR)/$(mssilk_dir)/co echo -e "\033[01;32m Running configure in $(BUILDER_BUILD_DIR)/$(mssilk_dir) \033[0m" mkdir -p $(BUILDER_BUILD_DIR)/$(mssilk_dir) cd $(BUILDER_BUILD_DIR)/$(mssilk_dir)/ \ - && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \ + && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site_gcc) \ $(BUILDER_SRC_DIR)/$(mssilk_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \ --enable-static @@ -40,7 +40,7 @@ build-mssilk: $(BUILDER_BUILD_DIR)/$(mssilk_dir)/Makefile echo -e "\033[01;32m building silk \033[0m" cd $(BUILDER_BUILD_DIR)/$(mssilk_dir) \ && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig \ - CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \ + CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site_gcc) \ make -j1 && make install diff --git a/submodules/build/builders.d/opencore-amr.mk b/submodules/build/builders.d/opencore-amr.mk index dcd2347e9..8ab5abe96 100644 --- a/submodules/build/builders.d/opencore-amr.mk +++ b/submodules/build/builders.d/opencore-amr.mk @@ -31,11 +31,11 @@ $(BUILDER_SRC_DIR)/$(opencore-amr_dir)/configure: $(BUILDER_SRC_DIR)/$(opencore- $(BUILDER_BUILD_DIR)/$(opencore-amr_dir)/Makefile: $(BUILDER_SRC_DIR)/$(opencore-amr_dir)/configure mkdir -p $(BUILDER_BUILD_DIR)/$(opencore-amr_dir) cd $(BUILDER_BUILD_DIR)/$(opencore-amr_dir)/ \ - && CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \ + && CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site_gcc) \ $(BUILDER_SRC_DIR)/$(opencore-amr_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} ${opencore-amr-configure-option} build-opencore-amr: $(BUILDER_BUILD_DIR)/$(opencore-amr_dir)/Makefile - cd $(BUILDER_BUILD_DIR)/$(opencore-amr_dir) && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install + cd $(BUILDER_BUILD_DIR)/$(opencore-amr_dir) && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site_gcc) make && make install clean-opencore-amr: cd $(BUILDER_BUILD_DIR)/$(opencore-amr_dir) && make clean diff --git a/submodules/build/builders.d/opus.mk b/submodules/build/builders.d/opus.mk index 6d905843e..f0e6dcf32 100644 --- a/submodules/build/builders.d/opus.mk +++ b/submodules/build/builders.d/opus.mk @@ -23,10 +23,12 @@ opus_dir?=externals/opus enable_opus?=yes libopus_configure_options=--disable-extra-programs --disable-doc -#ifeq (,$(findstring armv7s,$(host))) -# libopus_configure_options+= --enable-fixed-point -#compilation error with armv7, switching to fpu impl -#endif +ifneq (,$(findstring armv7,$(host))) + libopus_configure_options+= --enable-fixed-point --disable-asm +endif +ifneq (,$(findstring armv7s,$(host))) + libopus_configure_options+= --enable-fixed-point --disable-asm +endif $(BUILDER_SRC_DIR)/$(opus_dir)/configure: @echo -e "\033[01;32m Running autogen for msopus in $(BUILDER_SRC_DIR)/$(opus_dir) \033[0m" @@ -47,7 +49,7 @@ build-opus: $(BUILDER_BUILD_DIR)/$(opus_dir)/Makefile cd $(BUILDER_BUILD_DIR)/$(opus_dir) \ && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig \ CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \ - make -j1 && make install + make && make install else diff --git a/submodules/build/builders.d/srtp.mk b/submodules/build/builders.d/srtp.mk index dd5ebfc22..ee2d6c92a 100644 --- a/submodules/build/builders.d/srtp.mk +++ b/submodules/build/builders.d/srtp.mk @@ -11,7 +11,7 @@ $(BUILDER_BUILD_DIR)/$(srtp_dir)/Makefile: $(BUILDER_SRC_DIR)/$(srtp_dir)/config build-srtp: $(BUILDER_BUILD_DIR)/$(srtp_dir)/Makefile host_alias=$(host) && . /$(BUILDER_SRC_DIR)/build/$(config_site) && \ - cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make libsrtp.a AR=$$AR && make install + cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make libsrtp.a AR="$$AR" && make install clean-srtp: -cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make clean diff --git a/submodules/build/iphone-config-gcc.site b/submodules/build/iphone-config-gcc.site new file mode 100644 index 000000000..125bdebcd --- /dev/null +++ b/submodules/build/iphone-config-gcc.site @@ -0,0 +1,51 @@ +# -*- shell-script -*- + +SDK_VERSION_MAJOR=4 +SDK_VERSION=4.0 +MCPU="" +if test "${host_alias}" = "i386-apple-darwin" ; then + PLATFORM=Simulator + ARCH=i386 + CMAKE_OPTS="-DCMAKE_SYSTEM_PROCESSOR=i386" + MCPU="" +elif test "${host_alias}" = "armv6-apple-darwin" ; then + ARCH=armv6 + PLATFORM=OS + CMAKE_OPTS="-DCMAKE_SYSTEM_PROCESSOR=arm" + MCPU="-mcpu=arm1176jzf-s" +elif test "${host_alias}" = "armv7-apple-darwin" ; then + ARCH=armv7 + PLATFORM=OS + CMAKE_OPTS="-DCMAKE_SYSTEM_PROCESSOR=arm" + MCPU="-mcpu=cortex-a8" +elif test "${host_alias}" = "armv7s-apple-darwin" ; then + ARCH=armv7s + PLATFORM=OS + CMAKE_OPTS="-DCMAKE_SYSTEM_PROCESSOR=arm" +else + echo "bad host ${host_alias} must be either i386-apple-darwin or armv6-apple-darwin" + exit +fi +echo "Loading config.site for iPhone platform=${PLATFORM} version=${SDK_VERSION}" +XCODE_DEV_PATH=`xcode-select -print-path` +#new path with Xcode 4.3: +if test -d ${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs ; then + SDK_PATH_LIST=`ls -drt ${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*` + SDK_BIN_PATH=${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin +else + SDK_PATH_LIST=`ls -drt /Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*` + SDK_BIN_PATH=/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin +fi + +for SYSROOT_PATH in $SDK_PATH_LIST ; do echo $SYSROOT_PATH ; done ; +echo "Selecting SDK path = ${SYSROOT_PATH}" +COMMON_FLAGS=" -arch ${ARCH} ${MCPU} -isysroot ${SYSROOT_PATH} -miphoneos-version-min=${SDK_VERSION} -DTARGET_OS_IPHONE=1 -D__IOS" +CC="${SDK_BIN_PATH}/gcc -std=c99 $COMMON_FLAGS" +OBJC="${SDK_BIN_PATH}/gcc -std=c99 $COMMON_FLAGS" +CXX="${SDK_BIN_PATH}/g++ $COMMON_FLAGS" +LD="${SDK_BIN_PATH}/ld -arch ${ARCH}" +AR=${SDK_BIN_PATH}/ar +RANLIB=${SDK_BIN_PATH}/ranlib + +CPPFLAGS="-Dasm=__asm" +OBJCFLAGS="-x objective-c -fexceptions -gdwarf-2 -fobjc-abi-version=2 -fobjc-legacy-dispatch" diff --git a/submodules/build/iphone-config.site b/submodules/build/iphone-config.site index 125bdebcd..2c93fa080 100644 --- a/submodules/build/iphone-config.site +++ b/submodules/build/iphone-config.site @@ -40,12 +40,12 @@ fi for SYSROOT_PATH in $SDK_PATH_LIST ; do echo $SYSROOT_PATH ; done ; echo "Selecting SDK path = ${SYSROOT_PATH}" COMMON_FLAGS=" -arch ${ARCH} ${MCPU} -isysroot ${SYSROOT_PATH} -miphoneos-version-min=${SDK_VERSION} -DTARGET_OS_IPHONE=1 -D__IOS" -CC="${SDK_BIN_PATH}/gcc -std=c99 $COMMON_FLAGS" -OBJC="${SDK_BIN_PATH}/gcc -std=c99 $COMMON_FLAGS" -CXX="${SDK_BIN_PATH}/g++ $COMMON_FLAGS" -LD="${SDK_BIN_PATH}/ld -arch ${ARCH}" -AR=${SDK_BIN_PATH}/ar -RANLIB=${SDK_BIN_PATH}/ranlib +CC="xcrun clang -std=c99 $COMMON_FLAGS" +OBJC="xcrun clang -std=c99 $COMMON_FLAGS" +CXX="xcrun clang++ $COMMON_FLAGS" +LD="xcrun ld -arch ${ARCH}" +AR="xcrun ar" +RANLIB="xcrun ranlib" CPPFLAGS="-Dasm=__asm" OBJCFLAGS="-x objective-c -fexceptions -gdwarf-2 -fobjc-abi-version=2 -fobjc-legacy-dispatch" diff --git a/submodules/externals/speex b/submodules/externals/speex index e780bd2ce..3c3178184 160000 --- a/submodules/externals/speex +++ b/submodules/externals/speex @@ -1 +1 @@ -Subproject commit e780bd2ce36af4133fd0ff304ab2078f1dacaaf6 +Subproject commit 3c317818481b67e0dd732e5dc045d6b981a8775b From 54f89df2084a610afa4ef104c9180525d69e61cf Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 3 Jun 2013 16:13:03 +0200 Subject: [PATCH 44/53] fix contact management + update liblinphone --- Classes/ContactDetailsTableViewController.m | 132 +++++++++++--------- Classes/LinphoneManager.m | 5 +- Resources/linphonerc-factory | 4 +- submodules/linphone | 2 +- 4 files changed, 77 insertions(+), 66 deletions(-) diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 7b64c2990..42332e723 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -253,6 +253,68 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C [self.tableView reloadData]; } +-(Entry *) setOrCreateSipContactEntry:(Entry *)entry withValue:(NSString*)value { + ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + ABMutableMultiValueRef lMap; + if(lcMap != NULL) { + lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + } else { + lMap = ABMultiValueCreateMutable(kABStringPropertyType); + } + ABMultiValueIdentifier index; + NSError* error = NULL; + + CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; + CFTypeRef values[] = { [value copy], [LinphoneManager instance].contactSipField }; + CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); + if (entry) { + index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + ABMultiValueReplaceValueAtIndex(lMap, lDict, index); + } else { + + CFStringRef label = (CFStringRef)[labelArray objectAtIndex:0]; + ABMultiValueAddValueAndLabel(lMap, lDict, label, &index); + } + if (!ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, (CFErrorRef*)&error)) { + [LinphoneLogger log:LinphoneLoggerLog format:@"Can't set contact with value [%@] cause [%@]", value,[error localizedDescription]]; + } else { + if (entry == nil) { + entry = [[Entry alloc] initWithData:index]; + } + CFRelease(lDict); + /*check if message type is kept or not*/ + lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + lDict = ABMultiValueCopyValueAtIndex(lMap,index); + if(!CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { + /*too bad probably a gtalk number, storing uri*/ + NSString* username = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); + LinphoneAddress* address = linphone_core_interpret_url([LinphoneManager getLc] + ,[username UTF8String]); + char* uri = linphone_address_as_string_uri_only(address); + CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; + CFTypeRef values[] = { [NSString stringWithCString:uri encoding:[NSString defaultCStringEncoding]], [LinphoneManager instance].contactSipField }; + CFDictionaryRef lDict2 = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); + ABMultiValueReplaceValueAtIndex(lMap, lDict2, index); + if (!ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, (CFErrorRef*)&error)) { + [LinphoneLogger log:LinphoneLoggerLog format:@"Can't set contact with value [%@] cause [%@]", value,[error localizedDescription]]; + } + CFRelease(lDict2); + linphone_address_destroy(address); + ms_free(uri); + } + CFRelease(lMap); + } + CFRelease(lDict); + + return entry; +} +-(void) setSipContactEntry:(Entry *)entry withValue:(NSString*)value { + [self setOrCreateSipContactEntry:entry withValue:value]; +} - (void)addEntry:(UITableView*)tableview section:(NSInteger)section animated:(BOOL)animated { [self addEntry:tableview section:section animated:animated value:@""]; } @@ -287,33 +349,15 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C } CFRelease(lMap); } else if(contactSections[section] == ContactSections_Sip) { - ABMultiValueIdentifier identifier; - ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); - ABMutableMultiValueRef lMap; - if(lcMap != NULL) { - lMap = ABMultiValueCreateMutableCopy(lcMap); - CFRelease(lcMap); - } else { - lMap = ABMultiValueCreateMutable(kABDictionaryPropertyType); - } - CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey }; - CFTypeRef values[] = { [value copy], [LinphoneManager instance].contactSipField }; - CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 1, NULL, NULL); - CFStringRef label = (CFStringRef)[labelArray objectAtIndex:0]; - if(!ABMultiValueAddValueAndLabel(lMap, lDict, label, &identifier)) { - added = false; - } - CFRelease(lDict); - - if(added && ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, (CFErrorRef*)&error)) { - Entry *entry = [[Entry alloc] initWithData:identifier]; - [sectionArray addObject:entry]; - [entry release]; - } else { - added = false; - [LinphoneLogger log:LinphoneLoggerError format:@"Can't add entry: %@", [error localizedDescription]]; - } - CFRelease(lMap); + Entry *entry = [self setOrCreateSipContactEntry:nil withValue:value]; + if (entry) { + [sectionArray addObject:entry]; + [entry release]; + added=true; + } else { + added=false; + [LinphoneLogger log:LinphoneLoggerError format:@"Can't add entry for value: %@", value]; + } } else if(contactSections[section] == ContactSections_Email) { ABMultiValueIdentifier identifier; ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonEmailProperty); @@ -842,39 +886,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); CFRelease(lMap); } else if(contactSections[[path section]] == ContactSections_Sip) { - ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); - ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); - CFRelease(lcMap); - int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); - CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; - CFTypeRef values[] = { [value copy], [LinphoneManager instance].contactSipField }; - CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); - ABMultiValueReplaceValueAtIndex(lMap, lDict, index); - ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); - CFRelease(lDict); - /*check if message type is kept or not*/ - lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); - lMap = ABMultiValueCreateMutableCopy(lcMap); - CFRelease(lcMap); - index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); - lDict = ABMultiValueCopyValueAtIndex(lMap,index); - if(!CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { - /*too bad probably a gtalk number, storing uri*/ - NSString* username = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); - LinphoneAddress* address = linphone_core_interpret_url([LinphoneManager getLc] - ,[username UTF8String]); - char* uri = linphone_address_as_string_uri_only(address); - CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; - CFTypeRef values[] = { [NSString stringWithCString:uri encoding:[NSString defaultCStringEncoding]], [LinphoneManager instance].contactSipField }; - CFDictionaryRef lDict2 = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); - ABMultiValueReplaceValueAtIndex(lMap, lDict2, index); - ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); - CFRelease(lDict2); - linphone_address_destroy(address); - ms_free(uri); - } - CFRelease(lDict); - CFRelease(lMap); + [self setSipContactEntry:entry withValue:value]; } else if(contactSections[[path section]] == ContactSections_Email) { ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonEmailProperty); ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 882dae154..bd1cdf406 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -842,10 +842,9 @@ static LinphoneCoreVTable linphonec_vtable = { ,self); linphone_core_set_user_agent(theLinphoneCore,"LinphoneIPhone", [[[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kCFBundleVersionKey] UTF8String]); + [_contactSipField release]; + _contactSipField = [[self lpConfigStringForKey:@"contact_im_type_value" withDefault:@"SIP"] retain]; - _contactSipField = [self lpConfigStringForKey:@"contact_im_type_value"]; - if (_contactSipField == nil) - _contactSipField =@"SIP"; fastAddressBook = [[FastAddressBook alloc] init]; diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory index cc6384010..92e740b16 100644 --- a/Resources/linphonerc-factory +++ b/Resources/linphonerc-factory @@ -49,5 +49,5 @@ stun=stun.linphone.org display_filter_auto_rotate=0 [app] -#contact_display_username_only=1 -#contact_filter_on_default_domain=1 +contact_display_username_only=1 +contact_filter_on_default_domain=1 diff --git a/submodules/linphone b/submodules/linphone index 5355e3775..f1eb0ec07 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 5355e37750d8c32fbd978161966ba80390a8bec0 +Subproject commit f1eb0ec07fda4221722ef1de098824299c85fd0a From cd6a69029276f82e38e634bc8442d5ce06137abe Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 3 Jun 2013 16:17:19 +0200 Subject: [PATCH 45/53] fix wrong linphonerc-factory --- Resources/linphonerc-factory | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory index 92e740b16..cc6384010 100644 --- a/Resources/linphonerc-factory +++ b/Resources/linphonerc-factory @@ -49,5 +49,5 @@ stun=stun.linphone.org display_filter_auto_rotate=0 [app] -contact_display_username_only=1 -contact_filter_on_default_domain=1 +#contact_display_username_only=1 +#contact_filter_on_default_domain=1 From 7112dac9d556c07b5a4aa55c16d252f9e78f93b4 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 3 Jun 2013 16:24:24 +0200 Subject: [PATCH 46/53] update linphone --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index f1eb0ec07..638cff943 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit f1eb0ec07fda4221722ef1de098824299c85fd0a +Subproject commit 638cff9433c3787a74b2db79aebc19092d6323b4 From 30e018ef26f3a3a9c5959cf10fba1881ed95df3e Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 6 Jun 2013 15:57:00 +0200 Subject: [PATCH 47/53] Update linphone submodule for VP8 fixes. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 638cff943..d1dc89b52 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 638cff9433c3787a74b2db79aebc19092d6323b4 +Subproject commit d1dc89b52078c002eeb2686179d70fe80c6f6ef2 From 83e8469d0e1da4e27eae22da927212e86936d4a8 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Fri, 7 Jun 2013 16:23:29 +0200 Subject: [PATCH 48/53] update linphone with better opus integration --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index d1dc89b52..2cc690382 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit d1dc89b52078c002eeb2686179d70fe80c6f6ef2 +Subproject commit 2cc690382793142801ddb7480ee7bb6dd3082de7 From ee5994f0d9ddc06836e98987469ead3576447863 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 11 Jun 2013 10:30:24 +0200 Subject: [PATCH 49/53] update adhoc profile --- linphone.xcodeproj/project.pbxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index a585e11ca..9696f525c 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -5568,7 +5568,7 @@ ORDER_FILE = ""; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = linphone; - PROVISIONING_PROFILE = "B0005B58-1160-4269-B1FC-C5BA54ACBA65"; + PROVISIONING_PROFILE = "FF1878F5-E100-4D05-A037-83ADD9D10BC8"; SKIP_INSTALL = NO; TARGETED_DEVICE_FAMILY = "1,2"; }; From 84a8e87c0dd2399394e0fd78dd50e192afb8d43b Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Fri, 14 Jun 2013 15:04:09 +0200 Subject: [PATCH 50/53] liblinphone:fix wrong sampling rate at first startup --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 2cc690382..4b89219db 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 2cc690382793142801ddb7480ee7bb6dd3082de7 +Subproject commit 4b89219dba3706ad4892e848602a52beb79ade96 From 5169e0aeeaa0186eb9b57dd18c5e381365f79cac Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 20 Jun 2013 13:13:52 +0200 Subject: [PATCH 51/53] update liblinphone (allow contact change during call update) --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 4b89219db..3bff0cef8 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 4b89219dba3706ad4892e848602a52beb79ade96 +Subproject commit 3bff0cef821cf8f8c42fc78aa30917469d7bf0b2 From f582f2e8333d6de4e602766ce8c7e248883340ce Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 26 Jun 2013 13:14:53 +0200 Subject: [PATCH 52/53] Add adaptive rate control setting. --- Classes/LinphoneCoreSettingsStore.m | 5 +++- Classes/SettingsViewController.m | 1 - Settings/InAppSettings.bundle/Audio.plist | 10 +++++++ .../en.lproj/Audio.strings | 5 +++- .../fr.lproj/Audio.strings | 5 +++- .../ru.lproj/Audio.strings | 5 +++- linphone.ldb/Contents.plist | 29 +++++++++++++++++-- .../Audio/1/Audio.strings | 5 +++- 8 files changed, 57 insertions(+), 8 deletions(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 3c82e864d..fa433395b 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -182,7 +182,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); { [self transformCodecsToKeys: linphone_core_get_audio_codecs(lc)]; - [self transformCodecsToKeys: linphone_core_get_video_codecs(lc)]; + [self transformCodecsToKeys: linphone_core_get_video_codecs(lc)]; + [self setBool:linphone_core_adaptive_rate_control_enabled(lc) forKey:@"adaptive_rate_control_preference"]; } { @@ -492,6 +493,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); NSString *pref=[LinphoneManager getPreferenceForCodec:pt->mime_type withRate:pt->clock_rate]; linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]); } + + linphone_core_enable_adaptive_rate_control(lc, [self boolForKey:@"adaptive_rate_control_preference"]); linphone_core_set_use_info_for_dtmf(lc, [self boolForKey:@"sipinfo_dtmf_preference"]); linphone_core_set_use_rfc2833_for_dtmf(lc, [self boolForKey:@"rfc_dtmf_preference"]); diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 8cb63f9c8..d0eb48067 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -586,7 +586,6 @@ static UICompositeViewDescription *compositeDescription = nil; [hiddenKeys addObject:@"battery_alert_button"]; #endif - [hiddenKeys addObject:@"audio_advanced_group"]; [hiddenKeys addObject:@"playback_gain_preference"]; [hiddenKeys addObject:@"microphone_gain_preference"]; diff --git a/Settings/InAppSettings.bundle/Audio.plist b/Settings/InAppSettings.bundle/Audio.plist index 5fa9900a1..a7d91efac 100644 --- a/Settings/InAppSettings.bundle/Audio.plist +++ b/Settings/InAppSettings.bundle/Audio.plist @@ -188,6 +188,16 @@ IASKTextAlignment IASKUITextAlignmentRight + + DefaultValue + + Key + adaptive_rate_control_preference + Title + Adaptive rate control + Type + PSToggleSwitchSpecifier + diff --git a/Settings/InAppSettings.bundle/en.lproj/Audio.strings b/Settings/InAppSettings.bundle/en.lproj/Audio.strings index cf7f76b96..313420848 100644 --- a/Settings/InAppSettings.bundle/en.lproj/Audio.strings +++ b/Settings/InAppSettings.bundle/en.lproj/Audio.strings @@ -41,4 +41,7 @@ "Playback gain" = "Playback gain"; /* Microphone gain */ -"Microphone gain" = "Microphone gain"; \ No newline at end of file +"Microphone gain" = "Microphone gain"; + +/* Adaptive rate control */ +"Adaptive rate control" = "Adaptive rate control"; \ No newline at end of file diff --git a/Settings/InAppSettings.bundle/fr.lproj/Audio.strings b/Settings/InAppSettings.bundle/fr.lproj/Audio.strings index a86837e4a..2b73797e4 100644 --- a/Settings/InAppSettings.bundle/fr.lproj/Audio.strings +++ b/Settings/InAppSettings.bundle/fr.lproj/Audio.strings @@ -41,4 +41,7 @@ "Playback gain" = "Gain sortie"; /* Microphone gain */ -"Microphone gain" = "Gain microphone"; \ No newline at end of file +"Microphone gain" = "Gain microphone"; + +/* Adaptive rate control */ +"Adaptive rate control" = "Contrôle de débit"; \ No newline at end of file diff --git a/Settings/InAppSettings.bundle/ru.lproj/Audio.strings b/Settings/InAppSettings.bundle/ru.lproj/Audio.strings index d1aeb96f3..2bd5ee497 100644 --- a/Settings/InAppSettings.bundle/ru.lproj/Audio.strings +++ b/Settings/InAppSettings.bundle/ru.lproj/Audio.strings @@ -41,4 +41,7 @@ "Playback gain" = "Усиление воспроизведения"; /* Microphone gain */ -"Microphone gain" = "Усиление микрофона"; \ No newline at end of file +"Microphone gain" = "Усиление микрофона"; + +/* Adaptive rate control */ +"Adaptive rate control" = "Adaptive rate control"; \ No newline at end of file diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist index 170d97bda..9e3fd2fd2 100644 --- a/linphone.ldb/Contents.plist +++ b/linphone.ldb/Contents.plist @@ -17902,7 +17902,7 @@ Raison: %2$s change date - 2012-11-06T09:45:46Z + 2013-06-26T10:38:34Z changed values class @@ -17912,7 +17912,7 @@ Raison: %2$s flags 0 hash - d8b4f45bf8fca397a7f791bd55a61e1c + 3d30b341d7d52a2764e5683a2ca348c1 name Audio.strings @@ -18279,6 +18279,31 @@ Raison: %2$s snapshots + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Adaptive rate control + errors + + flags + 0 + key + Adaptive rate control + localizations + + en + Adaptive rate control + fr + Contrôle de débit + + snapshots + + old objects diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings b/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings index cf7f76b96..313420848 100644 --- a/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings +++ b/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings @@ -41,4 +41,7 @@ "Playback gain" = "Playback gain"; /* Microphone gain */ -"Microphone gain" = "Microphone gain"; \ No newline at end of file +"Microphone gain" = "Microphone gain"; + +/* Adaptive rate control */ +"Adaptive rate control" = "Adaptive rate control"; \ No newline at end of file From 41eb3ae95510dc3a9380b2880eb4ea36b68c451e Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 28 Jun 2013 12:03:07 +0200 Subject: [PATCH 53/53] Add audio codec bitrate limit setting. --- Classes/LinphoneCoreSettingsStore.m | 16 ++++++++++ Settings/InAppSettings.bundle/Audio.plist | 28 ++++++++++++++++++ .../en.lproj/Audio.strings | 5 +++- .../fr.lproj/Audio.strings | 5 +++- .../ru.lproj/Audio.strings | 5 +++- linphone.ldb/Contents.plist | 29 +++++++++++++++++-- .../Audio/1/Audio.strings | 5 +++- 7 files changed, 87 insertions(+), 6 deletions(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index fa433395b..86f5a5bb0 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -184,6 +184,17 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [self transformCodecsToKeys: linphone_core_get_audio_codecs(lc)]; [self transformCodecsToKeys: linphone_core_get_video_codecs(lc)]; [self setBool:linphone_core_adaptive_rate_control_enabled(lc) forKey:@"adaptive_rate_control_preference"]; + LpConfig *config = linphone_core_get_config(lc); + [self setInteger:lp_config_get_int(config, "audio", "codec_bitrate_limit", 32) forKey:@"audio_codec_bitrate_limit_preference"]; + + PayloadType *pt; + const MSList *elem; + for (elem=linphone_core_get_audio_codecs(lc);elem!=NULL;elem=elem->next){ + pt=(PayloadType*)elem->data; + if ((strcmp(pt->mime_type, "opus") == 0) || (strcmp(pt->mime_type, "mpeg4-generic") == 0)) { + pt->normal_bitrate = [self integerForKey:@"audio_codec_bitrate_limit_preference"] * 1000; + } + } } { @@ -487,6 +498,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); pt=(PayloadType*)elem->data; NSString *pref=[LinphoneManager getPreferenceForCodec:pt->mime_type withRate:pt->clock_rate]; linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]); + if ((strcmp(pt->mime_type, "opus") == 0) || (strcmp(pt->mime_type, "mpeg4-generic") == 0)) { + pt->normal_bitrate = [self integerForKey:@"audio_codec_bitrate_limit_preference"] * 1000; + } } for (elem=linphone_core_get_video_codecs(lc);elem!=NULL;elem=elem->next){ pt=(PayloadType*)elem->data; @@ -494,6 +508,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]); } + LpConfig *config = linphone_core_get_config(lc); + lp_config_set_int(config, "audio", "codec_bitrate_limit", [self integerForKey:@"audio_codec_bitrate_limit_preference"]); linphone_core_enable_adaptive_rate_control(lc, [self boolForKey:@"adaptive_rate_control_preference"]); linphone_core_set_use_info_for_dtmf(lc, [self boolForKey:@"sipinfo_dtmf_preference"]); diff --git a/Settings/InAppSettings.bundle/Audio.plist b/Settings/InAppSettings.bundle/Audio.plist index a7d91efac..6c57f74f1 100644 --- a/Settings/InAppSettings.bundle/Audio.plist +++ b/Settings/InAppSettings.bundle/Audio.plist @@ -198,6 +198,34 @@ Type PSToggleSwitchSpecifier + + DefaultValue + 32 + Key + audio_codec_bitrate_limit_preference + Title + Codec bitrate limit + Titles + + 10 kbits/s + 15 kbits/s + 20 kbits/s + 32 kbits/s + 64 kbits/s + 128 kbits/s + + Type + PSMultiValueSpecifier + Values + + 10 + 15 + 20 + 32 + 64 + 128 + + diff --git a/Settings/InAppSettings.bundle/en.lproj/Audio.strings b/Settings/InAppSettings.bundle/en.lproj/Audio.strings index 313420848..4384de768 100644 --- a/Settings/InAppSettings.bundle/en.lproj/Audio.strings +++ b/Settings/InAppSettings.bundle/en.lproj/Audio.strings @@ -44,4 +44,7 @@ "Microphone gain" = "Microphone gain"; /* Adaptive rate control */ -"Adaptive rate control" = "Adaptive rate control"; \ No newline at end of file +"Adaptive rate control" = "Adaptive rate control"; + +/* Codec bitrate limit */ +"Codec bitrate limit" = "Codec bitrate limit"; diff --git a/Settings/InAppSettings.bundle/fr.lproj/Audio.strings b/Settings/InAppSettings.bundle/fr.lproj/Audio.strings index 2b73797e4..c90dc9783 100644 --- a/Settings/InAppSettings.bundle/fr.lproj/Audio.strings +++ b/Settings/InAppSettings.bundle/fr.lproj/Audio.strings @@ -44,4 +44,7 @@ "Microphone gain" = "Gain microphone"; /* Adaptive rate control */ -"Adaptive rate control" = "Contrôle de débit"; \ No newline at end of file +"Adaptive rate control" = "Contrôle de débit"; + +/* Codec bitrate limit */ +"Codec bitrate limit" = "Limite de débit du codec"; diff --git a/Settings/InAppSettings.bundle/ru.lproj/Audio.strings b/Settings/InAppSettings.bundle/ru.lproj/Audio.strings index 2bd5ee497..2b325e3ae 100644 --- a/Settings/InAppSettings.bundle/ru.lproj/Audio.strings +++ b/Settings/InAppSettings.bundle/ru.lproj/Audio.strings @@ -44,4 +44,7 @@ "Microphone gain" = "Усиление микрофона"; /* Adaptive rate control */ -"Adaptive rate control" = "Adaptive rate control"; \ No newline at end of file +"Adaptive rate control" = "Adaptive rate control"; + +/* Codec bitrate limit */ +"Codec bitrate limit" = "Codec bitrate limit"; diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist index 9e3fd2fd2..e0d4ea2f7 100644 --- a/linphone.ldb/Contents.plist +++ b/linphone.ldb/Contents.plist @@ -17902,7 +17902,7 @@ Raison: %2$s change date - 2013-06-26T10:38:34Z + 2013-06-28T12:59:59Z changed values class @@ -17912,7 +17912,7 @@ Raison: %2$s flags 0 hash - 3d30b341d7d52a2764e5683a2ca348c1 + a03adeb7710ae8986354684bdcd69764 name Audio.strings @@ -18304,6 +18304,31 @@ Raison: %2$s snapshots + + change date + 2001-01-01T00:00:00Z + changed values + + class + BLStringKeyObject + comment + Codec bitrate limit + errors + + flags + 0 + key + Codec bitrate limit + localizations + + en + Codec bitrate limit + fr + Limite de débit du codec + + snapshots + + old objects diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings b/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings index 313420848..4384de768 100644 --- a/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings +++ b/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings @@ -44,4 +44,7 @@ "Microphone gain" = "Microphone gain"; /* Adaptive rate control */ -"Adaptive rate control" = "Adaptive rate control"; \ No newline at end of file +"Adaptive rate control" = "Adaptive rate control"; + +/* Codec bitrate limit */ +"Codec bitrate limit" = "Codec bitrate limit";