Browse Source

move forwardTrack into serverTcpListener

pull/31/head
aler9 5 years ago
parent
commit
fae52b415c
  1. 36
      main.go
  2. 2
      server-client.go
  3. 36
      server-tcpl.go
  4. 2
      server-udpl.go

36
main.go

@ -3,13 +3,11 @@ package main @@ -3,13 +3,11 @@ package main
import (
"fmt"
"log"
"net"
"os"
"regexp"
"strings"
"time"
"github.com/aler9/gortsplib"
"gopkg.in/alecthomas/kingpin.v2"
)
@ -156,40 +154,6 @@ func newProgram(args args) (*program, error) { @@ -156,40 +154,6 @@ func newProgram(args args) (*program, error) {
return p, nil
}
func (p *program) forwardTrack(path string, id int, flow trackFlow, frame []byte) {
for c := range p.rtspl.clients {
if c.path == path && c.state == _CLIENT_STATE_PLAY {
if c.streamProtocol == _STREAM_PROTOCOL_UDP {
if flow == _TRACK_FLOW_RTP {
p.rtpl.write <- &udpWrite{
addr: &net.UDPAddr{
IP: c.ip(),
Zone: c.zone(),
Port: c.streamTracks[id].rtpPort,
},
buf: frame,
}
} else {
p.rtcpl.write <- &udpWrite{
addr: &net.UDPAddr{
IP: c.ip(),
Zone: c.zone(),
Port: c.streamTracks[id].rtcpPort,
},
buf: frame,
}
}
} else {
c.write <- &gortsplib.InterleavedFrame{
Channel: trackToInterleavedChannel(id, flow),
Content: frame,
}
}
}
}
}
func main() {
kingpin.CommandLine.Help = "rtsp-simple-server " + Version + "\n\n" +
"RTSP server."

2
server-client.go

@ -864,7 +864,7 @@ func (c *serverClient) handleRequest(req *gortsplib.Request) bool { @@ -864,7 +864,7 @@ func (c *serverClient) handleRequest(req *gortsplib.Request) bool {
}
c.p.rtspl.mutex.RLock()
c.p.forwardTrack(c.path, trackId, trackFlow, frame.Content)
c.p.rtspl.forwardTrack(c.path, trackId, trackFlow, frame.Content)
c.p.rtspl.mutex.RUnlock()
}
}

36
server-tcpl.go

@ -4,6 +4,8 @@ import ( @@ -4,6 +4,8 @@ import (
"log"
"net"
"sync"
"github.com/aler9/gortsplib"
)
type serverTcpListener struct {
@ -48,3 +50,37 @@ func (l *serverTcpListener) run() { @@ -48,3 +50,37 @@ func (l *serverTcpListener) run() {
go rsc.run()
}
}
func (l *serverTcpListener) forwardTrack(path string, id int, flow trackFlow, frame []byte) {
for c := range l.clients {
if c.path == path && c.state == _CLIENT_STATE_PLAY {
if c.streamProtocol == _STREAM_PROTOCOL_UDP {
if flow == _TRACK_FLOW_RTP {
l.p.rtpl.write <- &udpWrite{
addr: &net.UDPAddr{
IP: c.ip(),
Zone: c.zone(),
Port: c.streamTracks[id].rtpPort,
},
buf: frame,
}
} else {
l.p.rtcpl.write <- &udpWrite{
addr: &net.UDPAddr{
IP: c.ip(),
Zone: c.zone(),
Port: c.streamTracks[id].rtcpPort,
},
buf: frame,
}
}
} else {
c.write <- &gortsplib.InterleavedFrame{
Channel: trackToInterleavedChannel(id, flow),
Content: frame,
}
}
}
}
}

2
server-udpl.go

@ -96,7 +96,7 @@ func (l *serverUdpListener) run() { @@ -96,7 +96,7 @@ func (l *serverUdpListener) run() {
return
}
l.p.forwardTrack(path, trackId, l.flow, buf[:n])
l.p.rtspl.forwardTrack(path, trackId, l.flow, buf[:n])
}()
}

Loading…
Cancel
Save