diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-10-06 17:31:09 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-10-06 17:31:09 +0000 |
commit | 19ec25d341a9d1dfceed588df7a578ea0fa464ba (patch) | |
tree | d008d1f2e352c1c798694adc8e95fffccb9cd6ad | |
parent | fa298fdd0586f32c551f14bda9b722742a837a00 (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
-rw-r--r-- | pjsip/include/pjsua-lib/pjsua.h | 14 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_core.c | 6 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 9 |
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) { |