Fix bug with no stream from some Dahua cameras
This commit is contained in:
+8
-7
@@ -347,7 +347,7 @@ func (c *Conn) Describe() error {
|
|||||||
|
|
||||||
func (c *Conn) Setup() error {
|
func (c *Conn) Setup() error {
|
||||||
for _, media := range c.Medias {
|
for _, media := range c.Medias {
|
||||||
_, err := c.SetupMedia(media, media.Codecs[0])
|
_, err := c.SetupMedia(media, media.Codecs[0], true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -356,11 +356,12 @@ func (c *Conn) Setup() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Conn) SetupMedia(
|
func (c *Conn) SetupMedia(media *streamer.Media, codec *streamer.Codec, first bool) (*streamer.Track, error) {
|
||||||
media *streamer.Media, codec *streamer.Codec,
|
// TODO: rewrite recoonection and first flag
|
||||||
) (*streamer.Track, error) {
|
if first {
|
||||||
c.stateMu.Lock()
|
c.stateMu.Lock()
|
||||||
defer c.stateMu.Unlock()
|
defer c.stateMu.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
if c.state != StateConn && c.state != StateSetup {
|
if c.state != StateConn && c.state != StateSetup {
|
||||||
return nil, fmt.Errorf("RTSP SETUP from wrong state: %s", c.state)
|
return nil, fmt.Errorf("RTSP SETUP from wrong state: %s", c.state)
|
||||||
@@ -412,7 +413,7 @@ func (c *Conn) SetupMedia(
|
|||||||
|
|
||||||
for _, newMedia := range c.Medias {
|
for _, newMedia := range c.Medias {
|
||||||
if newMedia.Control == media.Control {
|
if newMedia.Control == media.Control {
|
||||||
return c.SetupMedia(newMedia, newMedia.Codecs[0])
|
return c.SetupMedia(newMedia, newMedia.Codecs[0], false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ func (c *Conn) GetTrack(media *streamer.Media, codec *streamer.Codec) *streamer.
|
|||||||
return streamer.NewTrack(codec, media.Direction)
|
return streamer.NewTrack(codec, media.Direction)
|
||||||
}
|
}
|
||||||
|
|
||||||
track, err := c.SetupMedia(media, codec)
|
track, err := c.SetupMedia(media, codec, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user