rename rtpproc into rtpcleaner

This commit is contained in:
aler9
2022-06-11 19:50:38 +02:00
parent 4e41b1c88b
commit ac910c63db
7 changed files with 40 additions and 41 deletions

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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{

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}