From f82fe2309d0ac5c7f0b0549e64c72040364cae4b Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:44:41 +0100 Subject: [PATCH] move time as first argument in rtcpreceiver, rtcpsender, rtpaac, rtph264 --- pkg/rtcpreceiver/rtcpreceiver.go | 2 +- pkg/rtcpsender/rtcpsender.go | 2 +- pkg/rtpaac/encoder.go | 6 +++--- pkg/rtph264/encoder.go | 14 +++++++------- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pkg/rtcpreceiver/rtcpreceiver.go b/pkg/rtcpreceiver/rtcpreceiver.go index cc255c93..caee1546 100644 --- a/pkg/rtcpreceiver/rtcpreceiver.go +++ b/pkg/rtcpreceiver/rtcpreceiver.go @@ -10,7 +10,7 @@ import ( "github.com/aler9/gortsplib/pkg/base" ) -// RtcpReceiver allows to generate RTCP receiver reports. +// RtcpReceiver is a utility to generate RTCP receiver reports. type RtcpReceiver struct { receiverSSRC uint32 mutex sync.Mutex diff --git a/pkg/rtcpsender/rtcpsender.go b/pkg/rtcpsender/rtcpsender.go index 794c7b79..e450ac43 100644 --- a/pkg/rtcpsender/rtcpsender.go +++ b/pkg/rtcpsender/rtcpsender.go @@ -11,7 +11,7 @@ import ( "github.com/aler9/gortsplib/pkg/base" ) -// RtcpSender allows to generate RTCP sender reports. +// RtcpSender is a utility to generate RTCP sender reports. type RtcpSender struct { clockRate float64 mutex sync.Mutex diff --git a/pkg/rtpaac/encoder.go b/pkg/rtpaac/encoder.go index 3b7f5bd3..27650de6 100644 --- a/pkg/rtpaac/encoder.go +++ b/pkg/rtpaac/encoder.go @@ -37,16 +37,16 @@ func NewEncoder(payloadType uint8, clockRate int) (*Encoder, error) { } // Write encodes an AAC frame into RTP/AAC packets. -func (e *Encoder) Write(data []byte, timestamp time.Duration) ([][]byte, error) { +func (e *Encoder) Write(ts time.Duration, data []byte) ([][]byte, error) { if e.started == 0 { - e.started = timestamp + e.started = ts } if len(data) > rtpPayloadMaxSize { return nil, fmt.Errorf("data is too big") } - rtpTs := e.initialTs + uint32((timestamp-e.started).Seconds()*e.clockRate) + rtpTs := e.initialTs + uint32((ts-e.started).Seconds()*e.clockRate) // 13 bits payload size // 3 bits AU-Index(-delta) diff --git a/pkg/rtph264/encoder.go b/pkg/rtph264/encoder.go index ac22619f..e69e026f 100644 --- a/pkg/rtph264/encoder.go +++ b/pkg/rtph264/encoder.go @@ -32,7 +32,7 @@ func NewEncoder(payloadType uint8) (*Encoder, error) { } // Write encodes NALUs into RTP/H264 packets. -func (e *Encoder) Write(nalus [][]byte, ts time.Duration) ([][]byte, error) { +func (e *Encoder) Write(ts time.Duration, nalus [][]byte) ([][]byte, error) { if e.started == 0 { e.started = ts } @@ -43,7 +43,7 @@ func (e *Encoder) Write(nalus [][]byte, ts time.Duration) ([][]byte, error) { var frames [][]byte for i, nalu := range nalus { - naluFrames, err := e.writeNALU(nalu, rtpTime, (i == len(nalus)-1)) + naluFrames, err := e.writeNALU(rtpTime, nalu, (i == len(nalus)-1)) if err != nil { return nil, err } @@ -53,17 +53,17 @@ func (e *Encoder) Write(nalus [][]byte, ts time.Duration) ([][]byte, error) { return frames, nil } -func (e *Encoder) writeNALU(nalu []byte, rtpTime uint32, isFinal bool) ([][]byte, error) { +func (e *Encoder) writeNALU(rtpTime uint32, nalu []byte, isFinal bool) ([][]byte, error) { // if the NALU fits into a single RTP packet, use a single NALU payload if len(nalu) < rtpPayloadMaxSize { - return e.writeSingle(nalu, rtpTime, isFinal) + return e.writeSingle(rtpTime, nalu, isFinal) } // otherwise, split the NALU into multiple fragmentation payloads - return e.writeFragmented(nalu, rtpTime, isFinal) + return e.writeFragmented(rtpTime, nalu, isFinal) } -func (e *Encoder) writeSingle(nalu []byte, rtpTime uint32, isFinal bool) ([][]byte, error) { +func (e *Encoder) writeSingle(rtpTime uint32, nalu []byte, isFinal bool) ([][]byte, error) { rpkt := rtp.Packet{ Header: rtp.Header{ Version: rtpVersion, @@ -88,7 +88,7 @@ func (e *Encoder) writeSingle(nalu []byte, rtpTime uint32, isFinal bool) ([][]by return [][]byte{frame}, nil } -func (e *Encoder) writeFragmented(nalu []byte, rtpTime uint32, isFinal bool) ([][]byte, error) { +func (e *Encoder) writeFragmented(rtpTime uint32, nalu []byte, isFinal bool) ([][]byte, error) { // use only FU-A, not FU-B, since we always use non-interleaved mode // (packetization-mode=1) frameCount := (len(nalu) - 1) / (rtpPayloadMaxSize - 2)