diff --git a/client.go b/client.go index e63f76ce..0b727c1d 100644 --- a/client.go +++ b/client.go @@ -1059,7 +1059,7 @@ func (c *Client) do(req *base.Request, skipResponse bool, allowFrames bool) (*ba c.OnRequest(req) } - byts, _ := req.Write() + byts, _ := req.Marshal() c.conn.SetWriteDeadline(time.Now().Add(c.WriteTimeout)) _, err := c.conn.Write(byts) @@ -1095,7 +1095,7 @@ func (c *Client) do(req *base.Request, skipResponse bool, allowFrames bool) (*ba // get session from response if v, ok := res.Header["Session"]; ok { var sx headers.Session - err := sx.Read(v) + err := sx.Unmarshal(v) if err != nil { return nil, liberrors.ErrClientSessionHeaderInvalid{Err: err} } @@ -1242,7 +1242,8 @@ func (c *Client) doDescribe(u *url.URL) (Tracks, *url.URL, *base.Response, error return nil, nil, nil, liberrors.ErrClientContentTypeUnsupported{CT: ct} } - tracks, sd, err := ReadTracks(res.Body, true) + var tracks Tracks + sd, err := tracks.Unmarshal(res.Body, true) if err != nil { return nil, nil, nil, err } @@ -1286,7 +1287,7 @@ func (c *Client) doAnnounce(u *url.URL, tracks Tracks) (*base.Response, error) { Header: base.Header{ "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), + Body: tracks.Marshal(false), }, false, false) if err != nil { return nil, err @@ -1449,7 +1450,7 @@ func (c *Client) doSetup( Method: base.Setup, URL: trackURL, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, }, false, false) if err != nil { @@ -1480,7 +1481,7 @@ func (c *Client) doSetup( } var thRes headers.Transport - err = thRes.Read(res.Header["Transport"]) + err = thRes.Unmarshal(res.Header["Transport"]) if err != nil { if transport == TransportUDP { ct.udpRTPListener.close() @@ -1685,7 +1686,7 @@ func (c *Client) doPlay(ra *headers.Range, isSwitchingProtocol bool) (*base.Resp Method: base.Play, URL: c.baseURL, Header: base.Header{ - "Range": ra.Write(), + "Range": ra.Marshal(), }, }, false, *c.effectiveTransport == TransportTCP) if err != nil { @@ -1864,14 +1865,14 @@ func (c *Client) runWriter() { if isRTP { f := rtpFrames[trackID] f.Payload = payload - n, _ := f.WriteTo(buf) + n, _ := f.MarshalTo(buf) c.conn.SetWriteDeadline(time.Now().Add(c.WriteTimeout)) c.conn.Write(buf[:n]) } else { f := rtcpFrames[trackID] f.Payload = payload - n, _ := f.WriteTo(buf) + n, _ := f.MarshalTo(buf) c.conn.SetWriteDeadline(time.Now().Add(c.WriteTimeout)) c.conn.Write(buf[:n]) diff --git a/client_publish_test.go b/client_publish_test.go index 7ce88091..17ff4679 100644 --- a/client_publish_test.go +++ b/client_publish_test.go @@ -97,7 +97,7 @@ func TestClientPublishSerial(t *testing.T) { string(base.Record), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -108,7 +108,7 @@ func TestClientPublishSerial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -118,7 +118,7 @@ func TestClientPublishSerial(t *testing.T) { require.Equal(t, mustParseURL(scheme+"://localhost:8554/teststream/trackID=0"), req.URL) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) var l1 net.PacketConn @@ -152,9 +152,9 @@ func TestClientPublishSerial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -165,7 +165,7 @@ func TestClientPublishSerial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -199,7 +199,7 @@ func TestClientPublishSerial(t *testing.T) { byts, _ := base.InterleavedFrame{ Channel: 1, Payload: testRTCPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) } @@ -211,7 +211,7 @@ func TestClientPublishSerial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -312,7 +312,7 @@ func TestClientPublishParallel(t *testing.T) { string(base.Record), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -322,7 +322,7 @@ func TestClientPublishParallel(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -331,7 +331,7 @@ func TestClientPublishParallel(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -353,9 +353,9 @@ func TestClientPublishParallel(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -365,7 +365,7 @@ func TestClientPublishParallel(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -375,7 +375,7 @@ func TestClientPublishParallel(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -461,7 +461,7 @@ func TestClientPublishPauseSerial(t *testing.T) { string(base.Pause), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -471,7 +471,7 @@ func TestClientPublishPauseSerial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -480,7 +480,7 @@ func TestClientPublishPauseSerial(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -502,9 +502,9 @@ func TestClientPublishPauseSerial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -514,7 +514,7 @@ func TestClientPublishPauseSerial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -524,7 +524,7 @@ func TestClientPublishPauseSerial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -534,7 +534,7 @@ func TestClientPublishPauseSerial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -544,7 +544,7 @@ func TestClientPublishPauseSerial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -620,7 +620,7 @@ func TestClientPublishPauseParallel(t *testing.T) { string(base.Pause), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -630,7 +630,7 @@ func TestClientPublishPauseParallel(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -639,7 +639,7 @@ func TestClientPublishPauseParallel(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -661,9 +661,9 @@ func TestClientPublishPauseParallel(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -673,7 +673,7 @@ func TestClientPublishPauseParallel(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -683,7 +683,7 @@ func TestClientPublishPauseParallel(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -764,7 +764,7 @@ func TestClientPublishAutomaticProtocol(t *testing.T) { string(base.Record), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -775,7 +775,7 @@ func TestClientPublishAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -785,7 +785,7 @@ func TestClientPublishAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusUnsupportedTransport, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -794,7 +794,7 @@ func TestClientPublishAutomaticProtocol(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) require.Equal(t, headers.TransportProtocolTCP, inTH.Protocol) @@ -810,9 +810,9 @@ func TestClientPublishAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -823,7 +823,7 @@ func TestClientPublishAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -842,7 +842,7 @@ func TestClientPublishAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -894,7 +894,7 @@ func TestClientPublishRTCPReport(t *testing.T) { string(base.Record), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -904,7 +904,7 @@ func TestClientPublishRTCPReport(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -913,7 +913,7 @@ func TestClientPublishRTCPReport(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) l1, err := net.ListenPacket("udp", "localhost:34556") @@ -935,9 +935,9 @@ func TestClientPublishRTCPReport(t *testing.T) { Protocol: headers.TransportProtocolUDP, ClientPorts: inTH.ClientPorts, ServerPorts: &[2]int{34556, 34557}, - }.Write(), + }.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -947,7 +947,7 @@ func TestClientPublishRTCPReport(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -981,7 +981,7 @@ func TestClientPublishRTCPReport(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -1045,7 +1045,7 @@ func TestClientPublishIgnoreTCPRTPPackets(t *testing.T) { string(base.Record), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1055,7 +1055,7 @@ func TestClientPublishIgnoreTCPRTPPackets(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1064,7 +1064,7 @@ func TestClientPublishIgnoreTCPRTPPackets(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -1079,9 +1079,9 @@ func TestClientPublishIgnoreTCPRTPPackets(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1091,21 +1091,21 @@ func TestClientPublishIgnoreTCPRTPPackets(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) byts, _ = base.InterleavedFrame{ Channel: 0, Payload: testRTPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) byts, _ = base.InterleavedFrame{ Channel: 1, Payload: testRTCPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1115,7 +1115,7 @@ func TestClientPublishIgnoreTCPRTPPackets(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() diff --git a/client_read_test.go b/client_read_test.go index d12f3305..406e1f69 100644 --- a/client_read_test.go +++ b/client_read_test.go @@ -80,7 +80,7 @@ func TestClientReadTracks(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -98,8 +98,8 @@ func TestClientReadTracks(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -110,7 +110,7 @@ func TestClientReadTracks(t *testing.T) { require.Equal(t, mustParseURL(fmt.Sprintf("rtsp://localhost:8554/teststream/trackID=%d", i)), req.URL) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -126,9 +126,9 @@ func TestClientReadTracks(t *testing.T) { byts, _ := base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) } @@ -140,7 +140,7 @@ func TestClientReadTracks(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -151,7 +151,7 @@ func TestClientReadTracks(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -216,7 +216,7 @@ func TestClientRead(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -240,8 +240,8 @@ func TestClientRead(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{scheme + "://" + listenIP + ":8554/test/stream?param=value/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -251,7 +251,7 @@ func TestClientRead(t *testing.T) { require.Equal(t, mustParseURL(scheme+"://"+listenIP+":8554/test/stream?param=value/trackID=0"), req.URL) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{} @@ -321,9 +321,9 @@ func TestClientRead(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -335,7 +335,7 @@ func TestClientRead(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -359,7 +359,7 @@ func TestClientRead(t *testing.T) { byts, _ := base.InterleavedFrame{ Channel: 0, Payload: testRTPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) } @@ -398,7 +398,7 @@ func TestClientRead(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -480,7 +480,7 @@ func TestClientReadPartial(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -510,8 +510,8 @@ func TestClientReadPartial(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://" + listenIP + ":8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -521,7 +521,7 @@ func TestClientReadPartial(t *testing.T) { require.Equal(t, mustParseURL("rtsp://"+listenIP+":8554/teststream/trackID=1"), req.URL) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) require.Equal(t, &[2]int{0, 1}, inTH.InterleavedIDs) @@ -537,9 +537,9 @@ func TestClientReadPartial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -550,14 +550,14 @@ func TestClientReadPartial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) byts, _ = base.InterleavedFrame{ Channel: 0, Payload: testRTPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -568,7 +568,7 @@ func TestClientReadPartial(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -639,7 +639,7 @@ func TestClientReadContentBase(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -664,13 +664,13 @@ func TestClientReadContentBase(t *testing.T) { Header: base.Header{ "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) case "inside control attribute": - body := string(tracks.Write(false)) + body := string(tracks.Marshal(false)) body = strings.Replace(body, "t=0 0", "t=0 0\r\na=control:rtsp://localhost:8554/teststream", 1) byts, _ = base.Response{ @@ -680,7 +680,7 @@ func TestClientReadContentBase(t *testing.T) { "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream2/"}, }, Body: []byte(body), - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) } @@ -691,7 +691,7 @@ func TestClientReadContentBase(t *testing.T) { require.Equal(t, mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), req.URL) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -707,9 +707,9 @@ func TestClientReadContentBase(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -720,7 +720,7 @@ func TestClientReadContentBase(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -731,7 +731,7 @@ func TestClientReadContentBase(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -782,7 +782,7 @@ func TestClientReadAnyPort(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -805,8 +805,8 @@ func TestClientReadAnyPort(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -815,7 +815,7 @@ func TestClientReadAnyPort(t *testing.T) { require.Equal(t, base.Setup, req.Method) var th headers.Transport - err = th.Read(req.Header["Transport"]) + err = th.Unmarshal(req.Header["Transport"]) require.NoError(t, err) l1a, err := net.ListenPacket("udp", "localhost:13344") @@ -851,9 +851,9 @@ func TestClientReadAnyPort(t *testing.T) { return &[2]int{23040, 23041} } }(), - }.Write(), + }.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -863,7 +863,7 @@ func TestClientReadAnyPort(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -944,7 +944,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -967,8 +967,8 @@ func TestClientReadAutomaticProtocol(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -978,7 +978,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusUnsupportedTransport, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -987,7 +987,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) require.Equal(t, headers.TransportProtocolTCP, inTH.Protocol) @@ -1001,9 +1001,9 @@ func TestClientReadAutomaticProtocol(t *testing.T) { return &v }(), InterleavedIDs: &[2]int{0, 1}, - }.Write(), + }.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1013,14 +1013,14 @@ func TestClientReadAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) byts, _ = base.InterleavedFrame{ Channel: 0, Payload: testRTPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -1067,7 +1067,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1082,7 +1082,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { Header: base.Header{ "WWW-Authenticate": v.Header(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1108,8 +1108,8 @@ func TestClientReadAutomaticProtocol(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1119,7 +1119,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { require.Equal(t, mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), req.URL) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -1135,9 +1135,9 @@ func TestClientReadAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1147,7 +1147,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1157,7 +1157,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1180,7 +1180,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1194,8 +1194,8 @@ func TestClientReadAutomaticProtocol(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1210,7 +1210,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { Header: base.Header{ "WWW-Authenticate": v.Header(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1223,7 +1223,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { require.NoError(t, err) inTH = headers.Transport{} - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th = headers.Transport{ @@ -1238,9 +1238,9 @@ func TestClientReadAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1250,14 +1250,14 @@ func TestClientReadAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) byts, _ = base.InterleavedFrame{ Channel: 0, Payload: testRTPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1267,7 +1267,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1319,7 +1319,7 @@ func TestClientReadDifferentInterleavedIDs(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1343,8 +1343,8 @@ func TestClientReadDifferentInterleavedIDs(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1354,7 +1354,7 @@ func TestClientReadDifferentInterleavedIDs(t *testing.T) { require.Equal(t, mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), req.URL) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -1369,9 +1369,9 @@ func TestClientReadDifferentInterleavedIDs(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1382,14 +1382,14 @@ func TestClientReadDifferentInterleavedIDs(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) byts, _ = base.InterleavedFrame{ Channel: 2, Payload: testRTPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1400,7 +1400,7 @@ func TestClientReadDifferentInterleavedIDs(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -1466,7 +1466,7 @@ func TestClientReadRedirect(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1479,7 +1479,7 @@ func TestClientReadRedirect(t *testing.T) { Header: base.Header{ "Location": base.HeaderValue{"rtsp://localhost:8554/test"}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1503,7 +1503,7 @@ func TestClientReadRedirect(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1528,10 +1528,10 @@ func TestClientReadRedirect(t *testing.T) { Opaque: &authOpaque, Stale: &authStale, Algorithm: &authAlg, - }.Write(), + }.Marshal(), }, StatusCode: base.StatusUnauthorized, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) } @@ -1540,7 +1540,7 @@ func TestClientReadRedirect(t *testing.T) { authHeaderVal, exists := req.Header["Authorization"] require.True(t, exists) var authHeader headers.Authenticate - require.NoError(t, authHeader.Read(authHeaderVal)) + require.NoError(t, authHeader.Unmarshal(authHeaderVal)) require.Equal(t, *authHeader.Username, "testusr") require.Equal(t, base.Describe, req.Method) } @@ -1560,8 +1560,8 @@ func TestClientReadRedirect(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1570,7 +1570,7 @@ func TestClientReadRedirect(t *testing.T) { require.Equal(t, base.Setup, req.Method) var th headers.Transport - err = th.Read(req.Header["Transport"]) + err = th.Unmarshal(req.Header["Transport"]) require.NoError(t, err) byts, _ = base.Response{ @@ -1584,9 +1584,9 @@ func TestClientReadRedirect(t *testing.T) { }(), ClientPorts: th.ClientPorts, ServerPorts: &[2]int{34556, 34557}, - }.Write(), + }.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1596,7 +1596,7 @@ func TestClientReadRedirect(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1656,7 +1656,7 @@ func TestClientReadPause(t *testing.T) { byts, _ := base.InterleavedFrame{ Channel: 0, Payload: testRTPPacketMarshaled, - }.Write() + }.Marshal() conn.Write(byts) } @@ -1701,7 +1701,7 @@ func TestClientReadPause(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1724,8 +1724,8 @@ func TestClientReadPause(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1734,7 +1734,7 @@ func TestClientReadPause(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -1756,9 +1756,9 @@ func TestClientReadPause(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1768,7 +1768,7 @@ func TestClientReadPause(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1783,7 +1783,7 @@ func TestClientReadPause(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1793,7 +1793,7 @@ func TestClientReadPause(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1808,7 +1808,7 @@ func TestClientReadPause(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -1882,7 +1882,7 @@ func TestClientReadRTCPReport(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1905,8 +1905,8 @@ func TestClientReadRTCPReport(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1915,7 +1915,7 @@ func TestClientReadRTCPReport(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) l1, err := net.ListenPacket("udp", "localhost:27556") @@ -1937,9 +1937,9 @@ func TestClientReadRTCPReport(t *testing.T) { }(), ServerPorts: &[2]int{27556, 27557}, ClientPorts: inTH.ClientPorts, - }.Write(), + }.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1949,7 +1949,7 @@ func TestClientReadRTCPReport(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2018,7 +2018,7 @@ func TestClientReadRTCPReport(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -2068,7 +2068,7 @@ func TestClientReadErrorTimeout(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2091,8 +2091,8 @@ func TestClientReadErrorTimeout(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2101,7 +2101,7 @@ func TestClientReadErrorTimeout(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -2129,9 +2129,9 @@ func TestClientReadErrorTimeout(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2141,7 +2141,7 @@ func TestClientReadErrorTimeout(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2159,7 +2159,7 @@ func TestClientReadErrorTimeout(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -2225,7 +2225,7 @@ func TestClientReadIgnoreTCPInvalidTrack(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2248,8 +2248,8 @@ func TestClientReadIgnoreTCPInvalidTrack(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2258,7 +2258,7 @@ func TestClientReadIgnoreTCPInvalidTrack(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -2273,9 +2273,9 @@ func TestClientReadIgnoreTCPInvalidTrack(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2285,21 +2285,21 @@ func TestClientReadIgnoreTCPInvalidTrack(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) byts, _ = base.InterleavedFrame{ Channel: 6, Payload: testRTPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) byts, _ = base.InterleavedFrame{ Channel: 0, Payload: testRTPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2309,7 +2309,7 @@ func TestClientReadIgnoreTCPInvalidTrack(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -2361,7 +2361,7 @@ func TestClientReadSeek(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2384,8 +2384,8 @@ func TestClientReadSeek(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2394,7 +2394,7 @@ func TestClientReadSeek(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -2409,9 +2409,9 @@ func TestClientReadSeek(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2420,7 +2420,7 @@ func TestClientReadSeek(t *testing.T) { require.Equal(t, base.Play, req.Method) var ra headers.Range - err = ra.Read(req.Header["Range"]) + err = ra.Unmarshal(req.Header["Range"]) require.NoError(t, err) require.Equal(t, headers.Range{ Value: &headers.RangeNPT{ @@ -2430,7 +2430,7 @@ func TestClientReadSeek(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2440,7 +2440,7 @@ func TestClientReadSeek(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2448,7 +2448,7 @@ func TestClientReadSeek(t *testing.T) { require.NoError(t, err) require.Equal(t, base.Play, req.Method) - err = ra.Read(req.Header["Range"]) + err = ra.Unmarshal(req.Header["Range"]) require.NoError(t, err) require.Equal(t, headers.Range{ Value: &headers.RangeNPT{ @@ -2458,7 +2458,7 @@ func TestClientReadSeek(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2468,7 +2468,7 @@ func TestClientReadSeek(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -2540,7 +2540,7 @@ func TestClientReadKeepaliveFromSession(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2563,8 +2563,8 @@ func TestClientReadKeepaliveFromSession(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2573,7 +2573,7 @@ func TestClientReadKeepaliveFromSession(t *testing.T) { require.Equal(t, base.Setup, req.Method) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) byts, _ = base.Response{ @@ -2587,16 +2587,16 @@ func TestClientReadKeepaliveFromSession(t *testing.T) { }(), ClientPorts: inTH.ClientPorts, ServerPorts: &[2]int{34556, 34557}, - }.Write(), + }.Marshal(), "Session": headers.Session{ Session: "ABCDE", Timeout: func() *uint { v := uint(1) return &v }(), - }.Write(), + }.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2606,7 +2606,7 @@ func TestClientReadKeepaliveFromSession(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2619,7 +2619,7 @@ func TestClientReadKeepaliveFromSession(t *testing.T) { byts, _ := base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -2673,7 +2673,7 @@ func TestClientReadDifferentSource(t *testing.T) { string(base.Play), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2697,8 +2697,8 @@ func TestClientReadDifferentSource(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/test/stream?param=value/"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2708,7 +2708,7 @@ func TestClientReadDifferentSource(t *testing.T) { require.Equal(t, mustParseURL("rtsp://localhost:8554/test/stream?param=value/trackID=0"), req.URL) var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) require.NoError(t, err) th := headers.Transport{ @@ -2736,9 +2736,9 @@ func TestClientReadDifferentSource(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, Header: base.Header{ - "Transport": th.Write(), + "Transport": th.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2750,7 +2750,7 @@ func TestClientReadDifferentSource(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -2768,7 +2768,7 @@ func TestClientReadDifferentSource(t *testing.T) { byts, _ = base.Response{ StatusCode: base.StatusOK, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() diff --git a/client_test.go b/client_test.go index cf51288b..45ade5d2 100644 --- a/client_test.go +++ b/client_test.go @@ -108,7 +108,7 @@ func TestClientSession(t *testing.T) { }, ", ")}, "Session": base.HeaderValue{"123456"}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -133,8 +133,8 @@ func TestClientSession(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, "Session": base.HeaderValue{"123456"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -178,7 +178,7 @@ func TestClientAuth(t *testing.T) { string(base.Describe), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -193,7 +193,7 @@ func TestClientAuth(t *testing.T) { Header: base.Header{ "WWW-Authenticate": v.Header(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -218,8 +218,8 @@ func TestClientAuth(t *testing.T) { Header: base.Header{ "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), - }.Write() + Body: tracks.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() @@ -263,7 +263,7 @@ func TestClientDescribeCharset(t *testing.T) { string(base.Describe), }, ", ")}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -284,8 +284,8 @@ func TestClientDescribeCharset(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp; charset=utf-8"}, "Content-Base": base.HeaderValue{"rtsp://localhost:8554/teststream/"}, }, - Body: Tracks{track1}.Write(false), - }.Write() + Body: Tracks{track1}.Marshal(false), + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) }() diff --git a/examples/client-read-h264-save-to-disk/mpegtsencoder.go b/examples/client-read-h264-save-to-disk/mpegtsencoder.go index 7e893fbc..79937752 100644 --- a/examples/client-read-h264-save-to-disk/mpegtsencoder.go +++ b/examples/client-read-h264-save-to-disk/mpegtsencoder.go @@ -143,7 +143,7 @@ func (e *mpegtsEncoder) encode(nalus [][]byte, pts time.Duration) error { } // encode into Annex-B - annexb, err := h264.AnnexBEncode(filteredNALUs) + annexb, err := h264.AnnexBMarshal(filteredNALUs) if err != nil { return err } diff --git a/pkg/aac/adts.go b/pkg/aac/adts.go index 040fdceb..33d02b6a 100644 --- a/pkg/aac/adts.go +++ b/pkg/aac/adts.go @@ -12,27 +12,29 @@ type ADTSPacket struct { AU []byte } -// DecodeADTS decodes an ADTS stream into ADTS packets. -func DecodeADTS(buf []byte) ([]*ADTSPacket, error) { +// ADTSPackets is a group od ADTS packets. +type ADTSPackets []*ADTSPacket + +// Unmarshal decodes an ADTS stream into ADTS packets. +func (ps *ADTSPackets) Unmarshal(buf []byte) error { // refs: https://wiki.multimedia.cx/index.php/ADTS - var ret []*ADTSPacket bl := len(buf) pos := 0 for { if (bl - pos) < 8 { - return nil, fmt.Errorf("invalid length") + return fmt.Errorf("invalid length") } syncWord := (uint16(buf[pos]) << 4) | (uint16(buf[pos+1]) >> 4) if syncWord != 0xfff { - return nil, fmt.Errorf("invalid syncword") + return fmt.Errorf("invalid syncword") } protectionAbsent := buf[pos+1] & 0x01 if protectionAbsent != 1 { - return nil, fmt.Errorf("CRC is not supported") + return fmt.Errorf("CRC is not supported") } pkt := &ADTSPacket{} @@ -41,7 +43,7 @@ func DecodeADTS(buf []byte) ([]*ADTSPacket, error) { switch pkt.Type { case MPEG4AudioTypeAACLC: default: - return nil, fmt.Errorf("unsupported audio type: %d", pkt.Type) + return fmt.Errorf("unsupported audio type: %d", pkt.Type) } sampleRateIndex := (buf[pos+2] >> 2) & 0x0F @@ -50,7 +52,7 @@ func DecodeADTS(buf []byte) ([]*ADTSPacket, error) { pkt.SampleRate = sampleRates[sampleRateIndex] default: - return nil, fmt.Errorf("invalid sample rate index: %d", sampleRateIndex) + return fmt.Errorf("invalid sample rate index: %d", sampleRateIndex) } channelConfig := ((buf[pos+2] & 0x01) << 2) | ((buf[pos+3] >> 6) & 0x03) @@ -62,52 +64,52 @@ func DecodeADTS(buf []byte) ([]*ADTSPacket, error) { pkt.ChannelCount = 8 default: - return nil, fmt.Errorf("invalid channel configuration: %d", channelConfig) + return fmt.Errorf("invalid channel configuration: %d", channelConfig) } frameLen := int(((uint16(buf[pos+3])&0x03)<<11)| (uint16(buf[pos+4])<<3)| ((uint16(buf[pos+5])>>5)&0x07)) - 7 if frameLen > MaxAccessUnitSize { - return nil, fmt.Errorf("AU size (%d) is too big (maximum is %d)", frameLen, MaxAccessUnitSize) + return fmt.Errorf("AU size (%d) is too big (maximum is %d)", frameLen, MaxAccessUnitSize) } frameCount := buf[pos+6] & 0x03 if frameCount != 0 { - return nil, fmt.Errorf("frame count greater than 1 is not supported") + return fmt.Errorf("frame count greater than 1 is not supported") } if len(buf[pos+7:]) < frameLen { - return nil, fmt.Errorf("invalid frame length") + return fmt.Errorf("invalid frame length") } pkt.AU = buf[pos+7 : pos+7+frameLen] pos += 7 + frameLen - ret = append(ret, pkt) + *ps = append(*ps, pkt) if (bl - pos) == 0 { break } } - return ret, nil + return nil } -func encodeADTSSize(pkts []*ADTSPacket) int { +func (ps ADTSPackets) marshalSize() int { n := 0 - for _, pkt := range pkts { + for _, pkt := range ps { n += 7 + len(pkt.AU) } return n } -// EncodeADTS encodes ADTS packets into an ADTS stream. -func EncodeADTS(pkts []*ADTSPacket) ([]byte, error) { - buf := make([]byte, encodeADTSSize(pkts)) +// Marshal encodes ADTS packets into an ADTS stream. +func (ps ADTSPackets) Marshal() ([]byte, error) { + buf := make([]byte, ps.marshalSize()) pos := 0 - for _, pkt := range pkts { + for _, pkt := range ps { sampleRateIndex, ok := reverseSampleRates[pkt.SampleRate] if !ok { return nil, fmt.Errorf("invalid sample rate: %d", pkt.SampleRate) diff --git a/pkg/aac/adts_test.go b/pkg/aac/adts_test.go index fb48ffe4..53c85bd3 100644 --- a/pkg/aac/adts_test.go +++ b/pkg/aac/adts_test.go @@ -9,12 +9,12 @@ import ( var casesADTS = []struct { name string byts []byte - pkts []*ADTSPacket + pkts ADTSPackets }{ { "single", []byte{0xff, 0xf1, 0x4c, 0x80, 0x1, 0x3f, 0xfc, 0xaa, 0xbb}, - []*ADTSPacket{ + ADTSPackets{ { Type: 2, SampleRate: 48000, @@ -30,7 +30,7 @@ var casesADTS = []struct { 0xbb, 0xff, 0xf1, 0x4c, 0x80, 0x1, 0x3f, 0xfc, 0xcc, 0xdd, }, - []*ADTSPacket{ + ADTSPackets{ { Type: 2, SampleRate: 44100, @@ -47,27 +47,28 @@ var casesADTS = []struct { }, } -func TestDecodeADTS(t *testing.T) { +func TestADTSUnmarshal(t *testing.T) { for _, ca := range casesADTS { t.Run(ca.name, func(t *testing.T) { - pkts, err := DecodeADTS(ca.byts) + var pkts ADTSPackets + err := pkts.Unmarshal(ca.byts) require.NoError(t, err) require.Equal(t, ca.pkts, pkts) }) } } -func TestEncodeADTS(t *testing.T) { +func TestADTSMarshal(t *testing.T) { for _, ca := range casesADTS { t.Run(ca.name, func(t *testing.T) { - byts, err := EncodeADTS(ca.pkts) + byts, err := ca.pkts.Marshal() require.NoError(t, err) require.Equal(t, ca.byts, byts) }) } } -func TestDecodeADTSErrors(t *testing.T) { +func TestADTSUnmarshalErrors(t *testing.T) { for _, ca := range []struct { name string byts []byte @@ -115,7 +116,8 @@ func TestDecodeADTSErrors(t *testing.T) { }, } { t.Run(ca.name, func(t *testing.T) { - _, err := DecodeADTS(ca.byts) + var pkts ADTSPackets + err := pkts.Unmarshal(ca.byts) require.EqualError(t, err, ca.err) }) } diff --git a/pkg/auth/sender.go b/pkg/auth/sender.go index 5b3ad1be..7e982374 100644 --- a/pkg/auth/sender.go +++ b/pkg/auth/sender.go @@ -30,7 +30,7 @@ func NewSender(v base.HeaderValue, user string, pass string) (*Sender, error) { return "" }(); v0 != "" { var auth headers.Authenticate - err := auth.Read(base.HeaderValue{v0}) + err := auth.Unmarshal(base.HeaderValue{v0}) if err != nil { return nil, err } @@ -61,7 +61,7 @@ func NewSender(v base.HeaderValue, user string, pass string) (*Sender, error) { return "" }(); v0 != "" { var auth headers.Authenticate - err := auth.Read(base.HeaderValue{v0}) + err := auth.Unmarshal(base.HeaderValue{v0}) if err != nil { return nil, err } @@ -112,5 +112,5 @@ func (se *Sender) AddAuthorization(req *base.Request) { req.Header = make(base.Header) } - req.Header["Authorization"] = h.Write() + req.Header["Authorization"] = h.Marshal() } diff --git a/pkg/auth/validator.go b/pkg/auth/validator.go index 58b1f04b..1f33712c 100644 --- a/pkg/auth/validator.go +++ b/pkg/auth/validator.go @@ -99,14 +99,14 @@ func (va *Validator) Header() base.HeaderValue { ret = append(ret, (&headers.Authenticate{ Method: headers.AuthBasic, Realm: &va.realm, - }).Write()...) + }).Marshal()...) case headers.AuthDigest: ret = append(ret, headers.Authenticate{ Method: headers.AuthDigest, Realm: &va.realm, Nonce: &va.nonce, - }.Write()...) + }.Marshal()...) } } return ret @@ -115,7 +115,7 @@ func (va *Validator) Header() base.HeaderValue { // ValidateRequest validates a request sent by a client. func (va *Validator) ValidateRequest(req *base.Request) error { var auth headers.Authorization - err := auth.Read(req.Header["Authorization"]) + err := auth.Unmarshal(req.Header["Authorization"]) if err != nil { return err } diff --git a/pkg/base/body.go b/pkg/base/body.go index 6f39e910..02faa67b 100644 --- a/pkg/base/body.go +++ b/pkg/base/body.go @@ -39,16 +39,16 @@ func (b *body) read(header Header, rb *bufio.Reader) error { return nil } -func (b body) writeSize() int { +func (b body) marshalSize() int { return len(b) } -func (b body) writeTo(buf []byte) int { +func (b body) marshalTo(buf []byte) int { return copy(buf, b) } -func (b body) write() []byte { - buf := make([]byte, b.writeSize()) - b.writeTo(buf) +func (b body) marshal() []byte { + buf := make([]byte, b.marshalSize()) + b.marshalTo(buf) return buf } diff --git a/pkg/base/body_test.go b/pkg/base/body_test.go index de04a01f..f6a45147 100644 --- a/pkg/base/body_test.go +++ b/pkg/base/body_test.go @@ -73,10 +73,10 @@ func TestBodyReadErrors(t *testing.T) { } } -func TestBodyWrite(t *testing.T) { +func TestBodyMarshal(t *testing.T) { for _, ca := range casesBody { t.Run(ca.name, func(t *testing.T) { - buf := body(ca.byts).write() + buf := body(ca.byts).marshal() require.Equal(t, ca.byts, buf) }) } diff --git a/pkg/base/header.go b/pkg/base/header.go index 32f153cc..f670f138 100644 --- a/pkg/base/header.go +++ b/pkg/base/header.go @@ -97,7 +97,7 @@ func (h *Header) read(rb *bufio.Reader) error { return nil } -func (h Header) writeSize() int { +func (h Header) marshalSize() int { // sort headers by key // in order to obtain deterministic results keys := make([]string, len(h)) @@ -119,7 +119,7 @@ func (h Header) writeSize() int { return n } -func (h Header) writeTo(buf []byte) int { +func (h Header) marshalTo(buf []byte) int { // sort headers by key // in order to obtain deterministic results keys := make([]string, len(h)) @@ -141,8 +141,8 @@ func (h Header) writeTo(buf []byte) int { return pos } -func (h Header) write() []byte { - buf := make([]byte, h.writeSize()) - h.writeTo(buf) +func (h Header) marshal() []byte { + buf := make([]byte, h.marshalSize()) + h.marshalTo(buf) return buf } diff --git a/pkg/base/header_test.go b/pkg/base/header_test.go index e58debb3..20198f07 100644 --- a/pkg/base/header_test.go +++ b/pkg/base/header_test.go @@ -176,7 +176,7 @@ func TestHeaderReadErrors(t *testing.T) { func TestHeaderWrite(t *testing.T) { for _, ca := range casesHeader { t.Run(ca.name, func(t *testing.T) { - buf := ca.header.write() + buf := ca.header.marshal() require.Equal(t, ca.enc, buf) }) } diff --git a/pkg/base/interleavedframe.go b/pkg/base/interleavedframe.go index baa8dd00..04d66d43 100644 --- a/pkg/base/interleavedframe.go +++ b/pkg/base/interleavedframe.go @@ -77,7 +77,7 @@ type InterleavedFrame struct { Payload []byte } -// Read reads an interleaved frame. +// Read decodes an interleaved frame. func (f *InterleavedFrame) Read(maxPayloadSize int, br *bufio.Reader) error { var header [4]byte _, err := io.ReadFull(br, header[:]) @@ -105,13 +105,13 @@ func (f *InterleavedFrame) Read(maxPayloadSize int, br *bufio.Reader) error { return nil } -// WriteSize returns the size of an InterleavedFrame. -func (f InterleavedFrame) WriteSize() int { +// MarshalSize returns the size of an InterleavedFrame. +func (f InterleavedFrame) MarshalSize() int { return 4 + len(f.Payload) } -// WriteTo writes an InterleavedFrame. -func (f InterleavedFrame) WriteTo(buf []byte) (int, error) { +// MarshalTo writes an InterleavedFrame. +func (f InterleavedFrame) MarshalTo(buf []byte) (int, error) { pos := 0 pos += copy(buf[pos:], []byte{0x24, byte(f.Channel)}) @@ -124,9 +124,9 @@ func (f InterleavedFrame) WriteTo(buf []byte) (int, error) { return pos, nil } -// Write writes an InterleavedFrame. -func (f InterleavedFrame) Write() ([]byte, error) { - buf := make([]byte, f.WriteSize()) - _, err := f.WriteTo(buf) +// Marshal writes an InterleavedFrame. +func (f InterleavedFrame) Marshal() ([]byte, error) { + buf := make([]byte, f.MarshalSize()) + _, err := f.MarshalTo(buf) return buf, err } diff --git a/pkg/base/interleavedframe_test.go b/pkg/base/interleavedframe_test.go index 1c9bdcfe..00538fbb 100644 --- a/pkg/base/interleavedframe_test.go +++ b/pkg/base/interleavedframe_test.go @@ -79,10 +79,10 @@ func TestInterleavedFrameReadErrors(t *testing.T) { } } -func TestInterleavedFrameWrite(t *testing.T) { +func TestInterleavedFrameMarshal(t *testing.T) { for _, ca := range casesInterleavedFrame { t.Run(ca.name, func(t *testing.T) { - buf, err := ca.dec.Write() + buf, err := ca.dec.Marshal() require.NoError(t, err) require.Equal(t, ca.enc, buf) }) diff --git a/pkg/base/request.go b/pkg/base/request.go index 709b5d39..4b38cf0a 100644 --- a/pkg/base/request.go +++ b/pkg/base/request.go @@ -117,8 +117,8 @@ func (req *Request) ReadIgnoreFrames(maxPayloadSize int, rb *bufio.Reader) error } } -// WriteSize returns the size of a Request. -func (req Request) WriteSize() int { +// MarshalSize returns the size of a Request. +func (req Request) MarshalSize() int { n := 0 urStr := req.URL.CloneWithoutCredentials().String() @@ -128,15 +128,15 @@ func (req Request) WriteSize() int { req.Header["Content-Length"] = HeaderValue{strconv.FormatInt(int64(len(req.Body)), 10)} } - n += req.Header.writeSize() + n += req.Header.marshalSize() - n += body(req.Body).writeSize() + n += body(req.Body).marshalSize() return n } -// WriteTo writes a Request. -func (req Request) WriteTo(buf []byte) (int, error) { +// MarshalTo writes a Request. +func (req Request) MarshalTo(buf []byte) (int, error) { pos := 0 urStr := req.URL.CloneWithoutCredentials().String() @@ -146,22 +146,22 @@ func (req Request) WriteTo(buf []byte) (int, error) { req.Header["Content-Length"] = HeaderValue{strconv.FormatInt(int64(len(req.Body)), 10)} } - pos += req.Header.writeTo(buf[pos:]) + pos += req.Header.marshalTo(buf[pos:]) - pos += body(req.Body).writeTo(buf[pos:]) + pos += body(req.Body).marshalTo(buf[pos:]) return pos, nil } -// Write writes a Request. -func (req Request) Write() ([]byte, error) { - buf := make([]byte, req.WriteSize()) - _, err := req.WriteTo(buf) +// Marshal writes a Request. +func (req Request) Marshal() ([]byte, error) { + buf := make([]byte, req.MarshalSize()) + _, err := req.MarshalTo(buf) return buf, err } // String implements fmt.Stringer. func (req Request) String() string { - buf, _ := req.Write() + buf, _ := req.Marshal() return string(buf) } diff --git a/pkg/base/request_test.go b/pkg/base/request_test.go index e5689a26..3e345ad6 100644 --- a/pkg/base/request_test.go +++ b/pkg/base/request_test.go @@ -228,10 +228,10 @@ func TestRequestReadErrors(t *testing.T) { } } -func TestRequestWrite(t *testing.T) { +func TestRequestMarshal(t *testing.T) { for _, ca := range casesRequest { t.Run(ca.name, func(t *testing.T) { - buf, err := ca.req.Write() + buf, err := ca.req.Marshal() require.NoError(t, err) require.Equal(t, ca.byts, buf) }) diff --git a/pkg/base/response.go b/pkg/base/response.go index 02fa3ea8..c7a0bba2 100644 --- a/pkg/base/response.go +++ b/pkg/base/response.go @@ -201,8 +201,8 @@ func (res *Response) ReadIgnoreFrames(maxPayloadSize int, rb *bufio.Reader) erro } } -// WriteSize returns the size of a Response. -func (res Response) WriteSize() int { +// MarshalSize returns the size of a Response. +func (res Response) MarshalSize() int { n := 0 if res.StatusMessage == "" { @@ -219,15 +219,15 @@ func (res Response) WriteSize() int { res.Header["Content-Length"] = HeaderValue{strconv.FormatInt(int64(len(res.Body)), 10)} } - n += res.Header.writeSize() + n += res.Header.marshalSize() - n += body(res.Body).writeSize() + n += body(res.Body).marshalSize() return n } -// WriteTo writes a Response. -func (res Response) WriteTo(buf []byte) (int, error) { +// MarshalTo writes a Response. +func (res Response) MarshalTo(buf []byte) (int, error) { if res.StatusMessage == "" { if status, ok := statusMessages[res.StatusCode]; ok { res.StatusMessage = status @@ -244,22 +244,22 @@ func (res Response) WriteTo(buf []byte) (int, error) { res.Header["Content-Length"] = HeaderValue{strconv.FormatInt(int64(len(res.Body)), 10)} } - pos += res.Header.writeTo(buf[pos:]) + pos += res.Header.marshalTo(buf[pos:]) - pos += body(res.Body).writeTo(buf[pos:]) + pos += body(res.Body).marshalTo(buf[pos:]) return pos, nil } -// Write writes a Response. -func (res Response) Write() ([]byte, error) { - buf := make([]byte, res.WriteSize()) - _, err := res.WriteTo(buf) +// Marshal writes a Response. +func (res Response) Marshal() ([]byte, error) { + buf := make([]byte, res.MarshalSize()) + _, err := res.MarshalTo(buf) return buf, err } // String implements fmt.Stringer. func (res Response) String() string { - buf, _ := res.Write() + buf, _ := res.Marshal() return string(buf) } diff --git a/pkg/base/response_test.go b/pkg/base/response_test.go index 2b53ef2a..df890a66 100644 --- a/pkg/base/response_test.go +++ b/pkg/base/response_test.go @@ -175,17 +175,17 @@ func TestResponseReadErrors(t *testing.T) { } } -func TestResponseWrite(t *testing.T) { +func TestResponseMarshal(t *testing.T) { for _, c := range casesResponse { t.Run(c.name, func(t *testing.T) { - buf, err := c.res.Write() + buf, err := c.res.Marshal() require.NoError(t, err) require.Equal(t, c.byts, buf) }) } } -func TestResponseWriteAutoFillStatus(t *testing.T) { +func TestResponseMarshalAutoFillStatus(t *testing.T) { res := &Response{ StatusCode: StatusMethodNotAllowed, Header: Header{ @@ -207,7 +207,7 @@ func TestResponseWriteAutoFillStatus(t *testing.T) { "\r\n", ) - buf, err := res.Write() + buf, err := res.Marshal() require.NoError(t, err) require.Equal(t, byts, buf) } diff --git a/pkg/h264/annexb.go b/pkg/h264/annexb.go index 952bb6ea..6fdb11dc 100644 --- a/pkg/h264/annexb.go +++ b/pkg/h264/annexb.go @@ -4,8 +4,8 @@ import ( "fmt" ) -// AnnexBDecode decodes NALUs from the Annex-B stream format. -func AnnexBDecode(byts []byte) ([][]byte, error) { +// AnnexBUnmarshal decodes NALUs from the Annex-B stream format. +func AnnexBUnmarshal(byts []byte) ([][]byte, error) { bl := len(byts) zeroCount := 0 @@ -73,7 +73,7 @@ outer: return ret, nil } -func annexBEncodeSize(nalus [][]byte) int { +func annexBMarshalSize(nalus [][]byte) int { n := 0 for _, nalu := range nalus { n += 4 + len(nalu) @@ -81,9 +81,9 @@ func annexBEncodeSize(nalus [][]byte) int { return n } -// AnnexBEncode encodes NALUs into the Annex-B stream format. -func AnnexBEncode(nalus [][]byte) ([]byte, error) { - buf := make([]byte, annexBEncodeSize(nalus)) +// AnnexBMarshal encodes NALUs into the Annex-B stream format. +func AnnexBMarshal(nalus [][]byte) ([]byte, error) { + buf := make([]byte, annexBMarshalSize(nalus)) pos := 0 for _, nalu := range nalus { diff --git a/pkg/h264/annexb_test.go b/pkg/h264/annexb_test.go index 03d6a57d..8fc23f95 100644 --- a/pkg/h264/annexb_test.go +++ b/pkg/h264/annexb_test.go @@ -65,27 +65,27 @@ var casesAnnexB = []struct { }, } -func TestAnnexBDecode(t *testing.T) { +func TestAnnexBUnmarshal(t *testing.T) { for _, ca := range casesAnnexB { t.Run(ca.name, func(t *testing.T) { - dec, err := AnnexBDecode(ca.encin) + dec, err := AnnexBUnmarshal(ca.encin) require.NoError(t, err) require.Equal(t, ca.dec, dec) }) } } -func TestAnnexBEncode(t *testing.T) { +func TestAnnexBMarshal(t *testing.T) { for _, ca := range casesAnnexB { t.Run(ca.name, func(t *testing.T) { - enc, err := AnnexBEncode(ca.dec) + enc, err := AnnexBMarshal(ca.dec) require.NoError(t, err) require.Equal(t, ca.encout, enc) }) } } -func TestAnnexBDecodeError(t *testing.T) { +func TestAnnexBUnmarshalError(t *testing.T) { for _, ca := range []struct { name string enc []byte @@ -118,7 +118,7 @@ func TestAnnexBDecodeError(t *testing.T) { }, } { t.Run(ca.name, func(t *testing.T) { - _, err := AnnexBDecode(ca.enc) + _, err := AnnexBUnmarshal(ca.enc) require.EqualError(t, err, ca.err) }) } diff --git a/pkg/h264/avcc.go b/pkg/h264/avcc.go index 58cf6c7c..74c7cce5 100644 --- a/pkg/h264/avcc.go +++ b/pkg/h264/avcc.go @@ -5,8 +5,8 @@ import ( "fmt" ) -// AVCCDecode decodes NALUs from the AVCC stream format. -func AVCCDecode(buf []byte) ([][]byte, error) { +// AVCCUnmarshal decodes NALUs from the AVCC stream format. +func AVCCUnmarshal(buf []byte) ([][]byte, error) { bl := len(buf) pos := 0 var ret [][]byte @@ -38,7 +38,7 @@ func AVCCDecode(buf []byte) ([][]byte, error) { return ret, nil } -func avccEncodeSize(nalus [][]byte) int { +func avccMarshalSize(nalus [][]byte) int { n := 0 for _, nalu := range nalus { n += 4 + len(nalu) @@ -46,9 +46,9 @@ func avccEncodeSize(nalus [][]byte) int { return n } -// AVCCEncode encodes NALUs into the AVCC stream format. -func AVCCEncode(nalus [][]byte) ([]byte, error) { - buf := make([]byte, avccEncodeSize(nalus)) +// AVCCMarshal encodes NALUs into the AVCC stream format. +func AVCCMarshal(nalus [][]byte) ([]byte, error) { + buf := make([]byte, avccMarshalSize(nalus)) pos := 0 for _, nalu := range nalus { diff --git a/pkg/h264/avcc_test.go b/pkg/h264/avcc_test.go index 8f77fb7b..463aded5 100644 --- a/pkg/h264/avcc_test.go +++ b/pkg/h264/avcc_test.go @@ -39,27 +39,27 @@ var casesAVCC = []struct { }, } -func TestAVCCDecode(t *testing.T) { +func TestAVCCUnmarshal(t *testing.T) { for _, ca := range casesAVCC { t.Run(ca.name, func(t *testing.T) { - dec, err := AVCCDecode(ca.enc) + dec, err := AVCCUnmarshal(ca.enc) require.NoError(t, err) require.Equal(t, ca.dec, dec) }) } } -func TestAVCCEncode(t *testing.T) { +func TestAVCCMarshal(t *testing.T) { for _, ca := range casesAVCC { t.Run(ca.name, func(t *testing.T) { - enc, err := AVCCEncode(ca.dec) + enc, err := AVCCMarshal(ca.dec) require.NoError(t, err) require.Equal(t, ca.enc, enc) }) } } -func TestAVCCDecodeError(t *testing.T) { +func TestAVCCUnmarshalError(t *testing.T) { for _, ca := range []struct { name string enc []byte @@ -78,7 +78,7 @@ func TestAVCCDecodeError(t *testing.T) { }, } { t.Run(ca.name, func(t *testing.T) { - _, err := AVCCDecode(ca.enc) + _, err := AVCCUnmarshal(ca.enc) require.Error(t, err) }) } diff --git a/pkg/headers/authenticate.go b/pkg/headers/authenticate.go index 0fe9f124..28713ba7 100644 --- a/pkg/headers/authenticate.go +++ b/pkg/headers/authenticate.go @@ -49,8 +49,8 @@ type Authenticate struct { Algorithm *string } -// Read decodes an Authenticate or a WWW-Authenticate header. -func (h *Authenticate) Read(v base.HeaderValue) error { +// Unmarshal decodes an Authenticate or a WWW-Authenticate header. +func (h *Authenticate) Unmarshal(v base.HeaderValue) error { if len(v) == 0 { return fmt.Errorf("value not provided") } @@ -116,8 +116,8 @@ func (h *Authenticate) Read(v base.HeaderValue) error { return nil } -// Write encodes an Authenticate or a WWW-Authenticate header. -func (h Authenticate) Write() base.HeaderValue { +// Marshal encodes an Authenticate or a WWW-Authenticate header. +func (h Authenticate) Marshal() base.HeaderValue { ret := "" switch h.Method { diff --git a/pkg/headers/authenticate_test.go b/pkg/headers/authenticate_test.go index 38a64ee2..7162de46 100644 --- a/pkg/headers/authenticate_test.go +++ b/pkg/headers/authenticate_test.go @@ -178,18 +178,18 @@ var casesAuthenticate = []struct { }, } -func TestAuthenticateRead(t *testing.T) { +func TestAuthenticateUnmarshal(t *testing.T) { for _, ca := range casesAuthenticate { t.Run(ca.name, func(t *testing.T) { var h Authenticate - err := h.Read(ca.vin) + err := h.Unmarshal(ca.vin) require.NoError(t, err) require.Equal(t, ca.h, h) }) } } -func TestAutenticatehReadErrors(t *testing.T) { +func TestAutenticatehUnmarshalErrors(t *testing.T) { for _, ca := range []struct { name string hv base.HeaderValue @@ -223,16 +223,16 @@ func TestAutenticatehReadErrors(t *testing.T) { } { t.Run(ca.name, func(t *testing.T) { var h Authenticate - err := h.Read(ca.hv) + err := h.Unmarshal(ca.hv) require.EqualError(t, err, ca.err) }) } } -func TestAuthenticateWrite(t *testing.T) { +func TestAuthenticateMarshal(t *testing.T) { for _, ca := range casesAuthenticate { t.Run(ca.name, func(t *testing.T) { - vout := ca.h.Write() + vout := ca.h.Marshal() require.Equal(t, ca.vout, vout) }) } diff --git a/pkg/headers/authorization.go b/pkg/headers/authorization.go index fd602a62..b7d27d5d 100644 --- a/pkg/headers/authorization.go +++ b/pkg/headers/authorization.go @@ -23,8 +23,8 @@ type Authorization struct { DigestValues Authenticate } -// Read decodes an Authorization header. -func (h *Authorization) Read(v base.HeaderValue) error { +// Unmarshal decodes an Authorization header. +func (h *Authorization) Unmarshal(v base.HeaderValue) error { if len(v) == 0 { return fmt.Errorf("value not provided") } @@ -57,7 +57,7 @@ func (h *Authorization) Read(v base.HeaderValue) error { h.Method = AuthDigest var vals Authenticate - err := vals.Read(base.HeaderValue{v0}) + err := vals.Unmarshal(base.HeaderValue{v0}) if err != nil { return err } @@ -71,8 +71,8 @@ func (h *Authorization) Read(v base.HeaderValue) error { return nil } -// Write encodes an Authorization header. -func (h Authorization) Write() base.HeaderValue { +// Marshal encodes an Authorization header. +func (h Authorization) Marshal() base.HeaderValue { switch h.Method { case AuthBasic: response := base64.StdEncoding.EncodeToString([]byte(h.BasicUser + ":" + h.BasicPass)) @@ -80,6 +80,6 @@ func (h Authorization) Write() base.HeaderValue { return base.HeaderValue{"Basic " + response} default: // AuthDigest - return h.DigestValues.Write() + return h.DigestValues.Marshal() } } diff --git a/pkg/headers/authorization_test.go b/pkg/headers/authorization_test.go index 3c415079..fae24752 100644 --- a/pkg/headers/authorization_test.go +++ b/pkg/headers/authorization_test.go @@ -49,18 +49,18 @@ var casesAuthorization = []struct { }, } -func TestAuthorizationRead(t *testing.T) { +func TestAuthorizationUnmarshal(t *testing.T) { for _, ca := range casesAuthorization { t.Run(ca.name, func(t *testing.T) { var h Authorization - err := h.Read(ca.vin) + err := h.Unmarshal(ca.vin) require.NoError(t, err) require.Equal(t, ca.h, h) }) } } -func TestAuthorizationReadErrors(t *testing.T) { +func TestAuthorizationUnmarshalErrors(t *testing.T) { for _, ca := range []struct { name string hv base.HeaderValue @@ -99,16 +99,16 @@ func TestAuthorizationReadErrors(t *testing.T) { } { t.Run(ca.name, func(t *testing.T) { var h Authorization - err := h.Read(ca.hv) + err := h.Unmarshal(ca.hv) require.EqualError(t, err, ca.err) }) } } -func TestAuthorizationWrite(t *testing.T) { +func TestAuthorizationMarshal(t *testing.T) { for _, ca := range casesAuthorization { t.Run(ca.name, func(t *testing.T) { - vout := ca.h.Write() + vout := ca.h.Marshal() require.Equal(t, ca.vout, vout) }) } diff --git a/pkg/headers/range.go b/pkg/headers/range.go index 5f741d58..69502eeb 100644 --- a/pkg/headers/range.go +++ b/pkg/headers/range.go @@ -25,7 +25,7 @@ type RangeSMPTETime struct { Subframe uint } -func (t *RangeSMPTETime) read(s string) error { +func (t *RangeSMPTETime) unmarshal(s string) error { parts := strings.Split(s, ":") if len(parts) != 3 && len(parts) != 4 { return fmt.Errorf("invalid SMPTE time (%v)", s) @@ -77,7 +77,7 @@ func (t *RangeSMPTETime) read(s string) error { return nil } -func (t RangeSMPTETime) write() string { +func (t RangeSMPTETime) marshal() string { d := uint64(t.Time.Seconds()) hours := d / 3600 d %= 3600 @@ -103,15 +103,15 @@ type RangeSMPTE struct { End *RangeSMPTETime } -func (r *RangeSMPTE) read(start string, end string) error { - err := r.Start.read(start) +func (r *RangeSMPTE) unmarshal(start string, end string) error { + err := r.Start.unmarshal(start) if err != nil { return err } if end != "" { var v RangeSMPTETime - err := v.read(end) + err := v.unmarshal(end) if err != nil { return err } @@ -121,10 +121,10 @@ func (r *RangeSMPTE) read(start string, end string) error { return nil } -func (r RangeSMPTE) write() string { - ret := "smpte=" + r.Start.write() + "-" +func (r RangeSMPTE) marshal() string { + ret := "smpte=" + r.Start.marshal() + "-" if r.End != nil { - ret += r.End.write() + ret += r.End.marshal() } return ret } @@ -132,7 +132,7 @@ func (r RangeSMPTE) write() string { // RangeNPTTime is a time expressed in NPT unit. type RangeNPTTime time.Duration -func (t *RangeNPTTime) read(s string) error { +func (t *RangeNPTTime) unmarshal(s string) error { parts := strings.Split(s, ":") if len(parts) > 3 { return fmt.Errorf("invalid NPT time (%v)", s) @@ -170,7 +170,7 @@ func (t *RangeNPTTime) read(s string) error { return nil } -func (t RangeNPTTime) write() string { +func (t RangeNPTTime) marshal() string { return strconv.FormatFloat(time.Duration(t).Seconds(), 'f', -1, 64) } @@ -180,15 +180,15 @@ type RangeNPT struct { End *RangeNPTTime } -func (r *RangeNPT) read(start string, end string) error { - err := r.Start.read(start) +func (r *RangeNPT) unmarshal(start string, end string) error { + err := r.Start.unmarshal(start) if err != nil { return err } if end != "" { var v RangeNPTTime - err := v.read(end) + err := v.unmarshal(end) if err != nil { return err } @@ -198,10 +198,10 @@ func (r *RangeNPT) read(start string, end string) error { return nil } -func (r RangeNPT) write() string { - ret := "npt=" + r.Start.write() + "-" +func (r RangeNPT) marshal() string { + ret := "npt=" + r.Start.marshal() + "-" if r.End != nil { - ret += r.End.write() + ret += r.End.marshal() } return ret } @@ -209,7 +209,7 @@ func (r RangeNPT) write() string { // RangeUTCTime is a time expressed in UTC unit. type RangeUTCTime time.Time -func (t *RangeUTCTime) read(s string) error { +func (t *RangeUTCTime) unmarshal(s string) error { tmp, err := time.Parse("20060102T150405Z", s) if err != nil { return err @@ -219,7 +219,7 @@ func (t *RangeUTCTime) read(s string) error { return nil } -func (t RangeUTCTime) write() string { +func (t RangeUTCTime) marshal() string { return time.Time(t).Format("20060102T150405Z") } @@ -229,15 +229,15 @@ type RangeUTC struct { End *RangeUTCTime } -func (r *RangeUTC) read(start string, end string) error { - err := r.Start.read(start) +func (r *RangeUTC) unmarshal(start string, end string) error { + err := r.Start.unmarshal(start) if err != nil { return err } if end != "" { var v RangeUTCTime - err := v.read(end) + err := v.unmarshal(end) if err != nil { return err } @@ -247,10 +247,10 @@ func (r *RangeUTC) read(start string, end string) error { return nil } -func (r RangeUTC) write() string { - ret := "clock=" + r.Start.write() + "-" +func (r RangeUTC) marshal() string { + ret := "clock=" + r.Start.marshal() + "-" if r.End != nil { - ret += r.End.write() + ret += r.End.marshal() } return ret } @@ -260,17 +260,17 @@ func (r RangeUTC) write() string { // - RangeNPT // - RangeUTC type RangeValue interface { - read(string, string) error - write() string + unmarshal(string, string) error + marshal() string } -func rangeValueRead(s RangeValue, v string) error { +func rangeValueUnmarshal(s RangeValue, v string) error { parts := strings.Split(v, "-") if len(parts) != 2 { return fmt.Errorf("invalid value (%v)", v) } - return s.read(parts[0], parts[1]) + return s.unmarshal(parts[0], parts[1]) } // Range is a Range header. @@ -282,8 +282,8 @@ type Range struct { Time *RangeUTCTime } -// Read decodes a Range header. -func (h *Range) Read(v base.HeaderValue) error { +// Unmarshal decodes a Range header. +func (h *Range) Unmarshal(v base.HeaderValue) error { if len(v) == 0 { return fmt.Errorf("value not provided") } @@ -305,7 +305,7 @@ func (h *Range) Read(v base.HeaderValue) error { switch k { case "smpte": s := &RangeSMPTE{} - err := rangeValueRead(s, v) + err := rangeValueUnmarshal(s, v) if err != nil { return err } @@ -315,7 +315,7 @@ func (h *Range) Read(v base.HeaderValue) error { case "npt": s := &RangeNPT{} - err := rangeValueRead(s, v) + err := rangeValueUnmarshal(s, v) if err != nil { return err } @@ -325,7 +325,7 @@ func (h *Range) Read(v base.HeaderValue) error { case "clock": s := &RangeUTC{} - err := rangeValueRead(s, v) + err := rangeValueUnmarshal(s, v) if err != nil { return err } @@ -335,7 +335,7 @@ func (h *Range) Read(v base.HeaderValue) error { case "time": t := &RangeUTCTime{} - err := t.read(v) + err := t.unmarshal(v) if err != nil { return err } @@ -351,11 +351,11 @@ func (h *Range) Read(v base.HeaderValue) error { return nil } -// Write encodes a Range header. -func (h Range) Write() base.HeaderValue { - v := h.Value.write() +// Marshal encodes a Range header. +func (h Range) Marshal() base.HeaderValue { + v := h.Value.marshal() if h.Time != nil { - v += ";time=" + h.Time.write() + v += ";time=" + h.Time.marshal() } return base.HeaderValue{v} } diff --git a/pkg/headers/range_test.go b/pkg/headers/range_test.go index cdaad303..403cf427 100644 --- a/pkg/headers/range_test.go +++ b/pkg/headers/range_test.go @@ -121,18 +121,18 @@ var casesRange = []struct { }, } -func TestRangeRead(t *testing.T) { +func TestRangeUnmarshal(t *testing.T) { for _, ca := range casesRange { t.Run(ca.name, func(t *testing.T) { var h Range - err := h.Read(ca.vin) + err := h.Unmarshal(ca.vin) require.NoError(t, err) require.Equal(t, ca.h, h) }) } } -func TestRangeReadErrors(t *testing.T) { +func TestRangeUnmarshalErrors(t *testing.T) { for _, ca := range []struct { name string hv base.HeaderValue @@ -256,16 +256,16 @@ func TestRangeReadErrors(t *testing.T) { } { t.Run(ca.name, func(t *testing.T) { var h Range - err := h.Read(ca.hv) + err := h.Unmarshal(ca.hv) require.EqualError(t, err, ca.err) }) } } -func TestRangeWrite(t *testing.T) { +func TestRangeMarshal(t *testing.T) { for _, ca := range casesRange { t.Run(ca.name, func(t *testing.T) { - req := ca.h.Write() + req := ca.h.Marshal() require.Equal(t, ca.vout, req) }) } diff --git a/pkg/headers/rtpinfo.go b/pkg/headers/rtpinfo.go index 31744c42..806b94f5 100644 --- a/pkg/headers/rtpinfo.go +++ b/pkg/headers/rtpinfo.go @@ -18,8 +18,8 @@ type RTPInfoEntry struct { // RTPInfo is a RTP-Info header. type RTPInfo []*RTPInfoEntry -// Read decodes a RTP-Info header. -func (h *RTPInfo) Read(v base.HeaderValue) error { +// Unmarshal decodes a RTP-Info header. +func (h *RTPInfo) Unmarshal(v base.HeaderValue) error { if len(v) == 0 { return fmt.Errorf("value not provided") } @@ -75,8 +75,8 @@ func (h *RTPInfo) Read(v base.HeaderValue) error { return nil } -// Write encodes a RTP-Info header. -func (h RTPInfo) Write() base.HeaderValue { +// Marshal encodes a RTP-Info header. +func (h RTPInfo) Marshal() base.HeaderValue { rets := make([]string, len(h)) for i, e := range h { diff --git a/pkg/headers/rtpinfo_test.go b/pkg/headers/rtpinfo_test.go index b601333b..416cf91a 100644 --- a/pkg/headers/rtpinfo_test.go +++ b/pkg/headers/rtpinfo_test.go @@ -173,18 +173,18 @@ var casesRTPInfo = []struct { }, } -func TestRTPInfoRead(t *testing.T) { +func TestRTPInfoUnmarshal(t *testing.T) { for _, ca := range casesRTPInfo { t.Run(ca.name, func(t *testing.T) { var h RTPInfo - err := h.Read(ca.vin) + err := h.Unmarshal(ca.vin) require.NoError(t, err) require.Equal(t, ca.h, h) }) } } -func TestRTPInfoReadErrors(t *testing.T) { +func TestRTPInfoUnmarshalErrors(t *testing.T) { for _, ca := range []struct { name string hv base.HeaderValue @@ -223,16 +223,16 @@ func TestRTPInfoReadErrors(t *testing.T) { } { t.Run(ca.name, func(t *testing.T) { var h RTPInfo - err := h.Read(ca.hv) + err := h.Unmarshal(ca.hv) require.EqualError(t, err, ca.err) }) } } -func TestRTPInfoWrite(t *testing.T) { +func TestRTPInfoMarshal(t *testing.T) { for _, ca := range casesRTPInfo { t.Run(ca.name, func(t *testing.T) { - req := ca.h.Write() + req := ca.h.Marshal() require.Equal(t, ca.vout, req) }) } diff --git a/pkg/headers/session.go b/pkg/headers/session.go index 920079a3..d8b8fbaa 100644 --- a/pkg/headers/session.go +++ b/pkg/headers/session.go @@ -17,8 +17,8 @@ type Session struct { Timeout *uint } -// Read decodes a Session header. -func (h *Session) Read(v base.HeaderValue) error { +// Unmarshal decodes a Session header. +func (h *Session) Unmarshal(v base.HeaderValue) error { if len(v) == 0 { return fmt.Errorf("value not provided") } @@ -59,8 +59,8 @@ func (h *Session) Read(v base.HeaderValue) error { return nil } -// Write encodes a Session header. -func (h Session) Write() base.HeaderValue { +// Marshal encodes a Session header. +func (h Session) Marshal() base.HeaderValue { ret := h.Session if h.Timeout != nil { diff --git a/pkg/headers/session_test.go b/pkg/headers/session_test.go index 6cd47e67..14cde89b 100644 --- a/pkg/headers/session_test.go +++ b/pkg/headers/session_test.go @@ -48,18 +48,18 @@ var casesSession = []struct { }, } -func TestSessionRead(t *testing.T) { +func TestSessionUnmarshal(t *testing.T) { for _, ca := range casesSession { t.Run(ca.name, func(t *testing.T) { var h Session - err := h.Read(ca.vin) + err := h.Unmarshal(ca.vin) require.NoError(t, err) require.Equal(t, ca.h, h) }) } } -func TestSessionReadErrors(t *testing.T) { +func TestSessionUnmarshalErrors(t *testing.T) { for _, ca := range []struct { name string hv base.HeaderValue @@ -88,16 +88,16 @@ func TestSessionReadErrors(t *testing.T) { } { t.Run(ca.name, func(t *testing.T) { var h Session - err := h.Read(ca.hv) + err := h.Unmarshal(ca.hv) require.EqualError(t, err, ca.err) }) } } -func TestSessionWrite(t *testing.T) { +func TestSessionMarshal(t *testing.T) { for _, ca := range casesSession { t.Run(ca.name, func(t *testing.T) { - req := ca.h.Write() + req := ca.h.Marshal() require.Equal(t, ca.vout, req) }) } diff --git a/pkg/headers/transport.go b/pkg/headers/transport.go index e518a0c3..fd87ed0d 100644 --- a/pkg/headers/transport.go +++ b/pkg/headers/transport.go @@ -104,8 +104,8 @@ func parsePorts(val string) (*[2]int, error) { return &[2]int{0, 0}, fmt.Errorf("invalid ports (%v)", val) } -// Read decodes a Transport header. -func (h *Transport) Read(v base.HeaderValue) error { +// Unmarshal decodes a Transport header. +func (h *Transport) Unmarshal(v base.HeaderValue) error { if len(v) == 0 { return fmt.Errorf("value not provided") } @@ -258,8 +258,8 @@ func (h *Transport) Read(v base.HeaderValue) error { return nil } -// Write encodes a Transport header -func (h Transport) Write() base.HeaderValue { +// Marshal encodes a Transport header +func (h Transport) Marshal() base.HeaderValue { var rets []string if h.Protocol == TransportProtocolUDP { diff --git a/pkg/headers/transport_test.go b/pkg/headers/transport_test.go index 86b0e9a1..6228845d 100644 --- a/pkg/headers/transport_test.go +++ b/pkg/headers/transport_test.go @@ -218,18 +218,18 @@ var casesTransport = []struct { }, } -func TestTransportRead(t *testing.T) { +func TestTransportUnmarshal(t *testing.T) { for _, ca := range casesTransport { t.Run(ca.name, func(t *testing.T) { var h Transport - err := h.Read(ca.vin) + err := h.Unmarshal(ca.vin) require.NoError(t, err) require.Equal(t, ca.h, h) }) } } -func TestTransportReadErrors(t *testing.T) { +func TestTransportUnmarshalErrors(t *testing.T) { for _, ca := range []struct { name string hv base.HeaderValue @@ -318,16 +318,16 @@ func TestTransportReadErrors(t *testing.T) { } { t.Run(ca.name, func(t *testing.T) { var h Transport - err := h.Read(ca.hv) + err := h.Unmarshal(ca.hv) require.EqualError(t, err, ca.err) }) } } -func TestTransportWrite(t *testing.T) { +func TestTransportMarshal(t *testing.T) { for _, ca := range casesTransport { t.Run(ca.name, func(t *testing.T) { - req := ca.h.Write() + req := ca.h.Marshal() require.Equal(t, ca.vout, req) }) } diff --git a/pkg/rtpaac/decoder.go b/pkg/rtpaac/decoder.go index 20a36d54..8670b4e9 100644 --- a/pkg/rtpaac/decoder.go +++ b/pkg/rtpaac/decoder.go @@ -82,7 +82,8 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([][]byte, time.Duration, error) { au := payload[:dataLens[0]] - pkts, err := aac.DecodeADTS(au) + var pkts aac.ADTSPackets + err := pkts.Unmarshal(au) if err != nil { return nil, 0, fmt.Errorf("unable to decode ADTS: %s", err) } @@ -111,7 +112,8 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([][]byte, time.Duration, error) { if !d.firstPacketParsed { if len(aus) == 1 && len(aus[0]) >= 2 { if aus[0][0] == 0xFF && (aus[0][1]&0xF0) == 0xF0 { - pkts, err := aac.DecodeADTS(aus[0]) + var pkts aac.ADTSPackets + err := pkts.Unmarshal(aus[0]) if err == nil && len(pkts) == 1 { d.adtsMode = true aus[0] = pkts[0].AU diff --git a/server_publish_test.go b/server_publish_test.go index 4417a4cd..36463d14 100644 --- a/server_publish_test.go +++ b/server_publish_test.go @@ -285,7 +285,7 @@ func TestServerPublishSetupPath(t *testing.T) { URL: mustParseURL(ca.url), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": th.Write(), + "Transport": th.Marshal(), }, }) require.NoError(t, err) @@ -341,7 +341,7 @@ func TestServerPublishErrorSetupDifferentPaths(t *testing.T) { "CSeq": base.HeaderValue{"1"}, "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), + Body: tracks.Marshal(false), }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -364,7 +364,7 @@ func TestServerPublishErrorSetupDifferentPaths(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/test2stream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": th.Write(), + "Transport": th.Marshal(), }, }) require.NoError(t, err) @@ -421,7 +421,7 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) { "CSeq": base.HeaderValue{"1"}, "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), + Body: tracks.Marshal(false), }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -444,14 +444,14 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": th.Write(), + "Transport": th.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -459,7 +459,7 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, - "Transport": th.Write(), + "Transport": th.Marshal(), "Session": base.HeaderValue{sx.Session}, }, }) @@ -528,7 +528,7 @@ func TestServerPublishErrorRecordPartialTracks(t *testing.T) { "CSeq": base.HeaderValue{"1"}, "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), + Body: tracks.Marshal(false), }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -551,14 +551,14 @@ func TestServerPublishErrorRecordPartialTracks(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": th.Write(), + "Transport": th.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -679,7 +679,7 @@ func TestServerPublish(t *testing.T) { "CSeq": base.HeaderValue{"1"}, "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), + Body: tracks.Marshal(false), }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -721,18 +721,18 @@ func TestServerPublish(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) var th headers.Transport - err = th.Read(res.Header["Transport"]) + err = th.Unmarshal(res.Header["Transport"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -786,14 +786,14 @@ func TestServerPublish(t *testing.T) { byts, _ := base.InterleavedFrame{ Channel: 0, Payload: testRTPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) byts, _ = base.InterleavedFrame{ Channel: 1, Payload: testRTCPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) } @@ -883,7 +883,7 @@ func TestServerPublishErrorInvalidProtocol(t *testing.T) { "CSeq": base.HeaderValue{"1"}, "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), + Body: tracks.Marshal(false), }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -906,18 +906,18 @@ func TestServerPublishErrorInvalidProtocol(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) var th headers.Transport - err = th.Read(res.Header["Transport"]) + err = th.Unmarshal(res.Header["Transport"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -934,7 +934,7 @@ func TestServerPublishErrorInvalidProtocol(t *testing.T) { byts, _ := base.InterleavedFrame{ Channel: 0, Payload: []byte{0x01, 0x02, 0x03, 0x04}, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) } @@ -989,7 +989,7 @@ func TestServerPublishRTCPReport(t *testing.T) { "CSeq": base.HeaderValue{"1"}, "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), + Body: tracks.Marshal(false), }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1018,18 +1018,18 @@ func TestServerPublishRTCPReport(t *testing.T) { }(), Protocol: headers.TransportProtocolUDP, ClientPorts: &[2]int{34556, 34557}, - }.Write(), + }.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) var th headers.Transport - err = th.Read(res.Header["Transport"]) + err = th.Unmarshal(res.Header["Transport"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1166,7 +1166,7 @@ func TestServerPublishTimeout(t *testing.T) { "CSeq": base.HeaderValue{"1"}, "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), + Body: tracks.Marshal(false), }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1195,18 +1195,18 @@ func TestServerPublishTimeout(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) var th headers.Transport - err = th.Read(res.Header["Transport"]) + err = th.Unmarshal(res.Header["Transport"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1295,7 +1295,7 @@ func TestServerPublishWithoutTeardown(t *testing.T) { "CSeq": base.HeaderValue{"1"}, "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), + Body: tracks.Marshal(false), }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1324,18 +1324,18 @@ func TestServerPublishWithoutTeardown(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) var th headers.Transport - err = th.Read(res.Header["Transport"]) + err = th.Unmarshal(res.Header["Transport"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1416,7 +1416,7 @@ func TestServerPublishUDPChangeConn(t *testing.T) { "CSeq": base.HeaderValue{"1"}, "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), + Body: tracks.Marshal(false), }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1439,14 +1439,14 @@ func TestServerPublishUDPChangeConn(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ diff --git a/server_read_test.go b/server_read_test.go index badc09bc..77e11e83 100644 --- a/server_read_test.go +++ b/server_read_test.go @@ -141,7 +141,7 @@ func TestServerReadSetupPath(t *testing.T) { URL: mustParseURL(ca.url), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, - "Transport": th.Write(), + "Transport": th.Marshal(), }, }) require.NoError(t, err) @@ -223,7 +223,7 @@ func TestServerReadSetupErrors(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, - "Transport": th.Write(), + "Transport": th.Marshal(), }, }) @@ -233,7 +233,7 @@ func TestServerReadSetupErrors(t *testing.T) { require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) th.InterleavedIDs = &[2]int{2, 3} @@ -242,7 +242,7 @@ func TestServerReadSetupErrors(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/test12stream/trackID=1"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": th.Write(), + "Transport": th.Marshal(), "Session": base.HeaderValue{sx.Session}, }, }) @@ -254,7 +254,7 @@ func TestServerReadSetupErrors(t *testing.T) { require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) th.InterleavedIDs = &[2]int{2, 3} @@ -263,7 +263,7 @@ func TestServerReadSetupErrors(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": th.Write(), + "Transport": th.Marshal(), "Session": base.HeaderValue{sx.Session}, }, }) @@ -429,14 +429,14 @@ func TestServerRead(t *testing.T) { URL: mustParseURL("rtsp://" + listenIP + ":8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var th headers.Transport - err = th.Read(res.Header["Transport"]) + err = th.Unmarshal(res.Header["Transport"]) require.NoError(t, err) var l1 net.PacketConn @@ -495,7 +495,7 @@ func TestServerRead(t *testing.T) { <-sessionOpened var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -585,7 +585,7 @@ func TestServerRead(t *testing.T) { byts, _ := base.InterleavedFrame{ Channel: 5, Payload: testRTCPPacketMarshaled, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) <-framesReceived @@ -692,7 +692,7 @@ func TestServerReadRTCPReport(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) @@ -707,7 +707,7 @@ func TestServerReadRTCPReport(t *testing.T) { defer l2.Close() var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -879,14 +879,14 @@ func TestServerReadTCPResponseBeforeFrames(t *testing.T) { return &v }(), InterleavedIDs: &[2]int{0, 1}, - }.Write(), + }.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -958,14 +958,14 @@ func TestServerReadPlayPlay(t *testing.T) { return &v }(), ClientPorts: &[2]int{30450, 30451}, - }.Write(), + }.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1074,14 +1074,14 @@ func TestServerReadPlayPausePlay(t *testing.T) { return &v }(), InterleavedIDs: &[2]int{0, 1}, - }.Write(), + }.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1197,14 +1197,14 @@ func TestServerReadPlayPausePause(t *testing.T) { return &v }(), InterleavedIDs: &[2]int{0, 1}, - }.Write(), + }.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1225,7 +1225,7 @@ func TestServerReadPlayPausePause(t *testing.T) { "CSeq": base.HeaderValue{"2"}, "Session": base.HeaderValue{sx.Session}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1240,7 +1240,7 @@ func TestServerReadPlayPausePause(t *testing.T) { "CSeq": base.HeaderValue{"2"}, "Session": base.HeaderValue{sx.Session}, }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -1338,14 +1338,14 @@ func TestServerReadTimeout(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1449,14 +1449,14 @@ func TestServerReadWithoutTeardown(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1541,14 +1541,14 @@ func TestServerReadUDPChangeConn(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1649,14 +1649,14 @@ func TestServerReadPartialTracks(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=1"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1704,14 +1704,14 @@ func TestServerReadAdditionalInfos(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var th headers.Transport - err = th.Read(res.Header["Transport"]) + err = th.Unmarshal(res.Header["Transport"]) require.NoError(t, err) ssrcs[0] = th.SSRC @@ -1729,7 +1729,7 @@ func TestServerReadAdditionalInfos(t *testing.T) { } var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1737,7 +1737,7 @@ func TestServerReadAdditionalInfos(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=1"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), "Session": base.HeaderValue{sx.Session}, }, }) @@ -1745,7 +1745,7 @@ func TestServerReadAdditionalInfos(t *testing.T) { require.Equal(t, base.StatusOK, res.StatusCode) th = headers.Transport{} - err = th.Read(res.Header["Transport"]) + err = th.Unmarshal(res.Header["Transport"]) require.NoError(t, err) ssrcs[1] = th.SSRC @@ -1761,7 +1761,7 @@ func TestServerReadAdditionalInfos(t *testing.T) { require.Equal(t, base.StatusOK, res.StatusCode) var ri headers.RTPInfo - err = ri.Read(res.Header["RTP-Info"]) + err = ri.Unmarshal(res.Header["RTP-Info"]) require.NoError(t, err) return &ri, ssrcs @@ -1936,14 +1936,14 @@ func TestServerReadErrorUDPSamePorts(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -1982,7 +1982,7 @@ func TestServerReadErrorUDPSamePorts(t *testing.T) { URL: mustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, - "Transport": inTH.Write(), + "Transport": inTH.Marshal(), }, }) require.NoError(t, err) diff --git a/server_test.go b/server_test.go index b67946e9..8ccb82d5 100644 --- a/server_test.go +++ b/server_test.go @@ -71,7 +71,7 @@ func writeReqReadRes(conn net.Conn, br *bufio.Reader, req base.Request, ) (*base.Response, error) { - byts, _ := req.Write() + byts, _ := req.Marshal() _, err := conn.Write(byts) if err != nil { return nil, err @@ -406,14 +406,14 @@ func TestServerErrorTCPTwoConnOneSession(t *testing.T) { return &v }(), InterleavedIDs: &[2]int{0, 1}, - }.Write(), + }.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn1, br1, base.Request{ @@ -448,7 +448,7 @@ func TestServerErrorTCPTwoConnOneSession(t *testing.T) { return &v }(), InterleavedIDs: &[2]int{0, 1}, - }.Write(), + }.Marshal(), "Session": base.HeaderValue{sx.Session}, }, }) @@ -512,14 +512,14 @@ func TestServerErrorTCPOneConnTwoSessions(t *testing.T) { return &v }(), InterleavedIDs: &[2]int{0, 1}, - }.Write(), + }.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) res, err = writeReqReadRes(conn, br, base.Request{ @@ -549,7 +549,7 @@ func TestServerErrorTCPOneConnTwoSessions(t *testing.T) { return &v }(), InterleavedIDs: &[2]int{0, 1}, - }.Write(), + }.Marshal(), }, }) require.NoError(t, err) @@ -717,9 +717,9 @@ func TestServerSessionClose(t *testing.T) { return &v }(), InterleavedIDs: &[2]int{0, 1}, - }.Write(), + }.Marshal(), }, - }.Write() + }.Marshal() _, err = conn.Write(byts) require.NoError(t, err) @@ -786,7 +786,7 @@ func TestServerSessionAutoClose(t *testing.T) { return &v }(), InterleavedIDs: &[2]int{0, 1}, - }.Write(), + }.Marshal(), }, }) require.NoError(t, err) @@ -873,7 +873,7 @@ func TestServerErrorInvalidPath(t *testing.T) { "CSeq": base.HeaderValue{"1"}, "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: tracks.Write(false), + Body: tracks.Marshal(false), }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -901,14 +901,14 @@ func TestServerErrorInvalidPath(t *testing.T) { return &v }(), InterleavedIDs: &[2]int{0, 1}, - }.Write(), + }.Marshal(), }, }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) var sx headers.Session - err = sx.Read(res.Header["Session"]) + err = sx.Unmarshal(res.Header["Session"]) require.NoError(t, err) sxID = sx.Session @@ -989,7 +989,7 @@ func TestServerAuth(t *testing.T) { "CSeq": base.HeaderValue{"1"}, "Content-Type": base.HeaderValue{"application/sdp"}, }, - Body: Tracks{track}.Write(false), + Body: Tracks{track}.Marshal(false), } res, err := writeReqReadRes(conn, br, req) diff --git a/serverconn.go b/serverconn.go index 4a56d829..ec92b9d9 100644 --- a/serverconn.go +++ b/serverconn.go @@ -428,7 +428,7 @@ func (sc *ServerConn) handleRequest(req *base.Request) (*base.Response, error) { } if stream != nil { - res.Body = stream.Tracks().Write(multicast) + res.Body = stream.Tracks().Marshal(multicast) } } @@ -543,7 +543,7 @@ func (sc *ServerConn) handleRequestOuter(req *base.Request) error { h.OnResponse(sc, res) } - byts, _ := res.Write() + byts, _ := res.Marshal() sc.conn.SetWriteDeadline(time.Now().Add(sc.s.WriteTimeout)) sc.conn.Write(byts) diff --git a/serversession.go b/serversession.go index d4d6b93d..644ed5c5 100644 --- a/serversession.go +++ b/serversession.go @@ -362,7 +362,7 @@ func (ss *ServerSession) runInner() error { } return nil }(), - }.Write() + }.Marshal() } // after a TEARDOWN, session must be unpaired with the connection @@ -501,7 +501,8 @@ func (ss *ServerSession) handleRequest(sc *ServerConn, req *base.Request) (*base }, liberrors.ErrServerContentTypeUnsupported{CT: ct} } - tracks, _, err := ReadTracks(req.Body, false) + var tracks Tracks + _, err = tracks.Unmarshal(req.Body, false) if err != nil { return &base.Response{ StatusCode: base.StatusBadRequest, @@ -568,7 +569,7 @@ func (ss *ServerSession) handleRequest(sc *ServerConn, req *base.Request) (*base } var inTH headers.Transport - err = inTH.Read(req.Header["Transport"]) + err = inTH.Unmarshal(req.Header["Transport"]) if err != nil { return &base.Response{ StatusCode: base.StatusBadRequest, @@ -783,7 +784,7 @@ func (ss *ServerSession) handleRequest(sc *ServerConn, req *base.Request) (*base ss.setuppedTracks[trackID] = sst - res.Header["Transport"] = th.Write() + res.Header["Transport"] = th.Marshal() return res, err @@ -910,7 +911,7 @@ func (ss *ServerSession) handleRequest(sc *ServerConn, req *base.Request) (*base if res.Header == nil { res.Header = make(base.Header) } - res.Header["RTP-Info"] = ri.Write() + res.Header["RTP-Info"] = ri.Marshal() } return res, err @@ -1182,14 +1183,14 @@ func (ss *ServerSession) runWriter() { if isRTP { f := rtpFrames[trackID] f.Payload = payload - n, _ := f.WriteTo(buf) + n, _ := f.MarshalTo(buf) ss.tcpConn.conn.SetWriteDeadline(time.Now().Add(ss.s.WriteTimeout)) ss.tcpConn.conn.Write(buf[:n]) } else { f := rtcpFrames[trackID] f.Payload = payload - n, _ := f.WriteTo(buf) + n, _ := f.MarshalTo(buf) ss.tcpConn.conn.SetWriteDeadline(time.Now().Add(ss.s.WriteTimeout)) ss.tcpConn.conn.Write(buf[:n]) diff --git a/track_test.go b/track_test.go index d62850c6..7bbd1999 100644 --- a/track_test.go +++ b/track_test.go @@ -840,7 +840,8 @@ func TestTrackURL(t *testing.T) { }, } { t.Run(ca.name, func(t *testing.T) { - tracks, _, err := ReadTracks(ca.sdp, false) + var tracks Tracks + _, err := tracks.Unmarshal(ca.sdp, false) require.NoError(t, err) ur, err := tracks[0].url(ca.baseURL) require.NoError(t, err) diff --git a/tracks.go b/tracks.go index 53cf87e9..9a343477 100644 --- a/tracks.go +++ b/tracks.go @@ -13,16 +13,15 @@ import ( // Tracks is a list of tracks. type Tracks []Track -// ReadTracks decodes tracks from the SDP format. -// It returns the tracks and the decoded SDP. -func ReadTracks(byts []byte, skipGenericTracksWithoutClockRate bool) (Tracks, *sdp.SessionDescription, error) { +// Unmarshal decodes tracks from the SDP format. It returns the decoded SDP. +func (ts *Tracks) Unmarshal(byts []byte, skipGenericTracksWithoutClockRate bool) (*sdp.SessionDescription, error) { var sd sdp.SessionDescription err := sd.Unmarshal(byts) if err != nil { - return nil, nil, err + return nil, err } - var tracks Tracks //nolint:prealloc + *ts = nil for i, md := range sd.MediaDescriptions { t, err := newTrackFromMediaDescription(md) @@ -31,17 +30,17 @@ func ReadTracks(byts []byte, skipGenericTracksWithoutClockRate bool) (Tracks, *s strings.HasPrefix(err.Error(), "unable to get clock rate") { continue } - return nil, nil, fmt.Errorf("unable to parse track %d: %s", i+1, err) + return nil, fmt.Errorf("unable to parse track %d: %s", i+1, err) } - tracks = append(tracks, t) + *ts = append(*ts, t) } - if len(tracks) == 0 { - return nil, nil, fmt.Errorf("no valid tracks found") + if *ts == nil { + return nil, fmt.Errorf("no valid tracks found") } - return tracks, &sd, nil + return &sd, nil } func (ts Tracks) clone() Tracks { @@ -58,8 +57,8 @@ func (ts Tracks) setControls() { } } -// Write encodes tracks in the SDP format. -func (ts Tracks) Write(multicast bool) []byte { +// Marshal encodes tracks in the SDP format. +func (ts Tracks) Marshal(multicast bool) []byte { address := "0.0.0.0" if multicast { address = "224.1.0.0" diff --git a/tracks_test.go b/tracks_test.go index 5bf767b0..d526b929 100644 --- a/tracks_test.go +++ b/tracks_test.go @@ -35,7 +35,8 @@ func TestTracksReadErrors(t *testing.T) { }, } { t.Run(ca.name, func(t *testing.T) { - _, _, err := ReadTracks(ca.sdp, false) + var tracks Tracks + _, err := tracks.Unmarshal(ca.sdp, false) require.EqualError(t, err, ca.err) }) } @@ -67,7 +68,8 @@ func TestTracksReadSkipGenericTracksWithoutClockRate(t *testing.T) { "m=application 42508 RTP/AVP 107\r\n" + "b=AS:8\r\n") - tracks, _, err := ReadTracks(sdp, true) + var tracks Tracks + _, err := tracks.Unmarshal(sdp, true) require.NoError(t, err) require.Equal(t, Tracks{ &TrackH264{