Misc (#915): added WAVE_FORMAT_DIRECT flag when opening waveIn/Out in WMME audio dev, hopefully it can reduce latency
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2841 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjmedia/src/pjmedia-audiodev/wmme_dev.c b/pjmedia/src/pjmedia-audiodev/wmme_dev.c
index 0244893..5b8461c 100644
--- a/pjmedia/src/pjmedia-audiodev/wmme_dev.c
+++ b/pjmedia/src/pjmedia-audiodev/wmme_dev.c
@@ -515,6 +515,7 @@
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 @@
(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 @@
{
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 @@
(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);
}