|
|
|
@ -17,6 +17,10 @@ import ( |
|
|
|
const ( |
|
|
|
const ( |
|
|
|
clientCheckStreamInterval = 5 * time.Second |
|
|
|
clientCheckStreamInterval = 5 * time.Second |
|
|
|
clientReceiverReportInterval = 10 * time.Second |
|
|
|
clientReceiverReportInterval = 10 * time.Second |
|
|
|
|
|
|
|
clientTcpReadBufferSize = 128 * 1024 |
|
|
|
|
|
|
|
clientTcpWriteBufferSize = 128 * 1024 |
|
|
|
|
|
|
|
clientUdpReadBufferSize = 2048 |
|
|
|
|
|
|
|
clientUdpWriteBufferSize = 128 * 1024 |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
type serverClientTrack struct { |
|
|
|
type serverClientTrack struct { |
|
|
|
@ -98,7 +102,7 @@ func newServerClient(p *program, nconn net.Conn) *serverClient { |
|
|
|
WriteTimeout: p.conf.WriteTimeout, |
|
|
|
WriteTimeout: p.conf.WriteTimeout, |
|
|
|
}), |
|
|
|
}), |
|
|
|
state: clientStateStarting, |
|
|
|
state: clientStateStarting, |
|
|
|
readBuf: newDoubleBuffer(512 * 1024), |
|
|
|
readBuf: newDoubleBuffer(clientTcpReadBufferSize), |
|
|
|
done: make(chan struct{}), |
|
|
|
done: make(chan struct{}), |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -788,7 +792,7 @@ func (c *serverClient) runPlay(path string) { |
|
|
|
pconf := c.findConfForPath(path) |
|
|
|
pconf := c.findConfForPath(path) |
|
|
|
|
|
|
|
|
|
|
|
if c.streamProtocol == gortsplib.StreamProtocolTcp { |
|
|
|
if c.streamProtocol == gortsplib.StreamProtocolTcp { |
|
|
|
c.writeBuf = newDoubleBuffer(2048) |
|
|
|
c.writeBuf = newDoubleBuffer(clientTcpWriteBufferSize) |
|
|
|
c.events = make(chan serverClientEvent) |
|
|
|
c.events = make(chan serverClientEvent) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -818,6 +822,7 @@ func (c *serverClient) runPlay(path string) { |
|
|
|
readDone := make(chan error) |
|
|
|
readDone := make(chan error) |
|
|
|
go func() { |
|
|
|
go func() { |
|
|
|
buf := make([]byte, 2048) |
|
|
|
buf := make([]byte, 2048) |
|
|
|
|
|
|
|
|
|
|
|
for { |
|
|
|
for { |
|
|
|
_, err := c.conn.NetConn().Read(buf) |
|
|
|
_, err := c.conn.NetConn().Read(buf) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
@ -920,6 +925,7 @@ func (c *serverClient) runRecord(path string) { |
|
|
|
for { |
|
|
|
for { |
|
|
|
frame.Content = c.readBuf.swap() |
|
|
|
frame.Content = c.readBuf.swap() |
|
|
|
frame.Content = frame.Content[:cap(frame.Content)] |
|
|
|
frame.Content = frame.Content[:cap(frame.Content)] |
|
|
|
|
|
|
|
|
|
|
|
recv, err := c.conn.ReadFrameOrRequest(frame) |
|
|
|
recv, err := c.conn.ReadFrameOrRequest(frame) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
readDone <- err |
|
|
|
readDone <- err |
|
|
|
|