clipboard sync and some minor fixes

This commit is contained in:
Craig
2020-01-25 14:29:52 +00:00
parent e3a73aa264
commit 56a5dcf77f
22 changed files with 359 additions and 88 deletions

View File

@ -8,8 +8,22 @@ import (
"github.com/rs/zerolog"
)
type nulllog struct{}
func (l nulllog) Trace(msg string) {}
func (l nulllog) Tracef(format string, args ...interface{}) {}
func (l nulllog) Debug(msg string) {}
func (l nulllog) Debugf(format string, args ...interface{}) {}
func (l nulllog) Info(msg string) {}
func (l nulllog) Infof(format string, args ...interface{}) {}
func (l nulllog) Warn(msg string) {}
func (l nulllog) Warnf(format string, args ...interface{}) {}
func (l nulllog) Error(msg string) {}
func (l nulllog) Errorf(format string, args ...interface{}) {}
type logger struct {
logger zerolog.Logger
logger zerolog.Logger
subsystem string
}
func (l logger) Trace(msg string) { l.logger.Trace().Msg(msg) }
@ -18,16 +32,18 @@ func (l logger) Debug(msg string) { l.logger.Debug().Ms
func (l logger) Debugf(format string, args ...interface{}) { l.logger.Debug().Msgf(format, args...) }
func (l logger) Info(msg string) {
if strings.Contains(msg, "packetio.Buffer is full") {
l.logger.Panic().Msg(msg)
//l.logger.Panic().Msg(msg)
return
}
l.logger.Info().Msg(msg)
}
func (l logger) Infof(format string, args ...interface{}) {
msg := fmt.Sprintf(format, args...)
if strings.Contains(msg, "packetio.Buffer is full") {
l.logger.Panic().Msg(msg)
// l.logger.Panic().Msg(msg)
return
}
l.logger.Info().Msgf(format, args...)
l.logger.Info().Msg(msg)
}
func (l logger) Warn(msg string) { l.logger.Warn().Msg(msg) }
func (l logger) Warnf(format string, args ...interface{}) { l.logger.Warn().Msgf(format, args...) }
@ -39,7 +55,12 @@ type loggerFactory struct {
}
func (l loggerFactory) NewLogger(subsystem string) logging.LeveledLogger {
if subsystem == "sctp" {
return nulllog{}
}
return logger{
logger: l.logger.With().Str("subsystem", subsystem).Logger(),
subsystem: subsystem,
logger: l.logger.With().Str("subsystem", subsystem).Logger(),
}
}

View File

@ -17,7 +17,7 @@ func (m *WebRTCManager) createVideoTrack(engine webrtc.MediaEngine) (*webrtc.Tra
}
if codec == nil || codec.PayloadType == 0 {
return nil, fmt.Errorf("remote peer does not support %s", m.videoPipeline.CodecName)
return nil, fmt.Errorf("remote peer does not support video codec %s", m.videoPipeline.CodecName)
}
return webrtc.NewTrack(codec.PayloadType, rand.Uint32(), "stream", "stream", codec)
@ -33,7 +33,7 @@ func (m *WebRTCManager) createAudioTrack(engine webrtc.MediaEngine) (*webrtc.Tra
}
if codec == nil || codec.PayloadType == 0 {
return nil, fmt.Errorf("remote peer does not support %s", m.audioPipeline.CodecName)
return nil, fmt.Errorf("remote peer does not support audio codec %s", m.audioPipeline.CodecName)
}
return webrtc.NewTrack(codec.PayloadType, rand.Uint32(), "stream", "stream", codec)

View File

@ -133,32 +133,32 @@ func (m *WebRTCManager) Shutdown() error {
}
func (m *WebRTCManager) CreatePeer(id string, sdp string) (string, types.Peer, error) {
// create SessionDescription
// Create SessionDescription
description := webrtc.SessionDescription{
SDP: sdp,
Type: webrtc.SDPTypeOffer,
}
// create MediaEngine based off sdp
// Create MediaEngine based off sdp
engine := webrtc.MediaEngine{}
engine.PopulateFromSDP(description)
// create API with MediaEngine and SettingEngine
// Create API with MediaEngine and SettingEngine
api := webrtc.NewAPI(webrtc.WithMediaEngine(engine), webrtc.WithSettingEngine(m.setings))
// create new peer connection
// Create new peer connection
connection, err := api.NewPeerConnection(*m.configuration)
if err != nil {
return "", nil, err
}
// create video track
// Create video track
video, err := m.createVideoTrack(engine)
if err != nil {
return "", nil, err
}
videoTransceiver, err := connection.AddTransceiverFromTrack(video, webrtc.RtpTransceiverInit{
_, err = connection.AddTransceiverFromTrack(video, webrtc.RtpTransceiverInit{
Direction: webrtc.RTPTransceiverDirectionSendonly,
})
@ -166,13 +166,13 @@ func (m *WebRTCManager) CreatePeer(id string, sdp string) (string, types.Peer, e
return "", nil, err
}
// create audio track
// Create audio track
audio, err := m.createAudioTrack(engine)
if err != nil {
return "", nil, err
}
audioTransceiver, err := connection.AddTransceiverFromTrack(audio, webrtc.RtpTransceiverInit{
_, err = connection.AddTransceiverFromTrack(audio, webrtc.RtpTransceiverInit{
Direction: webrtc.RTPTransceiverDirectionSendonly,
})
@ -182,15 +182,25 @@ func (m *WebRTCManager) CreatePeer(id string, sdp string) (string, types.Peer, e
// clear the Transceiver bufers
go func() {
for {
if _, err := audioTransceiver.Sender.ReadRTCP(); err != nil {
return
}
defer func() {
m.logger.Warn().Msgf("ReadRTCP shutting down")
}()
if _, err = videoTransceiver.Sender.ReadRTCP(); err != nil {
return
}
}
/*
for {
packet, err := videoTransceiver.Sender.ReadRTCP()
if err != nil {
return
}
m.logger.Debug().Msgf("vReadRTCP %v", packet)
packet, err = audioTransceiver.Sender.ReadRTCP()
if err != nil {
return
}
m.logger.Debug().Msgf("aReadRTCP %v", packet)
}
*/
}()
// set remote description