From 5982a41faa033f0eb4e61ce93489ea886879080f Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Thu, 12 Jun 2008 12:48:59 +0000 Subject: Ticket #542: added new API and macro for sound device latency settings, also added new param for this in pjsua git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2007 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/include/pjmedia/config.h | 10 +++++++--- pjmedia/include/pjmedia/sound.h | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) (limited to 'pjmedia/include') diff --git a/pjmedia/include/pjmedia/config.h b/pjmedia/include/pjmedia/config.h index f9015815..5eebe4cb 100644 --- a/pjmedia/include/pjmedia/config.h +++ b/pjmedia/include/pjmedia/config.h @@ -83,10 +83,14 @@ /** - * Specify PortAudio maximum buffering latency, in milliseconds. + * Specify sound device latency default, in milisecond. */ -#ifndef PJMEDIA_PASOUND_MAX_LATENCY -# define PJMEDIA_PASOUND_MAX_LATENCY 100 +#ifndef PJMEDIA_SND_DEFAULT_REC_LATENCY +# define PJMEDIA_SND_DEFAULT_REC_LATENCY 10 +#endif + +#ifndef PJMEDIA_SND_DEFAULT_PLAY_LATENCY +# define PJMEDIA_SND_DEFAULT_PLAY_LATENCY 100 #endif diff --git a/pjmedia/include/pjmedia/sound.h b/pjmedia/include/pjmedia/sound.h index 91d1cb8f..ca9ccee4 100644 --- a/pjmedia/include/pjmedia/sound.h +++ b/pjmedia/include/pjmedia/sound.h @@ -153,6 +153,28 @@ PJ_DECL(int) pjmedia_snd_get_dev_count(void); PJ_DECL(const pjmedia_snd_dev_info*) pjmedia_snd_get_dev_info(unsigned index); +/** + * Set sound device latency, this function must be called before sound device + * opened, or otherwise default latency setting will be used, @see + * PJMEDIA_SND_DEFAULT_REC_LATENCY & PJMEDIA_SND_DEFAULT_PLAY_LATENCY. + * + * Choosing latency value is not straightforward, it should accomodate both + * minimum latency and stability. Lower latency tends to cause sound device + * less reliable (producing audio dropouts) on CPU load disturbance. Moreover, + * the best latency setting may vary based on many aspects, e.g: sound card, + * CPU, OS, kernel, etc. + * + * @param input_latency The latency of input device, in ms, set to 0 + * for default PJMEDIA_SND_DEFAULT_REC_LATENCY. + * @param output_latency The latency of output device, in ms, set to 0 + * for default PJMEDIA_SND_DEFAULT_PLAY_LATENCY. + * + * @return PJ_SUCCESS on success. + */ +PJ_DECL(pj_status_t) pjmedia_snd_set_latency(unsigned input_latency, + unsigned output_latency); + + /** * Create sound stream for both capturing audio and audio playback, from the * same device. This is the recommended way to create simultaneous recorder -- cgit v1.2.3