mirror of
https://github.com/aler9/rtsp-simple-server
synced 2025-10-27 01:30:25 +08:00
rtmp: normalize API
This commit is contained in:
@@ -7,5 +7,5 @@ import (
|
|||||||
// Chunk is a chunk.
|
// Chunk is a chunk.
|
||||||
type Chunk interface {
|
type Chunk interface {
|
||||||
Read(io.Reader, uint32) error
|
Read(io.Reader, uint32) error
|
||||||
Write() ([]byte, error)
|
Marshal() ([]byte, error)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ func (c *Chunk0) Read(r io.Reader, chunkMaxBodyLen uint32) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write writes the chunk.
|
// Marshal writes the chunk.
|
||||||
func (c Chunk0) Write() ([]byte, error) {
|
func (c Chunk0) Marshal() ([]byte, error) {
|
||||||
buf := make([]byte, 12+len(c.Body))
|
buf := make([]byte, 12+len(c.Body))
|
||||||
buf[0] = c.ChunkStreamID
|
buf[0] = c.ChunkStreamID
|
||||||
buf[1] = byte(c.Timestamp >> 16)
|
buf[1] = byte(c.Timestamp >> 16)
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ func TestChunk0Read(t *testing.T) {
|
|||||||
require.Equal(t, chunk0dec, chunk0)
|
require.Equal(t, chunk0dec, chunk0)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestChunk0Write(t *testing.T) {
|
func TestChunk0Marshal(t *testing.T) {
|
||||||
buf, err := chunk0dec.Write()
|
buf, err := chunk0dec.Marshal()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, chunk0enc, buf)
|
require.Equal(t, chunk0enc, buf)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ func (c *Chunk1) Read(r io.Reader, chunkMaxBodyLen uint32) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write writes the chunk.
|
// Marshal writes the chunk.
|
||||||
func (c Chunk1) Write() ([]byte, error) {
|
func (c Chunk1) Marshal() ([]byte, error) {
|
||||||
buf := make([]byte, 8+len(c.Body))
|
buf := make([]byte, 8+len(c.Body))
|
||||||
buf[0] = 1<<6 | c.ChunkStreamID
|
buf[0] = 1<<6 | c.ChunkStreamID
|
||||||
buf[1] = byte(c.TimestampDelta >> 16)
|
buf[1] = byte(c.TimestampDelta >> 16)
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ func TestChunk1Read(t *testing.T) {
|
|||||||
require.Equal(t, chunk1dec, chunk1)
|
require.Equal(t, chunk1dec, chunk1)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestChunk1Write(t *testing.T) {
|
func TestChunk1Marshal(t *testing.T) {
|
||||||
buf, err := chunk1dec.Write()
|
buf, err := chunk1dec.Marshal()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, chunk1enc, buf)
|
require.Equal(t, chunk1enc, buf)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ func (c *Chunk2) Read(r io.Reader, chunkBodyLen uint32) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write writes the chunk.
|
// Marshal writes the chunk.
|
||||||
func (c Chunk2) Write() ([]byte, error) {
|
func (c Chunk2) Marshal() ([]byte, error) {
|
||||||
buf := make([]byte, 4+len(c.Body))
|
buf := make([]byte, 4+len(c.Body))
|
||||||
buf[0] = 2<<6 | c.ChunkStreamID
|
buf[0] = 2<<6 | c.ChunkStreamID
|
||||||
buf[1] = byte(c.TimestampDelta >> 16)
|
buf[1] = byte(c.TimestampDelta >> 16)
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ func TestChunk2Read(t *testing.T) {
|
|||||||
require.Equal(t, chunk2dec, chunk2)
|
require.Equal(t, chunk2dec, chunk2)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestChunk2Write(t *testing.T) {
|
func TestChunk2Marshal(t *testing.T) {
|
||||||
buf, err := chunk2dec.Write()
|
buf, err := chunk2dec.Marshal()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, chunk2enc, buf)
|
require.Equal(t, chunk2enc, buf)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ func (c *Chunk3) Read(r io.Reader, chunkBodyLen uint32) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write writes the chunk.
|
// Marshal writes the chunk.
|
||||||
func (c Chunk3) Write() ([]byte, error) {
|
func (c Chunk3) Marshal() ([]byte, error) {
|
||||||
buf := make([]byte, 1+len(c.Body))
|
buf := make([]byte, 1+len(c.Body))
|
||||||
buf[0] = 3<<6 | c.ChunkStreamID
|
buf[0] = 3<<6 | c.ChunkStreamID
|
||||||
copy(buf[1:], c.Body)
|
copy(buf[1:], c.Body)
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ func TestChunk3Read(t *testing.T) {
|
|||||||
require.Equal(t, chunk3dec, chunk3)
|
require.Equal(t, chunk3dec, chunk3)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestChunk3Write(t *testing.T) {
|
func TestChunk3Marshal(t *testing.T) {
|
||||||
buf, err := chunk3dec.Write()
|
buf, err := chunk3dec.Marshal()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, chunk3enc, buf)
|
require.Equal(t, chunk3enc, buf)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,12 +10,8 @@ import (
|
|||||||
"github.com/aler9/rtsp-simple-server/internal/rtmp/chunk"
|
"github.com/aler9/rtsp-simple-server/internal/rtmp/chunk"
|
||||||
)
|
)
|
||||||
|
|
||||||
type writableChunk interface {
|
|
||||||
Write() ([]byte, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
type sequenceEntry struct {
|
type sequenceEntry struct {
|
||||||
chunk writableChunk
|
chunk chunk.Chunk
|
||||||
msg *Message
|
msg *Message
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,7 +24,7 @@ func TestReader(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
for _, entry := range seq {
|
for _, entry := range seq {
|
||||||
buf2, err := entry.chunk.Write()
|
buf2, err := entry.chunk.Marshal()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
buf.Write(buf2)
|
buf.Write(buf2)
|
||||||
msg, err := r.Read()
|
msg, err := r.Read()
|
||||||
@@ -138,14 +134,14 @@ func TestReader(t *testing.T) {
|
|||||||
MessageStreamID: 3123,
|
MessageStreamID: 3123,
|
||||||
BodyLen: 192,
|
BodyLen: 192,
|
||||||
Body: bytes.Repeat([]byte{0x03}, 128),
|
Body: bytes.Repeat([]byte{0x03}, 128),
|
||||||
}.Write()
|
}.Marshal()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
buf.Write(buf2)
|
buf.Write(buf2)
|
||||||
|
|
||||||
buf2, err = chunk.Chunk3{
|
buf2, err = chunk.Chunk3{
|
||||||
ChunkStreamID: 27,
|
ChunkStreamID: 27,
|
||||||
Body: bytes.Repeat([]byte{0x03}, 64),
|
Body: bytes.Repeat([]byte{0x03}, 64),
|
||||||
}.Write()
|
}.Marshal()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
buf.Write(buf2)
|
buf.Write(buf2)
|
||||||
|
|
||||||
@@ -181,7 +177,7 @@ func TestReaderAcknowledge(t *testing.T) {
|
|||||||
MessageStreamID: 3123,
|
MessageStreamID: 3123,
|
||||||
BodyLen: 64,
|
BodyLen: 64,
|
||||||
Body: bytes.Repeat([]byte{0x03}, 64),
|
Body: bytes.Repeat([]byte{0x03}, 64),
|
||||||
}.Write()
|
}.Marshal()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
buf.Write(buf2)
|
buf.Write(buf2)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ type writerChunkStream struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (wc *writerChunkStream) writeChunk(c chunk.Chunk) error {
|
func (wc *writerChunkStream) writeChunk(c chunk.Chunk) error {
|
||||||
buf, err := c.Write()
|
buf, err := c.Marshal()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user