peer

package
v0.0.7-4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 18, 2023 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Configs

type Configs struct {
	MaxMTU     int                   // setting for max buffer
	TurnConfig *webrtc.Configuration // turn server

	Codec *string
	// peer init
	Bitrate          *int
	Role             *string
	PeerConnectionID *string
	PayloadType      int
	AllowUpVideo     bool
	AllowUpAudio     bool
	AllowDownVideo   bool
	AllowDownAudio   bool

	IsCreateDC bool
}

Configs setting init peer config

type Connection

type Connection interface {
	Init() (*webrtc.PeerConnection, error)

	GetRole() *string
	GetCookieID() *string
	GetPeerConnectionID() *string
	GetLocalDescription() (*webrtc.SessionDescription, error)

	GetAudioRTPTrack(trackID *string) *webrtc.TrackLocalStaticRTP
	GetVideoRTPTrack(trackID *string) *webrtc.TrackLocalStaticRTP

	ReplaceAudioTrack(trackID, codec *string) error
	ReplaceVideoTrack(trackID, codec *string) error

	CreateOffer(iceRestart bool) error
	CreateAnswer() error
	Close()

	AddVideoTrack(trackConfig *TrackConfig) error
	AddAudioTrack(trackConfig *TrackConfig) error
	RemoveVideoTrack(trackID *string) error
	RemoveAudioTrack(trackID *string) error

	AddSDP(values interface{}) error
	AddOffer(offer *webrtc.SessionDescription) error
	AddAnswer(answer *webrtc.SessionDescription) error
	AddICECandidate(icecandidate interface{}) error

	AddVideoRTP(trackID, peerConnectionID *string, packet *rtp.Packet) error
	AddAudioRTP(trackID, peerConnectionID *string, packet *rtp.Packet) error
	AddVideoSample(trackID, peerConnectionID *string, sample *media.Sample) error
	AddAudioSample(trackID, peerConnectionID *string, sample *media.Sample) error

	HandleVideoTrack(remoteTrack *webrtc.TrackRemote)

	// SetCodecPreferences sets preferred list of supported codecs
	// if codecs is empty or nil we reset to default from MediaEngine
	SetCodecPreferences(payLoadType *int, trackConfig *TrackConfig) error

	IsConnected() bool
	SetIsConnected(states bool)

	// IsReceivedData linter
	IsReceivedData(trackID *string) bool
	// IsFirstInit return 1 if is first init, 2 is received data and not
	IsFirstInit(trackID *string) string

	InitDC(
		handleOnDatachannel func(pcID *string, d *webrtc.DataChannel),
	) (*webrtc.PeerConnection, error)

	SendPictureLossIndication()

	AddDuplicated(t string, element bool)
	GetDuplicated(t string) bool
	DeleteDuplicated(t string)

	// SetPliInterval linter
	SetPliInterval(int)

	// init logger
	SetLogger(log utils.Log)
}

Connection linter

type Connections

type Connections interface {
	Close()
	AddConnection(
		configs *Configs,
		handleOnTrack func(signalID, peerConnectionID *string, remoteTrack *webrtc.TrackRemote),
		handleAddPeer func(signalID, role, peerConnectionID *string),
		handleFailedPeer func(signalID, role, peerConnectionID *string),
		handleCandidate func(signalID, peerConnectionID *string, candidate *webrtc.ICECandidate),
		handleOnNegotiationNeeded func(signalID, peerConnectionID, cookieID *string),
	) (*Peer, error)

	RemoveConnection(
		peerConnectionID *string,
	)

	GetAllConnection() []*Peer
	GetAllPeerConnectionID() []string
	GetConnection(peerConnectionID *string) *Peer
	GetStates(temp map[string]string)        // get all connection states
	GetState(peerConnectionID string) string // get single connection state

	// AddCandidate(peerConnectionID *string, value interface{}) error
	AddSDP(peerConnectionID *string, value interface{}) error

	CountAllPeer() int64

	AddDCConnection(
		configs *Configs,
		handleOnDatachannel func(pcID *string, d *webrtc.DataChannel),
		handleAddDCPeer func(signalID, role, peerConnectionID *string),
		handleFailedDCPeer func(signalID, role, peerConnectionID *string),
		handleCandidate func(signalID, peerConnectionID *string, candidate *webrtc.ICECandidate),
	) (*Peer, error)
}

Connections linter

func NewPeers

func NewPeers(
	signalID *string,
	logger utils.Log,
	audioFwdm *utils.ForwarderMannager,
	videoFwdm *utils.ForwarderMannager,
) Connections

NewPeers mutilpe peer controller

