mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 15:16:51 +08:00
rename rtpproc into rtpcleaner
This commit is contained in:
10
client.go
10
client.go
@@ -29,7 +29,7 @@ import (
|
||||
"github.com/aler9/gortsplib/pkg/ringbuffer"
|
||||
"github.com/aler9/gortsplib/pkg/rtcpreceiver"
|
||||
"github.com/aler9/gortsplib/pkg/rtcpsender"
|
||||
"github.com/aler9/gortsplib/pkg/rtpproc"
|
||||
"github.com/aler9/gortsplib/pkg/rtpcleaner"
|
||||
"github.com/aler9/gortsplib/pkg/sdp"
|
||||
"github.com/aler9/gortsplib/pkg/url"
|
||||
)
|
||||
@@ -93,7 +93,7 @@ type clientTrack struct {
|
||||
// play
|
||||
udpRTPPacketBuffer *rtpPacketMultiBuffer
|
||||
udpRTCPReceiver *rtcpreceiver.RTCPReceiver
|
||||
proc *rtpproc.Processor
|
||||
cleaner *rtpcleaner.Cleaner
|
||||
|
||||
// record
|
||||
udpRTCPSender *rtcpsender.RTCPSender
|
||||
@@ -715,7 +715,7 @@ func (c *Client) playRecordStart() {
|
||||
if c.state == clientStatePlay {
|
||||
for _, ct := range c.tracks {
|
||||
_, isH264 := ct.track.(*TrackH264)
|
||||
ct.proc = rtpproc.NewProcessor(isH264, *c.effectiveTransport == TransportTCP)
|
||||
ct.cleaner = rtpcleaner.NewCleaner(isH264, *c.effectiveTransport == TransportTCP)
|
||||
}
|
||||
|
||||
c.keepaliveTimer = time.NewTimer(c.keepalivePeriod)
|
||||
@@ -814,7 +814,7 @@ func (c *Client) runReader() {
|
||||
return err
|
||||
}
|
||||
|
||||
out, err := track.proc.Process(pkt)
|
||||
out, err := track.cleaner.Clear(pkt)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -940,7 +940,7 @@ func (c *Client) playRecordStop(isClosing bool) {
|
||||
}
|
||||
|
||||
for _, ct := range c.tracks {
|
||||
ct.proc = nil
|
||||
ct.cleaner = nil
|
||||
}
|
||||
|
||||
// stop timers
|
||||
|
@@ -196,7 +196,7 @@ func (u *clientUDPListener) processPlayRTP(now time.Time, payload []byte) {
|
||||
return
|
||||
}
|
||||
|
||||
out, err := u.ct.proc.Process(pkt)
|
||||
out, err := u.ct.cleaner.Clear(pkt)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package rtpproc
|
||||
package rtpcleaner
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@@ -15,19 +15,18 @@ const (
|
||||
maxPacketSize = 1472
|
||||
)
|
||||
|
||||
// ProcessorOutput is the output of Process().
|
||||
type ProcessorOutput struct {
|
||||
// Output is the output of Clear().
|
||||
type Output struct {
|
||||
Packet *rtp.Packet
|
||||
PTSEqualsDTS bool
|
||||
H264NALUs [][]byte
|
||||
H264PTS time.Duration
|
||||
}
|
||||
|
||||
// Processor is used to process incoming RTP packets, in order to:
|
||||
// Cleaner is used to clean incoming RTP packets, in order to:
|
||||
// - remove padding
|
||||
// - decode packets encoded with supported codecs
|
||||
// - re-encode packets if they are bigger than maximum allowed.
|
||||
type Processor struct {
|
||||
type Cleaner struct {
|
||||
isH264 bool
|
||||
isTCP bool
|
||||
|
||||
@@ -35,9 +34,9 @@ type Processor struct {
|
||||
h264Encoder *rtph264.Encoder
|
||||
}
|
||||
|
||||
// NewProcessor allocates a Processor.
|
||||
func NewProcessor(isH264 bool, isTCP bool) *Processor {
|
||||
p := &Processor{
|
||||
// NewCleaner allocates a Cleaner.
|
||||
func NewCleaner(isH264 bool, isTCP bool) *Cleaner {
|
||||
p := &Cleaner{
|
||||
isH264: isH264,
|
||||
isTCP: isTCP,
|
||||
}
|
||||
@@ -50,7 +49,7 @@ func NewProcessor(isH264 bool, isTCP bool) *Processor {
|
||||
return p
|
||||
}
|
||||
|
||||
func (p *Processor) processH264(pkt *rtp.Packet) ([]*ProcessorOutput, error) {
|
||||
func (p *Cleaner) processH264(pkt *rtp.Packet) ([]*Output, error) {
|
||||
// check if we need to re-encode
|
||||
if p.isTCP && p.h264Encoder == nil && pkt.MarshalSize() > maxPacketSize {
|
||||
v1 := pkt.SSRC
|
||||
@@ -71,7 +70,7 @@ func (p *Processor) processH264(pkt *rtp.Packet) ([]*ProcessorOutput, error) {
|
||||
if err == rtph264.ErrNonStartingPacketAndNoPrevious ||
|
||||
err == rtph264.ErrMorePacketsNeeded {
|
||||
if p.h264Encoder == nil {
|
||||
return []*ProcessorOutput{{
|
||||
return []*Output{{
|
||||
Packet: pkt,
|
||||
PTSEqualsDTS: false,
|
||||
}}, nil
|
||||
@@ -90,16 +89,16 @@ func (p *Processor) processH264(pkt *rtp.Packet) ([]*ProcessorOutput, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
output := make([]*ProcessorOutput, len(packets))
|
||||
output := make([]*Output, len(packets))
|
||||
|
||||
for i, pkt := range packets {
|
||||
if i != len(packets)-1 {
|
||||
output[i] = &ProcessorOutput{
|
||||
output[i] = &Output{
|
||||
Packet: pkt,
|
||||
PTSEqualsDTS: false,
|
||||
}
|
||||
} else {
|
||||
output[i] = &ProcessorOutput{
|
||||
output[i] = &Output{
|
||||
Packet: pkt,
|
||||
PTSEqualsDTS: ptsEqualsDTS,
|
||||
H264NALUs: nalus,
|
||||
@@ -111,7 +110,7 @@ func (p *Processor) processH264(pkt *rtp.Packet) ([]*ProcessorOutput, error) {
|
||||
return output, nil
|
||||
}
|
||||
|
||||
return []*ProcessorOutput{{
|
||||
return []*Output{{
|
||||
Packet: pkt,
|
||||
PTSEqualsDTS: ptsEqualsDTS,
|
||||
H264NALUs: nalus,
|
||||
@@ -119,8 +118,8 @@ func (p *Processor) processH264(pkt *rtp.Packet) ([]*ProcessorOutput, error) {
|
||||
}}, nil
|
||||
}
|
||||
|
||||
// Process processes a RTP packet.
|
||||
func (p *Processor) Process(pkt *rtp.Packet) ([]*ProcessorOutput, error) {
|
||||
// Clear processes a RTP packet.
|
||||
func (p *Cleaner) Clear(pkt *rtp.Packet) ([]*Output, error) {
|
||||
// remove padding
|
||||
pkt.Header.Padding = false
|
||||
pkt.PaddingSize = 0
|
||||
@@ -134,7 +133,7 @@ func (p *Processor) Process(pkt *rtp.Packet) ([]*ProcessorOutput, error) {
|
||||
pkt.MarshalSize(), maxPacketSize)
|
||||
}
|
||||
|
||||
return []*ProcessorOutput{{
|
||||
return []*Output{{
|
||||
Packet: pkt,
|
||||
PTSEqualsDTS: true,
|
||||
}}, nil
|
@@ -1,4 +1,4 @@
|
||||
package rtpproc
|
||||
package rtpcleaner
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
@@ -8,10 +8,10 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestProcessRemovePadding(t *testing.T) {
|
||||
proc := NewProcessor(false, false)
|
||||
func TestRemovePadding(t *testing.T) {
|
||||
cleaner := NewCleaner(false, false)
|
||||
|
||||
out, err := proc.Process(&rtp.Packet{
|
||||
out, err := cleaner.Clear(&rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
PayloadType: 96,
|
||||
@@ -23,7 +23,7 @@ func TestProcessRemovePadding(t *testing.T) {
|
||||
PaddingSize: 64,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, []*ProcessorOutput{{
|
||||
require.Equal(t, []*Output{{
|
||||
Packet: &rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
@@ -37,10 +37,10 @@ func TestProcessRemovePadding(t *testing.T) {
|
||||
}}, out)
|
||||
}
|
||||
|
||||
func TestProcessH264Oversized(t *testing.T) {
|
||||
proc := NewProcessor(true, true)
|
||||
func TestH264Oversized(t *testing.T) {
|
||||
cleaner := NewCleaner(true, true)
|
||||
|
||||
out, err := proc.Process(&rtp.Packet{
|
||||
out, err := cleaner.Clear(&rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
PayloadType: 96,
|
||||
@@ -53,9 +53,9 @@ func TestProcessH264Oversized(t *testing.T) {
|
||||
),
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, []*ProcessorOutput(nil), out)
|
||||
require.Equal(t, []*Output(nil), out)
|
||||
|
||||
out, err = proc.Process(&rtp.Packet{
|
||||
out, err = cleaner.Clear(&rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
PayloadType: 96,
|
||||
@@ -68,7 +68,7 @@ func TestProcessH264Oversized(t *testing.T) {
|
||||
),
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, []*ProcessorOutput{
|
||||
require.Equal(t, []*Output{
|
||||
{
|
||||
Packet: &rtp.Packet{
|
||||
Header: rtp.Header{
|
@@ -257,7 +257,7 @@ func (sc *ServerConn) readFuncTCP(readRequest chan readReq) error {
|
||||
return err
|
||||
}
|
||||
|
||||
out, err := sc.session.setuppedTracks[trackID].proc.Process(pkt)
|
||||
out, err := sc.session.setuppedTracks[trackID].cleaner.Clear(pkt)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@@ -18,7 +18,7 @@ import (
|
||||
"github.com/aler9/gortsplib/pkg/liberrors"
|
||||
"github.com/aler9/gortsplib/pkg/ringbuffer"
|
||||
"github.com/aler9/gortsplib/pkg/rtcpreceiver"
|
||||
"github.com/aler9/gortsplib/pkg/rtpproc"
|
||||
"github.com/aler9/gortsplib/pkg/rtpcleaner"
|
||||
"github.com/aler9/gortsplib/pkg/url"
|
||||
)
|
||||
|
||||
@@ -151,7 +151,7 @@ type ServerSessionSetuppedTrack struct {
|
||||
|
||||
// publish
|
||||
udpRTCPReceiver *rtcpreceiver.RTCPReceiver
|
||||
proc *rtpproc.Processor
|
||||
cleaner *rtpcleaner.Cleaner
|
||||
}
|
||||
|
||||
// ServerSession is a server-side RTSP session.
|
||||
@@ -973,7 +973,7 @@ func (ss *ServerSession) handleRequest(sc *ServerConn, req *base.Request) (*base
|
||||
|
||||
for trackID, st := range ss.setuppedTracks {
|
||||
_, isH264 := ss.announcedTracks[trackID].(*TrackH264)
|
||||
st.proc = rtpproc.NewProcessor(isH264, *ss.setuppedTransport == TransportTCP)
|
||||
st.cleaner = rtpcleaner.NewCleaner(isH264, *ss.setuppedTransport == TransportTCP)
|
||||
}
|
||||
|
||||
switch *ss.setuppedTransport {
|
||||
@@ -1097,7 +1097,7 @@ func (ss *ServerSession) handleRequest(sc *ServerConn, req *base.Request) (*base
|
||||
}
|
||||
|
||||
for _, st := range ss.setuppedTracks {
|
||||
st.proc = nil
|
||||
st.cleaner = nil
|
||||
}
|
||||
|
||||
ss.state = ServerSessionStatePreRecord
|
||||
|
@@ -201,7 +201,7 @@ func (u *serverUDPListener) processRTP(clientData *clientData, payload []byte) {
|
||||
now := time.Now()
|
||||
atomic.StoreInt64(clientData.ss.udpLastFrameTime, now.Unix())
|
||||
|
||||
out, err := clientData.track.proc.Process(pkt)
|
||||
out, err := clientData.track.cleaner.Clear(pkt)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
Reference in New Issue
Block a user