diff options
-rw-r--r-- | include/baresip.h | 1 | ||||
-rw-r--r-- | modules/menu/menu.c | 6 | ||||
-rw-r--r-- | src/audio.c | 18 |
3 files changed, 21 insertions, 4 deletions
diff --git a/include/baresip.h b/include/baresip.h index 6f0deae..8ccdee1 100644 --- a/include/baresip.h +++ b/include/baresip.h @@ -813,6 +813,7 @@ int vidfilt_dec_append(struct list *filtl, void **ctx, struct audio; void audio_mute(struct audio *a, bool muted); +bool audio_ismuted(const struct audio *a); void audio_set_devicename(struct audio *a, const char *src, const char *play); void audio_encoder_cycle(struct audio *audio); int audio_debug(struct re_printf *pf, const struct audio *a); diff --git a/modules/menu/menu.c b/modules/menu/menu.c index 583fb69..e0e6e22 100644 --- a/modules/menu/menu.c +++ b/modules/menu/menu.c @@ -340,12 +340,12 @@ static int call_reinvite(struct re_printf *pf, void *unused) static int call_mute(struct re_printf *pf, void *unused) { - static bool muted = false; + struct audio *audio = call_audio(ua_call(uag_cur())); + bool muted = !audio_ismuted(audio); (void)unused; - muted = !muted; (void)re_hprintf(pf, "\ncall %smuted\n", muted ? "" : "un-"); - audio_mute(call_audio(ua_call(uag_cur())), muted); + audio_mute(audio, muted); return 0; } diff --git a/src/audio.c b/src/audio.c index d8bb689..4f03591 100644 --- a/src/audio.c +++ b/src/audio.c @@ -1278,7 +1278,7 @@ int audio_send_digit(struct audio *a, char key) /** - * Mute the audio stream + * Mute the audio stream source (i.e. Microphone) * * @param a Audio stream * @param muted True to mute, false to un-mute @@ -1292,6 +1292,22 @@ void audio_mute(struct audio *a, bool muted) } +/** + * Get the mute state of an audio source + * + * @param a Audio stream + * + * @return True if muted, otherwise false + */ +bool audio_ismuted(const struct audio *a) +{ + if (!a) + return false; + + return a->tx.muted; +} + + void audio_sdp_attr_decode(struct audio *a) { const char *attr; |