mirror of
https://github.com/markqvist/LXST.git
synced 2026-04-27 22:25:41 +00:00
Public repo init
This commit is contained in:
commit
36246afe8c
64 changed files with 14604 additions and 0 deletions
55
LXST/Call.py
Normal file
55
LXST/Call.py
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
import RNS
|
||||
from .Pipeline import Pipeline
|
||||
from .Codecs import *
|
||||
from .Sources import *
|
||||
from .Sinks import *
|
||||
from . import APP_NAME
|
||||
|
||||
class CallEndpoint():
|
||||
def __init__(self, identity):
|
||||
self.identity = identity
|
||||
self.destination = RNS.Destination(self.identity, RNS.Destination.IN, RNS.Destination.SINGLE, APP_NAME, "call", "endpoint")
|
||||
self.destination.set_link_established_callback(self._incoming_call)
|
||||
self.active_call = None
|
||||
self.auto_answer = True
|
||||
self.receive_pipeline = None
|
||||
self.transmit_pipeline = None
|
||||
self._incoming_call_callback = None
|
||||
|
||||
def announce(self):
|
||||
if self.destination:
|
||||
self.destination.announce()
|
||||
|
||||
@property
|
||||
def incoming_call_callback(self):
|
||||
return self._incoming_call_callback
|
||||
|
||||
@incoming_call_callback.setter
|
||||
def incoming_call_callback(self, callback):
|
||||
if callable(callback):
|
||||
self._incoming_call_callback = callback
|
||||
else:
|
||||
raise TypeError(f"Invalid callback for {self}: Not callable")
|
||||
|
||||
def _incoming_call(self, link):
|
||||
RNS.log(f"Incoming call on {self}", RNS.LOG_DEBUG)
|
||||
if callable(self._incoming_call_callback):
|
||||
self._incoming_call_callback(link)
|
||||
|
||||
def answer(self, call_link):
|
||||
RNS.log(f"Answering call on {call_link}", RNS.LOG_DEBUG)
|
||||
self.active_call = call_link
|
||||
|
||||
self.receive_pipeline = Pipeline(source=PacketSource(self),
|
||||
codec=Opus(),
|
||||
sink=LineSink())
|
||||
|
||||
self.transmit_pipeline = Pipeline(source=LineSource(target_frame_ms=target_frame_ms),
|
||||
codec=Opus(),
|
||||
sink=PacketSink(self))
|
||||
|
||||
def terminate(self):
|
||||
self.receive_pipeline.stop()
|
||||
self.transmit_pipeline.stop()
|
||||
if self.active_call:
|
||||
self.active_call.teardown()
|
||||
Loading…
Add table
Add a link
Reference in a new issue