mirror of
https://github.com/jech/galene.git
synced 2024-11-22 16:45:58 +01:00
Generate transceivers from incoming SDP.
This commit is contained in:
parent
1ca4c76667
commit
dad113c1f9
3 changed files with 23 additions and 22 deletions
1
go.mod
1
go.mod
|
@ -8,6 +8,7 @@ require (
|
||||||
github.com/pion/ice/v2 v2.0.14
|
github.com/pion/ice/v2 v2.0.14
|
||||||
github.com/pion/rtcp v1.2.6
|
github.com/pion/rtcp v1.2.6
|
||||||
github.com/pion/rtp v1.6.2
|
github.com/pion/rtp v1.6.2
|
||||||
|
github.com/pion/sdp/v3 v3.0.3
|
||||||
github.com/pion/webrtc/v3 v3.0.2-0.20201230060242-921608c26b93
|
github.com/pion/webrtc/v3 v3.0.2-0.20201230060242-921608c26b93
|
||||||
golang.org/x/crypto v0.0.0-20201217014255-9d1352758620
|
golang.org/x/crypto v0.0.0-20201217014255-9d1352758620
|
||||||
)
|
)
|
||||||
|
|
|
@ -11,6 +11,7 @@ import (
|
||||||
|
|
||||||
"github.com/pion/rtcp"
|
"github.com/pion/rtcp"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
"github.com/pion/sdp/v3"
|
||||||
"github.com/pion/webrtc/v3"
|
"github.com/pion/webrtc/v3"
|
||||||
|
|
||||||
"github.com/jech/galene/conn"
|
"github.com/jech/galene/conn"
|
||||||
|
@ -458,13 +459,21 @@ func pushConn(up *rtpUpConnection, g *group.Group, cs []group.Client) {
|
||||||
}(g, cs)
|
}(g, cs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newUpConn(c group.Client, id string, labels map[string]string) (*rtpUpConnection, error) {
|
func newUpConn(c group.Client, id string, labels map[string]string, offer string) (*rtpUpConnection, error) {
|
||||||
|
var o sdp.SessionDescription
|
||||||
|
err := o.Unmarshal([]byte(offer))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
pc, err := c.Group().API().NewPeerConnection(*ice.ICEConfiguration())
|
pc, err := c.Group().API().NewPeerConnection(*ice.ICEConfiguration())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = pc.AddTransceiverFromKind(webrtc.RTPCodecTypeAudio,
|
for _, m := range o.MediaDescriptions {
|
||||||
|
_, err = pc.AddTransceiverFromKind(
|
||||||
|
webrtc.NewRTPCodecType(m.MediaName.Media),
|
||||||
webrtc.RtpTransceiverInit{
|
webrtc.RtpTransceiverInit{
|
||||||
Direction: webrtc.RTPTransceiverDirectionRecvonly,
|
Direction: webrtc.RTPTransceiverDirectionRecvonly,
|
||||||
},
|
},
|
||||||
|
@ -473,15 +482,6 @@ func newUpConn(c group.Client, id string, labels map[string]string) (*rtpUpConne
|
||||||
pc.Close()
|
pc.Close()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = pc.AddTransceiverFromKind(webrtc.RTPCodecTypeVideo,
|
|
||||||
webrtc.RtpTransceiverInit{
|
|
||||||
Direction: webrtc.RTPTransceiverDirectionRecvonly,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
pc.Close()
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
up := &rtpUpConnection{id: id, pc: pc, labels: labels}
|
up := &rtpUpConnection{id: id, pc: pc, labels: labels}
|
||||||
|
|
|
@ -206,7 +206,7 @@ func getUpConns(c *webClient) []*rtpUpConnection {
|
||||||
return up
|
return up
|
||||||
}
|
}
|
||||||
|
|
||||||
func addUpConn(c *webClient, id string, labels map[string]string) (*rtpUpConnection, bool, error) {
|
func addUpConn(c *webClient, id string, labels map[string]string, offer string) (*rtpUpConnection, bool, error) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
|
||||||
|
@ -222,7 +222,7 @@ func addUpConn(c *webClient, id string, labels map[string]string) (*rtpUpConnect
|
||||||
return old, false, nil
|
return old, false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
conn, err := newUpConn(c, id, labels)
|
conn, err := newUpConn(c, id, labels, offer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
|
@ -488,7 +488,7 @@ func gotOffer(c *webClient, id string, sdp string, renegotiate bool, labels map[
|
||||||
delUpConn(c, id)
|
delUpConn(c, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
up, isnew, err := addUpConn(c, id, labels)
|
up, isnew, err := addUpConn(c, id, labels, sdp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue