Hello,
I've made a small C application to run on a linux machine, based on "Simple
PJSUA" example.
What I need to add is echo cancellation, and I tryed to do it like the code
attached:
But according to the logs I get it seems that something is missing. I
suspect it's the manipulation of the capture and playback frames, but I
have no idea how to do it!
#include <pjsua-lib/pjsua.h>
#define THIS_FILE "APP"
#define SIP_DOMAIN "raspbx"
#define SIP_USER "511"
#define SIP_PASSWD "aaa511"
#define SIP_REALM "asterisk"
#define SIP_SCHEME "digest"
pjmedia_echo_state *ec;
pjmedia_frame play_frame, rec_frame;
/* Callback called by the library upon receiving incoming call */
static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
pjsip_rx_data *rdata) {
pjsua_call_info ci;
PJ_UNUSED_ARG(acc_id);
PJ_UNUSED_ARG(rdata);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Incoming call from %.*s!!",
(int) ci.remote_info.slen,
ci.remote_info.ptr));
/* Automatically answer incoming calls with 200/OK */
pjsua_call_answer(call_id, 200, NULL, NULL);
}
/* Callback called by the library when call's state has changed */
static void on_call_state(pjsua_call_id call_id, pjsip_event *e) {
pjsua_call_info ci;
PJ_UNUSED_ARG(e);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Call %d state=%.*s", call_id,
(int) ci.state_text.slen,
ci.state_text.ptr));
}
/* Callback called by the library when call's media state has changed */
static void on_call_media_state(pjsua_call_id call_id) {
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
// When media is active, connect call to sound device.
pjsua_conf_connect(ci.conf_slot, 0);
pjsua_conf_connect(0, ci.conf_slot);
}
}
/* Display error and exit application */
static void error_exit(const char *title, pj_status_t status) {
pjsua_perror(THIS_FILE, title, status);
pjsua_destroy();
exit(1);
}
/*
main()
argv[1] may contain URL to call.
*/
int main(int argc, char *argv[]) {
pjsua_acc_id acc_id;
pj_status_t status;
/* Create pjsua first! */
status = pjsua_create();
if (status != PJ_SUCCESS) error_exit("Error in pjsua_create()", status);
/* Init pjsua */
{
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_media_config media_cfg;
pjsua_config_default(&cfg);
cfg.cb.on_incoming_call = &on_incoming_call;
cfg.cb.on_call_media_state = &on_call_media_state;
cfg.cb.on_call_state = &on_call_state;
cfg.max_calls = 1;
pjsua_logging_config_default(&log_cfg);
log_cfg.console_level = 6;
pjsua_media_config_default(&media_cfg);
media_cfg.ec_options = PJMEDIA_ECHO_DEFAULT;
media_cfg.ec_tail_len = 250;
status = pjsua_init(&cfg, &log_cfg, &media_cfg);
// status = pjsua_init(&cfg, &log_cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error in pjsua_init()",
status);
pj_pool_t *pool = pjsua_pool_create("my_echo", 1000, 1000);
status = pjmedia_echo_create(pool, 16000, 320, 500, 500,
PJMEDIA_ECHO_DEFAULT, &ec);
play_frame.buf = pj_pool_alloc(pool, 320);
rec_frame.buf = pj_pool_alloc(pool, 320);
}
/* Add UDP transport. */
{
pjsua_transport_config cfg;
pjsua_transport_config_default(&cfg);
cfg.port = 5060;
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error creating transport",
status);
}
/* Initialization is done, now start pjsua */
status = pjsua_start();
if (status != PJ_SUCCESS) error_exit("Error starting pjsua", status);
/* Register to SIP server by creating SIP account. */
{
pjsua_acc_config cfg;
pjsua_acc_config_default(&cfg);
cfg.id = pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
cfg.cred_count = 1;
cfg.cred_info[0].realm = pj_str(SIP_REALM);
cfg.cred_info[0].scheme = pj_str(SIP_SCHEME);
cfg.cred_info[0].username = pj_str(SIP_USER);
cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
cfg.cred_info[0].data = pj_str(SIP_PASSWD);
status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
if (status != PJ_SUCCESS) error_exit("Error adding account",
status);
}
if (argc > 1) {
pj_str_t uri = pj_str(argv[1]);
status = pjsua_call_make_call(acc_id, &uri, 0, NULL, NULL, NULL);
if (status != PJ_SUCCESS) error_exit("Error making call", status);
}
char option[10];
while (1) {
if (fgets(option, sizeof (option), stdin) == NULL) {
puts("EOF while reading stdin, will quit now..");
break;
}
if (option[0] == 'q')
break;
}
/* Destroy pjsua */
pjsua_destroy();
return 0;
}
The logs:
16:10:45.203 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
16:10:45.207 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.216 speex !warning: internal playback buffer corruption?
16:10:45.221 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.279 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
16:10:45.393 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.462 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
16:10:45.522 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.562 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
Pjsip version: 2.4
Can anyone help out?
Thanks.
Alexandre Gonçalves
............................................................................................................................
Email: alexandre@silvagoncalves.com
Hi Alexandre,
I don't know what the problem is, but you shouldn't need to create a
separate EC object. pjsua_init will create an echo canceller and connect
it to the sound port.
Does the call work without EC?
Regards,
Bill
On 4/11/2016 10:33 AM, Alexandre Gonçalves wrote:
Hello,
I've made a small C application to run on a linux machine, based on
"Simple PJSUA" example.
What I need to add is echo cancellation, and I tryed to do it like the
code attached:
But according to the logs I get it seems that something is missing. I
suspect it's the manipulation of the capture and playback frames, but
I have no idea how to do it!
#include <pjsua-lib/pjsua.h>
#define THIS_FILE "APP"
#define SIP_DOMAIN "raspbx"
#define SIP_USER "511"
#define SIP_PASSWD "aaa511"
#define SIP_REALM "asterisk"
#define SIP_SCHEME "digest"
pjmedia_echo_state *ec;
pjmedia_frame play_frame, rec_frame;
/* Callback called by the library upon receiving incoming call */
static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
pjsip_rx_data *rdata) {
pjsua_call_info ci;
PJ_UNUSED_ARG(acc_id);
PJ_UNUSED_ARG(rdata);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Incoming call from %.*s!!",
(int) ci.remote_info.slen,
ci.remote_info.ptr));
/* Automatically answer incoming calls with 200/OK */
pjsua_call_answer(call_id, 200, NULL, NULL);
}
/* Callback called by the library when call's state has changed */
static void on_call_state(pjsua_call_id call_id, pjsip_event *e) {
pjsua_call_info ci;
PJ_UNUSED_ARG(e);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Call %d state=%.*s", call_id,
(int) ci.state_text.slen,
ci.state_text.ptr));
}
/* Callback called by the library when call's media state has changed */
static void on_call_media_state(pjsua_call_id call_id) {
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
// When media is active, connect call to sound device.
pjsua_conf_connect(ci.conf_slot, 0);
pjsua_conf_connect(0, ci.conf_slot);
}
}
/* Display error and exit application */
static void error_exit(const char *title, pj_status_t status) {
pjsua_perror(THIS_FILE, title, status);
pjsua_destroy();
exit(1);
}
/*
main()
argv[1] may contain URL to call.
*/
int main(int argc, char *argv[]) {
pjsua_acc_id acc_id;
pj_status_t status;
/* Create pjsua first! */
status = pjsua_create();
if (status != PJ_SUCCESS) error_exit("Error in pjsua_create()",
status);
/* Init pjsua */
{
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_media_config media_cfg;
pjsua_config_default(&cfg);
cfg.cb.on_incoming_call = &on_incoming_call;
cfg.cb.on_call_media_state = &on_call_media_state;
cfg.cb.on_call_state = &on_call_state;
cfg.max_calls = 1;
pjsua_logging_config_default(&log_cfg);
log_cfg.console_level = 6;
pjsua_media_config_default(&media_cfg);
media_cfg.ec_options = PJMEDIA_ECHO_DEFAULT;
media_cfg.ec_tail_len = 250;
status = pjsua_init(&cfg, &log_cfg, &media_cfg);
// status = pjsua_init(&cfg, &log_cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error in pjsua_init()",
status);
pj_pool_t *pool = pjsua_pool_create("my_echo", 1000, 1000);
status = pjmedia_echo_create(pool, 16000, 320, 500, 500,
PJMEDIA_ECHO_DEFAULT, &ec);
play_frame.buf = pj_pool_alloc(pool, 320);
rec_frame.buf = pj_pool_alloc(pool, 320);
}
/* Add UDP transport. */
{
pjsua_transport_config cfg;
pjsua_transport_config_default(&cfg);
cfg.port = 5060;
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error creating
transport", status);
}
/* Initialization is done, now start pjsua */
status = pjsua_start();
if (status != PJ_SUCCESS) error_exit("Error starting pjsua", status);
/* Register to SIP server by creating SIP account. */
{
pjsua_acc_config cfg;
pjsua_acc_config_default(&cfg);
cfg.id http://cfg.id = pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
cfg.cred_count = 1;
cfg.cred_info[0].realm = pj_str(SIP_REALM);
cfg.cred_info[0].scheme = pj_str(SIP_SCHEME);
cfg.cred_info[0].username = pj_str(SIP_USER);
cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
cfg.cred_info[0].data = pj_str(SIP_PASSWD);
status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
if (status != PJ_SUCCESS) error_exit("Error adding account",
status);
}
if (argc > 1) {
pj_str_t uri = pj_str(argv[1]);
status = pjsua_call_make_call(acc_id, &uri, 0, NULL, NULL, NULL);
if (status != PJ_SUCCESS) error_exit("Error making call", status);
}
char option[10];
while (1) {
if (fgets(option, sizeof (option), stdin) == NULL) {
puts("EOF while reading stdin, will quit now..");
break;
}
if (option[0] == 'q')
break;
}
/* Destroy pjsua */
pjsua_destroy();
return 0;
}
The logs:
16:10:45.203 speex !warning: No playback frame available
(your application is buggy and/or got xruns)
16:10:45.207 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.216 speex !warning: internal playback buffer corruption?
16:10:45.221 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.279 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
16:10:45.393 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.462 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
16:10:45.522 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.562 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
Pjsip version: 2.4
Can anyone help out?
Thanks.
Alexandre Gonçalves**
............................................................................................................................
Email: alexandre@silvagoncalves.com mailto:alexandre@silvagoncalves.com
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Yes it does. The device is handsfree.
Thanks.
Alexandre Gonçalves
............................................................................................................................
Email: alexandre@silvagoncalves.com
2016-04-11 16:09 GMT+01:00 Bill Gardner billg@wavearts.com:
Hi Alexandre,
I don't know what the problem is, but you shouldn't need to create a
separate EC object. pjsua_init will create an echo canceller and connect it
to the sound port.
Does the call work without EC?
Regards,
Bill
On 4/11/2016 10:33 AM, Alexandre Gonçalves wrote:
Hello,
I've made a small C application to run on a linux machine, based on
"Simple PJSUA" example.
What I need to add is echo cancellation, and I tryed to do it like the
code attached:
But according to the logs I get it seems that something is missing. I
suspect it's the manipulation of the capture and playback frames, but I
have no idea how to do it!
#include <pjsua-lib/pjsua.h>
#define THIS_FILE "APP"
#define SIP_DOMAIN "raspbx"
#define SIP_USER "511"
#define SIP_PASSWD "aaa511"
#define SIP_REALM "asterisk"
#define SIP_SCHEME "digest"
pjmedia_echo_state *ec;
pjmedia_frame play_frame, rec_frame;
/* Callback called by the library upon receiving incoming call */
static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
pjsip_rx_data *rdata) {
pjsua_call_info ci;
PJ_UNUSED_ARG(acc_id);
PJ_UNUSED_ARG(rdata);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Incoming call from %.*s!!",
(int) ci.remote_info.slen,
ci.remote_info.ptr));
/* Automatically answer incoming calls with 200/OK */
pjsua_call_answer(call_id, 200, NULL, NULL);
}
/* Callback called by the library when call's state has changed */
static void on_call_state(pjsua_call_id call_id, pjsip_event *e) {
pjsua_call_info ci;
PJ_UNUSED_ARG(e);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Call %d state=%.*s", call_id,
(int) ci.state_text.slen,
ci.state_text.ptr));
}
/* Callback called by the library when call's media state has changed */
static void on_call_media_state(pjsua_call_id call_id) {
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
// When media is active, connect call to sound device.
pjsua_conf_connect(ci.conf_slot, 0);
pjsua_conf_connect(0, ci.conf_slot);
}
}
/* Display error and exit application */
static void error_exit(const char *title, pj_status_t status) {
pjsua_perror(THIS_FILE, title, status);
pjsua_destroy();
exit(1);
}
/*
main()
argv[1] may contain URL to call.
*/
int main(int argc, char *argv[]) {
pjsua_acc_id acc_id;
pj_status_t status;
/* Create pjsua first! */
status = pjsua_create();
if (status != PJ_SUCCESS) error_exit("Error in pjsua_create()",
status);
/* Init pjsua */
{
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_media_config media_cfg;
pjsua_config_default(&cfg);
cfg.cb.on_incoming_call = &on_incoming_call;
cfg.cb.on_call_media_state = &on_call_media_state;
cfg.cb.on_call_state = &on_call_state;
cfg.max_calls = 1;
pjsua_logging_config_default(&log_cfg);
log_cfg.console_level = 6;
pjsua_media_config_default(&media_cfg);
media_cfg.ec_options = PJMEDIA_ECHO_DEFAULT;
media_cfg.ec_tail_len = 250;
status = pjsua_init(&cfg, &log_cfg, &media_cfg);
// status = pjsua_init(&cfg, &log_cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error in pjsua_init()",
status);
pj_pool_t *pool = pjsua_pool_create("my_echo", 1000, 1000);
status = pjmedia_echo_create(pool, 16000, 320, 500, 500,
PJMEDIA_ECHO_DEFAULT, &ec);
play_frame.buf = pj_pool_alloc(pool, 320);
rec_frame.buf = pj_pool_alloc(pool, 320);
}
/* Add UDP transport. */
{
pjsua_transport_config cfg;
pjsua_transport_config_default(&cfg);
cfg.port = 5060;
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error creating transport",
status);
}
/* Initialization is done, now start pjsua */
status = pjsua_start();
if (status != PJ_SUCCESS) error_exit("Error starting pjsua", status);
/* Register to SIP server by creating SIP account. */
{
pjsua_acc_config cfg;
pjsua_acc_config_default(&cfg);
cfg.id = pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
cfg.cred_count = 1;
cfg.cred_info[0].realm = pj_str(SIP_REALM);
cfg.cred_info[0].scheme = pj_str(SIP_SCHEME);
cfg.cred_info[0].username = pj_str(SIP_USER);
cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
cfg.cred_info[0].data = pj_str(SIP_PASSWD);
status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
if (status != PJ_SUCCESS) error_exit("Error adding account",
status);
}
if (argc > 1) {
pj_str_t uri = pj_str(argv[1]);
status = pjsua_call_make_call(acc_id, &uri, 0, NULL, NULL, NULL);
if (status != PJ_SUCCESS) error_exit("Error making call", status);
}
char option[10];
while (1) {
if (fgets(option, sizeof (option), stdin) == NULL) {
puts("EOF while reading stdin, will quit now..");
break;
}
if (option[0] == 'q')
break;
}
/* Destroy pjsua */
pjsua_destroy();
return 0;
}
The logs:
16:10:45.203 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
16:10:45.207 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.216 speex !warning: internal playback buffer corruption?
16:10:45.221 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.279 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
16:10:45.393 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.462 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
16:10:45.522 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.562 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
Pjsip version: 2.4
Can anyone help out?
Thanks.
Alexandre Gonçalves
............................................................................................................................
Email: alexandre@silvagoncalves.comalexandre@silvagoncalves.com
Visit our blog: http://blog.pjsip.org
pjsip mailing listpjsip@lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Try removing your code that creates the EC, then run again and see if
the log shows that an EC was created. - Bill
On 4/11/2016 11:16 AM, Alexandre Gonçalves wrote:
Yes it does. The device is handsfree.
Thanks.
Alexandre Gonçalves**
............................................................................................................................
Email: alexandre@silvagoncalves.com mailto:alexandre@silvagoncalves.com
2016-04-11 16:09 GMT+01:00 Bill Gardner <billg@wavearts.com
mailto:billg@wavearts.com>:
Hi Alexandre,
I don't know what the problem is, but you shouldn't need to create
a separate EC object. pjsua_init will create an echo canceller and
connect it to the sound port.
Does the call work without EC?
Regards,
Bill
On 4/11/2016 10:33 AM, Alexandre Gonçalves wrote:
Hello,
I've made a small C application to run on a linux machine, based
on "Simple PJSUA" example.
What I need to add is echo cancellation, and I tryed to do it
like the code attached:
But according to the logs I get it seems that something is
missing. I suspect it's the manipulation of the capture and
playback frames, but I have no idea how to do it!
#include <pjsua-lib/pjsua.h>
#define THIS_FILE "APP"
#define SIP_DOMAIN "raspbx"
#define SIP_USER "511"
#define SIP_PASSWD "aaa511"
#define SIP_REALM "asterisk"
#define SIP_SCHEME "digest"
pjmedia_echo_state *ec;
pjmedia_frame play_frame, rec_frame;
/* Callback called by the library upon receiving incoming call */
static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id
call_id,
pjsip_rx_data *rdata) {
pjsua_call_info ci;
PJ_UNUSED_ARG(acc_id);
PJ_UNUSED_ARG(rdata);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Incoming call from %.*s!!",
(int) ci.remote_info.slen,
ci.remote_info.ptr));
/* Automatically answer incoming calls with 200/OK */
pjsua_call_answer(call_id, 200, NULL, NULL);
}
/* Callback called by the library when call's state has changed */
static void on_call_state(pjsua_call_id call_id, pjsip_event *e) {
pjsua_call_info ci;
PJ_UNUSED_ARG(e);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Call %d state=%.*s", call_id,
(int) ci.state_text.slen,
ci.state_text.ptr));
}
/* Callback called by the library when call's media state has
changed */
static void on_call_media_state(pjsua_call_id call_id) {
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
// When media is active, connect call to sound device.
pjsua_conf_connect(ci.conf_slot, 0);
pjsua_conf_connect(0, ci.conf_slot);
}
}
/* Display error and exit application */
static void error_exit(const char *title, pj_status_t status) {
pjsua_perror(THIS_FILE, title, status);
pjsua_destroy();
exit(1);
}
/*
* main()
*
* argv[1] may contain URL to call.
*/
int main(int argc, char *argv[]) {
pjsua_acc_id acc_id;
pj_status_t status;
/* Create pjsua first! */
status = pjsua_create();
if (status != PJ_SUCCESS) error_exit("Error in
pjsua_create()", status);
/* Init pjsua */
{
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_media_config media_cfg;
pjsua_config_default(&cfg);
cfg.cb.on_incoming_call = &on_incoming_call;
cfg.cb.on_call_media_state = &on_call_media_state;
cfg.cb.on_call_state = &on_call_state;
cfg.max_calls = 1;
pjsua_logging_config_default(&log_cfg);
log_cfg.console_level = 6;
pjsua_media_config_default(&media_cfg);
media_cfg.ec_options = PJMEDIA_ECHO_DEFAULT;
media_cfg.ec_tail_len = 250;
status = pjsua_init(&cfg, &log_cfg, &media_cfg);
// status = pjsua_init(&cfg, &log_cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error in
pjsua_init()", status);
pj_pool_t *pool = pjsua_pool_create("my_echo", 1000, 1000);
status = pjmedia_echo_create(pool, 16000, 320, 500, 500,
PJMEDIA_ECHO_DEFAULT, &ec);
play_frame.buf = pj_pool_alloc(pool, 320);
rec_frame.buf = pj_pool_alloc(pool, 320);
}
/* Add UDP transport. */
{
pjsua_transport_config cfg;
pjsua_transport_config_default(&cfg);
cfg.port = 5060;
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP,
&cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error creating
transport", status);
}
/* Initialization is done, now start pjsua */
status = pjsua_start();
if (status != PJ_SUCCESS) error_exit("Error starting pjsua",
status);
/* Register to SIP server by creating SIP account. */
{
pjsua_acc_config cfg;
pjsua_acc_config_default(&cfg);
cfg.id <http://cfg.id> = pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
cfg.cred_count = 1;
cfg.cred_info[0].realm = pj_str(SIP_REALM);
cfg.cred_info[0].scheme = pj_str(SIP_SCHEME);
cfg.cred_info[0].username = pj_str(SIP_USER);
cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
cfg.cred_info[0].data = pj_str(SIP_PASSWD);
status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
if (status != PJ_SUCCESS) error_exit("Error adding
account", status);
}
if (argc > 1) {
pj_str_t uri = pj_str(argv[1]);
status = pjsua_call_make_call(acc_id, &uri, 0, NULL,
NULL, NULL);
if (status != PJ_SUCCESS) error_exit("Error making call",
status);
}
char option[10];
while (1) {
if (fgets(option, sizeof (option), stdin) == NULL) {
puts("EOF while reading stdin, will quit now..");
break;
}
if (option[0] == 'q')
break;
}
/* Destroy pjsua */
pjsua_destroy();
return 0;
}
The logs:
16:10:45.203 speex !warning: No playback frame available
(your application is buggy and/or got xruns)
16:10:45.207 speex !warning: Auto-filling the buffer
(your application is buggy and/or got xruns)
16:10:45.216 speex !warning: internal playback buffer
corruption?
16:10:45.221 speex !warning: Auto-filling the buffer
(your application is buggy and/or got xruns)
16:10:45.279 speex warning: Had to discard a playback
frame (your application is buggy and/or got xruns)
16:10:45.393 speex warning: Auto-filling the buffer
(your application is buggy and/or got xruns)
16:10:45.462 speex warning: Had to discard a playback
frame (your application is buggy and/or got xruns)
16:10:45.522 speex warning: Auto-filling the buffer
(your application is buggy and/or got xruns)
16:10:45.562 speex warning: Had to discard a playback
frame (your application is buggy and/or got xruns)
Pjsip version: 2.4
Can anyone help out?
Thanks.
*Alexandre Gonçalves***
............................................................................................................................
Email: alexandre@silvagoncalves.com
<mailto:alexandre@silvagoncalves.com>
_______________________________________________
Visit our blog:http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
_______________________________________________
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
I followed your suggestion, and indeed the EC is created:
00:14:30.374 ec0x16adf18 ...Creating AEC
00:14:30.382 ec0x16adf18 ...AEC created, clock_rate=16000, channel=1,
samples per frame=320, tail length=200 ms, latency=0 ms
However the logs about speex are still appearing:
01:23:25.435 tsx0x171eca4 .Incoming Response msg 401/REGISTER/cseq=762
(rdata0x16cb26c) in state Completed
01:23:25.454 speex !warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
01:23:25.501 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:25.517 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
01:23:25.771 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
01:23:25.774 speex !warning: internal playback buffer corruption?
01:23:25.774 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:26.380 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:26.444 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
01:23:27.799 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:27.851 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
01:23:28.181 tsx0x16ce62c !Timeout timer event
01:23:28.185 tsx0x16ce62c .State changed from Completed to Terminated,
event=TIMER
01:23:28.191 tsx0x16ce62c Timeout timer event
01:23:28.193 tsx0x16ce62c .State changed from Terminated to Destroyed,
event=TIMER
01:23:28.194 tsx0x16ce62c Transaction destroyed!
01:23:28.206 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:28.287 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
01:23:28.583 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
01:23:28.616 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:28.807 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
01:23:29.739 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:29.827 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
01:23:30.378 tsx0x171eca4 !Timeout timer event
01:23:30.380 tsx0x171eca4 .State changed from Completed to Terminated,
event=TIMER
01:23:30.385 tsx0x171eca4 Timeout timer event
01:23:30.386 tsx0x171eca4 .State changed from Terminated to Destroyed,
event=TIMER
01:23:30.388 tdta0x16d74a0 ..Destroying txdata Request msg
REGISTER/cseq=762 (tdta0x16d74a0)
01:23:30.398 tsx0x171eca4 Transaction destroyed!
01:23:31.944 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:32.134 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
01:23:32.280 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:32.312 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
01:23:32.517 silencedet.c Starting silence (level=9 threshold=22)
There is still echo, in other words on the remote party I hear my own voice.
Regards.
Alexandre Gonçalves
............................................................................................................................
Email: alexandre@silvagoncalves.com
2016-04-11 20:14 GMT+01:00 Bill Gardner billg@wavearts.com:
Try removing your code that creates the EC, then run again and see if the
log shows that an EC was created. - Bill
On 4/11/2016 11:16 AM, Alexandre Gonçalves wrote:
Yes it does. The device is handsfree.
Thanks.
Alexandre Gonçalves
............................................................................................................................
Email: alexandre@silvagoncalves.comalexandre@silvagoncalves.com
2016-04-11 16:09 GMT+01:00 Bill Gardner billg@wavearts.com:
Hi Alexandre,
I don't know what the problem is, but you shouldn't need to create a
separate EC object. pjsua_init will create an echo canceller and connect it
to the sound port.
Does the call work without EC?
Regards,
Bill
On 4/11/2016 10:33 AM, Alexandre Gonçalves wrote:
Hello,
I've made a small C application to run on a linux machine, based on
"Simple PJSUA" example.
What I need to add is echo cancellation, and I tryed to do it like the
code attached:
But according to the logs I get it seems that something is missing. I
suspect it's the manipulation of the capture and playback frames, but I
have no idea how to do it!
#include <pjsua-lib/pjsua.h>
#define THIS_FILE "APP"
#define SIP_DOMAIN "raspbx"
#define SIP_USER "511"
#define SIP_PASSWD "aaa511"
#define SIP_REALM "asterisk"
#define SIP_SCHEME "digest"
pjmedia_echo_state *ec;
pjmedia_frame play_frame, rec_frame;
/* Callback called by the library upon receiving incoming call */
static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
pjsip_rx_data *rdata) {
pjsua_call_info ci;
PJ_UNUSED_ARG(acc_id);
PJ_UNUSED_ARG(rdata);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Incoming call from %.*s!!",
(int) ci.remote_info.slen,
ci.remote_info.ptr));
/* Automatically answer incoming calls with 200/OK */
pjsua_call_answer(call_id, 200, NULL, NULL);
}
/* Callback called by the library when call's state has changed */
static void on_call_state(pjsua_call_id call_id, pjsip_event *e) {
pjsua_call_info ci;
PJ_UNUSED_ARG(e);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Call %d state=%.*s", call_id,
(int) ci.state_text.slen,
ci.state_text.ptr));
}
/* Callback called by the library when call's media state has changed */
static void on_call_media_state(pjsua_call_id call_id) {
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
// When media is active, connect call to sound device.
pjsua_conf_connect(ci.conf_slot, 0);
pjsua_conf_connect(0, ci.conf_slot);
}
}
/* Display error and exit application */
static void error_exit(const char *title, pj_status_t status) {
pjsua_perror(THIS_FILE, title, status);
pjsua_destroy();
exit(1);
}
/*
main()
argv[1] may contain URL to call.
*/
int main(int argc, char *argv[]) {
pjsua_acc_id acc_id;
pj_status_t status;
/* Create pjsua first! */
status = pjsua_create();
if (status != PJ_SUCCESS) error_exit("Error in pjsua_create()",
status);
/* Init pjsua */
{
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_media_config media_cfg;
pjsua_config_default(&cfg);
cfg.cb.on_incoming_call = &on_incoming_call;
cfg.cb.on_call_media_state = &on_call_media_state;
cfg.cb.on_call_state = &on_call_state;
cfg.max_calls = 1;
pjsua_logging_config_default(&log_cfg);
log_cfg.console_level = 6;
pjsua_media_config_default(&media_cfg);
media_cfg.ec_options = PJMEDIA_ECHO_DEFAULT;
media_cfg.ec_tail_len = 250;
status = pjsua_init(&cfg, &log_cfg, &media_cfg);
// status = pjsua_init(&cfg, &log_cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error in pjsua_init()",
status);
pj_pool_t *pool = pjsua_pool_create("my_echo", 1000, 1000);
status = pjmedia_echo_create(pool, 16000, 320, 500, 500,
PJMEDIA_ECHO_DEFAULT, &ec);
play_frame.buf = pj_pool_alloc(pool, 320);
rec_frame.buf = pj_pool_alloc(pool, 320);
}
/* Add UDP transport. */
{
pjsua_transport_config cfg;
pjsua_transport_config_default(&cfg);
cfg.port = 5060;
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error creating transport",
status);
}
/* Initialization is done, now start pjsua */
status = pjsua_start();
if (status != PJ_SUCCESS) error_exit("Error starting pjsua", status);
/* Register to SIP server by creating SIP account. */
{
pjsua_acc_config cfg;
pjsua_acc_config_default(&cfg);
cfg.id = pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
cfg.cred_count = 1;
cfg.cred_info[0].realm = pj_str(SIP_REALM);
cfg.cred_info[0].scheme = pj_str(SIP_SCHEME);
cfg.cred_info[0].username = pj_str(SIP_USER);
cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
cfg.cred_info[0].data = pj_str(SIP_PASSWD);
status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
if (status != PJ_SUCCESS) error_exit("Error adding account",
status);
}
if (argc > 1) {
pj_str_t uri = pj_str(argv[1]);
status = pjsua_call_make_call(acc_id, &uri, 0, NULL, NULL, NULL);
if (status != PJ_SUCCESS) error_exit("Error making call", status);
}
char option[10];
while (1) {
if (fgets(option, sizeof (option), stdin) == NULL) {
puts("EOF while reading stdin, will quit now..");
break;
}
if (option[0] == 'q')
break;
}
/* Destroy pjsua */
pjsua_destroy();
return 0;
}
The logs:
16:10:45.203 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
16:10:45.207 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.216 speex !warning: internal playback buffer corruption?
16:10:45.221 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.279 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
16:10:45.393 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.462 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
16:10:45.522 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.562 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
Pjsip version: 2.4
Can anyone help out?
Thanks.
Alexandre Gonçalves
............................................................................................................................
Email: alexandre@silvagoncalves.comalexandre@silvagoncalves.com
Visit our blog: http://blog.pjsip.org
pjsip mailing listpjsip@lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing listpjsip@lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Please attach a complete log. - Bill
On 4/11/2016 9:31 PM, Alexandre Gonçalves wrote:
I followed your suggestion, and indeed the EC is created:
00:14:30.374 ec0x16adf18 ...Creating AEC
00:14:30.382 ec0x16adf18 ...AEC created, clock_rate=16000,
channel=1, samples per frame=320, tail length=200 ms, latency=0 ms
However the logs about speex are still appearing:
01:23:25.435 tsx0x171eca4 .Incoming Response msg
401/REGISTER/cseq=762 (rdata0x16cb26c) in state Completed
01:23:25.454 speex !warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:25.501 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:25.517 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:25.771 speex !warning: No playback frame available
(your application is buggy and/or got xruns)
01:23:25.774 speex !warning: internal playback buffer corruption?
01:23:25.774 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:26.380 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:26.444 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:27.799 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:27.851 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:28.181 tsx0x16ce62c !Timeout timer event
01:23:28.185 tsx0x16ce62c .State changed from Completed to
Terminated, event=TIMER
01:23:28.191 tsx0x16ce62c Timeout timer event
01:23:28.193 tsx0x16ce62c .State changed from Terminated to
Destroyed, event=TIMER
01:23:28.194 tsx0x16ce62c Transaction destroyed!
01:23:28.206 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:28.287 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:28.583 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:28.616 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:28.807 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:29.739 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:29.827 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:30.378 tsx0x171eca4 !Timeout timer event
01:23:30.380 tsx0x171eca4 .State changed from Completed to
Terminated, event=TIMER
01:23:30.385 tsx0x171eca4 Timeout timer event
01:23:30.386 tsx0x171eca4 .State changed from Terminated to
Destroyed, event=TIMER
01:23:30.388 tdta0x16d74a0 ..Destroying txdata Request msg
REGISTER/cseq=762 (tdta0x16d74a0)
01:23:30.398 tsx0x171eca4 Transaction destroyed!
01:23:31.944 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:32.134 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:32.280 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:32.312 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:32.517 silencedet.c Starting silence (level=9 threshold=22)
There is still echo, in other words on the remote party I hear my own
voice.
Regards.
Alexandre Gonçalves**
............................................................................................................................
Email: alexandre@silvagoncalves.com mailto:alexandre@silvagoncalves.com
2016-04-11 20:14 GMT+01:00 Bill Gardner <billg@wavearts.com
mailto:billg@wavearts.com>:
Try removing your code that creates the EC, then run again and see
if the log shows that an EC was created. - Bill
On 4/11/2016 11:16 AM, Alexandre Gonçalves wrote:
Yes it does. The device is handsfree.
Thanks.
*Alexandre Gonçalves***
............................................................................................................................
Email: alexandre@silvagoncalves.com
<mailto:alexandre@silvagoncalves.com>
2016-04-11 16:09 GMT+01:00 Bill Gardner <billg@wavearts.com
<mailto:billg@wavearts.com>>:
Hi Alexandre,
I don't know what the problem is, but you shouldn't need to
create a separate EC object. pjsua_init will create an echo
canceller and connect it to the sound port.
Does the call work without EC?
Regards,
Bill
On 4/11/2016 10:33 AM, Alexandre Gonçalves wrote:
Hello,
I've made a small C application to run on a linux machine,
based on "Simple PJSUA" example.
What I need to add is echo cancellation, and I tryed to do
it like the code attached:
But according to the logs I get it seems that something is
missing. I suspect it's the manipulation of the capture and
playback frames, but I have no idea how to do it!
#include <pjsua-lib/pjsua.h>
#define THIS_FILE "APP"
#define SIP_DOMAIN "raspbx"
#define SIP_USER "511"
#define SIP_PASSWD "aaa511"
#define SIP_REALM "asterisk"
#define SIP_SCHEME "digest"
pjmedia_echo_state *ec;
pjmedia_frame play_frame, rec_frame;
/* Callback called by the library upon receiving incoming
call */
static void on_incoming_call(pjsua_acc_id acc_id,
pjsua_call_id call_id,
pjsip_rx_data *rdata) {
pjsua_call_info ci;
PJ_UNUSED_ARG(acc_id);
PJ_UNUSED_ARG(rdata);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Incoming call from %.*s!!",
(int) ci.remote_info.slen,
ci.remote_info.ptr));
/* Automatically answer incoming calls with 200/OK */
pjsua_call_answer(call_id, 200, NULL, NULL);
}
/* Callback called by the library when call's state has
changed */
static void on_call_state(pjsua_call_id call_id, pjsip_event
*e) {
pjsua_call_info ci;
PJ_UNUSED_ARG(e);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Call %d state=%.*s", call_id,
(int) ci.state_text.slen,
ci.state_text.ptr));
}
/* Callback called by the library when call's media state
has changed */
static void on_call_media_state(pjsua_call_id call_id) {
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
// When media is active, connect call to sound device.
pjsua_conf_connect(ci.conf_slot, 0);
pjsua_conf_connect(0, ci.conf_slot);
}
}
/* Display error and exit application */
static void error_exit(const char *title, pj_status_t status) {
pjsua_perror(THIS_FILE, title, status);
pjsua_destroy();
exit(1);
}
/*
* main()
*
* argv[1] may contain URL to call.
*/
int main(int argc, char *argv[]) {
pjsua_acc_id acc_id;
pj_status_t status;
/* Create pjsua first! */
status = pjsua_create();
if (status != PJ_SUCCESS) error_exit("Error in
pjsua_create()", status);
/* Init pjsua */
{
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_media_config media_cfg;
pjsua_config_default(&cfg);
cfg.cb.on_incoming_call = &on_incoming_call;
cfg.cb.on_call_media_state = &on_call_media_state;
cfg.cb.on_call_state = &on_call_state;
cfg.max_calls = 1;
pjsua_logging_config_default(&log_cfg);
log_cfg.console_level = 6;
pjsua_media_config_default(&media_cfg);
media_cfg.ec_options = PJMEDIA_ECHO_DEFAULT;
media_cfg.ec_tail_len = 250;
status = pjsua_init(&cfg, &log_cfg, &media_cfg);
// status = pjsua_init(&cfg, &log_cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error in
pjsua_init()", status);
pj_pool_t *pool = pjsua_pool_create("my_echo", 1000,
1000);
status = pjmedia_echo_create(pool, 16000, 320, 500,
500, PJMEDIA_ECHO_DEFAULT, &ec);
play_frame.buf = pj_pool_alloc(pool, 320);
rec_frame.buf = pj_pool_alloc(pool, 320);
}
/* Add UDP transport. */
{
pjsua_transport_config cfg;
pjsua_transport_config_default(&cfg);
cfg.port = 5060;
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP,
&cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error creating
transport", status);
}
/* Initialization is done, now start pjsua */
status = pjsua_start();
if (status != PJ_SUCCESS) error_exit("Error starting
pjsua", status);
/* Register to SIP server by creating SIP account. */
{
pjsua_acc_config cfg;
pjsua_acc_config_default(&cfg);
cfg.id <http://cfg.id> = pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
cfg.cred_count = 1;
cfg.cred_info[0].realm = pj_str(SIP_REALM);
cfg.cred_info[0].scheme = pj_str(SIP_SCHEME);
cfg.cred_info[0].username = pj_str(SIP_USER);
cfg.cred_info[0].data_type =
PJSIP_CRED_DATA_PLAIN_PASSWD;
cfg.cred_info[0].data = pj_str(SIP_PASSWD);
status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
if (status != PJ_SUCCESS) error_exit("Error adding
account", status);
}
if (argc > 1) {
pj_str_t uri = pj_str(argv[1]);
status = pjsua_call_make_call(acc_id, &uri, 0, NULL,
NULL, NULL);
if (status != PJ_SUCCESS) error_exit("Error making
call", status);
}
char option[10];
while (1) {
if (fgets(option, sizeof (option), stdin) == NULL) {
puts("EOF while reading stdin, will quit now..");
break;
}
if (option[0] == 'q')
break;
}
/* Destroy pjsua */
pjsua_destroy();
return 0;
}
The logs:
16:10:45.203 speex !warning: No playback frame
available (your application is buggy and/or got xruns)
16:10:45.207 speex !warning: Auto-filling the
buffer (your application is buggy and/or got xruns)
16:10:45.216 speex !warning: internal playback
buffer corruption?
16:10:45.221 speex !warning: Auto-filling the
buffer (your application is buggy and/or got xruns)
16:10:45.279 speex warning: Had to discard a
playback frame (your application is buggy and/or got xruns)
16:10:45.393 speex warning: Auto-filling the
buffer (your application is buggy and/or got xruns)
16:10:45.462 speex warning: Had to discard a
playback frame (your application is buggy and/or got xruns)
16:10:45.522 speex warning: Auto-filling the
buffer (your application is buggy and/or got xruns)
16:10:45.562 speex warning: Had to discard a
playback frame (your application is buggy and/or got xruns)
Pjsip version: 2.4
Can anyone help out?
Thanks.
*Alexandre Gonçalves***
............................................................................................................................
Email: alexandre@silvagoncalves.com
<mailto:alexandre@silvagoncalves.com>
_______________________________________________
Visit our blog:http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
_______________________________________________
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
_______________________________________________
Visit our blog:http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
_______________________________________________
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Here it is:
13:53:51.440 os_core_unix.c !pjlib 2.4 for POSIX initialized
13:53:51.448 sip_endpoint.c .Creating endpoint instance...
13:53:51.450 pjlib .select() I/O Queue created (0xbbabd8)
13:53:51.452 sip_endpoint.c .Module "mod-msg-print" registered
13:53:51.453 sip_transport. .Transport manager created.
13:53:51.455 pjsua_core.c .PJSUA state changed: NULL --> CREATED
13:53:51.456 sip_endpoint.c .Module "mod-pjsua-log" registered
13:53:51.458 sip_endpoint.c .Module "mod-tsx-layer" registered
13:53:51.459 sip_endpoint.c .Module "mod-stateful-util" registered
13:53:51.459 sip_endpoint.c .Module "mod-ua" registered
13:53:51.461 sip_endpoint.c .Module "mod-100rel" registered
13:53:51.461 sip_endpoint.c .Module "mod-pjsua" registered
13:53:51.462 sip_endpoint.c .Module "mod-invite" registered
13:53:51.687 alsa_dev.c ..Added sound device default:CARD=Device
13:53:51.716 alsa_dev.c ..Added sound device sysdefault:CARD=Device
13:53:51.725 alsa_dev.c ..Added sound device front:CARD=Device,DEV=0
13:53:51.735 alsa_dev.c ..Added sound device
surround40:CARD=Device,DEV=0
13:53:51.744 alsa_dev.c ..Added sound device
surround41:CARD=Device,DEV=0
13:53:51.753 alsa_dev.c ..Added sound device
surround50:CARD=Device,DEV=0
13:53:51.762 alsa_dev.c ..Added sound device
surround51:CARD=Device,DEV=0
13:53:51.770 alsa_dev.c ..Added sound device
surround71:CARD=Device,DEV=0
13:53:51.781 alsa_dev.c ..Added sound device iec958:CARD=Device,DEV=0
13:53:51.789 alsa_dev.c ..Added sound device default:CARD=ALSA
13:53:51.796 alsa_dev.c ..Added sound device sysdefault:CARD=ALSA
13:53:51.797 alsa_dev.c ..ALSA driver found 11 devices
13:53:51.798 alsa_dev.c ..ALSA initialized
13:53:51.800 pjlib ..select() I/O Queue created (0xbe58c4)
13:53:51.803 conference.c ..Creating conference bridge with 254 ports
13:53:51.805 Master/sound ..Using delay buffer with WSOLA.
13:53:51.848 sip_endpoint.c .Module "mod-evsub" registered
13:53:51.849 sip_endpoint.c .Module "mod-presence" registered
13:53:51.851 evsub.c .Event pkg "presence" registered by
mod-presence
13:53:51.853 sip_endpoint.c .Module "mod-mwi" registered
13:53:51.854 evsub.c .Event pkg "message-summary" registered by
mod-mwi
13:53:51.855 sip_endpoint.c .Module "mod-refer" registered
13:53:51.856 evsub.c .Event pkg "refer" registered by mod-refer
13:53:51.856 sip_endpoint.c .Module "mod-pjsua-pres" registered
13:53:51.857 sip_endpoint.c .Module "mod-pjsua-im" registered
13:53:51.857 sip_endpoint.c .Module "mod-pjsua-options" registered
13:53:51.858 pjsua_core.c .1 SIP worker threads created
13:53:51.859 pjsua_core.c .pjsua version 2.4 for
Linux-3.18.7/armv6l/glibc-2.13 initialized
13:53:51.860 pjsua_core.c .PJSUA state changed: CREATED --> INIT
13:53:51.862 pjsua_core.c SIP UDP socket reachable at 192.168.1.120:5060
13:53:51.864 udp0xbefc38 SIP UDP transport started, published address
is 192.168.1.120:5060
13:53:51.866 pjsua_core.c PJSUA state changed: INIT --> STARTING
13:53:51.867 sip_endpoint.c .Module "mod-unsolicited-mwi" registered
13:53:51.868 pjsua_core.c .PJSUA state changed: STARTING --> RUNNING
13:53:51.868 pjsua_acc.c Adding account: id=sip:511@raspbx
13:53:51.869 pjsua_acc.c .Account sip:511@raspbx added with id 0
13:53:51.870 pjsua_acc.c .Acc 0: setting registration..
13:53:51.871 endpoint ..Request msg REGISTER/cseq=47840
(tdta0xbf3dc0) created.
13:53:51.873 tsx0xbf4e2c ...Transaction created for Request msg
REGISTER/cseq=47841 (tdta0xbf3dc0)
13:53:51.874 tsx0xbf4e2c ..Sending Request msg REGISTER/cseq=47841
(tdta0xbf3dc0) in state Null
13:53:51.874 sip_resolve.c ...DNS resolver not available, target
'raspbx:0' type=Unspecified will be resolved with getaddrinfo()
13:53:51.881 sip_resolve.c ...Target 'raspbx:0' type=Unspecified resolved
to '192.168.1.40:5060' type=UDP (UDP transport)
13:53:51.882 pjsua_core.c ...TX 463 bytes Request msg
REGISTER/cseq=47841 (tdta0xbf3dc0) to UDP 192.168.1.40:5060:
REGISTER sip:raspbx SIP/2.0
Via: SIP/2.0/UDP 192.168.1.120:5060
;rport;branch=z9hG4bKPjEGkMscGiSvt0O.KLo9dxJ4s03V7-1Kmw
Max-Forwards: 70
From: sip:511@raspbx;tag=s96E7GKkGb5ti9m603K6miDa9.i8Cow5
To: sip:511@raspbx
Call-ID: 9V1ox-mHiBZCYvDoVuu6ZDlSGCo7h9p1
CSeq: 47841 REGISTER
Contact: sip:511@192.168.1.120:5060;ob
Expires: 300
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY,
REFER, MESSAGE, OPTIONS
Content-Length: 0
--end msg--
13:53:51.886 tsx0xbf4e2c ...State changed from Null to Calling,
event=TX_MSG
13:53:51.888 pjsua_acc.c ..Acc 0: Registration sent
13:53:51.889 sip_endpoint.c !Processing incoming message: Response msg
401/REGISTER/cseq=47841 (rdata0xbf126c)
13:53:51.891 pjsua_core.c .RX 557 bytes Response msg
401/REGISTER/cseq=47841 (rdata0xbf126c) from UDP 192.168.1.40:5060:
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.120:5060
;branch=z9hG4bKPjEGkMscGiSvt0O.KLo9dxJ4s03V7-1Kmw;received=192.168.1.120;rport=5060
From: sip:511@raspbx;tag=s96E7GKkGb5ti9m603K6miDa9.i8Cow5
To: sip:511@raspbx;tag=as333960f3
Call-ID: 9V1ox-mHiBZCYvDoVuu6ZDlSGCo7h9p1
CSeq: 47841 REGISTER
Server: FPBX-13.0.98(11.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="729607f2"
Content-Length: 0
--end msg--
13:53:51.893 tsx0xbf4e2c .Incoming Response msg 401/REGISTER/cseq=47841
(rdata0xbf126c) in state Calling
13:53:51.893 tsx0xbf4e2c ..State changed from Calling to Completed,
event=RX_MSG
13:53:51.894 tsx0xbf7a6c ....Transaction created for Request msg
REGISTER/cseq=47842 (tdta0xbf3dc0)
13:53:51.895 tsx0xbf7a6c ...Sending Request msg REGISTER/cseq=47842
(tdta0xbf3dc0) in state Null
13:53:51.896 endpoint ....Request msg REGISTER/cseq=47842
(tdta0xbf3dc0): skipping target resolution because address is already set
13:53:51.896 pjsua_core.c ....TX 615 bytes Request msg
REGISTER/cseq=47842 (tdta0xbf3dc0) to UDP 192.168.1.40:5060:
REGISTER sip:raspbx SIP/2.0
Via: SIP/2.0/UDP 192.168.1.120:5060
;rport;branch=z9hG4bKPjP3YWUDS2G79cd9uSmZNxwOihH-vgIz7D
Max-Forwards: 70
From: sip:511@raspbx;tag=s96E7GKkGb5ti9m603K6miDa9.i8Cow5
To: sip:511@raspbx
Call-ID: 9V1ox-mHiBZCYvDoVuu6ZDlSGCo7h9p1
CSeq: 47842 REGISTER
Contact: sip:511@192.168.1.120:5060;ob
Expires: 300
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY,
REFER, MESSAGE, OPTIONS
Authorization: Digest username="511", realm="asterisk", nonce="729607f2",
uri="sip:raspbx", response="2fff1075128c48f46ec28243fa1df69b", algorithm=MD5
Content-Length: 0
--end msg--
13:53:51.897 tsx0xbf7a6c ....State changed from Null to Calling,
event=TX_MSG
13:53:51.898 pjsua_call.c !Making call with acc #0 to sip:502@raspbx
13:53:51.899 pjsua_aud.c .Set sound device: capture=-1, playback=-2
13:53:51.902 pjsua_aud.c !..Opening sound device PCM@16000/1/20ms
13:53:51.902 alsa_dev.c ...open_playback: Open playback device
'default:CARD=Device'
13:53:51.902 sip_endpoint.c !Processing incoming message: Request msg
OPTIONS/cseq=102 (rdata0xbf126c)
13:53:51.914 pjsua_core.c !.RX 555 bytes Request msg OPTIONS/cseq=102
(rdata0xbf126c) from UDP 192.168.1.40:5060:
OPTIONS sip:511@192.168.1.120:5060;ob SIP/2.0
Via: SIP/2.0/UDP 192.168.1.40:5060;branch=z9hG4bK1fb15846
Max-Forwards: 70
From: "Unknown" sip:Unknown@192.168.1.40;tag=as0df0e1a8
To: sip:511@192.168.1.120:5060;ob
Contact: sip:Unknown@192.168.1.40:5060
Call-ID: 15c7a8267bbf71235fa859e4431f2326@192.168.1.40:5060
CSeq: 102 OPTIONS
User-Agent: FPBX-13.0.98(11.21.0)
Date: Tue, 12 Apr 2016 13:53:51 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
Content-Length: 0
--end msg--
13:53:51.925 alsa_dev.c !...Opened device alsa(default:CARD=Device) for
playing, sample rate=16000, ch=1, bits=16, period size=320 frames,
latency=149 ms
13:53:51.927 alsa_dev.c ...open_capture: Open capture device
'default:CARD=Device'
13:53:51.947 alsa_dev.c ...Opened device alsa(default:CARD=Device) for
capture, sample rate=16000, ch=1, bits=16, period size=320 frames,
latency=106 ms
13:53:51.949 ec0xbd3f18 ...Creating AEC
13:53:51.954 ec0xbd3f18 ...AEC created, clock_rate=16000, channel=1,
samples per frame=320, tail length=200 ms, latency=0 ms
13:53:51.956 dlg0xc3773c .UAC dialog created
13:53:51.958 dlg0xc3773c ..Session count inc to 2 by mod-pjsua
13:53:51.960 pjsua_media.c .Call 0: initializing media..
13:53:51.963 alsa_dev.c !ca_thread_func(2733): Set thread priority for
audio capture thread.
13:53:51.965 alsa_dev.c Unable to increase thread priority, root
access needed.
13:53:51.968 pjsua_media.c !..RTP socket reachable at 192.168.1.120:4000
13:53:51.969 pjsua_media.c ..RTCP socket reachable at 192.168.1.120:4001
13:53:51.966 speex !warning: discarded first playback frame
13:53:51.972 speex !warning: discarded first playback frame
13:53:51.975 speex warning: discarded first playback frame
13:53:51.978 speex !warning: discarded first playback frame
13:53:51.977 pjsua_media.c !..Media index 0 selected for audio call 0
13:53:51.980 dlg0xc3773c !..Session count dec to 2 by mod-pjsua
13:53:51.984 speex !warning: discarded first playback frame
13:53:51.986 speex !warning: discarded first playback frame
13:53:51.985 dlg0xc3773c !.Module mod-invite added as dialog usage,
data=0xc08acc
13:53:51.993 dlg0xc3773c !..Session count inc to 4 by mod-invite
13:53:51.994 dlg0xc3773c .Module mod-100rel added as dialog usage,
data=0xc08c18
13:53:51.997 dlg0xc3773c .100rel module attached
13:53:51.998 inv0xc3773c .UAC invite session created for dialog
dlg0xc3773c
13:53:52.003 endpoint !.Request msg INVITE/cseq=19591 (tdta0xc3d1e0)
created.
13:53:52.008 inv0xc3773c ..Sending Request msg INVITE/cseq=19591
(tdta0xc3d1e0)
13:53:52.010 dlg0xc3773c ...Sending Request msg INVITE/cseq=19591
(tdta0xc3d1e0)
13:53:52.012 tsx0xc3f1f4 ....Transaction created for Request msg
INVITE/cseq=19590 (tdta0xc3d1e0)
13:53:52.014 tsx0xc3f1f4 ...Sending Request msg INVITE/cseq=19590
(tdta0xc3d1e0) in state Null
13:53:52.016 sip_resolve.c ....DNS resolver not available, target
'raspbx:0' type=Unspecified will be resolved with getaddrinfo()
13:53:52.001 speex !warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:52.019 speex !warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:52.025 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:52.027 sip_resolve.c !....Target 'raspbx:0' type=Unspecified
resolved to '192.168.1.40:5060' type=UDP (UDP transport)
13:53:52.036 pjsua_core.c ....TX 943 bytes Request msg INVITE/cseq=19590
(tdta0xc3d1e0) to UDP 192.168.1.40:5060:
INVITE sip:502@raspbx SIP/2.0
Via: SIP/2.0/UDP 192.168.1.120:5060
;rport;branch=z9hG4bKPjfvZU.XrhkVa5zrKBI0Wqx1ZJrzL5cf6R
Max-Forwards: 70
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx
Contact: sip:511@192.168.1.120:5060;ob
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19590 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY,
REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
Content-Type: application/sdp
Content-Length: 381
v=0
o=- 3669458031 3669458031 IN IP4 192.168.1.120
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0
m=audio 4000 RTP/AVP 98 97 99 0 8 96
c=IN IP4 192.168.1.120
b=TIAS:64000
a=rtcp:4001 IN IP4 192.168.1.120
a=sendrecv
a=rtpmap:98 speex/16000
a=rtpmap:97 speex/8000
a=rtpmap:99 speex/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
--end msg--
13:53:52.042 tsx0xc3f1f4 ....State changed from Null to Calling,
event=TX_MSG
13:53:52.043 dlg0xc3773c .....Transaction tsx0xc3f1f4 state changed to
Calling
13:53:52.043 APP .......Call 0 state=CALLING
13:53:52.044 endpoint !.Response msg 200/OPTIONS/cseq=102
(tdta0xc41ae8) created
13:53:52.046 sip_resolve.c .Target '192.168.1.40:5060' type=UDP resolved
to '192.168.1.40:5060' type=UDP (UDP transport)
13:53:52.047 pjsua_core.c .TX 683 bytes Response msg
200/OPTIONS/cseq=102 (tdta0xc41ae8) to UDP 192.168.1.40:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.40:5060
;received=192.168.1.40;branch=z9hG4bK1fb15846
Call-ID: 15c7a8267bbf71235fa859e4431f2326@192.168.1.40:5060
From: "Unknown" sip:Unknown@192.168.1.40;tag=as0df0e1a8
To: sip:511@192.168.1.120;ob;tag=z9hG4bK1fb15846
CSeq: 102 OPTIONS
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY,
REFER, MESSAGE, OPTIONS
Accept: application/sdp, application/pidf+xml, application/xpidf+xml,
application/simple-message-summary, message/sipfrag;version=2.0,
application/im-iscomposing+xml, text/plain
Supported: replaces, 100rel, timer, norefersub
Allow-Events: presence, message-summary, refer
Content-Length: 0
--end msg--
13:53:52.047 tdta0xc41ae8 .Destroying txdata Response msg
200/OPTIONS/cseq=102 (tdta0xc41ae8)
13:53:52.050 sip_endpoint.c Processing incoming message: Response msg
200/REGISTER/cseq=47842 (rdata0xbf126c)
13:53:52.053 pjsua_core.c .RX 576 bytes Response msg
200/REGISTER/cseq=47842 (rdata0xbf126c) from UDP 192.168.1.40:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.120:5060
;branch=z9hG4bKPjP3YWUDS2G79cd9uSmZNxwOihH-vgIz7D;received=192.168.1.120;rport=5060
From: sip:511@raspbx;tag=s96E7GKkGb5ti9m603K6miDa9.i8Cow5
To: sip:511@raspbx;tag=as333960f3
Call-ID: 9V1ox-mHiBZCYvDoVuu6ZDlSGCo7h9p1
CSeq: 47842 REGISTER
Server: FPBX-13.0.98(11.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
Expires: 300
Contact: sip:511@192.168.1.120:5060;ob;expires=300
Date: Tue, 12 Apr 2016 13:53:51 GMT
Content-Length: 0
--end msg--
13:53:52.055 tsx0xbf7a6c .Incoming Response msg 200/REGISTER/cseq=47842
(rdata0xbf126c) in state Calling
13:53:52.056 tsx0xbf7a6c ..State changed from Calling to Completed,
event=RX_MSG
13:53:52.057 pjsua_acc.c ....SIP outbound status for acc 0 is not active
13:53:52.058 pjsua_acc.c ....sip:511@raspbx: registration success,
status=200 (OK), will re-register in 300 seconds
13:53:52.058 pjsua_acc.c ....Keep-alive timer started for acc 0,
destination:192.168.1.40:5060, interval:15s
13:53:52.061 sip_endpoint.c Processing incoming message: Request msg
NOTIFY/cseq=102 (rdata0xbf126c)
13:53:52.064 pjsua_core.c .RX 558 bytes Request msg NOTIFY/cseq=102
(rdata0xbf126c) from UDP 192.168.1.40:5060:
NOTIFY sip:511@192.168.1.120:5060;ob SIP/2.0
Via: SIP/2.0/UDP 192.168.1.40:5060;branch=z9hG4bK7f31d868
Max-Forwards: 70
From: "Unknown" sip:Unknown@192.168.1.40;tag=as43b2ff19
To: sip:511@192.168.1.120:5060;ob
Contact: sip:Unknown@192.168.1.40:5060
Call-ID: 23fdfd4920b57317364ac36904b11312@192.168.1.40:5060
CSeq: 102 NOTIFY
User-Agent: FPBX-13.0.98(11.21.0)
Event: message-summary
Content-Type: application/simple-message-summary
Content-Length: 87
Messages-Waiting: no
Message-Account: sip:*97@192.168.1.40
Voice-Message: 0/0 (0/0)
--end msg--
13:53:52.066 pjsua_pres.c .Got unsolicited NOTIFY from 192.168.1.40:5060
..
13:53:52.067 endpoint ..Response msg 200/NOTIFY/cseq=102
(tdta0xc41ae8) created
13:53:52.075 tsx0xc42b54 ...Transaction created for Request msg
NOTIFY/cseq=102 (rdata0xbf126c)
13:53:52.077 tsx0xc42b54 ..Incoming Request msg NOTIFY/cseq=102
(rdata0xbf126c) in state Null
13:53:52.078 tsx0xc42b54 ...State changed from Null to Trying,
event=RX_MSG
13:53:52.080 tsx0xc42b54 ..Sending Response msg 200/NOTIFY/cseq=102
(tdta0xc41ae8) in state Trying
13:53:52.081 sip_resolve.c ...Target '192.168.1.40:5060' type=UDP
resolved to '192.168.1.40:5060' type=UDP (UDP transport)
13:53:52.082 pjsua_core.c ...TX 309 bytes Response msg
200/NOTIFY/cseq=102 (tdta0xc41ae8) to UDP 192.168.1.40:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.40:5060
;received=192.168.1.40;branch=z9hG4bK7f31d868
Call-ID: 23fdfd4920b57317364ac36904b11312@192.168.1.40:5060
From: "Unknown" sip:Unknown@192.168.1.40;tag=as43b2ff19
To: sip:511@192.168.1.120;ob;tag=z9hG4bK7f31d868
CSeq: 102 NOTIFY
Content-Length: 0
--end msg--
13:53:52.084 tsx0xc42b54 ...State changed from Trying to Completed,
event=TX_MSG
13:53:52.085 sip_endpoint.c Processing incoming message: Request msg
NOTIFY/cseq=102 (rdata0xbf126c)
13:53:52.086 pjsua_core.c .RX 558 bytes Request msg NOTIFY/cseq=102
(rdata0xbf126c) from UDP 192.168.1.40:5060:
NOTIFY sip:511@192.168.1.120:5060;ob SIP/2.0
Via: SIP/2.0/UDP 192.168.1.40:5060;branch=z9hG4bK7f31d868
Max-Forwards: 70
From: "Unknown" sip:Unknown@192.168.1.40;tag=as43b2ff19
To: sip:511@192.168.1.120:5060;ob
Contact: sip:Unknown@192.168.1.40:5060
Call-ID: 23fdfd4920b57317364ac36904b11312@192.168.1.40:5060
CSeq: 102 NOTIFY
User-Agent: FPBX-13.0.98(11.21.0)
Event: message-summary
Content-Type: application/simple-message-summary
Content-Length: 87
Messages-Waiting: no
Message-Account: sip:*97@192.168.1.40
Voice-Message: 0/0 (0/0)
--end msg--
13:53:52.087 tsx0xc42b54 .Incoming Request msg NOTIFY/cseq=102
(rdata0xbf126c) in state Completed
13:53:52.087 tsx0xc42b54 ..Retransmiting Response msg
200/NOTIFY/cseq=102 (tdta0xc41ae8), count=0, restart?=0
13:53:52.087 pjsua_core.c ..TX 309 bytes Response msg
200/NOTIFY/cseq=102 (tdta0xc41ae8) to UDP 192.168.1.40:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.40:5060
;received=192.168.1.40;branch=z9hG4bK7f31d868
Call-ID: 23fdfd4920b57317364ac36904b11312@192.168.1.40:5060
From: "Unknown" sip:Unknown@192.168.1.40;tag=as43b2ff19
To: sip:511@192.168.1.120;ob;tag=z9hG4bK7f31d868
CSeq: 102 NOTIFY
Content-Length: 0
--end msg--
13:53:52.090 sip_endpoint.c Processing incoming message: Response msg
401/INVITE/cseq=19590 (rdata0xbf126c)
13:53:52.095 speex !warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:52.096 pjsua_core.c !.RX 551 bytes Response msg
401/INVITE/cseq=19590 (rdata0xbf126c) from UDP 192.168.1.40:5060:
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.120:5060
;branch=z9hG4bKPjfvZU.XrhkVa5zrKBI0Wqx1ZJrzL5cf6R;received=192.168.1.120;rport=5060
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx;tag=as60484cbf
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19590 INVITE
Server: FPBX-13.0.98(11.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="0b35fab6"
Content-Length: 0
--end msg--
13:53:52.100 tsx0xc3f1f4 .Incoming Response msg 401/INVITE/cseq=19590
(rdata0xbf126c) in state Calling
13:53:52.101 endpoint ..Request msg ACK/cseq=19590 (tdta0xc45240)
created.
13:53:52.101 pjsua_core.c ..TX 314 bytes Request msg ACK/cseq=19590
(tdta0xc45240) to UDP 192.168.1.40:5060:
ACK sip:502@raspbx SIP/2.0
Via: SIP/2.0/UDP 192.168.1.120:5060
;rport;branch=z9hG4bKPjfvZU.XrhkVa5zrKBI0Wqx1ZJrzL5cf6R
Max-Forwards: 70
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx;tag=as60484cbf
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19590 ACK
Content-Length: 0
--end msg--
13:53:52.102 tsx0xc3f1f4 ..State changed from Calling to Completed,
event=RX_MSG
13:53:52.104 dlg0xc3773c ...Received Response msg 401/INVITE/cseq=19590
(rdata0xbf126c)
13:53:52.116 dlg0xc3773c ...Transaction tsx0xc3f1f4 state changed to
Completed
13:53:52.117 inv0xc3773c .....Sending Request msg INVITE/cseq=19590
(tdta0xc3d1e0)
13:53:52.119 dlg0xc3773c ......Sending Request msg INVITE/cseq=19590
(tdta0xc3d1e0)
13:53:52.121 tsx0xc481f4 .......Transaction created for Request msg
INVITE/cseq=19591 (tdta0xc3d1e0)
13:53:52.124 tsx0xc481f4 ......Sending Request msg INVITE/cseq=19591
(tdta0xc3d1e0) in state Null
13:53:52.124 endpoint .......Request msg INVITE/cseq=19591
(tdta0xc3d1e0): skipping target resolution because address is already set
13:53:52.126 pjsua_core.c .......TX 1099 bytes Request msg
INVITE/cseq=19591 (tdta0xc3d1e0) to UDP 192.168.1.40:5060:
INVITE sip:502@raspbx SIP/2.0
Via: SIP/2.0/UDP 192.168.1.120:5060
;rport;branch=z9hG4bKPjQGeYjC34n2OypR2mI9I8B7OQfe9n9xMb
Max-Forwards: 70
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx
Contact: sip:511@192.168.1.120:5060;ob
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19591 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY,
REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
Authorization: Digest username="511", realm="asterisk", nonce="0b35fab6",
uri="sip:502@raspbx", response="9646ac31cd32c3f8aa8e925e6977060e",
algorithm=MD5
Content-Type: application/sdp
Content-Length: 381
v=0
o=- 3669458031 3669458031 IN IP4 192.168.1.120
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0
m=audio 4000 RTP/AVP 98 97 99 0 8 96
c=IN IP4 192.168.1.120
b=TIAS:64000
a=rtcp:4001 IN IP4 192.168.1.120
a=sendrecv
a=rtpmap:98 speex/16000
a=rtpmap:97 speex/8000
a=rtpmap:99 speex/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
--end msg--
13:53:52.128 tsx0xc481f4 .......State changed from Null to Calling,
event=TX_MSG
13:53:52.130 dlg0xc3773c ........Transaction tsx0xc481f4 state changed
to Calling
13:53:52.135 sip_endpoint.c Processing incoming message: Response msg
100/INVITE/cseq=19591 (rdata0xbf126c)
13:53:52.136 pjsua_core.c .RX 529 bytes Response msg
100/INVITE/cseq=19591 (rdata0xbf126c) from UDP 192.168.1.40:5060:
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.1.120:5060
;branch=z9hG4bKPjQGeYjC34n2OypR2mI9I8B7OQfe9n9xMb;received=192.168.1.120;rport=5060
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19591 INVITE
Server: FPBX-13.0.98(11.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
Session-Expires: 1800;refresher=uas
Contact: sip:502@192.168.1.40:5060
Content-Length: 0
--end msg--
13:53:52.139 tsx0xc481f4 .Incoming Response msg 100/INVITE/cseq=19591
(rdata0xbf126c) in state Calling
13:53:52.141 tsx0xc481f4 ..State changed from Calling to Proceeding,
event=RX_MSG
13:53:52.142 dlg0xc3773c ...Received Response msg 100/INVITE/cseq=19591
(rdata0xbf126c)
13:53:52.142 dlg0xc3773c ...Transaction tsx0xc481f4 state changed to
Proceeding
13:53:52.179 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:52.188 sip_endpoint.c !Processing incoming message: Response msg
180/INVITE/cseq=19591 (rdata0xbf126c)
13:53:52.190 pjsua_core.c .RX 545 bytes Response msg
180/INVITE/cseq=19591 (rdata0xbf126c) from UDP 192.168.1.40:5060:
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 192.168.1.120:5060
;branch=z9hG4bKPjQGeYjC34n2OypR2mI9I8B7OQfe9n9xMb;received=192.168.1.120;rport=5060
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx;tag=as5b7281ba
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19591 INVITE
Server: FPBX-13.0.98(11.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
Session-Expires: 1800;refresher=uas
Contact: sip:502@192.168.1.40:5060
Content-Length: 0
--end msg--
13:53:52.192 tsx0xc481f4 .Incoming Response msg 180/INVITE/cseq=19591
(rdata0xbf126c) in state Proceeding
13:53:52.193 tsx0xc481f4 ..State changed from Proceeding to Proceeding,
event=RX_MSG
13:53:52.195 dlg0xc3773c ...Received Response msg 180/INVITE/cseq=19591
(rdata0xbf126c)
13:53:52.196 dlg0xc3773c ....Route-set updated
13:53:52.197 dlg0xc3773c ...Transaction tsx0xc481f4 state changed to
Proceeding
13:53:52.203 APP .....Call 0 state=EARLY
13:53:52.222 speex !warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:52.227 sip_endpoint.c !Processing incoming message: Response msg
180/INVITE/cseq=19591 (rdata0xbf126c)
13:53:52.234 pjsua_core.c .RX 545 bytes Response msg
180/INVITE/cseq=19591 (rdata0xbf126c) from UDP 192.168.1.40:5060:
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 192.168.1.120:5060
;branch=z9hG4bKPjQGeYjC34n2OypR2mI9I8B7OQfe9n9xMb;received=192.168.1.120;rport=5060
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx;tag=as5b7281ba
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19591 INVITE
Server: FPBX-13.0.98(11.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
Session-Expires: 1800;refresher=uas
Contact: sip:502@192.168.1.40:5060
Content-Length: 0
--end msg--
13:53:52.238 tsx0xc481f4 .Incoming Response msg 180/INVITE/cseq=19591
(rdata0xbf126c) in state Proceeding
13:53:52.239 tsx0xc481f4 ..State changed from Proceeding to Proceeding,
event=RX_MSG
13:53:52.240 dlg0xc3773c ...Received Response msg 180/INVITE/cseq=19591
(rdata0xbf126c)
13:53:52.240 dlg0xc3773c ...Transaction tsx0xc481f4 state changed to
Proceeding
13:53:52.242 APP .....Call 0 state=EARLY
13:53:52.350 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:52.606 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:52.670 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:53.908 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:53.951 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:54.126 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:54.171 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:54.271 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:54.292 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:54.446 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:54.496 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:54.530 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:54.591 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:54.822 sip_endpoint.c !Processing incoming message: Response msg
200/INVITE/cseq=19591 (rdata0xbf126c)
13:53:54.823 pjsua_core.c .RX 846 bytes Response msg
200/INVITE/cseq=19591 (rdata0xbf126c) from UDP 192.168.1.40:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.120:5060
;branch=z9hG4bKPjQGeYjC34n2OypR2mI9I8B7OQfe9n9xMb;received=192.168.1.120;rport=5060
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx;tag=as5b7281ba
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19591 INVITE
Server: FPBX-13.0.98(11.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
Session-Expires: 1800;refresher=uas
Contact: sip:502@192.168.1.40:5060
Content-Type: application/sdp
Require: timer
Content-Length: 257
v=0
o=root 1874987630 1874987630 IN IP4 192.168.1.40
s=Asterisk PBX 11.21.0
c=IN IP4 192.168.1.40
t=0 0
m=audio 12164 RTP/AVP 0 8 96
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=ptime:20
a=sendrecv
--end msg--
13:53:54.828 tsx0xc481f4 .Incoming Response msg 200/INVITE/cseq=19591
(rdata0xbf126c) in state Proceeding
13:53:54.828 tsx0xc481f4 ..State changed from Proceeding to Terminated,
event=RX_MSG
13:53:54.829 dlg0xc3773c ...Received Response msg 200/INVITE/cseq=19591
(rdata0xbf126c)
13:53:54.829 dlg0xc3773c ....Route-set updated
13:53:54.829 dlg0xc3773c ....Route-set frozen
13:53:54.830 dlg0xc3773c ...Transaction tsx0xc481f4 state changed to
Terminated
13:53:54.830 APP .....Call 0 state=CONNECTING
13:53:54.833 inv0xc3773c ....Got SDP answer in Response msg
200/INVITE/cseq=19591 (rdata0xbf126c)
13:53:54.842 inv0xc3773c ....SDP negotiation done, status=0
13:53:54.844 pjsua_call.c .....Call 0: remote NAT type is 0 (Unknown)
13:53:54.845 pjsua_media.c .....Call 0: updating media..
13:53:54.847 pjsua_aud.c ......Audio channel update..
13:53:54.853 strm0xc49be4 .......VAD temporarily disabled
13:53:54.854 rtp.c .......pjmedia_rtp_session_init: ses=0xc4b6a8,
default_pt=0, ssrc=0x68577511
13:53:54.856 rtp.c .......pjmedia_rtp_session_init: ses=0xc4bd30,
default_pt=0, ssrc=0x68577511
13:53:54.858 stream.c .......Stream strm0xc49be4 created
13:53:54.859 strm0xc49be4 .......Encoder stream started
13:53:54.862 strm0xc49be4 .......Decoder stream started
13:53:54.864 resample.c .......resample created: high qualiy, large
filter, in/out rate=8000/16000
13:53:54.865 resample.c .......resample created: high qualiy, large
filter, in/out rate=16000/8000
13:53:54.874 pjsua_media.c ......Audio updated, stream #0: PCMU (sendrecv)
13:53:54.877 pjsua_aud.c !.....Conf connect: 1 --> 0
13:53:54.876 strm0xc49be4 !Start talksprut..
13:53:54.881 strm0xc49be4 !RTP status: badpt=0, badssrc=0, dup=0,
outorder=0, probation=-1, restart=0
13:53:54.882 conference.c !......Port 1 (sip:502@raspbx) transmitting to
port 0 (default:CARD=Device)
13:53:54.885 pjsua_aud.c .....Conf connect: 0 --> 1
13:53:54.887 conference.c ......Port 0 (default:CARD=Device)
transmitting to port 1 (sip:502@raspbx)
13:53:54.888 inv0xc3773c ....Received Response msg
200/INVITE/cseq=19591 (rdata0xbf126c), sending ACK
13:53:54.890 endpoint ....Request msg ACK/cseq=19591 (tdta0xc4db10)
created.
13:53:54.890 dlg0xc3773c !.....Sending Request msg ACK/cseq=19591
(tdta0xc4db10)
13:53:54.891 sip_resolve.c .....Target '192.168.1.40:5060'
type=Unspecified resolved to '192.168.1.40:5060' type=UDP (UDP transport)
13:53:54.891 pjsua_core.c .....TX 325 bytes Request msg ACK/cseq=19591
(tdta0xc4db10) to UDP 192.168.1.40:5060:
ACK sip:502@192.168.1.40:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.120:5060
;rport;branch=z9hG4bKPjxH-YvcJ.09t3v6k8dCfPxARll20ckMiG
Max-Forwards: 70
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx;tag=as5b7281ba
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19591 ACK
Content-Length: 0
--end msg--
13:53:54.890 Master/sound !Underflow, buf_cnt=0, will generate 1 frame
13:53:54.902 APP .....Call 0 state=CONFIRMED
13:53:54.904 pjsua_call.c .Call 0 sending re-INVITE for updating media
session to use only one codec
13:53:54.906 endpoint ..Request msg INVITE/cseq=19593 (tdta0xc51ca8)
created.
13:53:54.907 inv0xc3773c ..Sending Request msg INVITE/cseq=19593
(tdta0xc51ca8)
13:53:54.913 dlg0xc3773c ...Sending Request msg INVITE/cseq=19593
(tdta0xc51ca8)
13:53:54.914 tsx0xc53cbc ....Transaction created for Request msg
INVITE/cseq=19592 (tdta0xc51ca8)
13:53:54.917 tsx0xc53cbc ...Sending Request msg INVITE/cseq=19592
(tdta0xc51ca8) in state Null
13:53:54.918 sip_resolve.c ....Target '192.168.1.40:5060'
type=Unspecified resolved to '192.168.1.40:5060' type=UDP (UDP transport)
13:53:54.921 pjsua_core.c ....TX 876 bytes Request msg INVITE/cseq=19592
(tdta0xc51ca8) to UDP 192.168.1.40:5060:
INVITE sip:502@192.168.1.40:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.120:5060
;rport;branch=z9hG4bKPjnM.jze3e2o2ebD2-GIkiCsPZlMAMLf1o
Max-Forwards: 70
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx;tag=as5b7281ba
Contact: sip:511@192.168.1.120:5060;ob
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19592 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY,
REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800;refresher=uas
Min-SE: 90
Content-Type: application/sdp
Content-Length: 274
v=0
o=- 3669458031 3669458032 IN IP4 192.168.1.120
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0
m=audio 4000 RTP/AVP 0 96
c=IN IP4 192.168.1.120
b=TIAS:64000
a=rtcp:4001 IN IP4 192.168.1.120
a=rtpmap:0 PCMU/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=sendrecv
--end msg--
13:53:54.926 tsx0xc53cbc !....State changed from Null to Calling,
event=TX_MSG
13:53:54.928 dlg0xc3773c .....Transaction tsx0xc53cbc state changed to
Calling
13:53:54.929 tsx0xc481f4 Timeout timer event
13:53:54.932 tsx0xc481f4 .State changed from Terminated to Destroyed,
event=TIMER
13:53:54.934 tsx0xc481f4 Transaction destroyed!
13:53:54.935 sip_endpoint.c Processing incoming message: Response msg
100/INVITE/cseq=19592 (rdata0xbf126c)
13:53:54.937 pjsua_core.c .RX 544 bytes Response msg
100/INVITE/cseq=19592 (rdata0xbf126c) from UDP 192.168.1.40:5060:
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.1.120:5060
;branch=z9hG4bKPjnM.jze3e2o2ebD2-GIkiCsPZlMAMLf1o;received=192.168.1.120;rport=5060
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx;tag=as5b7281ba
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19592 INVITE
Server: FPBX-13.0.98(11.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
Session-Expires: 1800;refresher=uas
Contact: sip:502@192.168.1.40:5060
Content-Length: 0
--end msg--
13:53:54.925 Master/sound !Underflow, buf_cnt=0, will generate 1 frame
13:53:54.953 tsx0xc53cbc .Incoming Response msg 100/INVITE/cseq=19592
(rdata0xbf126c) in state Calling
13:53:54.954 tsx0xc53cbc ..State changed from Calling to Proceeding,
event=RX_MSG
13:53:54.956 dlg0xc3773c ...Received Response msg 100/INVITE/cseq=19592
(rdata0xbf126c)
13:53:54.957 dlg0xc3773c ...Transaction tsx0xc53cbc state changed to
Proceeding
13:53:54.961 sip_endpoint.c Processing incoming message: Response msg
200/INVITE/cseq=19592 (rdata0xbf126c)
13:53:54.962 pjsua_core.c .RX 822 bytes Response msg
200/INVITE/cseq=19592 (rdata0xbf126c) from UDP 192.168.1.40:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.120:5060
;branch=z9hG4bKPjnM.jze3e2o2ebD2-GIkiCsPZlMAMLf1o;received=192.168.1.120;rport=5060
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx;tag=as5b7281ba
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19592 INVITE
Server: FPBX-13.0.98(11.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
Session-Expires: 1800;refresher=uas
Contact: sip:502@192.168.1.40:5060
Content-Type: application/sdp
Require: timer
Content-Length: 233
v=0
o=root 1874987630 1874987631 IN IP4 192.168.1.40
s=Asterisk PBX 11.21.0
c=IN IP4 192.168.1.40
t=0 0
m=audio 12164 RTP/AVP 0 96
a=rtpmap:0 PCMU/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=ptime:20
a=sendrecv
--end msg--
13:53:54.974 tsx0xc53cbc .Incoming Response msg 200/INVITE/cseq=19592
(rdata0xbf126c) in state Proceeding
13:53:54.977 tsx0xc53cbc ..State changed from Proceeding to Terminated,
event=RX_MSG
13:53:54.978 dlg0xc3773c ...Received Response msg 200/INVITE/cseq=19592
(rdata0xbf126c)
13:53:54.979 dlg0xc3773c ...Transaction tsx0xc53cbc state changed to
Terminated
13:53:54.979 inv0xc3773c ....Got SDP answer in Response msg
200/INVITE/cseq=19592 (rdata0xbf126c)
13:53:54.982 inv0xc3773c ....SDP negotiation done, status=0
13:53:54.982 pjsua_call.c .....Call 0: remote NAT type is 0 (Unknown)
13:53:54.982 pjsua_media.c .....Call 0: updating media..
13:53:54.984 pjsua_media.c ......Call 0: stream #0 (audio) unchanged.
13:53:54.984 pjsua_media.c ......Audio updated, stream #0: PCMU (sendrecv)
13:53:54.987 pjsua_aud.c .....Conf connect: 1 --> 0
13:53:54.997 pjsua_aud.c .....Conf connect: 0 --> 1
13:53:54.998 inv0xc3773c ....Received Response msg
200/INVITE/cseq=19592 (rdata0xbf126c), sending ACK
13:53:55.000 tdta0xc4db10 ....Destroying txdata Request msg
ACK/cseq=19591 (tdta0xc4db10)
13:53:55.002 endpoint ....Request msg ACK/cseq=19592 (tdta0xc4db10)
created.
13:53:55.004 dlg0xc3773c .....Sending Request msg ACK/cseq=19592
(tdta0xc4db10)
13:53:55.005 sip_resolve.c .....Target '192.168.1.40:5060'
type=Unspecified resolved to '192.168.1.40:5060' type=UDP (UDP transport)
13:53:55.007 pjsua_core.c .....TX 325 bytes Request msg ACK/cseq=19592
(tdta0xc4db10) to UDP 192.168.1.40:5060:
ACK sip:502@192.168.1.40:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.120:5060
;rport;branch=z9hG4bKPj6nr1w0IxJ1I9.U7d1MO6fFJqmhoKe6g1
Max-Forwards: 70
From: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
To: sip:502@raspbx;tag=as5b7281ba
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 19592 ACK
Content-Length: 0
--end msg--
13:53:55.008 tsx0xc53cbc Timeout timer event
13:53:55.013 tsx0xc53cbc .State changed from Terminated to Destroyed,
event=TIMER
13:53:55.014 tdta0xc51ca8 ..Destroying txdata Request msg
INVITE/cseq=19592 (tdta0xc51ca8)
13:53:55.022 tsx0xc53cbc Transaction destroyed!
13:53:55.172 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
13:53:55.174 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:55.181 speex !warning: internal playback buffer corruption?
13:53:55.184 speex warning: No playback frame available (your
application is buggy and/or got xruns)
13:53:55.189 speex warning: No playback frame available (your
application is buggy and/or got xruns)
13:53:55.193 speex !warning: internal playback buffer corruption?
13:53:55.193 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:55.222 speex !warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:55.234 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:55.240 strm0xc49be4 Jitter buffer empty (prefetch=0), plc invoked
13:53:55.260 strm0xc49be4 Jitter buffer starts returning normal frames
(after 1 empty/lost)
13:53:55.400 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:55.435 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:55.486 strm0xc49be4 VAD re-enabled
13:53:55.487 strm0xc49be4 Starting silence
13:53:55.739 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:55.776 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:55.948 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:55.987 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:56.075 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:56.096 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:56.292 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:56.325 silencedet.c Starting talk burst (level=1321 threshold=1000)
13:53:56.327 strm0xc49be4 Start talksprut..
13:53:56.416 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:56.648 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:56.737 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:56.899 tsx0xbf4e2c !Timeout timer event
13:53:56.900 tsx0xbf4e2c .State changed from Completed to Terminated,
event=TIMER
13:53:56.906 tsx0xbf4e2c Timeout timer event
13:53:56.907 tsx0xbf4e2c .State changed from Terminated to Destroyed,
event=TIMER
13:53:56.908 tsx0xbf4e2c Transaction destroyed!
13:53:57.056 tsx0xbf7a6c Timeout timer event
13:53:57.057 tsx0xbf7a6c .State changed from Completed to Terminated,
event=TIMER
13:53:57.062 tsx0xbf7a6c Timeout timer event
13:53:57.063 tsx0xbf7a6c .State changed from Terminated to Destroyed,
event=TIMER
13:53:57.065 tdta0xbf3dc0 ..Destroying txdata Request msg
REGISTER/cseq=47842 (tdta0xbf3dc0)
13:53:57.066 tsx0xbf7a6c Transaction destroyed!
13:53:57.160 speex !warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:57.187 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
13:53:57.189 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:57.193 speex !warning: internal playback buffer corruption?
13:53:57.203 speex warning: No playback frame available (your
application is buggy and/or got xruns)
13:53:57.217 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:57.256 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:57.311 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:57.336 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:57.355 silencedet.c Starting silence (level=105 threshold=338)
13:53:57.356 strm0xc49be4 Starting silence
13:53:57.358 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:57.480 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:57.551 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
13:53:57.555 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:57.565 speex !warning: internal playback buffer corruption?
13:53:57.569 speex warning: No playback frame available (your
application is buggy and/or got xruns)
13:53:57.573 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:57.702 silencedet.c Starting talk burst (level=403 threshold=338)
13:53:57.703 strm0xc49be4 Start talksprut..
13:53:57.739 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:57.909 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:58.059 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:58.337 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:58.358 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:58.739 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:58.828 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:58.866 silencedet.c Starting silence (level=95 threshold=218)
13:53:58.867 strm0xc49be4 Starting silence
13:53:58.898 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:59.029 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:59.230 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:59.398 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:59.516 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:59.718 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:59.740 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:53:59.812 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
13:53:59.817 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:59.825 speex !warning: internal playback buffer corruption?
13:53:59.829 speex warning: No playback frame available (your
application is buggy and/or got xruns)
13:53:59.834 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:53:59.962 silencedet.c Starting talk burst (level=378 threshold=218)
13:53:59.970 strm0xc49be4 Start talksprut..
13:54:00.038 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:00.158 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:00.211 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:00.238 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:00.302 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:00.334 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:00.380 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:00.555 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:00.642 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:00.776 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:00.963 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:01.200 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:01.270 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:01.437 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:01.511 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:01.537 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:01.613 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:01.631 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:01.644 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:01.768 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:01.799 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
13:54:01.810 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:01.861 strm0xc49be4 Jitter buffer empty (prefetch=0), plc invoked
13:54:01.867 sip_endpoint.c !Processing incoming message: Request msg
BYE/cseq=102 (rdata0xbf126c)
13:54:01.869 pjsua_core.c .RX 565 bytes Request msg BYE/cseq=102
(rdata0xbf126c) from UDP 192.168.1.40:5060:
BYE sip:511@192.168.1.120:5060;ob SIP/2.0
Via: SIP/2.0/UDP 192.168.1.40:5060;branch=z9hG4bK09a0ac5a;rport
Max-Forwards: 70
From: sip:502@raspbx;tag=as5b7281ba
To: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
CSeq: 102 BYE
User-Agent: FPBX-13.0.98(11.21.0)
Proxy-Authorization: Digest username="511", realm="asterisk",
algorithm=MD5, uri="sip:raspbx", nonce="0b35fab6",
response="a0afa939a199cdfdda39b0b9f57fa58b"
X-Asterisk-HangupCause: Normal Clearing
X-Asterisk-HangupCauseCode: 16
Content-Length: 0
--end msg--
13:54:01.872 dlg0xc3773c .Received Request msg BYE/cseq=102
(rdata0xbf126c)
13:54:01.874 tsx0xc49014 ...Transaction created for Request msg
BYE/cseq=102 (rdata0xbf126c)
13:54:01.875 tsx0xc49014 ..Incoming Request msg BYE/cseq=102
(rdata0xbf126c) in state Null
13:54:01.876 tsx0xc49014 ...State changed from Null to Trying,
event=RX_MSG
13:54:01.876 dlg0xc3773c ....Transaction tsx0xc49014 state changed to
Trying
13:54:01.877 endpoint .....Response msg 200/BYE/cseq=102
(tdta0xbf3dc0) created
13:54:01.884 dlg0xc3773c ......Sending Response msg 200/BYE/cseq=102
(tdta0xbf3dc0)
13:54:01.886 tsx0xc49014 ......Sending Response msg 200/BYE/cseq=102
(tdta0xbf3dc0) in state Trying
13:54:01.887 pjsua_core.c .......TX 286 bytes Response msg
200/BYE/cseq=102 (tdta0xbf3dc0) to UDP 192.168.1.40:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.40:5060
;rport=5060;received=192.168.1.40;branch=z9hG4bK09a0ac5a
Call-ID: qF3.50nrPaYalZJhk-h3463jTuv0Uuk0
From: sip:502@raspbx;tag=as5b7281ba
To: sip:511@raspbx;tag=Qn71ss84d4keesGybUw4EyodEcXtVwTz
CSeq: 102 BYE
Content-Length: 0
--end msg--
13:54:01.891 tsx0xc49014 .......State changed from Trying to Completed,
event=TX_MSG
13:54:01.892 dlg0xc3773c ........Transaction tsx0xc49014 state changed
to Completed
13:54:01.904 APP ......Call 0 state=DISCONNCTD
13:54:01.906 pjsua_media.c ......Call 0: deinitializing media..
13:54:01.909 strm0xc49be4 ........JB summary:
size=0/eff=0 prefetch=0 level=4
delay (min/max/avg/dev)=20/80/30/12 ms
burst (min/max/avg/dev)=2/4/2/0 frames
lost=0 discard=0 empty=2
13:54:01.912 pjsua_media.c ........Media stream call00:0 is destroyed
13:54:01.914 tdta0xc4db10 .....Destroying txdata Request msg
ACK/cseq=19592 (tdta0xc4db10)
13:54:01.916 tdta0xc3d1e0 !.....Destroying txdata Request msg
INVITE/cseq=19591 (tdta0xc3d1e0)
13:54:01.917 dlg0xc3773c ......Session count dec to 3 by mod-invite
13:54:01.915 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:01.921 speex !warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:01.922 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:01.936 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:01.979 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:02.037 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:02.059 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:02.358 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:02.400 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:02.635 speex warning: Had to discard a playback frame (your
application is buggy and/or got xruns)
13:54:02.716 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
13:54:02.720 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
13:54:02.908 pjsua_aud.c !Closing sound device after idle for 1 second(s)
13:54:02.910 pjsua_aud.c .Closing default:CARD=Device sound playback
device and default:CARD=Device sound capture device
q
13:54:04.568 pjsua_core.c !Shutting down, flags=0...
13:54:04.569 pjsua_core.c PJSUA state changed: RUNNING --> CLOSING
13:54:04.574 pjsua_call.c .Hangup all calls..
13:54:04.575 pjsua_media.c .Call 0: deinitializing media..
13:54:04.577 pjsua_pres.c .Shutting down presence..
13:54:04.578 pjsua_acc.c .Acc 0: setting unregistration..
13:54:04.579 endpoint ..Request msg REGISTER/cseq=47842
(tdta0xbf1258) created.
13:54:04.580 tsx0xbf4e2c ...Transaction created for Request msg
REGISTER/cseq=47843 (tdta0xbf1258)
13:54:04.582 tsx0xbf4e2c ..Sending Request msg REGISTER/cseq=47843
(tdta0xbf1258) in state Null
13:54:04.582 sip_resolve.c ...DNS resolver not available, target
'raspbx:0' type=Unspecified will be resolved with getaddrinfo()
13:54:04.586 sip_resolve.c ...Target 'raspbx:0' type=Unspecified resolved
to '192.168.1.40:5060' type=UDP (UDP transport)
13:54:04.587 pjsua_core.c ...TX 363 bytes Request msg
REGISTER/cseq=47843 (tdta0xbf1258) to UDP 192.168.1.40:5060:
REGISTER sip:raspbx SIP/2.0
Via: SIP/2.0/UDP 192.168.1.120:5060
;rport;branch=z9hG4bKPjdZxzHLF2U1nuelK2RwUrFHaDnOw3Lqc2
Max-Forwards: 70
From: sip:511@raspbx;tag=0wL.b5MzXpIJdnAZRPSKiZj4zKyxUBjL
To: sip:511@raspbx
Call-ID: 9V1ox-mHiBZCYvDoVuu6ZDlSGCo7h9p1
CSeq: 47843 REGISTER
Contact: sip:511@192.168.1.120:5060;ob
Expires: 0
Content-Length: 0
--end msg--
13:54:04.589 tsx0xbf4e2c ...State changed from Null to Calling,
event=TX_MSG
13:54:04.589 pjsua_acc.c ..Acc 0: Unregistration sent
13:54:04.591 sip_endpoint.c .Processing incoming message: Response msg
401/REGISTER/cseq=47843 (rdata0xc3fbb4)
13:54:04.591 pjsua_core.c ..RX 557 bytes Response msg
401/REGISTER/cseq=47843 (rdata0xc3fbb4) from UDP 192.168.1.40:5060:
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.120:5060
;branch=z9hG4bKPjdZxzHLF2U1nuelK2RwUrFHaDnOw3Lqc2;received=192.168.1.120;rport=5060
From: sip:511@raspbx;tag=0wL.b5MzXpIJdnAZRPSKiZj4zKyxUBjL
To: sip:511@raspbx;tag=as333960f3
Call-ID: 9V1ox-mHiBZCYvDoVuu6ZDlSGCo7h9p1
CSeq: 47843 REGISTER
Server: FPBX-13.0.98(11.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="400ad4b5"
Content-Length: 0
--end msg--
13:54:04.592 tsx0xbf4e2c ..Incoming Response msg
401/REGISTER/cseq=47843 (rdata0xc3fbb4) in state Calling
13:54:04.592 tsx0xbf4e2c ...State changed from Calling to Completed,
event=RX_MSG
13:54:04.592 tsx0xc481f4 .....Transaction created for Request msg
REGISTER/cseq=47844 (tdta0xbf1258)
13:54:04.593 tsx0xc481f4 ....Sending Request msg REGISTER/cseq=47844
(tdta0xbf1258) in state Null
13:54:04.595 endpoint .....Request msg REGISTER/cseq=47844
(tdta0xbf1258): skipping target resolution because address is already set
13:54:04.596 pjsua_core.c .....TX 515 bytes Request msg
REGISTER/cseq=47844 (tdta0xbf1258) to UDP 192.168.1.40:5060:
REGISTER sip:raspbx SIP/2.0
Via: SIP/2.0/UDP 192.168.1.120:5060
;rport;branch=z9hG4bKPjYfrGNCf3X2QKgM-48bH19v6Xo1sTQec2
Max-Forwards: 70
From: sip:511@raspbx;tag=0wL.b5MzXpIJdnAZRPSKiZj4zKyxUBjL
To: sip:511@raspbx
Call-ID: 9V1ox-mHiBZCYvDoVuu6ZDlSGCo7h9p1
CSeq: 47844 REGISTER
Contact: sip:511@192.168.1.120:5060;ob
Expires: 0
Authorization: Digest username="511", realm="asterisk", nonce="400ad4b5",
uri="sip:raspbx", response="e4eef128c83d7c5640951aa90c31d30d", algorithm=MD5
Content-Length: 0
--end msg--
13:54:04.596 tsx0xc481f4 .....State changed from Null to Calling,
event=TX_MSG
13:54:04.599 sip_endpoint.c .Processing incoming message: Response msg
200/REGISTER/cseq=47844 (rdata0xc3fbb4)
13:54:04.599 pjsua_core.c ..RX 520 bytes Response msg
200/REGISTER/cseq=47844 (rdata0xc3fbb4) from UDP 192.168.1.40:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.120:5060
;branch=z9hG4bKPjYfrGNCf3X2QKgM-48bH19v6Xo1sTQec2;received=192.168.1.120;rport=5060
From: sip:511@raspbx;tag=0wL.b5MzXpIJdnAZRPSKiZj4zKyxUBjL
To: sip:511@raspbx;tag=as333960f3
Call-ID: 9V1ox-mHiBZCYvDoVuu6ZDlSGCo7h9p1
CSeq: 47844 REGISTER
Server: FPBX-13.0.98(11.21.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
PUBLISH, MESSAGE
Supported: replaces, timer
Expires: 0
Date: Tue, 12 Apr 2016 13:54:04 GMT
Content-Length: 0
--end msg--
13:54:04.600 tsx0xc481f4 ..Incoming Response msg
200/REGISTER/cseq=47844 (rdata0xc3fbb4) in state Calling
13:54:04.600 tsx0xc481f4 ...State changed from Calling to Completed,
event=RX_MSG
13:54:04.600 pjsua_acc.c .....sip:511@raspbx: unregistration success
13:54:05.595 pjsua_core.c .Destroying...
13:54:05.596 pjsua_media.c .Shutting down media..
13:54:05.823 sip_endpoint.c .Destroying endpoing instance..
13:54:05.824 sip_transactio .Stopping transaction layer module
13:54:05.825 tsx0xbf4e2c .Request to terminate transaction
13:54:05.827 tsx0xbf4e2c ..State changed from Completed to Terminated,
event=USER
13:54:05.828 tsx0xbf4e2c .Transaction destroyed!
13:54:05.829 tsx0xc49014 .Request to terminate transaction
13:54:05.829 tsx0xc49014 ..State changed from Completed to Terminated,
event=USER
13:54:05.829 dlg0xc3773c ...Transaction tsx0xc49014 state changed to
Terminated
13:54:05.830 tdta0xbf3dc0 .Destroying txdata Response msg
200/BYE/cseq=102 (tdta0xbf3dc0)
13:54:05.831 tsx0xc49014 .Transaction destroyed!
13:54:05.831 tsx0xc3f1f4 .Request to terminate transaction
13:54:05.831 tsx0xc3f1f4 ..State changed from Completed to Terminated,
event=USER
13:54:05.832 dlg0xc3773c ...Transaction tsx0xc3f1f4 state changed to
Terminated
13:54:05.833 dlg0xc3773c ....Dialog destroyed
13:54:05.833 tdta0xc45240 .Destroying txdata Request msg ACK/cseq=19590
(tdta0xc45240)
13:54:05.833 tsx0xc3f1f4 .Transaction destroyed!
13:54:05.835 tsx0xc42b54 .Request to terminate transaction
13:54:05.835 tsx0xc42b54 ..State changed from Completed to Terminated,
event=USER
13:54:05.835 tdta0xc41ae8 .Destroying txdata Response msg
200/NOTIFY/cseq=102 (tdta0xc41ae8)
13:54:05.836 tsx0xc42b54 .Transaction destroyed!
13:54:05.836 tsx0xc481f4 .Request to terminate transaction
13:54:05.836 tsx0xc481f4 ..State changed from Completed to Terminated,
event=USER
13:54:05.836 tdta0xbf1258 .Destroying txdata Request msg
REGISTER/cseq=47844 (tdta0xbf1258)
13:54:05.839 tsx0xc481f4 .Transaction destroyed!
13:54:05.840 sip_transactio .Stopped transaction layer module
13:54:05.840 sip_endpoint.c .Module "mod-unsolicited-mwi" unregistered
13:54:05.840 sip_endpoint.c .Module "mod-pjsua-options" unregistered
13:54:05.840 sip_endpoint.c .Module "mod-pjsua-im" unregistered
13:54:05.840 sip_endpoint.c .Module "mod-pjsua-pres" unregistered
13:54:05.840 sip_endpoint.c .Module "mod-pjsua" unregistered
13:54:05.840 sip_endpoint.c .Module "mod-stateful-util" unregistered
13:54:05.840 sip_endpoint.c .Module "mod-refer" unregistered
13:54:05.841 sip_endpoint.c .Module "mod-mwi" unregistered
13:54:05.841 sip_endpoint.c .Module "mod-presence" unregistered
13:54:05.841 sip_endpoint.c .Module "mod-evsub" unregistered
13:54:05.841 sip_endpoint.c .Module "mod-invite" unregistered
13:54:05.841 sip_endpoint.c .Module "mod-100rel" unregistered
13:54:05.841 sip_endpoint.c .Module "mod-ua" unregistered
13:54:05.842 sip_transactio .Transaction layer module destroyed
13:54:05.842 sip_endpoint.c .Module "mod-tsx-layer" unregistered
13:54:05.842 sip_endpoint.c .Module "mod-msg-print" unregistered
13:54:05.842 sip_endpoint.c .Module "mod-pjsua-log" unregistered
13:54:05.842 sip_transport. .Destroying transport manager
13:54:05.844 udp0xbefc38 .SIP UDP transport destroyed
13:54:05.844 sip_endpoint.c .Endpoint 0xbb2d2c destroyed
13:54:05.844 pjsua_core.c .PJSUA state changed: CLOSING --> NULL
13:54:05.845 pjsua_core.c .PJSUA destroyed...
Alexandre Gonçalves
............................................................................................................................
Email: alexandre@silvagoncalves.com
2016-04-12 14:42 GMT+01:00 Bill Gardner billg@wavearts.com:
Please attach a complete log. - Bill
On 4/11/2016 9:31 PM, Alexandre Gonçalves wrote:
I followed your suggestion, and indeed the EC is created:
00:14:30.374 ec0x16adf18 ...Creating AEC
00:14:30.382 ec0x16adf18 ...AEC created, clock_rate=16000, channel=1,
samples per frame=320, tail length=200 ms, latency=0 ms
However the logs about speex are still appearing:
01:23:25.435 tsx0x171eca4 .Incoming Response msg 401/REGISTER/cseq=762
(rdata0x16cb26c) in state Completed
01:23:25.454 speex !warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:25.501 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:25.517 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:25.771 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
01:23:25.774 speex !warning: internal playback buffer corruption?
01:23:25.774 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:26.380 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:26.444 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:27.799 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:27.851 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:28.181 tsx0x16ce62c !Timeout timer event
01:23:28.185 tsx0x16ce62c .State changed from Completed to Terminated,
event=TIMER
01:23:28.191 tsx0x16ce62c Timeout timer event
01:23:28.193 tsx0x16ce62c .State changed from Terminated to Destroyed,
event=TIMER
01:23:28.194 tsx0x16ce62c Transaction destroyed!
01:23:28.206 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:28.287 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:28.583 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:28.616 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:28.807 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:29.739 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:29.827 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:30.378 tsx0x171eca4 !Timeout timer event
01:23:30.380 tsx0x171eca4 .State changed from Completed to Terminated,
event=TIMER
01:23:30.385 tsx0x171eca4 Timeout timer event
01:23:30.386 tsx0x171eca4 .State changed from Terminated to Destroyed,
event=TIMER
01:23:30.388 tdta0x16d74a0 ..Destroying txdata Request msg
REGISTER/cseq=762 (tdta0x16d74a0)
01:23:30.398 tsx0x171eca4 Transaction destroyed!
01:23:31.944 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:32.134 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:32.280 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
01:23:32.312 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
01:23:32.517 silencedet.c Starting silence (level=9 threshold=22)
There is still echo, in other words on the remote party I hear my own
voice.
Regards.
Alexandre Gonçalves
............................................................................................................................
Email: alexandre@silvagoncalves.comalexandre@silvagoncalves.com
2016-04-11 20:14 GMT+01:00 Bill Gardner billg@wavearts.com:
Try removing your code that creates the EC, then run again and see if the
log shows that an EC was created. - Bill
On 4/11/2016 11:16 AM, Alexandre Gonçalves wrote:
Yes it does. The device is handsfree.
Thanks.
Alexandre Gonçalves
............................................................................................................................
Email: alexandre@silvagoncalves.comalexandre@silvagoncalves.com
2016-04-11 16:09 GMT+01:00 Bill Gardner < billg@wavearts.com
billg@wavearts.com>:
Hi Alexandre,
I don't know what the problem is, but you shouldn't need to create a
separate EC object. pjsua_init will create an echo canceller and connect it
to the sound port.
Does the call work without EC?
Regards,
Bill
On 4/11/2016 10:33 AM, Alexandre Gonçalves wrote:
Hello,
I've made a small C application to run on a linux machine, based on
"Simple PJSUA" example.
What I need to add is echo cancellation, and I tryed to do it like the
code attached:
But according to the logs I get it seems that something is missing. I
suspect it's the manipulation of the capture and playback frames, but I
have no idea how to do it!
#include <pjsua-lib/pjsua.h>
#define THIS_FILE "APP"
#define SIP_DOMAIN "raspbx"
#define SIP_USER "511"
#define SIP_PASSWD "aaa511"
#define SIP_REALM "asterisk"
#define SIP_SCHEME "digest"
pjmedia_echo_state *ec;
pjmedia_frame play_frame, rec_frame;
/* Callback called by the library upon receiving incoming call */
static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
pjsip_rx_data *rdata) {
pjsua_call_info ci;
PJ_UNUSED_ARG(acc_id);
PJ_UNUSED_ARG(rdata);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Incoming call from %.*s!!",
(int) ci.remote_info.slen,
ci.remote_info.ptr));
/* Automatically answer incoming calls with 200/OK */
pjsua_call_answer(call_id, 200, NULL, NULL);
}
/* Callback called by the library when call's state has changed */
static void on_call_state(pjsua_call_id call_id, pjsip_event *e) {
pjsua_call_info ci;
PJ_UNUSED_ARG(e);
pjsua_call_get_info(call_id, &ci);
PJ_LOG(2, (THIS_FILE, "Call %d state=%.*s", call_id,
(int) ci.state_text.slen,
ci.state_text.ptr));
}
/* Callback called by the library when call's media state has changed */
static void on_call_media_state(pjsua_call_id call_id) {
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
// When media is active, connect call to sound device.
pjsua_conf_connect(ci.conf_slot, 0);
pjsua_conf_connect(0, ci.conf_slot);
}
}
/* Display error and exit application */
static void error_exit(const char *title, pj_status_t status) {
pjsua_perror(THIS_FILE, title, status);
pjsua_destroy();
exit(1);
}
/*
main()
argv[1] may contain URL to call.
*/
int main(int argc, char *argv[]) {
pjsua_acc_id acc_id;
pj_status_t status;
/* Create pjsua first! */
status = pjsua_create();
if (status != PJ_SUCCESS) error_exit("Error in pjsua_create()",
status);
/* Init pjsua */
{
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_media_config media_cfg;
pjsua_config_default(&cfg);
cfg.cb.on_incoming_call = &on_incoming_call;
cfg.cb.on_call_media_state = &on_call_media_state;
cfg.cb.on_call_state = &on_call_state;
cfg.max_calls = 1;
pjsua_logging_config_default(&log_cfg);
log_cfg.console_level = 6;
pjsua_media_config_default(&media_cfg);
media_cfg.ec_options = PJMEDIA_ECHO_DEFAULT;
media_cfg.ec_tail_len = 250;
status = pjsua_init(&cfg, &log_cfg, &media_cfg);
// status = pjsua_init(&cfg, &log_cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error in pjsua_init()",
status);
pj_pool_t *pool = pjsua_pool_create("my_echo", 1000, 1000);
status = pjmedia_echo_create(pool, 16000, 320, 500, 500,
PJMEDIA_ECHO_DEFAULT, &ec);
play_frame.buf = pj_pool_alloc(pool, 320);
rec_frame.buf = pj_pool_alloc(pool, 320);
}
/* Add UDP transport. */
{
pjsua_transport_config cfg;
pjsua_transport_config_default(&cfg);
cfg.port = 5060;
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error creating transport",
status);
}
/* Initialization is done, now start pjsua */
status = pjsua_start();
if (status != PJ_SUCCESS) error_exit("Error starting pjsua", status);
/* Register to SIP server by creating SIP account. */
{
pjsua_acc_config cfg;
pjsua_acc_config_default(&cfg);
cfg.id = pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
cfg.cred_count = 1;
cfg.cred_info[0].realm = pj_str(SIP_REALM);
cfg.cred_info[0].scheme = pj_str(SIP_SCHEME);
cfg.cred_info[0].username = pj_str(SIP_USER);
cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
cfg.cred_info[0].data = pj_str(SIP_PASSWD);
status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
if (status != PJ_SUCCESS) error_exit("Error adding account",
status);
}
if (argc > 1) {
pj_str_t uri = pj_str(argv[1]);
status = pjsua_call_make_call(acc_id, &uri, 0, NULL, NULL, NULL);
if (status != PJ_SUCCESS) error_exit("Error making call",
status);
}
char option[10];
while (1) {
if (fgets(option, sizeof (option), stdin) == NULL) {
puts("EOF while reading stdin, will quit now..");
break;
}
if (option[0] == 'q')
break;
}
/* Destroy pjsua */
pjsua_destroy();
return 0;
}
The logs:
16:10:45.203 speex !warning: No playback frame available (your
application is buggy and/or got xruns)
16:10:45.207 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.216 speex !warning: internal playback buffer
corruption?
16:10:45.221 speex !warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.279 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
16:10:45.393 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.462 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
16:10:45.522 speex warning: Auto-filling the buffer (your
application is buggy and/or got xruns)
16:10:45.562 speex warning: Had to discard a playback frame
(your application is buggy and/or got xruns)
Pjsip version: 2.4
Can anyone help out?
Thanks.
Alexandre Gonçalves
............................................................................................................................
Email: alexandre@silvagoncalves.comalexandre@silvagoncalves.com
Visit our blog: http://blog.pjsip.org
pjsip mailing listpjsip@lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing listpjsip@lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing listpjsip@lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Oh, ALSA dev. I don't have much of any experience with this, but it is a
frequent topic on the list. You might want to browse through the
archives. I note the following in the log:
On 4/12/2016 9:56 AM, Alexandre Gonçalves wrote:
13:53:51.963 alsa_dev.c !ca_thread_func(2733): Set thread priority
for audio capture thread.
13:53:51.965 alsa_dev.c Unable to increase thread priority, root
access needed.
If the audio thread priority isn't high enough, you could get underruns
which would cause the speex warnings you see.
Bill
Running with root privilegies, the warning went away:
14:18:12.516 alsa_dev.c !ca_thread_func(2765): Set thread priority for
audio capture thread.
14:18:12.517 speex !warning: discarded first playback frame
14:18:12.521 speex warning: discarded first playback frame
14:18:12.524 speex warning: discarded first playback frame
14:18:12.526 speex !warning: discarded first playback frame
But the speex warning continues.
In my code, I have this callback function defined:
static void on_call_media_state(pjsua_call_id call_id) {
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
// When media is active, connect call to sound device.
pjsua_conf_connect(ci.conf_slot, 0);
pjsua_conf_connect(0, ci.conf_slot);
}
}
The connection with pjsua_conf_connect, shouldn't be with the frames after
being processed by the aec?
Thanks.
Alexandre Gonçalves
............................................................................................................................
Email: alexandre@silvagoncalves.com
2016-04-12 15:04 GMT+01:00 Bill Gardner billg@wavearts.com:
Oh, ALSA dev. I don't have much of any experience with this, but it is a
frequent topic on the list. You might want to browse through the archives.
I note the following in the log:
On 4/12/2016 9:56 AM, Alexandre Gonçalves wrote:
13:53:51.963 alsa_dev.c !ca_thread_func(2733): Set thread priority
for audio capture thread.
13:53:51.965 alsa_dev.c Unable to increase thread priority, root
access needed.
If the audio thread priority isn't high enough, you could get underruns
which would cause the speex warnings you see.
Bill
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Other raspberry users have encountered this issue. I think it's either a
buffer issue with ALSA device, or you're running out of CPU. In my
experience with PJSIP, one of the most useful debugging statistics is to
see a count of audio recording and playback callbacks. That will tell
you if media is flowing in both directions to from device, and also if
PJSIP is keeping up or running out of CPU. But it is not built-in. - Bill
On 4/12/2016 10:32 AM, Alexandre Gonçalves wrote:
Running with root privilegies, the warning went away:
14:18:12.516 alsa_dev.c !ca_thread_func(2765): Set thread priority
for audio capture thread.
14:18:12.517 speex !warning: discarded first playback frame
14:18:12.521 speex warning: discarded first playback frame
14:18:12.524 speex warning: discarded first playback frame
14:18:12.526 speex !warning: discarded first playback frame
But the speex warning continues.
In my code, I have this callback function defined:
static void on_call_media_state(pjsua_call_id call_id) {
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
// When media is active, connect call to sound device.
pjsua_conf_connect(ci.conf_slot, 0);
pjsua_conf_connect(0, ci.conf_slot);
}
}
The connection with pjsua_conf_connect, shouldn't be with the frames
after being processed by the aec?
Thanks.
Alexandre Gonçalves**
............................................................................................................................
Email: alexandre@silvagoncalves.com mailto:alexandre@silvagoncalves.com
2016-04-12 15:04 GMT+01:00 Bill Gardner <billg@wavearts.com
mailto:billg@wavearts.com>:
Oh, ALSA dev. I don't have much of any experience with this, but
it is a frequent topic on the list. You might want to browse
through the archives. I note the following in the log:
On 4/12/2016 9:56 AM, Alexandre Gonçalves wrote:
13:53:51.963 alsa_dev.c !ca_thread_func(2733): Set thread
priority for audio capture thread.
13:53:51.965 alsa_dev.c Unable to increase thread
priority, root access needed.
If the audio thread priority isn't high enough, you could get
underruns which would cause the speex warnings you see.
Bill
_______________________________________________
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org