Git Product home page Git Product logo

webrtc-jingle-client's Introduction

Deprecated

This project began when webrtc was just getting it's start and there were many bugs and sdp implementation wasn't even code complete, and drivers for the different phones weren't working and the build for ios/android was broken from one version to another, and the code wasn't even compatible at times with native builds for hundreds of revisions. I built this project out of a necessity to have a more stable project, that was cut down and had the right build variables for the native project, i.e. video didn't work, so I removed it. Over time, many issues have been sovled in the core, and I've moved on to other projects after launching a voip solution on this codebase quite a while ago.

I haven't dropped in on webrtc in quite a while now, but I do know that you can use wrappers to convert jingle to sdp and that they do work. If you're set on this solution, instead of a native converter and using webrtc, I suggest you update all the linked repos in this project and because they're probably quite out of date at this point.

One of the java engineers who worked on this codebase went on to switch to using the webrtc api directly, and using a converter for the xmpp stack. https://github.com/tuenti/sdp-to-jingle-java

webrtc-jingle for android

(libjingle signaling + webrtc voice engine)

Discussion: webrtc-jingle

About

  • Working example android and ios apps of libjingle and webrtc voice backend.
  • Based on libjingle trunk and webrtc trunk updated on regular intervals.
  • Added improvements for stability and missing pieces for mobile implementation.
  • Can make calls between two phones, or between gmail and a phone.
  • Happy for any help, please see tickets, and send a pull request.

Getting the code

# IMPORTANT:- gclient command from [depot_tools](http://dev.chromium.org/developers/how-tos/install-depot-tools) 
# has to be used to checkout the project else the third_party dependencies don't get pulled 
# 

# mkdir webrtcjingleproject
# cd webrtcjingleproject
# gclient config https://github.com/lukeweber/webrtc-jingle-client.git --name trunk
# gclient sync

or for an older stable build, take the head of the stable branch revision.
# gclient sync --revision PUT_STABLE_HEAD_REV_HERE

Android

Prereqs

#Android
export ANDROID_SDK_ROOT=/path/to/sdk/
export ANDROID_NDK_ROOT=/path/to/ndk/
export PATH=$PATH:$ANDROID_NDK_ROOT:$ANDROID_SDK_ROOT:$ANDROID_SDK_ROOT/platform-tools

#mvn variables
export ANDROID_HOME=$ANDROID_SDK_ROOT
export ANDROID_NDK_HOME=$ANDROID_NDK_ROOT

Running the project

  • Build, deploy to phone, and start debugger in one script: tools/badit_android.py
  • Build the apks: cd trunk/android && mvn install
  • To run a debugger: build/android/gdb_apk -p com.tuenti.voice.example -s VoiceClientService -l android/voice-client-native/obj/${build_profile}/local/${app_abi}
  • For debugging the ndk compile outside of maven, I sometimes prefer and use a light shell wrapper instead of maven for building only the c++ project. trunk/android/voice-client-native && ./build.sh

Run unittests

  • Build debug code jni in debug mode: cd trunk/android/voice-client-core && ./build.sh
  • Generate unittest apk: tools/gen_tests_apk.sh
  • Install unittest : adb install -r adb install -r voice_testing/${app_abi}/${lib}/${lib}-debug.apk
  • Prepare
  • Run unittest:
# adb shell mkdir /sdcard/talk
# adb shell am start -n org.chromium.native_test/org.chromium.native_test.ChromeNativeTestActivity
# See adb logcat adb | grep libjingle
  • Fetch unittest logs: adb pull /sdcard/talk talk-logs

Build for Video(Experimental)

  • NO UI YET, need more changes in libjingle core to make this work.
  • DEPS build on linux and mac.
  • Need to wire the java code in example app, using third_party/webrtc/video_engine/test/android/src/org/webrtc/videoengineapp/WebRTCDemo.java as a template.
  • webrtcvideoengine.cc will certainly need changes, as will VideoRenderer to enable passing a java ref down to webrtc, contact me if you want to give this a shot.
# cd android/voice-client-core/
# ln -s [insert_full_path_here]/trunk/third_party/libvpx/source/libvpx jni/libvpx
# cd third_party/libvpx/source 
# git pull https://gerrit.chromium.org/gerrit/webm/libvpx refs/changes/99/41299/1
# libvpx/configure --target=armv7-android-gcc --disable-examples --sdk-path=$ANDROID_NDK_ROOT --enable-error-concealment --enable-realtime-only --disable-vp9 --enable-pic
# Open jni/libvpx/build/make/Android.mk => change BUILD_SHARED_LIBRARY to BUILD_STATIC_LIBRARY
# 

IOS

Prereqs

  • OSX machine
  • Download the latest xcode and command line tools.

Running the project

  • Apply the following patch to third_party/expat
