Hello again, I wanted to give an update. When I use the pjsua executable located in pjproject/pjsip-apps/bin I can play an audio file using the commands: ./pjsua --clock-rate=48000 --play-file=[file.wav] Then I issue the command cc 1 0 And I hear the sound file playing. However I noticed this as output: pjsua_app.c ..Turning sound device ON This is something I don't notice in my own application, there the only output I see is 13:08:30.726 pjsua_aud.c !Creating file player: Noise.wav.. 13:08:30.728 wav_player.c .File player 'Noise.wav' created: samp.rate=48000, ch=1, bufsize=4KB, filesize=135KB 13:08:30.729 pjsua_aud.c .Player created, id=0, slot=1 13:08:30.730 pjsua_aud.c Conf connect: 1 --> 0 13:08:30.731 pjsua_aud.c .Set sound device: capture=-1, playback=-2 13:08:30.732 pjsua_aud.c ..Opening sound device PCM at 48000/1/20ms 13:08:30.747 ec0x9d88d0 ...Echo suppressor created, clock_rate=48000, channel=1, samples per frame=960, tail length=200 ms, latency=100 ms 13:08:30.753 conference.c .Port 1 (Noise.wav) transmitting to port 0 (Logitech Wireless Headset: USB Audio (hw:0,0) (48KHz)) Do I need to enable the sound device in my C++ code? If so, how? On 2014-12-03 15:22, David Desopper wrote: > Hello everyone, > > I am trying to write a C++ application using pjsua2 that will run on > the Raspberry Pi (armv6 architecture). I used a cross compiler to > compile pjproject on my laptop (normal intel 64-bit architecture). > > The initialisation of the endpoint and library go just fine, my test > sip account appears online to other accounts. But when I try to make a > call, nothing goes trough and I don't hear any sound. I expect that > you should hear a ring when trying to make a call, please correct me > if I'm wrong. So I suspect that it is a audiodevice problem. > > In my C++ code I tried to play a normal .wav file, and that also > fails. The program seems to think that everything is fine, but I don't > hear anything. I checked if the program is using the right device and > indeed it is. When I try "./pjsua --play-file THEFILE.WAV" like found > in the sound-problem page of pjsip, I do hear the sound. So it has > nothing to do with the pjsip libraries, but something else. > > So my device is definitly working properly, the pjsip executable is > working, so that are all not the problem. So next I will copy the > program output and the way I initialize pjsua and play the audiofile. > > The device I am using is Logitech Wireless Headset: USB Audio and I am > compiling with the flags: > -DPJMEDIA_AUDIO_DEV_HAS_ALSA=1 > -DPJMEDIA_AUDIO_DEV_HAS_PORTAUDIO=0 > > Any help/corrections will be greatly appreciated. > > *** Initialization *** > ep.libCreate(); > > ep_cfg.logConfig.level = 4; > ep_cfg.logConfig.consoleLevel = 4; > > ep_cfg.uaConfig.userAgent = "Pjsua2 Debian Wheezy (wackytalky)"; > pj::StringVector stun_servers; > stun_servers.push_back("stun.pjsip.org"); > ep_cfg.uaConfig.stunServer = stun_servers; > > > ep_cfg.medConfig.sndClockRate = 48000; > ep_cfg.medConfig.ecTailLen = 0; > > ep.libInit( ep_cfg ); > > // Create SIP transport. Error handling sample is shown > tcfg.port = 5060; > try { > ep.transportCreate(PJSIP_TRANSPORT_UDP, tcfg); > } catch (pj::Error &err) { > std::cout << err.info() << std::endl; > return; > } > > // Configure an AccountConfig > acfg.idUri = "sip:wackytalky_rasp at sip.linphone.org"; > acfg.regConfig.registrarUri = "sip:sip.linphone.org"; > acfg.natConfig.iceEnabled = true; > pj::AuthCredInfo cred("digest", "*", "wackytalky_rasp", 0, "k56ska"); > acfg.sipConfig.authCreds.push_back( cred ); > acfg.callConfig.timerMinSESec = 90; > acfg.callConfig.timerSessExpiresSec = 90; > > // Create the account > acc = new MyAccount; > acc->create(acfg); > > // Start the library (worker threads etc) > ep.libStart(); > std::cout << "*** PJSUA2 STARTED ***" << std::endl; > -------------------------------------------------------------------------------------------------------- > > > *** Playing the file *** > std::cout << "***************** PLAYING AUDIO *****************" << > std::endl; > pj::AudioMediaPlayer player; > pj::AudioMedia& play_med = ep.audDevManager().getPlaybackDevMedia(); > std::cout << "Portinfo.name: " << play_med.getPortInfo().name << > std::endl; > try { > player.createPlayer(wavFile, PJMEDIA_FILE_NO_LOOP); > player.startTransmit(play_med); > } catch(pj::Error& err) { > std::cout << "Error playing file\n" << err.reason << std::endl; > } > std::cout << "***************** END PLAY AUDIO *****************" > << std::endl; > --------------------------------------------------------------------------------------------------------------- > > > > *** Output with loglevel 4 *** > 14:01:11.786 os_core_unix.c !pjlib 2.3 for POSIX initialized > 14:01:11.793 sip_endpoint.c .Creating endpoint instance... > 14:01:11.796 pjlib .select() I/O Queue created (0xfaef60) > 14:01:11.798 sip_endpoint.c .Module "mod-msg-print" registered > 14:01:11.799 sip_transport. .Transport manager created. > 14:01:11.801 pjsua_core.c .PJSUA state changed: NULL --> CREATED > 14:01:11.802 sip_endpoint.c .Module "mod-pjsua-log" registered > 14:01:11.803 sip_endpoint.c .Module "mod-tsx-layer" registered > 14:01:11.804 sip_endpoint.c .Module "mod-stateful-util" registered > 14:01:11.806 sip_endpoint.c .Module "mod-ua" registered > 14:01:11.807 sip_endpoint.c .Module "mod-100rel" registered > 14:01:11.809 sip_endpoint.c .Module "mod-pjsua" registered > 14:01:11.810 sip_endpoint.c .Module "mod-invite" registered > 14:01:11.811 pjsua_core.c .Trying STUN server stun.pjsip.org (1 of > 1).. > 14:01:12.379 pa_dev.c ..PortAudio sound library initialized, > status=0 > 14:01:12.381 pa_dev.c ..PortAudio host api count=1 > 14:01:12.382 pa_dev.c ..Sound device count=10 > 14:01:12.384 pjlib ..select() I/O Queue created (0xfdcd54) > 14:01:12.447 sip_endpoint.c .Module "mod-evsub" registered > 14:01:12.448 sip_endpoint.c .Module "mod-presence" registered > 14:01:12.449 sip_endpoint.c .Module "mod-mwi" registered > 14:01:12.450 sip_endpoint.c .Module "mod-refer" registered > 14:01:12.451 sip_endpoint.c .Module "mod-pjsua-pres" registered > 14:01:12.452 sip_endpoint.c .Module "mod-pjsua-im" registered > 14:01:12.453 sip_endpoint.c .Module "mod-pjsua-options" registered > 14:01:12.454 pjsua_core.c .1 SIP worker threads created > 14:01:12.456 pjsua_core.c .pjsua version 2.3 for > Linux-3.12.28/armv6l/glibc-2.13 initialized > 14:01:12.457 pjsua_core.c .PJSUA state changed: CREATED --> INIT > 14:01:12.459 stunresolve !.STUN mapped address found/changed: > 81.11.170.171:61951 > 14:01:12.462 pjsua_core.c .STUN resolution success, using > stun.pjsip.org, address is 208.109.222.137:3478 > 14:01:12.699 pjsua_core.c !SIP UDP socket reachable at > 81.11.170.171:43401 > 14:01:12.700 udp0xfe8718 SIP UDP transport started, published > address is 81.11.170.171:43401 > 14:01:12.702 pjsua_acc.c Adding account: > id=sip:wackytalky_rasp at sip.linphone.org > 14:01:12.703 pjsua_acc.c .Account > sip:wackytalky_rasp at sip.linphone.org added with id 0 > 14:01:12.705 pjsua_acc.c .Acc 0: setting registration.. > 14:01:12.931 pjsua_core.c ...TX 587 bytes Request msg > REGISTER/cseq=26221 (tdta0xfeceb0) to UDP 91.121.209.194:5060: > REGISTER sip:sip.linphone.org SIP/2.0 > Via: SIP/2.0/UDP > 81.11.170.171:43401;rport;branch=z9hG4bKPjnr-JeP0GtBXtgx0jnEA4Rj17xo6UNNmj > Max-Forwards: 70 > From: > <sip:wackytalky_rasp at sip.linphone.org>;tag=WBKGxmaoLkNufobpr.UIIT2ygMr6thrB > To: <sip:wackytalky_rasp at sip.linphone.org> > Call-ID: ueFaLQ-58TSf3LFkhuiJwif5zyxvOJB- > CSeq: 26221 REGISTER > User-Agent: Pjsua2 Debian Wheezy (wackytalky) > Contact: <sip:wackytalky_rasp at 81.11.170.171:43401;ob>;+sip.ice > Expires: 300 > Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, > NOTIFY, REFER, MESSAGE, OPTIONS > Content-Length: 0 > > > --end msg-- > 14:01:12.934 pjsua_acc.c ..Acc 0: Registration sent > 14:01:12.935 pjsua_core.c PJSUA state changed: INIT --> STARTING > 14:01:12.937 sip_endpoint.c .Module "mod-unsolicited-mwi" registered > 14:01:12.938 pjsua_core.c .PJSUA state changed: STARTING --> RUNNING > *** PJSUA2 STARTED *** > ***************** LISTING AUDIO DEVICES ***************** > Index: 0Name: Logitech Wireless Headset: USB Audio (hw:0,0) Driver: PA > defaultSamplesPerSec: 48000 > Index: 1Name: bcm2835 ALSA: bcm2835 ALSA (hw:1,0) Driver: PA > defaultSamplesPerSec: 44100 > Index: 2Name: bcm2835 ALSA: bcm2835 IEC958/HDMI (hw:1,1) Driver: PA > defaultSamplesPerSec: 44100 > Index: 3Name: sysdefault Driver: PA defaultSamplesPerSec: 44100 > Index: 4Name: front Driver: PA defaultSamplesPerSec: 48000 > Index: 5Name: surround40 Driver: PA defaultSamplesPerSec: 48000 > Index: 6Name: iec958 Driver: PA defaultSamplesPerSec: 48000 > Index: 7Name: spdif Driver: PA defaultSamplesPerSec: 48000 > Index: 8Name: default Driver: PA defaultSamplesPerSec: 44100 > Index: 9Name: dmix Driver: PA defaultSamplesPerSec: 48000 > 14:01:12.950 pjsua_acc.c Acc 0: setting online status to 1.. > command: 14:01:12.995 pjsua_core.c !.RX 539 bytes Response msg > 401/REGISTER/cseq=26221 (rdata0xfe9d4c) from UDP 91.121.209.194:5060: > SIP/2.0 401 Unauthorized > Via: SIP/2.0/UDP > 81.11.170.171:43401;rport=37004;branch=z9hG4bKPjnr-JeP0GtBXtgx0jnEA4Rj17xo6UNNmj > From: > <sip:wackytalky_rasp at sip.linphone.org>;tag=WBKGxmaoLkNufobpr.UIIT2ygMr6thrB > To: <sip:wackytalky_rasp at sip.linphone.org>;tag=Z6jFrU1r5rppF > Call-ID: ueFaLQ-58TSf3LFkhuiJwif5zyxvOJB- > CSeq: 26221 REGISTER > Server: Flexisip/0.8.0 (sofia-sip-nta/2.0) > WWW-Authenticate: Digest realm="sip.linphone.org", > nonce="fpcp2AAAAADwjHH8AAAeZH6nzAMAAAAA", opaque="+GNywA==", > algorithm=MD5, qop="auth" > Content-Length: 0 > > > --end msg-- > 14:01:12.997 pjsua_acc.c ....IP address change detected for > account 0 (81.11.170.171:43401 --> 81.11.170.171:37004). Updating > registration (using method 4) > 14:01:12.999 pjsua_core.c ....TX 878 bytes Request msg > REGISTER/cseq=26222 (tdta0xfeceb0) to UDP 91.121.209.194:5060: > REGISTER sip:sip.linphone.org SIP/2.0 > Via: SIP/2.0/UDP > 81.11.170.171:37004;rport;branch=z9hG4bKPjtOLt4IZpb.flD56Mh19Dx.7zrw8JSnVG > Max-Forwards: 70 > From: > <sip:wackytalky_rasp at sip.linphone.org>;tag=WBKGxmaoLkNufobpr.UIIT2ygMr6thrB > To: <sip:wackytalky_rasp at sip.linphone.org> > Call-ID: ueFaLQ-58TSf3LFkhuiJwif5zyxvOJB- > CSeq: 26222 REGISTER > User-Agent: Pjsua2 Debian Wheezy (wackytalky) > Contact: <sip:wackytalky_rasp at 81.11.170.171:37004;ob>;+sip.ice > Expires: 300 > Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, > NOTIFY, REFER, MESSAGE, OPTIONS > Authorization: Digest username="wackytalky_rasp", > realm="sip.linphone.org", nonce="fpcp2AAAAADwjHH8AAAeZH6nzAMAAAAA", > uri="sip:sip.linphone.org", > response="2746a476da3e6dfaded742501519feaf", algorithm=MD5, > cnonce="bTC-fBmk10HddeNJr0zzxIRFbBJDfJay", opaque="+GNywA==", > qop=auth, nc=00000001 > Content-Length: 0 > > > --end msg-- > 14:01:13.075 pjsua_core.c .RX 485 bytes Response msg > 200/REGISTER/cseq=26222 (rdata0xfe9d4c) from UDP 91.121.209.194:5060: > SIP/2.0 200 Registration successful > Via: SIP/2.0/UDP > 81.11.170.171:37004;rport=37004;branch=z9hG4bKPjtOLt4IZpb.flD56Mh19Dx.7zrw8JSnVG > From: > <sip:wackytalky_rasp at sip.linphone.org>;tag=WBKGxmaoLkNufobpr.UIIT2ygMr6thrB > To: <sip:wackytalky_rasp at sip.linphone.org>;tag=7eXN6K8me08Bc > Call-ID: ueFaLQ-58TSf3LFkhuiJwif5zyxvOJB- > CSeq: 26222 REGISTER > Contact: <sip:wackytalky_rasp at 81.11.170.171:37004;ob>;expires=300;q=0.00 > Server: Flexisip/0.8.0 (sofia-sip-nta/2.0) > Content-Length: 0 > > > --end msg-- > 14:01:13.076 pjsua_acc.c ....SIP outbound status for acc 0 is not > active > 14:01:13.078 pjsua_acc.c ....sip:wackytalky_rasp at sip.linphone.org: > registration success, status=200 (Registration successful), will > re-register in 300 seconds > 14:01:13.079 pjsua_acc.c ....Keep-alive timer started for acc 0, > destination:91.121.209.194:5060, interval:15s > *** Register: code=200 > play > ***************** PLAYING AUDIO ***************** > Portinfo.name: Master/sound > 14:01:15.114 pjsua_aud.c !Creating file player: Noise.wav.. > 14:01:15.116 wav_player.c .File player 'Noise.wav' created: > samp.rate=48000, ch=1, bufsize=4KB, filesize=135KB > 14:01:15.117 pjsua_aud.c .Player created, id=0, slot=1 > 14:01:15.118 pjsua_aud.c Conf connect: 1 --> 0 > 14:01:15.119 pjsua_aud.c .Set sound device: capture=-1, playback=-2 > 14:01:15.121 pjsua_aud.c ..Opening sound device PCM at 48000/1/20ms > 14:01:15.140 conference.c .Port 1 (Noise.wav) transmitting to port > 0 (Logitech Wireless Headset: USB Audio (hw:0,0) (48KHz)) > ***************** END PLAY AUDIO ***************** > 14:01:15.143 pjsua_aud.c Destroying player 0.. > command: 14:01:15.183 os_core_unix.c !Info: possibly re-registering > existing thread > 14:01:16.143 pjsua_aud.c !Closing sound device after idle for 1 > second(s) > 14:01:16.144 pjsua_aud.c .Closing Logitech Wireless Headset: USB > Audio (hw:0,0) sound playback device and Logitech Wireless Headset: > USB Audio (hw:0,0) sound capture device > > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip at lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org