Browse Source

rtsp source: fix regression (#949)

This caused a periodic disconnection when sourceOnDemand is yes
pull/956/head
aler9 4 years ago
parent
commit
23ac079646
  1. 26
      internal/core/path.go

26
internal/core/path.go

@ -439,12 +439,8 @@ func (pa *path) run() { @@ -439,12 +439,8 @@ func (pa *path) run() {
}
pa.setupPlayRequestsOnHold = nil
if len(pa.readers) > 0 {
pa.onDemandStaticSourceState = pathOnDemandStateReady
} else {
pa.onDemandStaticSourceScheduleClose()
}
}
req.res <- pathSourceStaticSetReadyRes{stream: pa.stream}
} else {
@ -859,12 +855,8 @@ func (pa *path) handlePublisherRecord(req pathPublisherRecordReq) { @@ -859,12 +855,8 @@ func (pa *path) handlePublisherRecord(req pathPublisherRecordReq) {
}
pa.setupPlayRequestsOnHold = nil
if len(pa.readers) > 0 {
pa.onDemandPublisherState = pathOnDemandStateReady
} else {
pa.onDemandPublisherScheduleClose()
}
}
req.res <- pathPublisherRecordRes{stream: pa.stream}
}
@ -887,13 +879,17 @@ func (pa *path) handleReaderRemove(req pathReaderRemoveReq) { @@ -887,13 +879,17 @@ func (pa *path) handleReaderRemove(req pathReaderRemoveReq) {
close(req.res)
if len(pa.readers) == 0 {
if pa.hasOnDemandStaticSource() && pa.onDemandStaticSourceState == pathOnDemandStateReady {
if pa.hasOnDemandStaticSource() {
if pa.onDemandStaticSourceState == pathOnDemandStateReady {
pa.onDemandStaticSourceScheduleClose()
} else if pa.hasOnDemandPublisher() && pa.onDemandPublisherState == pathOnDemandStateReady {
}
} else if pa.hasOnDemandPublisher() {
if pa.onDemandPublisherState == pathOnDemandStateReady {
pa.onDemandPublisherScheduleClose()
}
}
}
}
func (pa *path) handleReaderSetupPlay(req pathReaderSetupPlayReq) {
if pa.sourceReady {
@ -923,11 +919,19 @@ func (pa *path) handleReaderSetupPlay(req pathReaderSetupPlayReq) { @@ -923,11 +919,19 @@ func (pa *path) handleReaderSetupPlay(req pathReaderSetupPlayReq) {
func (pa *path) handleReaderSetupPlayPost(req pathReaderSetupPlayReq) {
pa.readers[req.author] = pathReaderStatePrePlay
if pa.hasOnDemandPublisher() && pa.onDemandPublisherState == pathOnDemandStateClosing {
if pa.hasOnDemandStaticSource() {
if pa.onDemandStaticSourceState == pathOnDemandStateClosing {
pa.onDemandStaticSourceState = pathOnDemandStateReady
pa.onDemandStaticSourceCloseTimer.Stop()
pa.onDemandStaticSourceCloseTimer = newEmptyTimer()
}
} else if pa.hasOnDemandPublisher() {
if pa.onDemandPublisherState == pathOnDemandStateClosing {
pa.onDemandPublisherState = pathOnDemandStateReady
pa.onDemandPublisherCloseTimer.Stop()
pa.onDemandPublisherCloseTimer = newEmptyTimer()
}
}
req.res <- pathReaderSetupPlayRes{
path: pa,

Loading…
Cancel
Save