Index: expat.gyp
===================================================================
--- expat.gyp   (revision 169394)
+++ expat.gyp   (working copy)
@@ -7,7 +7,7 @@
     'conditions': [
       # On Linux, we implicitly already depend on expat via fontconfig;
       # let's not pull it in twice.
-      ['os_posix == 1 and OS != "mac" and OS != "android"', {
+      ['os_posix == 1 and OS != "mac" and OS != "android" and OS != "ios"', {
         'use_system_expat%': 1,
       }, {
         'use_system_expat%': 0,
  • Change your .gclient file in trunk/../.gclient
--- .gclient
+++ .gclient
@@ -8,3 +8,4 @@
     "safesync_url": "",
   },
 ]
+target_os = ['ios']
  • Run gclient sync again to fetch xmppframework.
  • Autogenerate an xcode project with gyp with the following command:
./build/gyp_chromium --depth=.  -DOS=ios -Dinclude_tests=0 -Denable_protobuf=0 -Denable_video=0 webrtcjingle.gyp
  • open trunk/webrtcjingle.xcodeproj
  • Modify myJID, and myPassword in AppDelegate.mm.
  • Modify user you wish to call in ios/VoiceClientExample/ViewController.mm => [appDelegate call:@"[email protected]"];
  • If using an xmpp server make sure to change the flag isGtalk in login in VoiceClientDelegate.mm.
  • In xcode, build and deploy
  • May experience issues about sse from audio_processing.gypi. If you push to an IOS device add -Dtarget_arch=arm. If emulator, the other command will probably work.

Opus

  • Opus is currently alpha in implementation, is hard set to 48kHz in webrtc. Android mic is set to 16kHz, meaning you'll probably upsample/downsample all audio by 3x.
  • Add "WEBRTC_BUILD_WITH_OPUS := true" to android/voice-client-core/jni/Android.mk
  • Modify offer kCodecPrefs in third_party/libjingle/talk/media/webrtc/webrtcvoiceengine.cc to include OPUS and exclude ISAC.

Windows

  • Native code won't build on a windows machine.
  • VM with Ubuntu 64bit Linux
  • Recommended disk of at least 3GB. Current build cache is approx, 1.5GB.
  • 64bit Android Linux NDK required.
  • Video from jreyes https://www.youtube.com/watch?v=f0NU-E8l_qQ

webrtc-jingle-client's People

Contributors

bthemad avatar hailg avatar jreyes avatar lukeweber avatar nickflink avatar thehellmaker avatar wjwarren avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webrtc-jingle-client's Issues

Test if we have any performance penalty enabling security

Currently we have this in clientsignalingthread.cc

ifdef TUENTI_CUSTOM_BUILD

sp_media_client_->set_secure(cricket::SEC_DISABLED);

else

sp_media_client_->set_secure(cricket::SEC_ENABLED);

endif

If enabling security won't affect performance, we should enable it for both builds.

undefined reference error while building

The following error crops ups while building

SharedLibrary : libjingle_unittest.so
SharedLibrary : libvoiceclient.so
SharedLibrary : libjingle_media_unittest.so
SharedLibrary : libjingle_p2p_unittest.so
/home/tsudot/workspace/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/tsudot/workspace/webrtcjingleproject/trunk/android/voice-client-core/obj/default_debug/local/armeabi-v7a/objs-debug/voiceclient////client/voiceclient.o: in function tuenti::VoiceClient::InitializeS():jni/../../../client/voiceclient.cc:140: error: undefined reference to 'tuenti::VoiceClient::OnSignalStatsUpdate(char const_)'
collect2: ld returned 1 exit status
make: *_* [/home/tsudot/workspace/webrtcjingleproject/trunk/android/voice-client-core/obj/default_debug/local/armeabi-v7a/libvoiceclient.so] Error 1
make: * Waiting for unfinished jobs....
/home/tsudot/workspace/android-ndk-r8c/toolchains/x86-4.6/prebuilt/linux-x86/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: /home/tsudot/workspace/webrtcjingleproject/trunk/android/voice-client-core/obj/default_debug/local/x86/objs-debug/voiceclient//
/**/client/voiceclient.o: in function tuenti::VoiceClient::InitializeS():jni/../../../client/voiceclient.cc:133: error: undefined reference to 'tuenti::VoiceClient::OnSignalStatsUpdate(char const_)'
collect2: ld returned 1 exit status
make: *_* [/home/tsudot/workspace/webrtcjingleproject/trunk/android/voice-client-core/obj/default_debug/local/x86/libvoiceclient.so] Error 1
make: Leaving directory `/home/tsudot/workspace/webrtcjingleproject/trunk/android/voice-client-core'

OS - Ubuntu 12.04

Am I missing something?

IOS: STRP not working

We've disabled srtp for now in IOS until we can resolve srtp building correctly for IPhone(arm). It does work fine on x86(emulator), but on device it exhibits the exact same behaviour as described in this ticket: #35

I've tried changing the build flags in libsrtp from RISC to CISC in libsrtp.gyp, but it hasn't seemed to fix the issue in the IOS build as it did on Android.

Integrate NDK build into maven.

The logic in voice-client-core/build.sh should be integrated into maven.

We currently have 4 different builds:

tuenti debug/release and standard debug/release

IOS library target

Create the minimum set of code to use this project as a library on IOS.

  1. Research what the best method is on IOS?
  2. Refactor to the example project can reuse this library.

double login result in crash

Actions:
Login -> back_button -> Login

LOGCAT trace:
V/libjingle(30695): XmppLoginTask::Advance - LOGINSTATE_SESSION_REQUESTED
I/c-libjingle-webrtc(30695): ClientSignalingThread::OnStateChange
I/c-libjingle-webrtc(30695): ClientSignalingThread::OnStateChange - State (STATE_OPEN) initing media & presence...
I/c-libjingle-webrtc(30695): ClientSignalingThread::InitMedia
V/libjingle(30695): WebRtcVoiceEngine::WebRtcVoiceEngine
I/Voice: 4 99;(30695): SetTraceFilter(filter=0x100e)
D/Voice: 3 99;(30695): TransmitMixer::RegisterVoiceEngineObserver()
I/libjingle(30695): WebRtc VoiceEngine codecs:
I/libjingle(30695): ISAC/16000/1 (103)
W/libjingle(30695): Warning(webrtcvoiceengine.cc:296): Unexpected codec: PCMU/8000/1 (0)
W/libjingle(30695): Warning(webrtcvoiceengine.cc:296): Unexpected codec: PCMA/8000/1 (8)
W/libjingle(30695): Warning(webrtcvoiceengine.cc:296): Unexpected codec: PCMU/8000/2 (110)
W/libjingle(30695): Warning(webrtcvoiceengine.cc:296): Unexpected codec: PCMA/8000/2 (118)
I/libjingle(30695): ILBC/8000/1 (102)
W/libjingle(30695): Warning(webrtcvoiceengine.cc:296): Unexpected codec: G722/16000/1 (9)
W/libjingle(30695): Warning(webrtcvoiceengine.cc:296): Unexpected codec: G722/16000/2 (119)
I/libjingle(30695): CN/8000/1 (13)
I/libjingle(30695): CN/16000/1 (105)
I/libjingle(30695): CN/32000/1 (106)
W/libjingle(30695): Warning(webrtcvoiceengine.cc:296): Unexpected codec: CN/48000/1 (100)
I/libjingle(30695): telephone-event/8000/1 (126)
I/libjingle(30695): red/8000/1 (127)
I/libjingle(30695): WebRtcVoiceEngine::Init
I/Utility: -1;(30695): Thread with name:ProcessThread started
D/Audio Device: 3 9(30695): CheckPlatform
D/Audio Device: 3 9(30695): current platform is ANDROID
D/Audio Device: 3 9(30695): CreatePlatformSpecificObjects
I/Audio Device: 3 9(30695): output: kPlatformDefaultAudio
D/Audio Device: 3 9(30695): Android JNI Audio APIs will be utilized
D/Audio Device: 3 9(30695): AttachAudioBuffer
D/Utility: -1;(30695): number of registered modules has increased to 2
I/Audio Device: 3 9(30695): OS info: Android
I/dalvikvm(30695): JNI ERROR (app bug): accessed deleted global reference 0x1d200216
E/dalvikvm(30695): VM aborting
F/libc (30695): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 30708 (ceClientService)
I/DEBUG ( 125): *** *** *** *** *** *** *** *** *** *** *** *** *** *** * ***
I/DEBUG ( 125): Build fingerprint: 'google/nakasi/grouper:4.2.1/JOP40D/533553:user/release-keys'
I/DEBUG ( 125): Revision: '0'
I/DEBUG ( 125): pid: 30695, tid: 30708, name: ceClientService >>> com.tuenti.voice.example:VoiceClientService <<<
I/DEBUG ( 125): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d
I/DEBUG ( 125): r0 00000000 r1 00000000 r2 deadd00d r3 00000000
I/DEBUG ( 125): r4 4083e1b0 r5 0000020c r6 1d200216 r7 1d200216
I/DEBUG ( 125): r8 64e9b35c r9 00100000 sl 68497590 fp 00000016
I/DEBUG ( 125): ip 00004000 sp 69933568 lr 40129329 pc 407d5c90 cpsr 60000030
I/DEBUG ( 125): d0 0000100001c03e00 d1 0000100045800000
I/DEBUG ( 125): d2 0000001c45800000 d3 0001000100010001
I/DEBUG ( 125): d4 99001f001f001f00 d5 000f000f000f000f
I/DEBUG ( 125): d6 4040000000000000 d7 01c03e0000000000
I/DEBUG ( 125): d8 0000000000000000 d9 0000000000000000
I/DEBUG ( 125): d10 0000000000000000 d11 0000000000000000
I/DEBUG ( 125): d12 0000000000000000 d13 0000000000000000
I/DEBUG ( 125): d14 0000000000000000 d15 0000000000000000
I/DEBUG ( 125): d16 417c03e008000000 d17 3fe0000000000000
I/DEBUG ( 125): d18 0000000000000000 d19 0000000000000000
I/DEBUG ( 125): d20 991f1f1f991f1f1f d21 991f1f1f991f1f1f
I/DEBUG ( 125): d22 0707070703030303 d23 0000002300000022
I/DEBUG ( 125): d24 0067006700670067 d25 0067006700670067
I/DEBUG ( 125): d26 0067006700670067 d27 0067006700670067
I/DEBUG ( 125): d28 0100010001000100 d29 0100010001000100
I/DEBUG ( 125): d30 0000000100000001 d31 0000000100000001
I/DEBUG ( 125): scr 60000090
I/DEBUG ( 125):
I/DEBUG ( 125): backtrace:
I/DEBUG ( 125): #00 pc 00045c90 /system/lib/libdvm.so (dvmAbort+75)
I/DEBUG ( 125): #1 pc 000285ec /system/lib/libdvm.so (IndirectRefTable::get(void_) const+336)
I/DEBUG ( 125): #2 pc 0004a225 /system/lib/libdvm.so (dvmDecodeIndirectRef(Thread_, jobject)+80)
I/DEBUG ( 125): #3 pc 0004b597 /system/lib/libdvm.so
I/DEBUG ( 125): #4 pc 00a05ed4 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (JNIEnv::SetObjectField(jobject, jfieldID, jobject)+52)
I/DEBUG ( 125): #5 pc 00a0a3dc /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (webrtc::AudioDeviceAndroidJni::InitJavaResources()+884)
I/DEBUG ( 125): #6 pc 00a06884 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (webrtc::AudioDeviceAndroidJni::Init()+136)
I/DEBUG ( 125): #7 pc 009fcbc8 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (webrtc::AudioDeviceModuleImpl::Init()+152)
I/DEBUG ( 125): #8 pc 00aae1a0 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (webrtc::VoEBaseImpl::Init(webrtc::AudioDeviceModule
)+1100)
I/DEBUG ( 125): #9 pc 006f43b4 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (cricket::WebRtcVoiceEngine::InitInternal()+248)
I/DEBUG ( 125): #10 pc 006f40f4 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (cricket::WebRtcVoiceEngine::Init()+212)
I/DEBUG ( 125): #11 pc 006c807c /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (cricket::CompositeMediaEngine<cricket::WebRtcVoiceEngine, cricket::NullVideoEngine>::Init()+24)
I/DEBUG ( 125): #12 pc 0086afd4 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (cricket::ChannelManager::Init()+300)
I/DEBUG ( 125): #13 pc 008900ac /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (cricket::MediaSessionClient::Construct()+180)
I/DEBUG ( 125): #14 pc 0088fe00 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (cricket::MediaSessionClient::MediaSessionClient(buzz::Jid const&, cricket::SessionManager_)+384)
I/DEBUG ( 125): #15 pc 00579f57 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (tuenti::ClientSignalingThread::InitMedia()+430)
I/DEBUG ( 125): #16 pc 005784ef /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (tuenti::ClientSignalingThread::OnStateChange(buzz::XmppEngine::State)+214)
I/DEBUG ( 125): #17 pc 0058a025 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (tuenti::TXmppPump::OnStateChange(buzz::XmppEngine::State)+108)
I/DEBUG ( 125): #18 pc 0058aa2b /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (sigslot::connection1<tuenti::TXmppPump, buzz::XmppEngine::State, sigslot::single_threaded>::emit(buzz::XmppEngine::State)+70)
I/DEBUG ( 125): #19 pc 006966e8 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (sigslot::signal1<buzz::XmppEngine::State, sigslot::single_threaded>::operator()(buzz::XmppEngine::State)+204)
I/DEBUG ( 125): #20 pc 00695698 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (buzz::XmppClient::Private::OnStateChange(int)+72)
I/DEBUG ( 125): #21 pc 0069aa5c /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (buzz::XmppEngineImpl::EnterExit::~EnterExit()+664)
I/DEBUG ( 125): #22 pc 00699458 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (buzz::XmppEngineImpl::HandleInput(char const
, unsigned int)+116)
I/DEBUG ( 125): #23 pc 00695584 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (buzz::XmppClient::Private::OnSocketRead()+604)
I/DEBUG ( 125): #24 pc 00697e88 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (sigslot::connection0<buzz::XmppClient::Private, sigslot::single_threaded>::emit()+120)
I/DEBUG ( 125): #25 pc 0057bca3 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (sigslot::signal0sigslot::single_threaded::operator()()+122)
I/DEBUG ( 125): #26 pc 0058b0e9 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (tuenti::TXmppSocket::OnReadEvent(talk_base::AsyncSocket
)+16)
I/DEBUG ( 125): #27 pc 0058bd0b /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (sigslot::_connection1<tuenti::TXmppSocket, talk_base::AsyncSocket
, sigslot::single_threaded>::emit(talk_base::AsyncSocket_)+70)
I/DEBUG ( 125): #28 pc 0059110c /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (sigslot::signal1<talk_base::AsyncSocket_, sigslot::single_threaded>::operator()(talk_base::AsyncSocket_)+204)
I/DEBUG ( 125): #29 pc 005909d4 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (talk_base::AsyncSocketAdapter::OnReadEvent(talk_base::AsyncSocket_)+36)
I/DEBUG ( 125): #30 pc 006a902c /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (talk_base::OpenSSLAdapter::OnReadEvent(talk_base::AsyncSocket_)+184)
I/DEBUG ( 125): #31 pc 00592bb8 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so (sigslot::connection1<talk_base::AsyncSocketAdapter, talk_base::AsyncSocket, sigslot::single_threaded>::emit(talk_base::AsyncSocket_)+128)
I/DEBUG ( 125):
I/DEBUG ( 125): stack:
I/DEBUG ( 125): 69933528 00000001
I/DEBUG ( 125): 6993352c 401541b4 /system/lib/libc.so
I/DEBUG ( 125): 69933530 401541b4 /system/lib/libc.so
I/DEBUG ( 125): 69933534 401541b4 /system/lib/libc.so
I/DEBUG ( 125): 69933538 401541b4 /system/lib/libc.so
I/DEBUG ( 125): 6993353c 40129329 /system/lib/libc.so (__sflush_locked+36)
I/DEBUG ( 125): 69933540 40154254 /system/lib/libc.so
I/DEBUG ( 125): 69933544 401541b4 /system/lib/libc.so
I/DEBUG ( 125): 69933548 00000000
I/DEBUG ( 125): 6993354c 4012a2f9 /system/lib/libc.so (fwalk+32)
I/DEBUG ( 125): 69933550 4083e1b0 /system/lib/libdvm.so
I/DEBUG ( 125): 69933554 0000020c
I/DEBUG ( 125): 69933558 1d200216
I/DEBUG ( 125): 6993355c 1d200216
I/DEBUG ( 125): 69933560 df0027ad
I/DEBUG ( 125): 69933564 00000000
I/DEBUG ( 125): #00 69933568 00000000
I/DEBUG ( 125): 6993356c 6c756e28
I/DEBUG ( 125): 69933570 0000296c
I/DEBUG ( 125): 69933574 00000000
I/DEBUG ( 125): 69933578 00000000
I/DEBUG ( 125): 6993357c 00000000
I/DEBUG ( 125): 69933580 00000000
I/DEBUG ( 125): 69933584 00000000
I/DEBUG ( 125): 69933588 00000000
I/DEBUG ( 125): 6993358c 00000000
I/DEBUG ( 125): 69933590 00000000
I/DEBUG ( 125): 69933594 00000000
I/DEBUG ( 125): 69933598 00000000
I/DEBUG ( 125): 6993359c 00000000
I/DEBUG ( 125): 699335a0 00000000
I/DEBUG ( 125): 699335a4 00000000
I/DEBUG ( 125): ........ ........
I/DEBUG ( 125): #1 69933780 1d200216
I/DEBUG ( 125): 69933784 697a4248 /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so
I/DEBUG ( 125): 69933788 40839c98 /system/lib/libdvm.so
I/DEBUG ( 125): 6993378c 41365918 /dev/ashmem/dalvik-heap (deleted)
I/DEBUG ( 125): 69933790 4083e1b0 /system/lib/libdvm.so
I/DEBUG ( 125): 69933794 41365918 /dev/ashmem/dalvik-heap (deleted)
I/DEBUG ( 125): 69933798 4083e1b0 /system/lib/libdvm.so
I/DEBUG ( 125): 6993379c 407da229 /system/lib/libdvm.so (dvmDecodeIndirectRef(Thread
, _jobject
)+84)
I/DEBUG ( 125): #2 699337a0 41365918 /dev/ashmem/dalvik-heap (deleted)
I/DEBUG ( 125): 699337a4 621c6d5c /dev/ashmem/dalvik-LinearAlloc (deleted)
I/DEBUG ( 125): 699337a8 63567fb8
I/DEBUG ( 125): 699337ac 407db59b /system/lib/libdvm.so
I/DEBUG ( 125):
I/DEBUG ( 125): memory near r4:
I/DEBUG ( 125): 4083e190 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 4083e1a0 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 4083e1b0 40ba08f8 40ac6fd0 00800000 18000000
I/DEBUG ( 125): 4083e1c0 04000000 00000000 00000000 3fe80000
I/DEBUG ( 125): 4083e1d0 00080000 00800000 00004000 00006000
I/DEBUG ( 125): 4083e1e0 00000001 00000101 00000002 00000001
I/DEBUG ( 125): 4083e1f0 00000000 00000000 00000000 00000002
I/DEBUG ( 125): 4083e200 00000000 402527f5 40253221 00000000
I/DEBUG ( 125): 4083e210 402527e1 00000000 00000000 00000000
I/DEBUG ( 125): 4083e220 40ba0b20 00000000 00000002 00000003
I/DEBUG ( 125): 4083e230 00000001 00000001 00010100 00000100
I/DEBUG ( 125): 4083e240 00000000 40ba0a58 00000003 00000000
I/DEBUG ( 125): 4083e250 40ba0a48 61ccfdd8 00000000 00000000
I/DEBUG ( 125): 4083e260 40ba0fc0 50000ad9 62f84008 00000000
I/DEBUG ( 125): 4083e270 63980c70 63980c90 40be31e8 40be32a8
I/DEBUG ( 125): 4083e280 40be3350 40be33f8 40be34a0 40be3548
I/DEBUG ( 125):
I/DEBUG ( 125): memory near r6:
I/DEBUG ( 125): 1d2001f4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200204 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200214 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200224 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200234 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200244 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200254 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200264 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200274 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200284 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200294 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d2002a4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d2002b4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d2002c4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d2002d4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d2002e4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125):
I/DEBUG ( 125): memory near r7:
I/DEBUG ( 125): 1d2001f4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200204 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200214 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200224 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200234 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200244 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200254 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200264 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200274 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200284 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d200294 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d2002a4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d2002b4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d2002c4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d2002d4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 1d2002e4 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125):
I/DEBUG ( 125): memory near r8:
I/DEBUG ( 125): 64e9b33c 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 64e9b34c 00000000 64e9b340 64e9b340 00000003
I/DEBUG ( 125): 64e9b35c 6e6f6d64 74736574 00000031 00000000
I/DEBUG ( 125): 64e9b36c 64e9b365 64e9b35c 69616d67 6f632e6c
I/DEBUG ( 125): 64e9b37c 0000006d 00000000 64e9b37d 64e9b374
I/DEBUG ( 125): 64e9b38c 63696f76 46463665 42413734 00000046
I/DEBUG ( 125): 64e9b39c 64e9b399 64e9b38c 00000003 00000001
I/DEBUG ( 125): 64e9b3ac 00000000 00000000 00000000 40156c00
I/DEBUG ( 125): 64e9b3bc 63d1cdcc 63d1cdc8 400d8140 400d8150
I/DEBUG ( 125): 64e9b3cc 400d8210 400d8220 400d8230 400d8240
I/DEBUG ( 125): 64e9b3dc 400d8250 400d8260 400d8160 64a259c8
I/DEBUG ( 125): 64e9b3ec 400d8170 000001c8 00000013 4078e380
I/DEBUG ( 125): 64e9b3fc 6580fd68 00000000 00000023 00000000
I/DEBUG ( 125): 64e9b40c 6614f226 66150832 00000000 00000000
I/DEBUG ( 125): 64e9b41c 00000000 00000000 00000013 00000004
I/DEBUG ( 125): 64e9b42c 00000000 63c539c8 0000003b 40670a70
I/DEBUG ( 125):
I/DEBUG ( 125): memory near r9:
I/DEBUG ( 125): 000fffe0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 000ffff0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00100000 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00100010 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00100020 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00100030 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00100040 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00100050 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00100060 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00100070 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00100080 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00100090 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 001000a0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 001000b0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 001000c0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 001000d0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125):
I/DEBUG ( 125): memory near sl:
I/DEBUG ( 125): 68497570 636d19f8 0000001b 00000001 00000001
I/DEBUG ( 125): 68497580 68497560 00000000 706d4972 00000013
I/DEBUG ( 125): 68497590 651df250 00000000 00000010 0000001b
I/DEBUG ( 125): 684975a0 698107e0 00000001 00000000 697ebf1c
I/DEBUG ( 125): 684975b0 69754200 0000001b 698111f0 00000001
I/DEBUG ( 125): 684975c0 00000000 04000302 04000302 0000001b
I/DEBUG ( 125): 684975d0 69811228 00000001 00000000 04000302
I/DEBUG ( 125): 684975e0 04000302 0000001b 69811260 00000001
I/DEBUG ( 125): 684975f0 00000000 04000302 04000302 0000001b
I/DEBUG ( 125): 68497600 69811298 00000001 00000000 04000302
I/DEBUG ( 125): 68497610 04000302 0000002b 69811020 00000000
I/DEBUG ( 125): 68497620 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 68497630 00000000 698347d8 40154160 0000004b
I/DEBUG ( 125): 68497640 402a4690 00000001 40439444 40f70010
I/DEBUG ( 125): 68497650 00000000 075bcd15 00000000 40410908
I/DEBUG ( 125): 68497660 00000101 40f70010 000056e4 00000000
I/DEBUG ( 125):
I/DEBUG ( 125): memory near ip:
I/DEBUG ( 125): 00003fe0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00003ff0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00004000 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00004010 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00004020 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00004030 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00004040 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00004050 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00004060 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00004070 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00004080 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 00004090 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 000040a0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 000040b0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 000040c0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125): 000040d0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 125):
I/DEBUG ( 125): memory near sp:
I/DEBUG ( 125): 69933548 00000000 4012a2f9 4083e1b0 0000020c
I/DEBUG ( 125): 69933558 1d200216 1d200216 df0027ad 00000000
I/DEBUG ( 125): 69933568 00000000 6c756e28 0000296c 00000000
I/DEBUG ( 125): 69933578 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 69933588 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 69933598 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 699335a8 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 699335b8 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 699335c8 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 699335d8 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 699335e8 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 699335f8 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 69933608 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 69933618 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 69933628 00000000 00000000 00000000 00000000
I/DEBUG ( 125): 69933638 00000000 00000000 00000000 00000000
I/DEBUG ( 125):
I/DEBUG ( 125): code around pc:
I/DEBUG ( 125): 407d5c70 34ccf8d3 ef68f7d7 461d2300 b1525d1a
I/DEBUG ( 125): 407d5c80 18ad3301 7f00f5b3 e004d1f8 4a0a4798
I/DEBUG ( 125): 407d5c90 f7d77015 490cef60 4a0c2006 44794c0c
I/DEBUG ( 125): 407d5ca0 447c447a ee06f7d7 f7d72000 6de3eeac
I/DEBUG ( 125): 407d5cb0 d1eb2b00 bf00e7eb deadd00d 00063ebc
I/DEBUG ( 125): 407d5cc0 00068544 00048fd1 000483a8 0004a22d
I/DEBUG ( 125): 407d5cd0 0006850a 4605b530 b08b4c15 a8034915
I/DEBUG ( 125): 407d5ce0 6824447c 4479462a 93096823 f995f009
I/DEBUG ( 125): 407d5cf0 2100aa0a f8429808 f0091d20 b958fdb9
I/DEBUG ( 125): 407d5d00 462b9802 4a0d490c 90004479 2006447a
I/DEBUG ( 125): 407d5d10 edd0f7d7 ff96f7ff f7f2a803 9a09ff5d
I/DEBUG ( 125): 407d5d20 428a6821 f7d7d001 b00bee4a bf00bd30
I/DEBUG ( 125): 407d5d30 00063e28 0004a1f3 0004833e 0004a1d6
I/DEBUG ( 125): 407d5d40 1a55b5f8 1c69460e 46174604 ec70f7e5
I/DEBUG ( 125): 407d5d50 696042b7 4631d004 f7d7462a 1940edb2
I/DEBUG ( 125): 407d5d60 23006120 bdf87003 4604b538 460d6120
I/DEBUG ( 125):
I/DEBUG ( 125): code around lr:
I/DEBUG ( 125): 40129308 447e4e08 68336836 f000b10b 4620fa4c
I/DEBUG ( 125): 40129318 ffcaf7ff 68304605 4620b110 fa50f000
I/DEBUG ( 125): 40129328 bd704628 0002ac32 4604b570 4811b928
I/DEBUG ( 125): 40129338 e8bd4478 f0004070 4e0fbfcb 6836447e
I/DEBUG ( 125): 40129348 b10b6833 fa2ff000 f01089a0 d1060f18
I/DEBUG ( 125): 40129358 fdc6f7f1 35fff04f 60012109 4620e003
I/DEBUG ( 125): 40129368 ffa2f7ff 68324605 4620b112 fa28f000
I/DEBUG ( 125): 40129378 bd704628 ffffffc9 0002abf8 44794909
I/DEBUG ( 125): 40129388 680b6809 6843b963 60421e5a da012a00
I/DEBUG ( 125): 40129398 bba0f001 f8116801 6001cb01 47704660
I/DEBUG ( 125): 401293a8 bff4f000 0002abb6 47f0e92d 4f3e4604
I/DEBUG ( 125): 401293b8 447f4688 683b683f f000b10b 6860f9f4
I/DEBUG ( 125): 401293c8 dc042800 f0014620 2800fad5 6826d15f
I/DEBUG ( 125): 401293d8 6865210a 462a4630 fe31f007 3001b168
I/DEBUG ( 125): 401293e8 c00cf8b4 f8c81b81 68621000 5300f44c
I/DEBUG ( 125): 401293f8 1a5381a3 0009e884 4606e043 f1056ca0
I/DEBUG ( 125):
I/DEBUG ( 125): memory map around fault addr deadd00d:
I/DEBUG ( 125): bea9d000-beabe000 [stack]
I/DEBUG ( 125): (no map for address)
I/DEBUG ( 125): ffff0000-ffff1000 [vectors]
I/BootReceiver( 445): Copying /data/tombstones/tombstone_03 to DropBox (SYSTEM_TOMBSTONE)
I/ActivityManager( 445): Process com.tuenti.voice.example:VoiceClientService (pid 30695) has died.
W/ActivityManager( 445): Scheduling restart of crashed service com.tuenti.voice.example/com.tuenti.voice.core.service.VoiceClientService in 5000ms
E/VoiceActivity(30175): Error on ServiceConnection.onServiceDisconnected
E/VoiceActivity(30175): android.os.DeadObjectException
E/VoiceActivity(30175): at android.os.BinderProxy.transact(Native Method)
E/VoiceActivity(30175): at com.tuenti.voice.core.service.IConnectionService$Stub$Proxy.unregisterCallback(IConnectionService.java:159)
E/VoiceActivity(30175): at com.tuenti.voice.core.VoiceActivity$6.onServiceDisconnected(VoiceActivity.java:199)
E/VoiceActivity(30175): at android.app.LoadedApk$ServiceDispatcher.doDeath(LoadedApk.java:1106)
E/VoiceActivity(30175): at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1120)
E/VoiceActivity(30175): at android.os.Handler.handleCallback(Handler.java:725)
E/VoiceActivity(30175): at android.os.Handler.dispatchMessage(Handler.java:92)
E/VoiceActivity(30175): at android.os.Looper.loop(Looper.java:137)
E/VoiceActivity(30175): at android.app.ActivityThread.main(ActivityThread.java:5039)
E/VoiceActivity(30175): at java.lang.reflect.Method.invokeNative(Native Method)
E/VoiceActivity(30175): at java.lang.reflect.Method.invoke(Method.java:511)
E/VoiceActivity(30175): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
E/VoiceActivity(30175): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
E/VoiceActivity(30175): at dalvik.system.NativeStart.main(Native Method)
D/Zygote ( 127): Process 30695 terminated by signal (11)
D/dalvikvm(31548): Late-enabling CheckJNI
I/ActivityManager( 445): Start proc com.tuenti.voice.example:VoiceClientService for service com.tuenti.voice.example/com.tuenti.voice.core.service.VoiceClientService: pid=31548 uid=10121 gids={50121, 3003, 1028}
I/j-libjingle-webrtc(31548): loading native library voiceclient
D/dalvikvm(31548): Trying to load lib /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so 0x41345628
D/dalvikvm(31548): Added shared lib /data/app-lib/com.tuenti.voice.example-2/libvoiceclient.so 0x41345628
I/c-libjingle-webrtc(31548): Java_com_tuenti_voice_VoiceClient_nativeInit - initializing client
D/WEBRTC (31548): JNI:SetAndroidAudioDeviceObjects
I/c-libjingle-webrtc(31548): VoiceClient::VoiceClient
I/c-libjingle-webrtc(31548): VoiceClient::OnMessage
I/c-libjingle-webrtc(31548): VoiceClient::OnMessage - (MSG_INIT)
I/c-libjingle-webrtc(31548): VoiceClient::InitializeS
I/c-libjingle-webrtc(31548): ClientSignalingThread::ClientSignalingThread
I/c-libjingle-webrtc(31548): ClientSignalingThread::ClientSignalingThread - new RosterMap roster_@(0x63569850)
I/c-libjingle-webrtc(31548): VoiceClient::VoiceClient - new ClientSignalingThread client_signaling_thread_@(0x400c3428)
D/ConnectionManager(31548): handleConnectionReady
I/c-libjingle-webrtc(31548): ClientSignalingThread::DoWork

Running without linking errors

Dear developers,

Everything builds out of the box, but it doesn't seem to run:

BUILD SUCCESSFUL
Total time: 11 seconds
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
Failure
1276 KB/s (15939098 bytes in 12.194s)
pkg: /data/local/tmp/VoiceClient-debug.apk
Success
Starting: Intent { act=android.intent.action.VIEW cmp=com.tuenti.voice/.VoiceClientActivity }
Debug package com.tuenti.voice
mktemp: too few X's in template `gdb_apk'
/opt/webrtcjingleproject/trunk/build/android/gdb_apk: line 32: $TMPOUT: ambiguous redirect

If I open the project in Eclipse and copy the libvoiceclient.so file to libs/armeabi (52MB!) then I get a java.lang.UnsatisfiedLinkError: Couldn't load voiceclient: findLibrary returned null.

Format:

libs/armeabi/libvoiceclient.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped

I also stripped it using: arm-linux-androideabi-strip -g libs/armeabi/libvoiceclient.so which makes everything faster (15 MB), and leads actually to a display with a series of buttons. However, pressing one gives a java.lang.UnsatisfiedLinkError for nativeInit. So apparently I stripped to much!? Anyway, gdb doesn't like it apparently.

Anyway, before I delve into this I would like to know if I do something wrong. I'm on Ubuntu 12.04 and did just ./badit.sh -s. Is there maybe a release version that is a little smaller (I have a Nexus 1).

Thanks in advance!

Ringing logic set phone to speaker mode but doesn't unset

If you receive an inbound call phone stays in speaker mode. Have to see whether we just need to turn off speakerphone when the call is answered or ideally if there's a clearer way to just do the system ring or vibrate behavior

Stip in release mode

When building binaries in release mode, it doesn't strip the binary. To have this working we would need to add a call to strip from the ndk toolchain.

Simultaneous calls handled incorrectly

If new incomming call happen during other already in proggress current call activity will be replaced via
incommingCall. After that it becomes impossible to cancel current call.
Flow:
Alice Bob Fred
|<------------Incoming call---|
| call_is_in_progress |
|<--------------------------------------Incoming call--|
| ------------BUSY------------------------------------>|
|
But at this moment Alice-Bob CallActivity hidden, and BuddyView is visiable, so it is impossible to destroy the call.

AFAIU bug was introduced during migration new Jreyes's API.

Fix Stun/Turn server configuration

1:
In clientsignallingthread.cc ->
======= From:
new cricket::BasicPortAllocator(network_manager_, stun_addr,
talk_base::SocketAddress(), talk_base::SocketAddress(),
talk_base::SocketAddress());
======= To:
stun_addr = ... from passed in value
udp_turn_addr = ...from passed in value
tcp_turn_addr = ...from passed in value
ssl_turn_addr = ...from passed in value
Need to change to be
new cricket::BasicPortAllocator(network_manager_, stun_addr,
udp_turn_addr, tcp_turn_addr,
ssl_turn_addr);

2:
As well login method currently supports passing stun address which is not used. We should either create a method to set stun/turn servers or extend login further and then connect it to the above port allocator.

3:
Add the ability to force using a relay.
Initial looks have the following info: port.cc. PRIORITY_RELAY, PRIORITY_LOCAL_UDP, all have priority, then basicportallocator.cc::CreateRelayPorts also definitely needs to be called to use the relay at all. More investigation needed to know how to solve.

Lock aspect of all call dialogs to portriat

Putting it up against your face causes it to jump to landscape and then back when you view it away from your face. Phones usually don't have landscape mode, so I would just go with the standard.

ios example: Call not working

I've built the projects last night and run voiceclient on my ipod touch 4 and ipad 4. I can init and login successfully. But when I try to call, it showing something like:

ClientSignalingThread::OnSessionCreate
Session:3960087523 Old state:STATE_INIT New state:STATE_RECEIVEDINITIATE Type:urn:xmpp:jingle:apps:rtp:1 Transport:http://www.google.com/transport/p2p
Video is not available in the offer.
Data is not available in the offer.
ClientSignalingThread::OnCallCreate
WebRtcVoiceMediaChannel::WebRtcVoiceMediaChannel 0
Created channel for audio
Setting remote voice description
Error(webrtcvoiceengine.cc:1058): webrtc: SetRedPayloadType() invalid RED paylaod type (error=8094)
Error(webrtcvoiceengine.cc:1058): webrtc: SetSecondarySendCodec() Failed to register RED ACM (error=8085)
Selected voice codec ISAC/16000/1 (103), bitrate=-1
Enabling VAD
...
STUN CONNECT STUFF HERE
...
RECV <<<<<<<<<<<<<<<< : Fri Feb 1 13:23:33 2013






So, is that because webrtc audio engine?

Undefined variable gtest_target_type

Performing:

gclient config https://github.com/lukeweber/webrtc-jingle-client.git --name trunk
gclient sync

in a new folder results in the error:

Updating projects from gyp files...
<snip>
KeyError: 'Undefined variable gtest_target_type in trunk/webrtcjingle.gyp while trying to load trunk/webrtcjingle.gyp'

Reconnect

make sure that reconnect works upon disconnect with a reasonable timeout.

Can not request audio focus until channel is created.

The audio driver always always needs to initiate the voice channel (1), before we request audio focus (2). If we do it the other way around, then it will fail with an opensles bad preset error. There isn't a call state to correspond with this as an accepted call may still have some delay due to when the channelmanager actually inits the native driver.

(1) In cc opensles driver in webrtc.
res = (*_slPlayer)->Realize(_slPlayer, SL_BOOLEAN_FALSE);

(2) Java in VoiceClientService
mAudioManager.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);

Few options,

  1. Could call a helper class in java directly from the driver if it's an android build.
  2. Could figure out in channel manager when it inits the audio stream and pass back an event of some type to java to handle.

Add API for roster

  • Event when a friend comes online
  • Event when a friend goes offline
  • Implementation/interface in java to manage this list.
    • isOnline(jid): boolean
    • getOnlineFriends:Array

Ejabberd STUN Server Binding Error

Why Does this error Come
D(<0.364.0>:ejabberd_stun:78) : got:
{stun,request,1,51595046,59834731914394464689121067847, [3], undefined,undefined,undefined,undefined,undefined,undefined,undefined, undefined,undefined,[]}
=INFO REPORT==== 2013-02-08 18:39:21 ===
D(<0.364.0>:ejabberd_stun:81) : sent:
{stun,error,1,51595046,59834731914394464689121067847,[],<<"ejabberd 2.1.x">>,
undefined,undefined,undefined,undefined,undefined,undefined,undefined,
{420,<<"Unknown Attribute">>},
[3]}

Add Correct proximity logic back to master branch

Logic for private api. This is the only option on some older phones that have funky Power management settings, especially samsung:

https://github.com/lukeweber/webrtc-jingle-client/blob/stable/voice-client-example/src/main/java/com/tuenti/voice/example/util/WakeLockManager.java

Logic using a proximity sensor, if you can't use the private api:
https://github.com/lukeweber/webrtc-jingle-client/blob/stable/voice-client-example/src/main/java/com/tuenti/voice/example/util/ProximitySensor.java

All of it is driven from here:
https://github.com/lukeweber/webrtc-jingle-client/blob/stable/voice-client-example/src/main/java/com/tuenti/voice/example/ui/activity/CallInProgressActivity.java

OnPause() logic is particularly important for making sure to stop proximitysensor correctly based on whether the screen is on or off when this method is hit.

Add Chat/MUC

Started the project with just voice calling. Would be nice to modularly allow having a larger interface that included receiving and sending chat messages. An extension of this would be to support mutli user chat.

Intel Atom x86 support

Could you add support for Intel Atom x86 processors?
This will make testing with a hardware accelerated Android emulator possible. The hardware accelerated emulator is much faster than the software one, so support for this would be greatly appreciated.

Missing logic after Java code refactor

It seems the refactoring of the Java code by @jreyes removed some logic that used to be in the VoiceClient.

The handleAudioPlayout() callback seems to have disappeared. I believe this method was specifically added to avoid some audio issues on certain devices.

The destroy() method has disappeared as well, @lukeweber added this method to perform some clean up actions when the VoiceClient was no longer needed. Right now when discarding the VoiceClient and setting the different managers (setCallManager, setConnectionManager and setBuddyManager) to null, it seems to be throwing some NullPointerExceptions[1] at a later point.

The other thing I noticed is that the Singleton pattern has been removed from the VoiceClient. I'm not particularly attached to the Singleton pattern, but just curious as to why it has been removed.

[1]

E/AndroidRuntime(11818): java.lang.NullPointerException
E/AndroidRuntime(11818):    at com.tuenti.voice.core.VoiceClient.handleXmppError(VoiceClient.java:194)
E/AndroidRuntime(11818):    at com.tuenti.voice.core.VoiceClient.dispatchNativeEvent(VoiceClient.java:238)

Create IPhone skew

Refactor codebase to support an IPhone build.

voice-client-core/jni/tuenti/ is mostly the client core, which could be reused as an interface on IPhone as well.

Android specific files in tuenti directory that would need to be moved, probably up to jni
voice-client-core/jni/tuenti/helpers.cc
voice-client-core/jni/tuenti/threadpriorityhandler.cc

General movement might be:
voice-client-core/jni/tuenti/ => /src or /core
voice-client-core => android/core (Have to think about this a bit more as we have (voice-client-aidl, voice-client-example)
new directory iphone/core? (Not sure if we'll even need this
new directory iphone/example

./tools/ => Probably we would create additional tools to build iphone here, and rename others to make it clear they're for android.

Please comment if anyone has an idea how this should be managed.

Remove config.mk

Since we are going to be passing the stun/turn server information through the api, config.mk and config.mk.fake are not longer needed. Scripts need to be adjusted for this.

CallInProgressActivity.java should turn screen off onProximity

Because of the samsung galaxy ace, we don't turn the screen off. Basically, after testing a bit more, I'm pretty sure there are more phones that violate this, but I've so far only found the galaxy ace.

Instead of debasing battery life for all compliant phones, I think it's a better policy to turn off the screen in the way that works on most and not turn it off for a known non-compliant phone.

// Samsung Galaxy Ace locks if you turn the screen off.
params.screenBrightness = 0.01f;

IOS example app

Can anyone do a better IOS app than this?

iOS Simulator Screen shot Dec 17 2012 9 11 23 PM

I've done a base wiring, but I'm not IPhone dev, and would appreciate any help anyone could provide.

Would be nice if we did some basic UI like we have on android:

  • login screen
  • buddy list / call a user in the list
  • in call UI (end call, mute, hold)
  • incoming call notification UI (pop up/notification).

This should allow us to do more testing on IPhone easily to nail down any issues we might have with the library.

Handle headset plugged event

From:

https://android.googlesource.com/platform/packages/apps/Phone/+/5bcbca1162b1b462d15ebb4a5b2859a076d382e2/src/com/android/phone/PhoneApp.java

intentFilter.addAction(Intent.ACTION_HEADSET_PLUG);

mIsHeadsetPlugged = (intent.getIntExtra("state", 0) == 1);

if (!isHeadsetPlugged()) {
// if the state is "not connected", restore the speaker state.
PhoneUtils.restoreSpeakerMode(getApplicationContext());
} else {
// if the state is "connected", force the speaker off without
// storing the state.
PhoneUtils.turnOnSpeaker(getApplicationContext(), false, false);
}

iOS Not find expat

Hi everyone

I am done first steps getting the code , but can not find folder third_party/expat
I try this steps whit comand gclient sync --revision 169394 this revision is in expat.gyp next step but neither this revision is not functional. Existing some way for download version whit exapt ?

Thanks

Port Chromium testing framework/tools

Chromium has a large smattering of automated tools for android testing. It looks a bit like a hack, because it partially is, but with gyp that we already have working we should be able to run tests against our libraries if we wanted to with a bit of experimenting and work. If you look at chromium and android specific code, you'll notice special bundles they have for creating shared objects that contain their tests. In addition they have a native test harness that runs in an apk. If anyone is interested ping me and I'll add more detail here about the specific gyp files that drive this as well as harnesses and the test runner which is written in python and runs your apk on a virtual machine.

Maven compilation error

I've tried to compile the project according to the instructions in the README, but it produces the following output:

[ERROR] Error while copying gdbserver: gdbserver binary /home/vadim/Apps/android-ndk-r8d/toolchains/arm-linux-androideabi-4.4.3/prebuilt/gdbserver does not exist, please double check the toolchain and OS used
org.apache.maven.plugin.MojoExecutionException: gdbserver binary /home/vadim/Apps/android-ndk-r8d/toolchains/arm-linux-androideabi-4.4.3/prebuilt/gdbserver does not exist, please double check the toolchain and OS used
    at com.jayway.maven.plugins.android.AndroidNdk.getGdbServer(AndroidNdk.java:186)
    at com.jayway.maven.plugins.android.phase09package.ApkMojo.optionallyCopyGdbServer(ApkMojo.java:961)
    at com.jayway.maven.plugins.android.phase09package.ApkMojo.processNativeLibraries(ApkMojo.java:947)
    at com.jayway.maven.plugins.android.phase09package.ApkMojo.processNativeLibraries(ApkMojo.java:833)
    at com.jayway.maven.plugins.android.phase09package.ApkMojo.createApkFile(ApkMojo.java:377)
    at com.jayway.maven.plugins.android.phase09package.ApkMojo.execute(ApkMojo.java:332)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27.970s
[INFO] Finished at: Tue Feb 05 23:45:53 MYT 2013
[INFO] Final Memory: 15M/225M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.5.1-SNAPSHOT:apk (default-apk) on project voice-example: Error while copying gdbserver: gdbserver binary /home/vadim/Apps/android-ndk-r8d/toolchains/arm-linux-androideabi-4.4.3/prebuilt/gdbserver does not exist, please double check the toolchain and OS used -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.5.1-SNAPSHOT:apk (default-apk) on project voice-example: Error while copying gdbserver: gdbserver binary /home/vadim/Apps/android-ndk-r8d/toolchains/arm-linux-androideabi-4.4.3/prebuilt/gdbserver does not exist, please double check the toolchain and OS used
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error while copying gdbserver: gdbserver binary /home/vadim/Apps/android-ndk-r8d/toolchains/arm-linux-androideabi-4.4.3/prebuilt/gdbserver does not exist, please double check the toolchain and OS used
    at com.jayway.maven.plugins.android.phase09package.ApkMojo.optionallyCopyGdbServer(ApkMojo.java:977)
    at com.jayway.maven.plugins.android.phase09package.ApkMojo.processNativeLibraries(ApkMojo.java:947)
    at com.jayway.maven.plugins.android.phase09package.ApkMojo.processNativeLibraries(ApkMojo.java:833)
    at com.jayway.maven.plugins.android.phase09package.ApkMojo.createApkFile(ApkMojo.java:377)
    at com.jayway.maven.plugins.android.phase09package.ApkMojo.execute(ApkMojo.java:332)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more
Caused by: org.apache.maven.plugin.MojoExecutionException: gdbserver binary /home/vadim/Apps/android-ndk-r8d/toolchains/arm-linux-androideabi-4.4.3/prebuilt/gdbserver does not exist, please double check the toolchain and OS used
    at com.jayway.maven.plugins.android.AndroidNdk.getGdbServer(AndroidNdk.java:186)
    at com.jayway.maven.plugins.android.phase09package.ApkMojo.optionallyCopyGdbServer(ApkMojo.java:961)
    ... 25 more
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

I have Android NDK and SDK installed, what can be the issue? Thanks in advance.

Create connecting state

Connecting state is the state where you try to reach a user, and get a RECEIVED_INITIATE_ACK from at least one connection. Maybe this state times out after 20 seconds, and shows a spinning wheel type UI.

CallState::RECEIVED_INITIATE_ACK, and CallError::ERROR_ACK_TIME are new states that support some of this logic.

In SessionManager you can set the ack timeout. It's currently at 3 seconds, which is too fast, because the socket setup/response on 3g phones can take about that long, so probably 5 is a better choice. If you initiate a call(SENT_INITIATE), you'll get RECEIVED_INITIATE_ACK within three seconds, else ERROR_ACK_TIME.

In the future an outgoing call might look like push to tell the client to wake up and connect, listen for the user your calling coming online(if he does, send an invite), send an invite to any connection that seems "online". When one accepts or denies, terminate the calls that aren't valid.

Xmpp servers because of long lived tcp connections might not show the state change very quickly if a user goes offline unexpectedly and doesn't close his connection nicely, so this is the reason for the act timeout.

not able to run the application

Hi,
I am able to run ./build.sh without any error.
after this I tried to run mvn install but it stops with error.
How do I import the project in eclipse and build apk.

[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] Tuenti Voice Client Parent
[INFO] Tuenti Voice Client Core
[INFO] Tuenti Voice Client AIDL
[INFO] Tuenti Voice Client Example
[INFO] snapshot com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.3.3-SNAPSHOT: checking for updates from oss.sonatype.org-jayway-snapshots
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '4f81f028b7a6cc7a3ca6fcefcecd9b4394948293'; remote = 'fec5ee1e6da804cae984058e8aec7b621918cc40' - RETRYING
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '4f81f028b7a6cc7a3ca6fcefcecd9b4394948293'; remote = 'fec5ee1e6da804cae984058e8aec7b621918cc40' - IGNORING
[INFO] ------------------------------------------------------------------------
[INFO] Building Tuenti Voice Client Parent
[INFO] task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] [site:attach-descriptor {execution: default-attach-descriptor}]
[INFO] [install:install {execution: default-install}]
[INFO] Installing /media/newderive/libjingleNew/trunk/android/pom.xml to /home/abul/.m2/repository/com/tuenti/voice/voice-parent/1.0-SNAPSHOT/voice-parent-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Building Tuenti Voice Client Core
[INFO] task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Internal error in the plugin manager executing goal 'com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.3.3-SNAPSHOT:generate-sources': Unable to find the mojo 'generate-sources' (or one of its required components) in the plugin 'com.jayway.maven.plugins.android.generation2:android-maven-plugin'
Component descriptor cannot be found in the component repository: org.sonatype.aether.RepositorySystem.
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13 seconds
[INFO] Finished at: Wed Jan 09 15:10:56 IST 2013
[INFO] Final Memory: 28M/68M
[INFO] ------------------------------------------------------------------------

Segfault when passing a null String to VoiceClient.nativeLogin() on Android

The VoiceClient crashes with a segfault when the login method is passed a null String.

12-11 10:46:52.270: W/dalvikvm(18159): JNI WARNING: received null jstring
12-11 10:46:52.270: W/dalvikvm(18159): in Lcom/tuenti/voice/core/VoiceClient;.nativeLogin:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)V (GetStringUTFChars)
12-11 10:46:52.270: I/dalvikvm(18159): "main" prio=5 tid=1 NATIVE
12-11 10:46:52.270: I/dalvikvm(18159): | group="main" sCount=0 dsCount=0 obj=0x41383568 self=0x41371b60
12-11 10:46:52.270: I/dalvikvm(18159): | sysTid=18159 nice=0 sched=0/0 cgrp=apps handle=1074532144
12-11 10:46:52.270: I/dalvikvm(18159): | schedstat=( 159600709 39309747 296 ) utm=7 stm=8 core=3
12-11 10:46:52.290: I/dalvikvm(18159): #00 pc 00001260 /system/lib/libcorkscrew.so (unwind_backtrace_thread+27)
12-11 10:46:52.290: I/dalvikvm(18159): #1 pc 0005f904 /system/lib/libdvm.so (dvmDumpNativeStack(DebugOutputTarget const_, int)+35)
12-11 10:46:52.290: I/dalvikvm(18159): #2 pc 000537ac /system/lib/libdvm.so (dvmDumpThreadEx(DebugOutputTarget const_, Thread_, bool)+303)
12-11 10:46:52.290: I/dalvikvm(18159): #3 pc 00053846 /system/lib/libdvm.so (dvmDumpThread(Thread_, bool)+25)
12-11 10:46:52.290: I/dalvikvm(18159): #4 pc 00038e02 /system/lib/libdvm.so
12-11 10:46:52.290: I/dalvikvm(18159): #5 pc 000390d6 /system/lib/libdvm.so
12-11 10:46:52.290: I/dalvikvm(18159): #6 pc 0003a186 /system/lib/libdvm.so
12-11 10:46:52.290: I/dalvikvm(18159): #7 pc 0003c32a /system/lib/libdvm.so
12-11 10:46:52.290: I/dalvikvm(18159): #8 pc 001c778c /data/data/com.tuenti.messenger/lib/libvoiceclient.so (Java_com_tuenti_voice_core_VoiceClient_nativeLogin+163)
12-11 10:46:52.290: I/dalvikvm(18159): #9 pc 0001de70 /system/lib/libdvm.so (dvmPlatformInvoke+112)
12-11 10:46:52.290: I/dalvikvm(18159): #10 pc 0004d0c2 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const_, JValue_, Method const_, Thread_)+393)
12-11 10:46:52.290: I/dalvikvm(18159): #11 pc 0004f1dc /system/lib/libdvm.so (dvmResolveNativeMethod(unsigned int const_, JValue_, Method const_, Thread_)+171)
12-11 10:46:52.290: I/dalvikvm(18159): #12 pc 000272a0 /system/lib/libdvm.so
12-11 10:46:52.290: I/dalvikvm(18159): #13 pc 0002bba8 /system/lib/libdvm.so (dvmInterpret(Thread_, Method const_, JValue_)+180)
12-11 10:46:52.290: I/dalvikvm(18159): #14 pc 0005faf6 /system/lib/libdvm.so (dvmInvokeMethod(Object_, Method const_, ArrayObject_, ArrayObject_, ClassObject_, bool)+373)
12-11 10:46:52.290: I/dalvikvm(18159): #15 pc 0006709c /system/lib/libdvm.so
12-11 10:46:52.290: I/dalvikvm(18159): #16 pc 000272a0 /system/lib/libdvm.so
12-11 10:46:52.290: I/dalvikvm(18159): #17 pc 0002bba8 /system/lib/libdvm.so (dvmInterpret(Thread_, Method const_, JValue_)+180)
12-11 10:46:52.290: I/dalvikvm(18159): #18 pc 0005f830 /system/lib/libdvm.so (dvmCallMethodV(Thread_, Method const_, Object_, bool, JValue_, std::_va_list)+271)
12-11 10:46:52.290: I/dalvikvm(18159): #19 pc 000496b2 /system/lib/libdvm.so
12-11 10:46:52.290: I/dalvikvm(18159): #20 pc 0004c44e /system/lib/libandroid_runtime.so
12-11 10:46:52.290: I/dalvikvm(18159): #21 pc 0004d556 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const
, char const*)+389)
12-11 10:46:52.290: I/dalvikvm(18159): #22 pc 00000dce /system/bin/app_process
12-11 10:46:52.290: I/dalvikvm(18159): #23 pc 00017120 /system/lib/libc.so (__libc_init+35)
12-11 10:46:52.290: I/dalvikvm(18159): at com.tuenti.voice.core.VoiceClient.nativeLogin(Native Method)
12-11 10:46:52.290: I/dalvikvm(18159): at com.tuenti.voice.core.VoiceClient.login(VoiceClient.java:121)
....
12-11 10:46:52.295: E/dalvikvm(18159): VM aborting
12-11 10:46:52.295: A/libc(18159): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 18159 (ger:VoipService)