type LocalTracks

type LocalTracks struct {
	// contains filtered or unexported fields
}

LocalTracks control sending track

func NewTracks

func NewTracks(
	conn *webrtc.PeerConnection,
) *LocalTracks

NewTracks linter

type Peer

type Peer struct {
	// contains filtered or unexported fields
}

Peer linter

func NewPeerConnection

func NewPeerConnection(configs *Configs) *Peer

NewPeerConnection linter

func (*Peer) AddAnswer

func (p *Peer) AddAnswer(answer *webrtc.SessionDescription) error

AddAnswer add client answer and set remote desc

func (*Peer) AddAudioRTP

func (p *Peer) AddAudioRTP(trackID, peerConnectionID *string, packet *rtp.Packet) error

AddAudioRTP linter

func (*Peer) AddAudioSample

func (p *Peer) AddAudioSample(trackID, peerConnectionID *string, sample *media.Sample) error

AddAudioSample linter

func (*Peer) AddAudioTrack

func (p *Peer) AddAudioTrack(trackConfig *TrackConfig) error

AddAudioTrack linter

func (*Peer) AddDuplicated

func (p *Peer) AddDuplicated(t string, element bool)

AddDuplicated to add and automatic delete after 10s

func (*Peer) AddICECandidate

func (p *Peer) AddICECandidate(icecandidate interface{}) error

AddICECandidate to add candidate

func (*Peer) AddOffer

func (p *Peer) AddOffer(offer *webrtc.SessionDescription) error

AddOffer add client offer and return answer

func (*Peer) AddSDP

func (p *Peer) AddSDP(values interface{}) error

AddSDP add sdp, input raw data or utils.SDPTemp

func (*Peer) AddVideoRTP

func (p *Peer) AddVideoRTP(trackID, peerConnectionID *string, packet *rtp.Packet) error

AddVideoRTP linter

func (*Peer) AddVideoSample

func (p *Peer) AddVideoSample(trackID, peerConnectionID *string, sample *media.Sample) error

AddVideoSample linter

func (*Peer) AddVideoTrack

func (p *Peer) AddVideoTrack(trackConfig *TrackConfig) error

AddVideoTrack linter

func (*Peer) Close

func (p *Peer) Close()

Close close peer connection

func (*Peer) CreateAnswer

func (p *Peer) CreateAnswer() error

CreateAnswer add answer

func (*Peer) CreateOffer

func (p *Peer) CreateOffer(iceRestart bool) error

CreateOffer add offer

func (*Peer) DeleteDuplicated

func (p *Peer) DeleteDuplicated(t string)

DeleteDuplicated linter

func (*Peer) Error added in v0.0.2

func (p *Peer) Error(v string, tags map[string]any)

func (*Peer) GetAudioRTPTrack

func (p *Peer) GetAudioRTPTrack(trackID *string) *webrtc.TrackLocalStaticRTP

GetAudioRTPTrack linter

func (*Peer) GetCookieID

func (p *Peer) GetCookieID() *string

GetCookieID linter

func (*Peer) GetDuplicated

func (p *Peer) GetDuplicated(t string) bool

GetDuplicated check duplicated

func (*Peer) GetLocalDescription

func (p *Peer) GetLocalDescription() (*webrtc.SessionDescription, error)

GetLocalDescription get current peer local description to send to client

func (*Peer) GetPeerConnectionID

func (p *Peer) GetPeerConnectionID() *string

GetPeerConnectionID linter

func (*Peer) GetRole

func (p *Peer) GetRole() *string

GetRole linter

func (*Peer) GetVideoRTPTrack

func (p *Peer) GetVideoRTPTrack(trackID *string) *webrtc.TrackLocalStaticRTP

GetVideoRTPTrack linter

func (*Peer) HandleVideoTrack

func (p *Peer) HandleVideoTrack(remoteTrack *webrtc.TrackRemote)

HandleVideoTrack handle all video track

func (*Peer) Info added in v0.0.2

func (p *Peer) Info(v string, tags map[string]any)

func (*Peer) Init

func (p *Peer) Init() (*webrtc.PeerConnection, error)

Init linter

func (*Peer) InitDC

func (p *Peer) InitDC(
	handleOnDatachannel func(pcID *string, d *webrtc.DataChannel),
) (*webrtc.PeerConnection, error)

InitDC linter

func (*Peer) IsConnected

func (p *Peer) IsConnected() bool

IsConnected check this is init connection or retrieve

func (*Peer) IsFirstInit

func (p *Peer) IsFirstInit(trackID *string) string

IsFirstInit return 1 if is first init, 2 is received data and not

