@@ -176,6 +176,8 @@ def __init__(self, identity, ring_time=RING_TIME, wait_time=WAIT_TIME, auto_answ
176176 self .transmit_mixer = None
177177 self .receive_pipeline = None
178178 self .transmit_pipeline = None
179+ self .__receive_muted = False
180+ self .__transmit_muted = False
179181 self .ringer_lock = threading .Lock ()
180182 self .ringer_output = None
181183 self .ringer_pipeline = None
@@ -432,13 +434,15 @@ def hangup(self, reason=None):
432434
433435 if terminating_call .status == RNS .Link .ACTIVE : terminating_call .teardown ()
434436 self .__stop_pipelines ()
435- self .receive_mixer = None
436- self .transmit_mixer = None
437- self .receive_pipeline = None
437+ self .receive_mixer = None
438+ self .transmit_mixer = None
439+ self .receive_pipeline = None
438440 self .transmit_pipeline = None
439- self .audio_output = None
440- self .dial_tone = None
441- self .call_status = Signalling .STATUS_AVAILABLE
441+ self .audio_output = None
442+ self .dial_tone = None
443+ self .call_status = Signalling .STATUS_AVAILABLE
444+ self .__receive_muted = False
445+ self .__transmit_muted = False
442446 if remote_identity : RNS .log (f"Call with { RNS .prettyhexrep (remote_identity .hash )} terminated" , RNS .LOG_DEBUG )
443447 else : RNS .log (f"Outgoing call could not be connected, link establishment failed" , RNS .LOG_DEBUG )
444448
@@ -452,15 +456,19 @@ def hangup(self, reason=None):
452456 elif callable (self .__ended_callback ): self .__ended_callback (remote_identity )
453457
454458 def mute_receive (self , mute = True ):
459+ self .__receive_muted = mute
455460 if self .receive_mixer : self .receive_mixer .mute (mute )
456461
457462 def unmute_receive (self , unmute = True ):
463+ self .__receive_muted = not unmute
458464 if self .receive_mixer : self .receive_mixer .unmute (unmute )
459465
460466 def mute_transmit (self , mute = True ):
467+ self .__transmit_muted = mute
461468 if self .transmit_mixer : self .transmit_mixer .mute (mute )
462469
463470 def unmute_transmit (self , unmute = True ):
471+ self .__transmit_muted = not unmute
464472 if self .transmit_mixer : self .transmit_mixer .unmute (unmute )
465473
466474 def set_receive_gain (self , gain = 0.0 ):
@@ -510,16 +518,16 @@ def __reset_dialling_pipelines(self):
510518
511519 def __prepare_dialling_pipelines (self ):
512520 self .__select_call_profile (self .active_call .profile )
513- if self .audio_output == None : self .audio_output = LineSink (preferred_device = self .speaker_device )
514- if self .receive_mixer == None : self .receive_mixer = Mixer (target_frame_ms = self .target_frame_time_ms , gain = self .receive_gain )
515- if self .dial_tone == None : self .dial_tone = ToneSource (frequency = self .dial_tone_frequency , gain = 0.0 , ease_time_ms = self .dial_tone_ease_ms , target_frame_ms = self .target_frame_time_ms , codec = Null (), sink = self .receive_mixer )
521+ if self .audio_output == None : self .audio_output = LineSink (preferred_device = self .speaker_device )
522+ if self .receive_mixer == None : self .receive_mixer = Mixer (target_frame_ms = self .target_frame_time_ms , gain = self .receive_gain )
523+ if self .dial_tone == None : self .dial_tone = ToneSource (frequency = self .dial_tone_frequency , gain = 0.0 , ease_time_ms = self .dial_tone_ease_ms , target_frame_ms = self .target_frame_time_ms , codec = Null (), sink = self .receive_mixer )
516524 if self .receive_pipeline == None : self .receive_pipeline = Pipeline (source = self .receive_mixer , codec = Null (), sink = self .audio_output )
517525
518526 def __activate_ring_tone (self ):
519527 if self .ringtone_path != None and os .path .isfile (self .ringtone_path ):
520528 if not self .ringer_pipeline :
521529 if not self .ringer_output : self .ringer_output = LineSink (preferred_device = self .ringer_device )
522- self .ringer_source = OpusFileSource (self .ringtone_path , loop = True , target_frame_ms = 60 )
530+ self .ringer_source = OpusFileSource (self .ringtone_path , loop = True , target_frame_ms = 60 )
523531 self .ringer_pipeline = Pipeline (source = self .ringer_source , codec = Null (), sink = self .ringer_output )
524532
525533 def job ():
@@ -578,6 +586,8 @@ def __reconfigure_transmit_pipeline(self):
578586 self .transmit_pipeline = Pipeline (source = self .transmit_mixer ,
579587 codec = self .transmit_codec ,
580588 sink = self .active_call .packetizer )
589+
590+ self .transmit_mixer .mute (self .__transmit_muted )
581591 self .transmit_mixer .start ()
582592 self .audio_input .start ()
583593 self .transmit_pipeline .start ()
0 commit comments