mirror of
https://github.com/openlibrecommunity/olcrtc.git
synced 2026-05-31 01:19:43 +00:00
refactor(provider): implement AddVideoTrack in all providers
This commit is contained in:
@@ -533,6 +533,14 @@ func (p *Peer) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// AddVideoTrack adds a video track to the publisher peer connection.
|
||||
func (p *Peer) AddVideoTrack(track *webrtc.TrackLocalStaticRTP) (*webrtc.RTPSender, error) {
|
||||
if p.pcPub == nil {
|
||||
return nil, fmt.Errorf("publisher peer connection not initialized")
|
||||
}
|
||||
return p.pcPub.AddTrack(track)
|
||||
}
|
||||
|
||||
// SetReconnectCallback sets the callback for reconnection events.
|
||||
func (p *Peer) SetReconnectCallback(cb func(*webrtc.DataChannel)) {
|
||||
p.onReconnect = cb
|
||||
|
||||
@@ -72,3 +72,8 @@ func (j *jazzProvider) GetSendQueue() chan []byte {
|
||||
func (j *jazzProvider) GetBufferedAmount() uint64 {
|
||||
return j.peer.GetBufferedAmount()
|
||||
}
|
||||
|
||||
// AddVideoTrack adds a video track to the jazz connection.
|
||||
func (j *jazzProvider) AddVideoTrack(track *webrtc.TrackLocalStaticRTP) (*webrtc.RTPSender, error) {
|
||||
return j.peer.AddVideoTrack(track)
|
||||
}
|
||||
|
||||
@@ -1160,3 +1160,11 @@ func (p *Peer) CanSend() bool {
|
||||
}
|
||||
return len(p.sendQueue) < 4000
|
||||
}
|
||||
|
||||
// AddVideoTrack adds a video track to the publisher peer connection.
|
||||
func (p *Peer) AddVideoTrack(track *webrtc.TrackLocalStaticRTP) (*webrtc.RTPSender, error) {
|
||||
if p.pcPub == nil {
|
||||
return nil, fmt.Errorf("publisher peer connection not initialized")
|
||||
}
|
||||
return p.pcPub.AddTrack(track)
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ type telemostProvider struct {
|
||||
peer *Peer
|
||||
}
|
||||
|
||||
// New creates a new Yandex Telemost provider instance.
|
||||
// New creates a new Telemost provider instance.
|
||||
func New(ctx context.Context, cfg provider.Config) (provider.Provider, error) {
|
||||
peer, err := NewPeer(ctx, cfg.RoomURL, cfg.Name, cfg.OnData)
|
||||
if err != nil {
|
||||
@@ -72,3 +72,9 @@ func (t *telemostProvider) GetSendQueue() chan []byte {
|
||||
func (t *telemostProvider) GetBufferedAmount() uint64 {
|
||||
return t.peer.GetBufferedAmount()
|
||||
}
|
||||
|
||||
// AddVideoTrack adds a video track to the telemost connection.
|
||||
func (t *telemostProvider) AddVideoTrack(track *webrtc.TrackLocalStaticRTP) (*webrtc.RTPSender, error) {
|
||||
return t.peer.AddVideoTrack(track)
|
||||
}
|
||||
|
||||
|
||||
@@ -193,3 +193,11 @@ func (p *Peer) GetSendQueue() chan []byte {
|
||||
func (p *Peer) GetBufferedAmount() uint64 {
|
||||
return 0
|
||||
}
|
||||
|
||||
// AddVideoTrack adds a video track to the publisher peer connection.
|
||||
func (p *Peer) AddVideoTrack(track *webrtc.TrackLocalStaticRTP) (*webrtc.RTPSender, error) {
|
||||
if p.pcPub == nil {
|
||||
return nil, fmt.Errorf("publisher peer connection not initialized")
|
||||
}
|
||||
return p.pcPub.AddTrack(track)
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
"github.com/pion/webrtc/v4"
|
||||
)
|
||||
|
||||
type wbstreamProvider struct {
|
||||
type wbStreamProvider struct {
|
||||
peer *Peer
|
||||
}
|
||||
|
||||
@@ -20,55 +20,61 @@ func New(ctx context.Context, cfg provider.Config) (provider.Provider, error) {
|
||||
return nil, fmt.Errorf("create wbstream peer: %w", err)
|
||||
}
|
||||
|
||||
return &wbstreamProvider{peer: peer}, nil
|
||||
return &wbStreamProvider{peer: peer}, nil
|
||||
}
|
||||
|
||||
// Connect starts the provider connection.
|
||||
func (w *wbstreamProvider) Connect(ctx context.Context) error {
|
||||
func (w *wbStreamProvider) Connect(ctx context.Context) error {
|
||||
return w.peer.Connect(ctx)
|
||||
}
|
||||
|
||||
// Send transmits data to the room.
|
||||
func (w *wbstreamProvider) Send(data []byte) error {
|
||||
func (w *wbStreamProvider) Send(data []byte) error {
|
||||
return w.peer.Send(data)
|
||||
}
|
||||
|
||||
// Close terminates the provider connection.
|
||||
func (w *wbstreamProvider) Close() error {
|
||||
func (w *wbStreamProvider) Close() error {
|
||||
return w.peer.Close()
|
||||
}
|
||||
|
||||
// SetReconnectCallback sets the function to call on reconnection.
|
||||
func (w *wbstreamProvider) SetReconnectCallback(cb func(*webrtc.DataChannel)) {
|
||||
func (w *wbStreamProvider) SetReconnectCallback(cb func(*webrtc.DataChannel)) {
|
||||
w.peer.SetReconnectCallback(cb)
|
||||
}
|
||||
|
||||
// SetShouldReconnect sets the function to determine if reconnection should occur.
|
||||
func (w *wbstreamProvider) SetShouldReconnect(fn func() bool) {
|
||||
func (w *wbStreamProvider) SetShouldReconnect(fn func() bool) {
|
||||
w.peer.SetShouldReconnect(fn)
|
||||
}
|
||||
|
||||
// SetEndedCallback sets the function to call when the session ends.
|
||||
func (w *wbstreamProvider) SetEndedCallback(cb func(string)) {
|
||||
func (w *wbStreamProvider) SetEndedCallback(cb func(string)) {
|
||||
w.peer.SetEndedCallback(cb)
|
||||
}
|
||||
|
||||
// WatchConnection monitors the provider connection state.
|
||||
func (w *wbstreamProvider) WatchConnection(ctx context.Context) {
|
||||
func (w *wbStreamProvider) WatchConnection(ctx context.Context) {
|
||||
w.peer.WatchConnection(ctx)
|
||||
}
|
||||
|
||||
// CanSend checks if the provider is ready to transmit data.
|
||||
func (w *wbstreamProvider) CanSend() bool {
|
||||
func (w *wbStreamProvider) CanSend() bool {
|
||||
return w.peer.CanSend()
|
||||
}
|
||||
|
||||
// GetSendQueue returns the data transmission queue.
|
||||
func (w *wbstreamProvider) GetSendQueue() chan []byte {
|
||||
func (w *wbStreamProvider) GetSendQueue() chan []byte {
|
||||
return w.peer.GetSendQueue()
|
||||
}
|
||||
|
||||
// GetBufferedAmount returns the current WebRTC buffered amount.
|
||||
func (w *wbstreamProvider) GetBufferedAmount() uint64 {
|
||||
func (w *wbStreamProvider) GetBufferedAmount() uint64 {
|
||||
return w.peer.GetBufferedAmount()
|
||||
}
|
||||
|
||||
// AddVideoTrack adds a video track to the wbstream connection.
|
||||
func (w *wbStreamProvider) AddVideoTrack(track *webrtc.TrackLocalStaticRTP) (*webrtc.RTPSender, error) {
|
||||
return w.peer.AddVideoTrack(track)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user