unable to compile

tried with both the lukeweber ndk and the one that comes with homebrew.

when running gclient sync I get the following error:

________ running '/usr/bin/python trunk/tools/create_supplement_gypi.py trunk/voice-client-core/supplement.gypi' in '/Users/kenny/Projects/freemando'
Traceback (most recent call last):
  File "trunk/tools/create_supplement_gypi.py", line 26, in <module>
    sys.exit(main(sys.argv))
  File "trunk/tools/create_supplement_gypi.py", line 23, in main
    open(argv[1], 'w').write(supplement_gypi % argv[0])
IOError: [Errno 2] No such file or directory: 'trunk/voice-client-core/supplement.gypi'
Error: Command /usr/bin/python trunk/tools/create_supplement_gypi.py trunk/voice-client-core/supplement.gypi returned non-zero exit status 1 in /Users/kenny/Projects/freemando

Add Video support

Add java video drivers, compile all video related deps into webrtc so it works.

Video from what I understand is still too slow for many phones. I think it would be nice to have as a build option to test out and use, making sure that if we don't build with it, we're not including all of the video deps and bloating our binary.

Getting it working would be based primarily on the video example in webrtc. I'm positivie Android.mk files in webrtc will be out of date and need some care.

I might be able to provide a baseline of this working in a different project if someone is interested in attacking it and adapting the webrtc example to ours.

