summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/baresip.h1
-rw-r--r--modules/menu/menu.c6
-rw-r--r--src/audio.c18
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;