summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2009-07-18 09:21:09 +0000
committerBenny Prijono <bennylp@teluu.com>2009-07-18 09:21:09 +0000
commitb7d6ba9e3f1343cc42ecee41c28257171d350ebe (patch)
treea247427bdb407f1ef4cac27a0e44d12b7adf3938 /pjmedia
parentcc31ff27079508923376bc73c3d6bcad6cdcd1f2 (diff)
Misc (#915): added WAVE_FORMAT_DIRECT flag when opening waveIn/Out in WMME audio dev, hopefully it can reduce latency
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2841 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/src/pjmedia-audiodev/wmme_dev.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/pjmedia/src/pjmedia-audiodev/wmme_dev.c b/pjmedia/src/pjmedia-audiodev/wmme_dev.c
index 02448939..5b8461c6 100644
--- a/pjmedia/src/pjmedia-audiodev/wmme_dev.c
+++ b/pjmedia/src/pjmedia-audiodev/wmme_dev.c
@@ -515,6 +515,7 @@ static pj_status_t init_player_stream( struct wmme_factory *wf,
MMRESULT mr;
WAVEFORMATEX wfx;
unsigned i, ptime;
+ DWORD flag;
pj_status_t status;
PJ_ASSERT_RETURN(prm->play_id < (int)wf->dev_count, PJ_EINVAL);
@@ -537,12 +538,16 @@ static pj_status_t init_player_stream( struct wmme_factory *wf,
(prm->clock_rate * prm->channel_count);
parent->bytes_per_frame = wfx.nAvgBytesPerSec * ptime / 1000;
+ flag = CALLBACK_EVENT;
+ if (prm->ext_fmt.id == PJMEDIA_FORMAT_L16)
+ flag |= WAVE_FORMAT_DIRECT;
+
/*
* Open wave device.
*/
mr = waveOutOpen(&wmme_strm->hWave.Out,
wf->dev_info[prm->play_id].deviceId,
- &wfx, (DWORD)wmme_strm->hEvent, 0, CALLBACK_EVENT);
+ &wfx, (DWORD)wmme_strm->hEvent, 0, flag);
if (mr != MMSYSERR_NOERROR) {
return PJMEDIA_AUDIODEV_ERRNO_FROM_WMME_OUT(mr);
}
@@ -603,6 +608,7 @@ static pj_status_t init_capture_stream( struct wmme_factory *wf,
{
MMRESULT mr;
WAVEFORMATEX wfx;
+ DWORD flag;
unsigned i, ptime;
PJ_ASSERT_RETURN(prm->rec_id < (int)wf->dev_count, PJ_EINVAL);
@@ -623,12 +629,16 @@ static pj_status_t init_capture_stream( struct wmme_factory *wf,
(prm->clock_rate * prm->channel_count);
parent->bytes_per_frame = wfx.nAvgBytesPerSec * ptime / 1000;
+ flag = CALLBACK_EVENT;
+ if (prm->ext_fmt.id == PJMEDIA_FORMAT_L16)
+ flag |= WAVE_FORMAT_DIRECT;
+
/*
* Open wave device.
*/
mr = waveInOpen(&wmme_strm->hWave.In,
wf->dev_info[prm->rec_id].deviceId,
- &wfx, (DWORD)wmme_strm->hEvent, 0, CALLBACK_EVENT);
+ &wfx, (DWORD)wmme_strm->hEvent, 0, flag);
if (mr != MMSYSERR_NOERROR) {
return PJMEDIA_AUDIODEV_ERRNO_FROM_WMME_IN(mr);
}