summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2012-05-17 08:35:51 +0000
committerNanang Izzuddin <nanang@teluu.com>2012-05-17 08:35:51 +0000
commit0949cd759f5e4848f692a21d3b04f75f84ba6e24 (patch)
treec495d485dccbe3f9c3def130532b24b2343bf802
parent13a34ab336d0c21b8c054db2a0ed0626182c5837 (diff)
Re #1509: backported r4122-r4129.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4130 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/include/pjmedia/config.h2
-rw-r--r--pjmedia/src/pjmedia-audiodev/alsa_dev.c12
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c14
-rw-r--r--third_party/srtp/crypto/replay/rdb.c2
4 files changed, 24 insertions, 6 deletions
diff --git a/pjmedia/include/pjmedia/config.h b/pjmedia/include/pjmedia/config.h
index d0c2cd39..3f92a6b9 100644
--- a/pjmedia/include/pjmedia/config.h
+++ b/pjmedia/include/pjmedia/config.h
@@ -1139,7 +1139,7 @@
/**
* Duration for progressive discard algotithm in jitter buffer to discard
- * an excessive frame when burst is equal to or lower than
+ * an excessive frame when burst is equal to or greater than
* PJMEDIA_JBUF_PRO_DISC_MAX_BURST, in milliseconds.
*
* Default: 10000 ms
diff --git a/pjmedia/src/pjmedia-audiodev/alsa_dev.c b/pjmedia/src/pjmedia-audiodev/alsa_dev.c
index 69e10d01..5bcdedf0 100644
--- a/pjmedia/src/pjmedia-audiodev/alsa_dev.c
+++ b/pjmedia/src/pjmedia-audiodev/alsa_dev.c
@@ -547,6 +547,7 @@ static pj_status_t open_playback (struct alsa_stream* stream,
int result;
unsigned int rate;
snd_pcm_uframes_t tmp_buf_size;
+ snd_pcm_uframes_t tmp_period_size;
if (param->play_id < 0 || param->play_id >= stream->af->dev_cnt)
return PJMEDIA_EAUD_INVDEV;
@@ -613,10 +614,11 @@ static pj_status_t open_playback (struct alsa_stream* stream,
param->channel_count;
TRACE_((THIS_FILE, "open_playback: set period size: %d",
stream->pb_frames));
+ tmp_period_size = stream->pb_frames;
snd_pcm_hw_params_set_period_size_near (stream->pb_pcm, params,
- &stream->pb_frames, NULL);
+ &tmp_period_size, NULL);
TRACE_((THIS_FILE, "open_playback: period size set to: %d",
- stream->pb_frames));
+ tmp_period_size));
/* Set the sound device buffer size and latency */
if (param->flags & PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY)
@@ -663,6 +665,7 @@ static pj_status_t open_capture (struct alsa_stream* stream,
int result;
unsigned int rate;
snd_pcm_uframes_t tmp_buf_size;
+ snd_pcm_uframes_t tmp_period_size;
if (param->rec_id < 0 || param->rec_id >= stream->af->dev_cnt)
return PJMEDIA_EAUD_INVDEV;
@@ -729,10 +732,11 @@ static pj_status_t open_capture (struct alsa_stream* stream,
param->channel_count;
TRACE_((THIS_FILE, "open_capture: set period size: %d",
stream->ca_frames));
+ tmp_period_size = stream->ca_frames;
snd_pcm_hw_params_set_period_size_near (stream->ca_pcm, params,
- &stream->ca_frames, NULL);
+ &tmp_period_size, NULL);
TRACE_((THIS_FILE, "open_capture: period size set to: %d",
- stream->ca_frames));
+ tmp_period_size));
/* Set the sound device buffer size and latency */
if (param->flags & PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY)
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index e609fe7d..9cdbe953 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -675,6 +675,7 @@ PJ_DEF(pj_status_t) pjsua_acc_modify( pjsua_acc_id acc_id,
pjsip_route_hdr local_route;
pj_str_t acc_proxy[PJSUA_ACC_MAX_PROXIES];
pj_bool_t update_reg = PJ_FALSE;
+ pj_bool_t unreg_first = PJ_FALSE;
pj_status_t status = PJ_SUCCESS;
PJ_ASSERT_RETURN(acc_id>=0 && acc_id<(int)PJ_ARRAY_SIZE(pjsua_var.acc),
@@ -802,6 +803,7 @@ PJ_DEF(pj_status_t) pjsua_acc_modify( pjsua_acc_id acc_id,
pj_strdup_with_null(acc->pool, &acc->srv_domain, &id_sip_uri->host);
acc->srv_port = 0;
update_reg = PJ_TRUE;
+ unreg_first = PJ_TRUE;
}
/* User data */
@@ -856,6 +858,7 @@ PJ_DEF(pj_status_t) pjsua_acc_modify( pjsua_acc_id acc_id,
pj_strdup_with_null(acc->pool, &acc->cfg.force_contact,
&cfg->force_contact);
update_reg = PJ_TRUE;
+ unreg_first = PJ_TRUE;
}
/* Contact param */
@@ -1100,6 +1103,7 @@ PJ_DEF(pj_status_t) pjsua_acc_modify( pjsua_acc_id acc_id,
pj_bzero(&acc->cfg.reg_uri, sizeof(acc->cfg.reg_uri));
}
update_reg = PJ_TRUE;
+ unreg_first = PJ_TRUE;
}
/* SIP outbound setting */
@@ -1110,6 +1114,16 @@ PJ_DEF(pj_status_t) pjsua_acc_modify( pjsua_acc_id acc_id,
update_reg = PJ_TRUE;
}
+ /* Unregister first */
+ if (unreg_first) {
+ pjsua_acc_set_registration(acc->index, PJ_FALSE);
+ if (acc->regc != NULL) {
+ pjsip_regc_destroy(acc->regc);
+ acc->regc = NULL;
+ acc->contact.slen = 0;
+ }
+ }
+
/* Update registration */
if (update_reg) {
/* If accounts has registration enabled, start registration */
diff --git a/third_party/srtp/crypto/replay/rdb.c b/third_party/srtp/crypto/replay/rdb.c
index 9f2ea878..c826912a 100644
--- a/third_party/srtp/crypto/replay/rdb.c
+++ b/third_party/srtp/crypto/replay/rdb.c
@@ -115,7 +115,7 @@ rdb_add_index(rdb_t *rdb, uint32_t index) {
/* shift the window forward by delta bits*/
v128_left_shift(&rdb->bitmask, delta);
- v128_set_bit(&rdb->bitmask, rdb_bits_in_bitmask-delta);
+ v128_set_bit(&rdb->bitmask, rdb_bits_in_bitmask-1);
rdb->window_start += delta;
}