update gortsplib
This commit is contained in:
@@ -5,7 +5,7 @@ go 1.15
|
||||
require (
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
|
||||
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect
|
||||
github.com/aler9/gortsplib v0.0.0-20210316131127-50babb18c013
|
||||
github.com/aler9/gortsplib v0.0.0-20210316211856-c2de28c18558
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/fsnotify/fsnotify v1.4.9
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
|
||||
|
||||
@@ -2,8 +2,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafo
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=
|
||||
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
|
||||
github.com/aler9/gortsplib v0.0.0-20210316131127-50babb18c013 h1:VseNrDPM+21Uhsfn1FhR3NHDQWH8uB4YNe5zHkH1xcc=
|
||||
github.com/aler9/gortsplib v0.0.0-20210316131127-50babb18c013/go.mod h1:aj4kDzanb3JZ46sFywWShcsnqqXTLE/3PNjwDhQZGM0=
|
||||
github.com/aler9/gortsplib v0.0.0-20210316211856-c2de28c18558 h1:e1MhWMfd4vlPPk9WZHSTC/Muigq41/+A6PSrgaRFUDY=
|
||||
github.com/aler9/gortsplib v0.0.0-20210316211856-c2de28c18558/go.mod h1:aj4kDzanb3JZ46sFywWShcsnqqXTLE/3PNjwDhQZGM0=
|
||||
github.com/aler9/rtmp v0.0.0-20210309202041-2d7177b7300d h1:LAX8pNvYpGgFpKdbPpEZWjNkHbmyvjMrT3vO7s7aaKU=
|
||||
github.com/aler9/rtmp v0.0.0-20210309202041-2d7177b7300d/go.mod h1:vzuE21rowz+lT1NGsWbreIvYulgBpCGnQyeTyFblUHc=
|
||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||
|
||||
@@ -6,7 +6,6 @@ import (
|
||||
"io"
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
@@ -159,16 +158,9 @@ func (c *Client) run() {
|
||||
c.log(logger.Debug, "[s->c] %v", res)
|
||||
}
|
||||
|
||||
onDescribe := func(req *base.Request) (*base.Response, []byte, error) {
|
||||
reqPath, ok := req.URL.RTSPPath()
|
||||
if !ok {
|
||||
return &base.Response{
|
||||
StatusCode: base.StatusBadRequest,
|
||||
}, nil, fmt.Errorf("invalid path (%s)", req.URL)
|
||||
}
|
||||
|
||||
onDescribe := func(ctx *gortsplib.ServerConnDescribeCtx) (*base.Response, []byte, error) {
|
||||
resc := make(chan client.DescribeRes)
|
||||
c.parent.OnClientDescribe(client.DescribeReq{c, reqPath, req, resc}) //nolint:govet
|
||||
c.parent.OnClientDescribe(client.DescribeReq{c, ctx.Path, ctx.Req, resc}) //nolint:govet
|
||||
res := <-resc
|
||||
|
||||
if res.Err != nil {
|
||||
@@ -210,16 +202,9 @@ func (c *Client) run() {
|
||||
}, res.SDP, nil
|
||||
}
|
||||
|
||||
onAnnounce := func(req *base.Request, tracks gortsplib.Tracks) (*base.Response, error) {
|
||||
reqPath, ok := req.URL.RTSPPath()
|
||||
if !ok {
|
||||
return &base.Response{
|
||||
StatusCode: base.StatusBadRequest,
|
||||
}, fmt.Errorf("invalid path (%s)", req.URL)
|
||||
}
|
||||
|
||||
onAnnounce := func(ctx *gortsplib.ServerConnAnnounceCtx) (*base.Response, error) {
|
||||
resc := make(chan client.AnnounceRes)
|
||||
c.parent.OnClientAnnounce(client.AnnounceReq{c, reqPath, tracks, req, resc}) //nolint:govet
|
||||
c.parent.OnClientAnnounce(client.AnnounceReq{c, ctx.Path, ctx.Tracks, ctx.Req, resc}) //nolint:govet
|
||||
res := <-resc
|
||||
|
||||
if res.Err != nil {
|
||||
@@ -249,8 +234,8 @@ func (c *Client) run() {
|
||||
}, nil
|
||||
}
|
||||
|
||||
onSetup := func(req *base.Request, th *headers.Transport, reqPath string, trackID int) (*base.Response, error) {
|
||||
if th.Protocol == gortsplib.StreamProtocolUDP {
|
||||
onSetup := func(ctx *gortsplib.ServerConnSetupCtx) (*base.Response, error) {
|
||||
if ctx.Transport.Protocol == gortsplib.StreamProtocolUDP {
|
||||
if _, ok := c.protocols[gortsplib.StreamProtocolUDP]; !ok {
|
||||
return &base.Response{
|
||||
StatusCode: base.StatusUnsupportedTransport,
|
||||
@@ -267,7 +252,7 @@ func (c *Client) run() {
|
||||
switch c.conn.State() {
|
||||
case gortsplib.ServerConnStateInitial, gortsplib.ServerConnStatePrePlay: // play
|
||||
resc := make(chan client.SetupPlayRes)
|
||||
c.parent.OnClientSetupPlay(client.SetupPlayReq{c, reqPath, req, resc}) //nolint:govet
|
||||
c.parent.OnClientSetupPlay(client.SetupPlayReq{c, ctx.Path, ctx.Req, resc}) //nolint:govet
|
||||
res := <-resc
|
||||
|
||||
if res.Err != nil {
|
||||
@@ -297,10 +282,10 @@ func (c *Client) run() {
|
||||
|
||||
c.path = res.Path
|
||||
|
||||
if trackID >= len(res.Tracks) {
|
||||
if ctx.TrackID >= len(res.Tracks) {
|
||||
return &base.Response{
|
||||
StatusCode: base.StatusBadRequest,
|
||||
}, fmt.Errorf("track %d does not exist", trackID)
|
||||
}, fmt.Errorf("track %d does not exist", ctx.TrackID)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -312,22 +297,12 @@ func (c *Client) run() {
|
||||
}, nil
|
||||
}
|
||||
|
||||
onPlay := func(req *base.Request) (*base.Response, error) {
|
||||
onPlay := func(ctx *gortsplib.ServerConnPlayCtx) (*base.Response, error) {
|
||||
if c.conn.State() == gortsplib.ServerConnStatePrePlay {
|
||||
reqPath, ok := req.URL.RTSPPath()
|
||||
if !ok {
|
||||
if ctx.Path != c.path.Name() {
|
||||
return &base.Response{
|
||||
StatusCode: base.StatusBadRequest,
|
||||
}, fmt.Errorf("invalid path (%s)", req.URL)
|
||||
}
|
||||
|
||||
// path can end with a slash, remove it
|
||||
reqPath = strings.TrimSuffix(reqPath, "/")
|
||||
|
||||
if reqPath != c.path.Name() {
|
||||
return &base.Response{
|
||||
StatusCode: base.StatusBadRequest,
|
||||
}, fmt.Errorf("path has changed, was '%s', now is '%s'", c.path.Name(), reqPath)
|
||||
}, fmt.Errorf("path has changed, was '%s', now is '%s'", c.path.Name(), ctx.Path)
|
||||
}
|
||||
|
||||
c.playStart()
|
||||
@@ -341,21 +316,11 @@ func (c *Client) run() {
|
||||
}, nil
|
||||
}
|
||||
|
||||
onRecord := func(req *base.Request) (*base.Response, error) {
|
||||
reqPath, ok := req.URL.RTSPPath()
|
||||
if !ok {
|
||||
onRecord := func(ctx *gortsplib.ServerConnRecordCtx) (*base.Response, error) {
|
||||
if ctx.Path != c.path.Name() {
|
||||
return &base.Response{
|
||||
StatusCode: base.StatusBadRequest,
|
||||
}, fmt.Errorf("invalid path (%s)", req.URL)
|
||||
}
|
||||
|
||||
// path can end with a slash, remove it
|
||||
reqPath = strings.TrimSuffix(reqPath, "/")
|
||||
|
||||
if reqPath != c.path.Name() {
|
||||
return &base.Response{
|
||||
StatusCode: base.StatusBadRequest,
|
||||
}, fmt.Errorf("path has changed, was '%s', now is '%s'", c.path.Name(), reqPath)
|
||||
}, fmt.Errorf("path has changed, was '%s', now is '%s'", c.path.Name(), ctx.Path)
|
||||
}
|
||||
|
||||
c.recordStart()
|
||||
@@ -368,7 +333,7 @@ func (c *Client) run() {
|
||||
}, nil
|
||||
}
|
||||
|
||||
onPause := func(req *base.Request) (*base.Response, error) {
|
||||
onPause := func(ctx *gortsplib.ServerConnPauseCtx) (*base.Response, error) {
|
||||
switch c.conn.State() {
|
||||
case gortsplib.ServerConnStatePlay:
|
||||
c.playStop()
|
||||
|
||||
Reference in New Issue
Block a user