IOS VoIP integration, special sockets and timeout handlers for keepalive

IOS recommends a few things for VoIP, specifically special sockets and timeout handlers.

http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW12

There are several requirements for implementing a VoIP app:

  • Add the UIBackgroundModes key to your app’s Info.plist file. Set the value of this key to an array that includes the voip string.
  • Configure one of the app’s sockets for VoIP usage.
  • Before moving to the background, call the setKeepAliveTimeout:handler: method to install a handler to be executed periodically. Your app can use this handler to maintain its service connection.
  • Configure your audio session to handle transitions to and from active use.
  • To ensure a better user experience on iPhone, use the Core Telephony framework to adjust your behavior in relation to cell-based phone calls; see Core Telephony Framework Reference.
  • To ensure good performance for your VoIP app, use the System Configuration framework to detect network changes and allow your app to sleep as much as possible.

Socket that would need to change to the IPhone recommended version is used here:
./third_party/libjingle/talk/xmpp/xmppengineimpl.cc

In terms of timeouts, we would need a handler that wakes up and calls the white space keepalive method located in clientsignalingthread.cc.

PopupMenu.OnMenuItemClickListener doesn't respect minSdK in AndroidManifest

We need to re add the logic recently commented out to use apis from sdk 9. Alternatively we could strip out the functionality of the popup for phones on sdk 9 & 10. The offender can be viewed in CallView.java. Nothing was commented out without a corresponding NOTE: THIS HAS BEEN REMOVED AS IT IS NOT AVAILABLE UNTIL API level 11 and our minSdk is 9 line. The relevant changeset is: 17b1d79.

EndAllCalls() segfault

I must be deleting something twice when I call this, or accessing an object that's already been deleted through some other means. I have to review this in more detail. Previously when we just had one call in scope we would delete a call if call_ != null, now though we have a potential list of calls in session, whereby I loop through them and call terminate().

Have to look at this and figure out the correct way to clean things up.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.