Documentation
¶
Index ¶
- Constants
- Variables
- func AttrsToHeaders(attrs, attrToHdr, headers map[string]string) map[string]string
- func ConfigureTLS(c *tls.Config)
- func Diff16(cur, prev uint16) int16
- func HeadersToAttrs(attrs, hdrToAttr map[string]string, opts livekit.SIPHeaderOptions, c Signaling, ...) map[string]string
- func LoggerWithHeaders(log logger.Logger, c Signaling) logger.Logger
- func NewReferRequest(inviteRequest *sip.Request, inviteResponse *sip.Response, ...) *sip.Request
- func NewSignalLogger(log logger.Logger, name string, next msdk.PCM16Writer, ...) (msdk.PCM16Writer, error)
- func SIPTransportFrom(t Transport) livekit.SIPTransport
- func SelectValue[T any](then, els T, probElse float64) T
- func SelectValueBool(then bool, probElse float64) bool
- func ToSIPUri(ip string, u sip.Uri) *livekit.SIPUri
- type ActiveCalls
- type AuthInfo
- type AuthResult
- type CallDispatch
- type CallIdentifier
- type CallInfo
- type CallState
- func (s *CallState) DeferUpdate(update func(info *livekit.SIPCallInfo))
- func (s *CallState) EndTransfer(ctx context.Context, transferID string, inErr error)
- func (s *CallState) Flush(ctx context.Context)
- func (s *CallState) ForceFlush(ctx context.Context)
- func (s *CallState) StartTransfer(ctx context.Context, transferTo string) string
- func (s *CallState) Update(ctx context.Context, update func(info *livekit.SIPCallInfo))
- type CallStatus
- type Client
- func (c *Client) ContactURI(tr Transport) URI
- func (c *Client) CreateSIPParticipant(ctx context.Context, req *rpc.InternalCreateSIPParticipantRequest) (*rpc.InternalCreateSIPParticipantResponse, error)
- func (c *Client) DeregisterTransferSIPParticipant(sipCallID string)
- func (c *Client) OnRequest(req *sip.Request, tx sip.ServerTransaction) bool
- func (c *Client) RegisterTransferSIPParticipant(sipCallID string, o *outboundCall) error
- func (c *Client) SetHandler(handler Handler)
- func (c *Client) Start(agent *sipgo.UserAgent, sc *ServiceConfig) error
- func (c *Client) Stop()
- type ClientOption
- type DispatchResult
- type GetIOInfoClient
- type GetRoomFunc
- type GetSipClientFunc
- type Handler
- type Headers
- type LatencyStats
- type LatencyStatsSnapshot
- type LocalTag
- type MediaConf
- type MediaOptions
- type MediaPort
- func (p *MediaPort) Close()
- func (p *MediaPort) Config() *MediaConf
- func (p *MediaPort) DisableOut()
- func (p *MediaPort) EnableOut()
- func (p *MediaPort) EnableTimeout(enabled bool)
- func (p *MediaPort) GetAudioWriter() msdk.PCM16Writer
- func (p *MediaPort) HandleDTMF(h func(ev dtmf.Event))
- func (p *MediaPort) NewOffer(encrypted sdp.Encryption) (*sdp.Offer, error)
- func (p *MediaPort) Port() int
- func (p *MediaPort) Received() <-chan struct{}
- func (p *MediaPort) SetAnswer(offer *sdp.Offer, answerData []byte, enc sdp.Encryption) (*MediaConf, []byte, error)
- func (p *MediaPort) SetConfig(c *MediaConf) error
- func (p *MediaPort) SetDTMFAudio(enabled bool)
- func (p *MediaPort) SetOffer(offerData []byte, enc sdp.Encryption) (*sdp.Answer, *MediaConf, error)
- func (p *MediaPort) SetTimeout(initial, general time.Duration)
- func (p *MediaPort) Timeout() <-chan struct{}
- func (p *MediaPort) WriteAudioTo(w msdk.PCM16Writer)
- func (p *MediaPort) WriteDTMF(ctx context.Context, digits string) error
- type MixerStatsSnapshot
- type ParticipantConfig
- type ParticipantInfo
- type PendingTransfer
- type PortStats
- type PortStatsSnapshot
- type ReasonHeader
- type RemoteTag
- type RequestHandler
- type Room
- func (r *Room) Close() error
- func (r *Room) CloseOutput() error
- func (r *Room) CloseWithReason(reason livekit.DisconnectReason) error
- func (r *Room) Closed() <-chan struct{}
- func (r *Room) Connect(conf *config.Config, rconf RoomConfig) error
- func (r *Room) NewParticipantTrack(sampleRate int) (msdk.WriteCloser[msdk.PCM16Sample], error)
- func (r *Room) NewTrack() *mixer.Input
- func (r *Room) Output() msdk.Writer[msdk.PCM16Sample]
- func (r *Room) Participant() ParticipantInfo
- func (r *Room) Room() *lksdk.Room
- func (r *Room) SendData(data lksdk.DataPacket, opts ...lksdk.DataPublishOption) error
- func (r *Room) SetDTMFOutput(w dtmf.Writer)
- func (r *Room) Subscribe()
- func (r *Room) Subscribed() <-chan struct{}
- func (r *Room) SwapOutput(out msdk.PCM16Writer) msdk.PCM16Writer
- type RoomConfig
- type RoomInterface
- type RoomStats
- type RoomStatsSnapshot
- type SDPError
- type SIPClient
- type Server
- func (s *Server) ContactURI(tr Transport) URI
- func (s *Server) DeregisterTransferSIPParticipant(sipCallID LocalTag)
- func (s *Server) OnNoRoute(log *slog.Logger, req *sip.Request, tx sip.ServerTransaction)
- func (s *Server) RegisterTransferSIPParticipant(sipCallID LocalTag, i *inboundCall) error
- func (s *Server) SetHandler(handler Handler)
- func (s *Server) Start(agent *sipgo.UserAgent, sc *ServiceConfig, tlsConf *tls.Config, ...) error
- func (s *Server) Stop()
- type ServerOption
- type Service
- func (s *Service) ActiveCalls() ActiveCalls
- func (s *Service) CreateSIPParticipant(ctx context.Context, req *rpc.InternalCreateSIPParticipantRequest) (*rpc.InternalCreateSIPParticipantResponse, error)
- func (s *Service) CreateSIPParticipantAffinity(ctx context.Context, req *rpc.InternalCreateSIPParticipantRequest) float32
- func (s *Service) SetHandler(handler Handler)
- func (s *Service) Start() error
- func (s *Service) Stop()
- func (s *Service) TransferSIPParticipant(ctx context.Context, req *rpc.InternalTransferSIPParticipantRequest) (*emptypb.Empty, error)
- type ServiceConfig
- type SignalLogger
- type SignalLoggerOption
- type Signaling
- type SilenceSuppressionOption
- type StateUpdater
- type Stats
- type StatsSnapshot
- type Transport
- type UDPConn
- type URI
Constants ¶
const ( RoomSampleRate = 48000 RoomResample = false )
const ( AttrSIPCallIDFull = livekit.AttrSIPPrefix + "callIDFull" AttrSIPCallTag = livekit.AttrSIPPrefix + "callTag" )
const ( CallDialing CallRinging CallAutomation CallActive CallHangup )
const ( AuthNotFound = AuthResult(iota) AuthDrop AuthPassword AuthAccept AuthQuotaExceeded AuthNoTrunkFound )
const ( DispatchAccept = DispatchResult(iota) DispatchRequestPin DispatchNoRuleReject // reject the call with an error DispatchNoRuleDrop // silently drop the call )
const ( // DefaultInitialNoiseFloorDB is the default noise floor in dBFS. DefaultInitialNoiseFloorDB = -50 // DefaultHangoverDuration is how long we stay in "signal" after level drops below exit threshold. DefaultHangoverDuration = 1 * time.Second // DefaultEnterVoiceOffsetDB is the default offset above noise floor to enter voice (hysteresis high). DefaultEnterVoiceOffsetDB = 10 // DefaultExitVoiceOffsetDB is the default offset above noise floor to exit voice (hysteresis low). DefaultExitVoiceOffsetDB = 5 )
const ( TransportUDP = Transport("udp") TransportTCP = Transport("tcp") TransportTLS = Transport("tls") )
const (
UserAgent = "LiveKit"
)
Variables ¶
var Tracer = otel.Tracer( "github.com/livekit/sip", trace.WithInstrumentationAttributes(getSIPVersions()...), )
Functions ¶
func AttrsToHeaders ¶
func ConfigureTLS ¶
func HeadersToAttrs ¶
func NewReferRequest ¶
func NewSignalLogger ¶ added in v1.3.0
func NewSignalLogger(log logger.Logger, name string, next msdk.PCM16Writer, options ...SignalLoggerOption) (msdk.PCM16Writer, error)
func SIPTransportFrom ¶
func SIPTransportFrom(t Transport) livekit.SIPTransport
func SelectValue ¶
func SelectValueBool ¶
Types ¶
type ActiveCalls ¶
func (ActiveCalls) Total ¶
func (st ActiveCalls) Total() int
type AuthInfo ¶
type AuthInfo struct {
Result AuthResult
ProjectID string
TrunkID string
Username string
Password string
ProviderInfo *livekit.ProviderInfo
}
type AuthResult ¶
type AuthResult int
type CallDispatch ¶
type CallDispatch struct {
Result DispatchResult
Room RoomConfig
ProjectID string
TrunkID string
DispatchRuleID string
Headers map[string]string
HeadersToAttributes map[string]string
IncludeHeaders livekit.SIPHeaderOptions
AttributesToHeaders map[string]string
EnabledFeatures []livekit.SIPFeature
FeatureFlags map[string]string
RingingTimeout time.Duration
MaxCallDuration time.Duration
MediaEncryption livekit.SIPMediaEncryption
}
type CallIdentifier ¶
type CallState ¶
type CallState struct {
// contains filtered or unexported fields
}
func NewCallState ¶
func NewCallState(cli StateUpdater, initial *livekit.SIPCallInfo) *CallState
func (*CallState) DeferUpdate ¶
func (s *CallState) DeferUpdate(update func(info *livekit.SIPCallInfo))
func (*CallState) EndTransfer ¶
func (*CallState) ForceFlush ¶
func (*CallState) StartTransfer ¶
type CallStatus ¶
type CallStatus int
func (CallStatus) Attribute ¶
func (v CallStatus) Attribute() string
func (CallStatus) DisconnectReason ¶
func (v CallStatus) DisconnectReason() livekit.DisconnectReason
func (CallStatus) SIPStatus ¶
func (v CallStatus) SIPStatus() (sip.StatusCode, string)
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func NewClient ¶
func NewClient(region string, conf *config.Config, log logger.Logger, mon *stats.Monitor, getIOClient GetIOInfoClient, options ...ClientOption) *Client
func (*Client) ContactURI ¶
func (*Client) CreateSIPParticipant ¶
func (c *Client) CreateSIPParticipant(ctx context.Context, req *rpc.InternalCreateSIPParticipantRequest) (*rpc.InternalCreateSIPParticipantResponse, error)
func (*Client) DeregisterTransferSIPParticipant ¶
func (*Client) RegisterTransferSIPParticipant ¶
func (*Client) SetHandler ¶
type ClientOption ¶ added in v1.3.0
type ClientOption func(c *Client)
func WithGetRoomClient ¶ added in v1.3.0
func WithGetRoomClient(fn GetRoomFunc) ClientOption
func WithGetSipClient ¶ added in v1.3.0
func WithGetSipClient(fn GetSipClientFunc) ClientOption
type DispatchResult ¶
type DispatchResult int
type GetIOInfoClient ¶
type GetIOInfoClient func(projectID string) rpc.IOInfoClient
type GetRoomFunc ¶ added in v1.3.0
type GetRoomFunc func(log logger.Logger, st *RoomStats) RoomInterface
type GetSipClientFunc ¶ added in v1.3.0
type Handler ¶
type Handler interface {
GetAuthCredentials(ctx context.Context, call *rpc.SIPCall) (AuthInfo, error)
DispatchCall(ctx context.Context, info *CallInfo) CallDispatch
GetMediaProcessor(features []livekit.SIPFeature, featureFlags map[string]string) msdk.PCM16Processor
RegisterTransferSIPParticipantTopic(sipCallId string) error
DeregisterTransferSIPParticipantTopic(sipCallId string)
OnInboundInfo(log logger.Logger, callInfo *rpc.SIPCall, headers Headers)
OnSessionEnd(ctx context.Context, callIdentifier *CallIdentifier, callInfo *livekit.SIPCallInfo, reason string)
}
type LatencyStats ¶ added in v1.3.0
LatencyStats is a lock-free accumulator for per-frame latency measurements. It tracks count, sum (for average), and max.
func (*LatencyStats) Load ¶ added in v1.3.0
func (s *LatencyStats) Load() LatencyStatsSnapshot
func (*LatencyStats) Record ¶ added in v1.3.0
func (s *LatencyStats) Record(d time.Duration)
type LatencyStatsSnapshot ¶ added in v1.3.0
type MediaConf ¶
type MediaConf struct {
sdp.MediaConfig
Processor msdk.PCM16Processor
}
type MediaOptions ¶
type MediaPort ¶
type MediaPort struct {
// contains filtered or unexported fields
}
MediaPort combines all functionality related to sending and accepting SIP media.
func NewMediaPort ¶
func NewMediaPort(tid traceid.ID, log logger.Logger, mon *stats.CallMonitor, opts *MediaOptions, sampleRate int) (*MediaPort, error)
func NewMediaPortWith ¶
func (*MediaPort) DisableOut ¶
func (p *MediaPort) DisableOut()
func (*MediaPort) EnableTimeout ¶
func (*MediaPort) GetAudioWriter ¶
func (p *MediaPort) GetAudioWriter() msdk.PCM16Writer
GetAudioWriter returns audio writer that will send PCM to the destination via RTP.
func (*MediaPort) HandleDTMF ¶
HandleDTMF sets an incoming DTMF handler.
func (*MediaPort) SetAnswer ¶
func (p *MediaPort) SetAnswer(offer *sdp.Offer, answerData []byte, enc sdp.Encryption) (*MediaConf, []byte, error)
SetAnswer decodes and applies SDP answer for offer from NewOffer. SetConfig must be called with the decoded configuration.
func (*MediaPort) SetDTMFAudio ¶
SetDTMFAudio forces SIP to generate audio dTMF tones in addition to digital signals.
func (*MediaPort) SetOffer ¶
SetOffer decodes the offer from another party and returns encoded answer. To accept the offer, call SetConfig.
func (*MediaPort) SetTimeout ¶
func (*MediaPort) WriteAudioTo ¶
func (p *MediaPort) WriteAudioTo(w msdk.PCM16Writer)
WriteAudioTo sets audio writer that will receive decoded PCM from incoming RTP packets.
type MixerStatsSnapshot ¶
type MixerStatsSnapshot struct {
Tracks int64 `json:"tracks"`
TracksTotal uint64 `json:"tracks_total"`
Restarts uint64 `json:"restarts"`
TimingResets uint64 `json:"timing_resets"`
Mixes uint64 `json:"mixes"`
TimedMixes uint64 `json:"mixes_timed"`
JumpMixes uint64 `json:"mixes_jump"`
ZeroMixes uint64 `json:"mixes_zero"`
NegativeMixes uint64 `json:"mixes_negative"`
InputSamples uint64 `json:"input_samples"`
InputFrames uint64 `json:"input_frames"`
InputSamplesDropped uint64 `json:"input_samples_dropped"`
InputFramesDropped uint64 `json:"input_frames_dropped"`
MixedSamples uint64 `json:"mixed_samples"`
MixedFrames uint64 `json:"mixed_frames"`
OutputSamples uint64 `json:"output_samples"`
OutputFrames uint64 `json:"output_frames"`
WriteErrors uint64 `json:"write_errors"`
BlockedMixes uint64 `json:"blocked_mixes"`
}
type ParticipantConfig ¶
type ParticipantInfo ¶
type PendingTransfer ¶ added in v1.3.0
type PortStats ¶
type PortStats struct {
Streams atomic.Uint64
Packets atomic.Uint64
IgnoredPackets atomic.Uint64
InputPackets atomic.Uint64
FailedPackets atomic.Uint64
MuxStats rtpCountingStats
AudioPackets atomic.Uint64
AudioBytes atomic.Uint64
AudioInFrames atomic.Uint64
AudioInSamples atomic.Uint64
AudioOutFrames atomic.Uint64
AudioOutSamples atomic.Uint64
AudioRX atomic.Uint64 // based on AudioInSamples
AudioTX atomic.Uint64 // based on AudioOutSamples
DTMFPackets atomic.Uint64
DTMFBytes atomic.Uint64
JitterBufferPacketsLost atomic.Uint64
JitterBufferPacketsDropped atomic.Uint64
LatencyInE2E LatencyStats
LatencyOut LatencyStats
Closed atomic.Bool
// contains filtered or unexported fields
}
func (*PortStats) Load ¶ added in v1.3.0
func (s *PortStats) Load() PortStatsSnapshot
type PortStatsSnapshot ¶
type PortStatsSnapshot struct {
Streams uint64 `json:"streams"`
Packets uint64 `json:"packets"`
IgnoredPackets uint64 `json:"packets_ignored"`
InputPackets uint64 `json:"packets_input"`
FailedPackets uint64 `json:"packets_failed"`
MuxPackets uint64 `json:"mux_packets"`
MuxBytes uint64 `json:"mux_bytes"`
MuxResets uint64 `json:"mux_resets"`
MuxGaps uint64 `json:"mux_gaps"`
MuxGapsSum uint64 `json:"mux_gaps_sum"`
MuxLate uint64 `json:"mux_late"`
MuxLateSum uint64 `json:"mux_late_sum"`
MuxRapidPackets uint64 `json:"mux_rapid_packets"`
MuxDelayedPackets uint64 `json:"mux_delayed_packets"`
MuxDelayedSum uint64 `json:"mux_delayed_sum"`
AudioPackets uint64 `json:"audio_packets"`
AudioBytes uint64 `json:"audio_bytes"`
AudioInFrames uint64 `json:"audio_in_frames"`
AudioInSamples uint64 `json:"audio_in_samples"`
AudioOutFrames uint64 `json:"audio_out_frames"`
AudioOutSamples uint64 `json:"audio_out_samples"`
AudioRX float64 `json:"audio_rx"`
AudioTX float64 `json:"audio_tx"`
DTMFPackets uint64 `json:"dtmf_packets"`
DTMFBytes uint64 `json:"dtmf_bytes"`
JitterBufferPacketsLost uint64 `json:"jitter_buffer_packets_lost"`
JitterBufferPacketsDropped uint64 `json:"jitter_buffer_packets_dropped"`
LatencyInE2E LatencyStatsSnapshot `json:"latency_in_e2e"`
LatencyOut LatencyStatsSnapshot `json:"latency_out"`
Closed bool `json:"closed"`
}
type ReasonHeader ¶
func ParseReasonHeader ¶
func ParseReasonHeader(header string) (ReasonHeader, error)
func (ReasonHeader) IsNormal ¶
func (r ReasonHeader) IsNormal() bool
func (ReasonHeader) IsZero ¶
func (r ReasonHeader) IsZero() bool
func (ReasonHeader) String ¶
func (r ReasonHeader) String() string
type RequestHandler ¶
type RequestHandler func(req *sip.Request, tx sip.ServerTransaction) bool
type Room ¶
type Room struct {
// contains filtered or unexported fields
}
func (*Room) CloseOutput ¶
func (*Room) CloseWithReason ¶
func (r *Room) CloseWithReason(reason livekit.DisconnectReason) error
func (*Room) NewParticipantTrack ¶
func (r *Room) NewParticipantTrack(sampleRate int) (msdk.WriteCloser[msdk.PCM16Sample], error)
func (*Room) Participant ¶
func (r *Room) Participant() ParticipantInfo
func (*Room) SendData ¶
func (r *Room) SendData(data lksdk.DataPacket, opts ...lksdk.DataPublishOption) error
func (*Room) SetDTMFOutput ¶
func (*Room) Subscribed ¶
func (r *Room) Subscribed() <-chan struct{}
func (*Room) SwapOutput ¶
func (r *Room) SwapOutput(out msdk.PCM16Writer) msdk.PCM16Writer
SwapOutput sets room audio output and returns the old one. Caller is responsible for closing the old writer.
type RoomConfig ¶
type RoomConfig struct {
WsUrl string
Token string
RoomName string
Participant ParticipantConfig
RoomPreset string
RoomConfig *livekit.RoomConfiguration
JitterBuf bool
LogSignalChanges bool
}
type RoomInterface ¶ added in v1.3.0
type RoomInterface interface {
Connect(conf *config.Config, rconf RoomConfig) error
Closed() <-chan struct{}
Subscribed() <-chan struct{}
Room() *lksdk.Room
Subscribe()
Output() msdk.Writer[msdk.PCM16Sample]
SwapOutput(out msdk.PCM16Writer) msdk.PCM16Writer
CloseOutput() error
SetDTMFOutput(w dtmf.Writer)
Close() error
CloseWithReason(reason livekit.DisconnectReason) error
Participant() ParticipantInfo
NewParticipantTrack(sampleRate int) (msdk.WriteCloser[msdk.PCM16Sample], error)
SendData(data lksdk.DataPacket, opts ...lksdk.DataPublishOption) error
NewTrack() *mixer.Input
}
RoomInterface defines the interface for room operations
func DefaultGetRoomFunc ¶ added in v1.3.0
func DefaultGetRoomFunc(log logger.Logger, st *RoomStats) RoomInterface
type RoomStats ¶
type RoomStats struct {
PublishedFrames atomic.Uint64
PublishedSamples atomic.Uint64
PublishTX atomic.Uint64
JitterBufferPacketsLost atomic.Uint64
JitterBufferPacketsDropped atomic.Uint64
LatencyOutRecv LatencyStats // measures track recv → opus decode → mixer input.
Mixer mixer.Stats
Closed atomic.Bool
// contains filtered or unexported fields
}
func (*RoomStats) Load ¶ added in v1.3.0
func (s *RoomStats) Load() RoomStatsSnapshot
type RoomStatsSnapshot ¶
type RoomStatsSnapshot struct {
// Stats quantifying total incoming traffic from all tracks
InputPackets uint64 `json:"input_packets"`
InputBytes uint64 `json:"input_bytes"`
Resets uint64 `json:"resets"`
Gaps uint64 `json:"gaps"`
GapsSum uint64 `json:"gaps_sum"`
Late uint64 `json:"late"`
LateSum uint64 `json:"late_sum"`
DelayedPackets uint64 `json:"delayed_packets"`
DelayedSum uint64 `json:"delayed_sum"`
RapidPackets uint64 `json:"rapid_packets"`
DataPackets uint64 `json:"data_packets"`
// Stats quantifying total outgoing traffic
PublishedFrames uint64 `json:"published_frames"`
PublishedSamples uint64 `json:"published_samples"`
PublishTX float64 `json:"publish_tx"`
JitterBufferPacketsLost uint64 `json:"jitter_buffer_packets_lost"`
JitterBufferPacketsDropped uint64 `json:"jitter_buffer_packets_dropped"`
LatencyOutRecv LatencyStatsSnapshot `json:"latency_out_recv"`
Closed bool `json:"closed"`
}
type SIPClient ¶ added in v1.3.0
type SIPClient interface {
TransactionRequest(req *sip.Request, options ...sipgo.ClientRequestOption) (sip.ClientTransaction, error)
WriteRequest(req *sip.Request, options ...sipgo.ClientRequestOption) error
Close() error
}
An interface mirroring sipgo.Client to be able to mock it in tests. Note: *sipgo.Client implements this interface directly, so no wrapper is needed.
func DefaultGetSipClientFunc ¶ added in v1.3.0
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
func NewServer ¶
func NewServer(region string, conf *config.Config, log logger.Logger, mon *stats.Monitor, getIOClient GetIOInfoClient, options ...ServerOption) *Server
func (*Server) ContactURI ¶
func (*Server) DeregisterTransferSIPParticipant ¶
func (*Server) RegisterTransferSIPParticipant ¶
func (*Server) SetHandler ¶
func (*Server) Start ¶
func (s *Server) Start(agent *sipgo.UserAgent, sc *ServiceConfig, tlsConf *tls.Config, unhandled RequestHandler) error
type ServerOption ¶ added in v1.3.0
type ServerOption func(s *Server)
func WithClient ¶ added in v1.3.0
func WithClient(cli *Client) ServerOption
func WithGetRoomServer ¶ added in v1.3.0
func WithGetRoomServer(fn GetRoomFunc) ServerOption
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
func NewService ¶
func (*Service) ActiveCalls ¶
func (s *Service) ActiveCalls() ActiveCalls
func (*Service) CreateSIPParticipant ¶
func (s *Service) CreateSIPParticipant(ctx context.Context, req *rpc.InternalCreateSIPParticipantRequest) (*rpc.InternalCreateSIPParticipantResponse, error)
func (*Service) CreateSIPParticipantAffinity ¶
func (*Service) SetHandler ¶
func (*Service) TransferSIPParticipant ¶
type ServiceConfig ¶
func GetServiceConfig ¶
func GetServiceConfig(conf *config.Config) (*ServiceConfig, error)
type SignalLogger ¶ added in v1.3.0
type SignalLogger struct {
// contains filtered or unexported fields
}
SignalLogger keeps internal state of whether we're in voice or silence, using RMS → dBFS and a fixed noise floor with hysteresis. It implements msdk.PCM16Writer and logs state changes.
func (*SignalLogger) Close ¶ added in v1.3.0
func (s *SignalLogger) Close() error
func (*SignalLogger) SampleRate ¶ added in v1.3.0
func (s *SignalLogger) SampleRate() int
func (*SignalLogger) String ¶ added in v1.3.0
func (s *SignalLogger) String() string
func (*SignalLogger) WriteSample ¶ added in v1.3.0
func (s *SignalLogger) WriteSample(sample msdk.PCM16Sample) error
type SignalLoggerOption ¶ added in v1.3.0
type SignalLoggerOption func(*SignalLogger) error
func WithEnterVoiceOffsetDB ¶ added in v1.3.0
func WithEnterVoiceOffsetDB(db float64) SignalLoggerOption
WithEnterVoiceOffsetDB sets the offset (dB) above noise floor to enter voice. Default is DefaultEnterVoiceOffsetDB.
func WithExitVoiceOffsetDB ¶ added in v1.3.0
func WithExitVoiceOffsetDB(db float64) SignalLoggerOption
WithExitVoiceOffsetDB sets the offset (dB) above noise floor to exit voice. Default is DefaultExitVoiceOffsetDB.
func WithHangoverDuration ¶ added in v1.3.0
func WithHangoverDuration(hangoverDuration time.Duration) SignalLoggerOption
func WithNoiseFloor ¶ added in v1.3.0
func WithNoiseFloor(noiseFloorDB float64) SignalLoggerOption
WithNoiseFloor sets the noise floor in dBFS (e.g. -40). Must be >= minDBFS.
type SilenceSuppressionOption ¶ added in v1.3.0
type SilenceSuppressionOption func(*silenceFiller)
func WithMaxGapSize ¶ added in v1.3.0
func WithMaxGapSize(maxGapSize int) SilenceSuppressionOption
type StateUpdater ¶
type StateUpdater interface {
UpdateSIPCallState(ctx context.Context, req *rpc.UpdateSIPCallStateRequest, opts ...psrpc.RequestOption) (*emptypb.Empty, error)
}
type StatsSnapshot ¶
type StatsSnapshot struct {
Port PortStatsSnapshot `json:"port"`
Room RoomStatsSnapshot `json:"room"`
Mixer MixerStatsSnapshot `json:"mixer"`
Closed bool `json:"closed"`
}
type Transport ¶
type Transport string
func TransportFrom ¶
func TransportFrom(t livekit.SIPTransport) Transport