diff --git a/client.go b/client.go index 22158663..30b78dd2 100644 --- a/client.go +++ b/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 diff --git a/clientudpl.go b/clientudpl.go index dfcb5f21..1868ce74 100644 --- a/clientudpl.go +++ b/clientudpl.go @@ -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 } diff --git a/pkg/rtpproc/processor.go b/pkg/rtpcleaner/cleaner.go similarity index 75% rename from pkg/rtpproc/processor.go rename to pkg/rtpcleaner/cleaner.go index cdef084c..9d4b83c0 100644 --- a/pkg/rtpproc/processor.go +++ b/pkg/rtpcleaner/cleaner.go @@ -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 diff --git a/pkg/rtpproc/processor_test.go b/pkg/rtpcleaner/cleaner_test.go similarity index 84% rename from pkg/rtpproc/processor_test.go rename to pkg/rtpcleaner/cleaner_test.go index 57b0f2ca..a7070f91 100644 --- a/pkg/rtpproc/processor_test.go +++ b/pkg/rtpcleaner/cleaner_test.go @@ -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{ diff --git a/serverconn.go b/serverconn.go index 3f930502..4a56d829 100644 --- a/serverconn.go +++ b/serverconn.go @@ -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 } diff --git a/serversession.go b/serversession.go index bf5b37fb..f14780cb 100644 --- a/serversession.go +++ b/serversession.go @@ -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 diff --git a/serverudpl.go b/serverudpl.go index 77edea2b..ede64b11 100644 --- a/serverudpl.go +++ b/serverudpl.go @@ -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 }