Ejemplo n.º 1
0
    def onCallMediaState(self, prm: pj.OnCallMediaStateParam) -> None:
        ci = self.getInfo()
        if ci.state != pj.PJSIP_INV_STATE_CONFIRMED:
            logger.debug("Ignoring media change in call to %s",
                         repr(ci.remoteUri))
            return

        adm = pj.Endpoint.instance().audDevManager()
        logger.debug("Call to %s: media changed", repr(ci.remoteUri))
        audio, video = self.__getAudioVideoMedia()

        if audio:
            # Connect call audio to speaker and microphone
            audio.startTransmit(adm.getPlaybackDevMedia())
            adm.getCaptureDevMedia().startTransmit(audio)
            # Apply capture and ring tone loudness
            conf = DoorPi().config
            playback_loudness = conf.get_float(SIPPHONE_SECTION,
                                               "playback_loudness", 1.0)
            capture_loudness = conf.get_float(SIPPHONE_SECTION,
                                              "capture_loudness", 1.0)
            logger.trace("Adjusting RX level to %01.1f", playback_loudness)
            logger.trace("Adjusting TX level to %01.1f", capture_loudness)
            audio.adjustRxLevel(playback_loudness)
            audio.adjustTxLevel(capture_loudness)
        else:
            logger.error("Call to %s: no audio media", repr(ci.remoteUri))
Ejemplo n.º 2
0
 def dialtone_config() -> dict:
     conf = DoorPi().config
     return {
         "filename":
         conf.get_string_parsed(SIPPHONE_SECTION, "dialtone",
                                "!BASEPATH!/media/dialtone.wav"),
         "loudness":
         conf.get_float(SIPPHONE_SECTION, "dialtone_loudness", 1.0)
     }