func (*Peer) IsReceivedData

func (p *Peer) IsReceivedData(trackID *string) bool

IsReceivedData linter

func (*Peer) RemoveAudioTrack

func (p *Peer) RemoveAudioTrack(trackID *string) error

RemoveAudioTrack remove peering existing track

func (*Peer) RemoveVideoTrack

func (p *Peer) RemoveVideoTrack(trackID *string) error

RemoveVideoTrack remove peering existing track

func (*Peer) ReplaceAudioTrack

func (p *Peer) ReplaceAudioTrack(trackID, codec *string) error

ReplaceAudioTrack remove peering existing track

func (*Peer) ReplaceVideoTrack

func (p *Peer) ReplaceVideoTrack(trackID, codec *string) error

ReplaceVideoTrack remove peering existing track

func (*Peer) SendPictureLossIndication

func (p *Peer) SendPictureLossIndication()

SendPictureLossIndication linter

func (*Peer) SetCodecPreferences

func (p *Peer) SetCodecPreferences(payLoadType *int, trackConfig *TrackConfig) error

SetCodecPreferences linter

func (*Peer) SetIsConnected

func (p *Peer) SetIsConnected(states bool)

SetIsConnected linter

func (*Peer) SetLogger added in v0.0.5

func (p *Peer) SetLogger(log utils.Log)

func (*Peer) SetPliInterval

func (p *Peer) SetPliInterval(interval int)

SetPliInterval linter

func (*Peer) Stack added in v0.0.2

func (p *Peer) Stack(v ...string)

func (*Peer) Warn added in v0.0.2

func (p *Peer) Warn(v string, tags map[string]any)

type Peers

type Peers struct {
	// contains filtered or unexported fields
}

Peers handle mutilpe peer connection

func (*Peers) AddCandidate

func (p *Peers) AddCandidate(peerConnectionID *string, value interface{}) error

AddCandidate linter

func (*Peers) AddConnection

func (p *Peers) AddConnection(
	configs *Configs,
	handleOnTrack func(signalID, peerConnectionID *string, remoteTrack *webrtc.TrackRemote),
	handleAddPeer func(signalID, role, peerConnectionID *string),
	handleFailedPeer func(signalID, role, peerConnectionID *string),
	handleCandidate func(signalID, peerConnectionID *string, candidate *webrtc.ICECandidate),
	handleOnNegotiationNeeded func(signalID, peerConnectionID, cookieID *string),
) (*Peer, error)

AddConnection add new peer connection

func (*Peers) AddDCConnection

func (p *Peers) AddDCConnection(
	configs *Configs,
	handleOnDatachannel func(pcID *string, d *webrtc.DataChannel),
	handleAddDCPeer func(signalID, role, peerConnectionID *string),
	handleFailedDCPeer func(signalID, role, peerConnectionID *string),
	handleCandidate func(signalID, peerConnectionID *string, candidate *webrtc.ICECandidate),
) (*Peer, error)

AddDCConnection linter

func (*Peers) AddSDP

func (p *Peers) AddSDP(peerConnectionID *string, value interface{}) error

AddSDP linter

func (*Peers) Close

func (p *Peers) Close()

Close linter

func (*Peers) CountAllPeer

func (p *Peers) CountAllPeer() int64

CountAllPeer count all existing peer

func (*Peers) GetAllConnection

func (p *Peers) GetAllConnection() []*Peer

GetAllConnection return all connection

func (*Peers) GetAllPeerConnectionID

func (p *Peers) GetAllPeerConnectionID() []string

GetAllPeerConnectionID return all streamID

func (*Peers) GetConnection

func (p *Peers) GetConnection(peerConnectionID *string) *Peer

GetConnection get peer connection

func (*Peers) GetState

func (p *Peers) GetState(peerConnectionID string) string

GetState return a single peer connection state

func (*Peers) GetStates

func (p *Peers) GetStates(temp map[string]string)

GetStates return all connection state

func (*Peers) RemoveConnection

func (p *Peers) RemoveConnection(peerConnectionID *string)

RemoveConnection remove existing connection

type TrackConfig

type TrackConfig struct {
	// contains filtered or unexported fields
}

TrackConfig setting init track config

func NewTrackConfig

func NewTrackConfig(
	trackID *string,
	codec string,
	role *string,
	kind *string,
) *TrackConfig

NewTrackConfig linter

func (*TrackConfig) GetRTPCodecCapability

func (t *TrackConfig) GetRTPCodecCapability(payloadType *int) []webrtc.RTPCodecParameters

GetRTPCodecCapability for add setCodecPreferences

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL