diff options
Diffstat (limited to 'pjsip/src/pjsua2/media.cpp')
-rw-r--r-- | pjsip/src/pjsua2/media.cpp | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/pjsip/src/pjsua2/media.cpp b/pjsip/src/pjsua2/media.cpp index 5a4e6ad0..880ade6b 100644 --- a/pjsip/src/pjsua2/media.cpp +++ b/pjsip/src/pjsua2/media.cpp @@ -679,17 +679,29 @@ AudioMedia &AudDevManager::getPlaybackDevMedia() throw(Error) } void AudDevManager::setCaptureDev(int capture_dev) const throw(Error) -{ - int playback_dev = getPlaybackDev(); +{ + pjsua_snd_dev_param param; + pjsua_snd_dev_param_default(¶m); + + param.capture_dev = capture_dev; + param.playback_dev = getPlaybackDev(); - PJSUA2_CHECK_EXPR( pjsua_set_snd_dev(capture_dev, playback_dev) ); + param.mode = PJSUA_SND_DEV_NO_IMMEDIATE_OPEN; + + PJSUA2_CHECK_EXPR( pjsua_set_snd_dev2(¶m) ); } void AudDevManager::setPlaybackDev(int playback_dev) const throw(Error) { - int capture_dev = getCaptureDev(); + pjsua_snd_dev_param param; + pjsua_snd_dev_param_default(¶m); + + param.capture_dev = getCaptureDev(); + param.playback_dev = playback_dev; + + param.mode = PJSUA_SND_DEV_NO_IMMEDIATE_OPEN; - PJSUA2_CHECK_EXPR( pjsua_set_snd_dev(capture_dev, playback_dev) ); + PJSUA2_CHECK_EXPR( pjsua_set_snd_dev2(¶m) ); } const AudioDevInfoVector &AudDevManager::enumDev() throw(Error) @@ -720,6 +732,21 @@ MediaPort *AudDevManager::setNoDev() return (MediaPort*)pjsua_set_no_snd_dev(); } +void AudDevManager::setSndDevMode(unsigned mode) const throw(Error) +{ + int capture_dev = 0, playback_dev = 0; + pjsua_snd_dev_param param; + pj_status_t status = pjsua_get_snd_dev(&capture_dev, &playback_dev); + if (status != PJ_SUCCESS) { + PJSUA2_RAISE_ERROR2(status, "AudDevManager::setSndDevMode()"); + } + pjsua_snd_dev_param_default(¶m); + param.capture_dev = capture_dev; + param.playback_dev = playback_dev; + param.mode = mode; + PJSUA2_CHECK_EXPR( pjsua_set_snd_dev2(¶m) ); +} + void AudDevManager::setEcOptions(unsigned tail_msec, unsigned options) throw(Error) { |