summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-10-07 07:42:04 +0000
committerBenny Prijono <bennylp@teluu.com>2007-10-07 07:42:04 +0000
commitf891b6415f4608596b23d1e0ed01f4c62b9909a4 (patch)
treef50870c198c5e16117695bccc23b26c9471489ba /pjmedia
parent65a90427bd7708669faf1bade5d7987eab814139 (diff)
Ticket #395: Added configuration to control maximum PortAudio sound buffer latency, and change default sound backend back to WMME
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1486 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/include/pjmedia/config.h12
-rw-r--r--pjmedia/src/pjmedia/pasound.c12
2 files changed, 21 insertions, 3 deletions
diff --git a/pjmedia/include/pjmedia/config.h b/pjmedia/include/pjmedia/config.h
index 0cabe3b4..f438f185 100644
--- a/pjmedia/include/pjmedia/config.h
+++ b/pjmedia/include/pjmedia/config.h
@@ -75,10 +75,18 @@
/**
* Specify whether we prefer to use DirectSound on Windows.
*
- * Say yes!
+ * Default: 0
*/
#ifndef PJMEDIA_PREFER_DIRECT_SOUND
-# define PJMEDIA_PREFER_DIRECT_SOUND 1
+# define PJMEDIA_PREFER_DIRECT_SOUND 0
+#endif
+
+
+/**
+ * Specify PortAudio maximum buffering latency, in milliseconds.
+ */
+#ifndef PJMEDIA_PASOUND_MAX_LATENCY
+# define PJMEDIA_PASOUND_MAX_LATENCY 60
#endif
diff --git a/pjmedia/src/pjmedia/pasound.c b/pjmedia/src/pjmedia/pasound.c
index 1a5e819c..5472d9ae 100644
--- a/pjmedia/src/pjmedia/pasound.c
+++ b/pjmedia/src/pjmedia/pasound.c
@@ -28,6 +28,8 @@
#define THIS_FILE "pasound.c"
+#define MAX_LATENCY (PJMEDIA_PASOUND_MAX_LATENCY / 1000.0)
+
static int snd_init_count;
static struct snd_mgr
@@ -441,6 +443,8 @@ PJ_DEF(pj_status_t) pjmedia_snd_open_rec( int index,
inputParam.hostApiSpecificStreamInfo = NULL;
inputParam.sampleFormat = sampleFormat;
inputParam.suggestedLatency = paDevInfo->defaultLowInputLatency;
+ if (inputParam.suggestedLatency > MAX_LATENCY)
+ inputParam.suggestedLatency = MAX_LATENCY;
paHostApiInfo = Pa_GetHostApiInfo(paDevInfo->hostApi);
@@ -536,7 +540,9 @@ PJ_DEF(pj_status_t) pjmedia_snd_open_player( int index,
outputParam.channelCount = channel_count;
outputParam.hostApiSpecificStreamInfo = NULL;
outputParam.sampleFormat = sampleFormat;
- outputParam.suggestedLatency = 1.0 * samples_per_frame / clock_rate;;
+ outputParam.suggestedLatency = paDevInfo->defaultLowOutputLatency;
+ if (outputParam.suggestedLatency > MAX_LATENCY)
+ outputParam.suggestedLatency = MAX_LATENCY;
paHostApiInfo = Pa_GetHostApiInfo(paDevInfo->hostApi);
@@ -658,6 +664,8 @@ PJ_DEF(pj_status_t) pjmedia_snd_open( int rec_id,
inputParam.hostApiSpecificStreamInfo = NULL;
inputParam.sampleFormat = sampleFormat;
inputParam.suggestedLatency = paRecDevInfo->defaultLowInputLatency;
+ if (inputParam.suggestedLatency > MAX_LATENCY)
+ inputParam.suggestedLatency = MAX_LATENCY;
paRecHostApiInfo = Pa_GetHostApiInfo(paRecDevInfo->hostApi);
@@ -667,6 +675,8 @@ PJ_DEF(pj_status_t) pjmedia_snd_open( int rec_id,
outputParam.hostApiSpecificStreamInfo = NULL;
outputParam.sampleFormat = sampleFormat;
outputParam.suggestedLatency = paPlayDevInfo->defaultLowOutputLatency;
+ if (outputParam.suggestedLatency > MAX_LATENCY)
+ outputParam.suggestedLatency = MAX_LATENCY;
paPlayHostApiInfo = Pa_GetHostApiInfo(paPlayDevInfo->hostApi);