summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-10-06 17:31:09 +0000
committerBenny Prijono <bennylp@teluu.com>2007-10-06 17:31:09 +0000
commit19ec25d341a9d1dfceed588df7a578ea0fa464ba (patch)
treed008d1f2e352c1c798694adc8e95fffccb9cd6ad /pjsip
parentfa298fdd0586f32c551f14bda9b722742a837a00 (diff)
Ticket #393: Added configuration to set basic audio frame length to minimize audio latency in pjsua-lib
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1482 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/include/pjsua-lib/pjsua.h14
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c6
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c9
3 files changed, 22 insertions, 7 deletions
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h
index 062943b7..fad79178 100644
--- a/pjsip/include/pjsua-lib/pjsua.h
+++ b/pjsip/include/pjsua-lib/pjsua.h
@@ -1744,7 +1744,7 @@ PJ_DECL(pj_status_t) pjsua_transport_close( pjsua_transport_id id,
* either "sip" or "sips".
*/
#ifndef PJSUA_SECURE_SCHEME
-# define PJSUA_SECURE_SCHEME "sip"
+# define PJSUA_SECURE_SCHEME "sips"
#endif
@@ -3466,6 +3466,16 @@ struct pjsua_media_config
unsigned clock_rate;
/**
+ * Specify audio frame ptime. The value here will affect the
+ * samples per frame of both the sound device and the conference
+ * bridge. Specifying lower ptime will normally reduce the
+ * latency.
+ *
+ * Default: 20 (miliseconds)
+ */
+ unsigned audio_frame_ptime;
+
+ /**
* Specify maximum number of media ports to be created in the
* conference bridge. Since all media terminate in the bridge
* (calls, file player, file recorder, etc), the value must be
@@ -3505,7 +3515,7 @@ struct pjsua_media_config
unsigned quality;
/**
- * Specify default ptime.
+ * Specify default codec ptime.
*
* Default: 0 (codec specific)
*/
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index f34ac366..80617605 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -154,6 +154,7 @@ PJ_DEF(void) pjsua_media_config_default(pjsua_media_config *cfg)
pj_bzero(cfg, sizeof(*cfg));
cfg->clock_rate = PJSUA_DEFAULT_CLOCK_RATE;
+ cfg->audio_frame_ptime = 10;
cfg->max_media_ports = 32;
cfg->has_ioqueue = PJ_TRUE;
cfg->thread_cnt = 1;
@@ -1880,8 +1881,11 @@ PJ_DEF(pj_status_t) pjsua_verify_sip_url(const char *c_url)
pj_ansi_strcpy(url, c_url);
p = pjsip_parse_uri(pool, url, len, 0);
- if (!p || pj_stricmp2(pjsip_uri_get_scheme(p), "sip") != 0)
+ if (!p || (pj_stricmp2(pjsip_uri_get_scheme(p), "sip") != 0 &&
+ pj_stricmp2(pjsip_uri_get_scheme(p), "sips") != 0))
+ {
p = NULL;
+ }
pj_pool_release(pool);
return p ? 0 : -1;
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 9b847b39..0f4547b9 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -22,8 +22,6 @@
#define THIS_FILE "pjsua_media.c"
-#define PTIME 20
-#define FPS (1000/PTIME)
#define DEFAULT_RTP_PORT 4000
/* Next RTP port to be used */
@@ -155,7 +153,8 @@ pj_status_t pjsua_media_subsys_init(const pjsua_media_config *cfg)
* reference.
*/
pjsua_var.mconf_cfg.samples_per_frame = pjsua_var.media_cfg.clock_rate *
- PTIME / 1000;
+ pjsua_var.media_cfg.audio_frame_ptime /
+ 1000;
pjsua_var.mconf_cfg.channel_count = 1;
pjsua_var.mconf_cfg.bits_per_sample = 16;
@@ -1648,16 +1647,18 @@ PJ_DEF(pj_status_t) pjsua_set_snd_dev( int capture_dev,
/* Attempts to open the sound device with different clock rates */
for (i=0; i<PJ_ARRAY_SIZE(clock_rates); ++i) {
char errmsg[PJ_ERR_MSG_SIZE];
+ unsigned fps;
PJ_LOG(4,(THIS_FILE,
"pjsua_set_snd_dev(): attempting to open devices "
"@%d Hz", clock_rates[i]));
/* Create the sound device. Sound port will start immediately. */
+ fps = 1000 / pjsua_var.media_cfg.audio_frame_ptime;
status = pjmedia_snd_port_create(pjsua_var.pool, capture_dev,
playback_dev,
clock_rates[i], 1,
- clock_rates[i]/FPS,
+ clock_rates[i]/fps,
16, 0, &pjsua_var.snd_port);
if (status == PJ_SUCCESS) {