mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 15:16:51 +08:00
allow writing primitives to static buffers
This commit is contained in:
@@ -105,16 +105,28 @@ func (f *InterleavedFrame) Read(maxPayloadSize int, br *bufio.Reader) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Write writes an InterleavedFrame into a buffered writer.
|
||||
func (f InterleavedFrame) Write(w io.Writer) error {
|
||||
buf := []byte{0x24, byte(f.Channel), 0x00, 0x00}
|
||||
binary.BigEndian.PutUint16(buf[2:], uint16(len(f.Payload)))
|
||||
|
||||
_, err := w.Write(buf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = w.Write(f.Payload)
|
||||
return err
|
||||
// WriteSize returns the size of an InterleavedFrame.
|
||||
func (f InterleavedFrame) WriteSize() int {
|
||||
return 4 + len(f.Payload)
|
||||
}
|
||||
|
||||
// WriteTo writes an InterleavedFrame.
|
||||
func (f InterleavedFrame) WriteTo(buf []byte) (int, error) {
|
||||
pos := 0
|
||||
|
||||
pos += copy(buf[pos:], []byte{0x24, byte(f.Channel)})
|
||||
|
||||
binary.BigEndian.PutUint16(buf[pos:], uint16(len(f.Payload)))
|
||||
pos += 2
|
||||
|
||||
pos += copy(buf[pos:], f.Payload)
|
||||
|
||||
return pos, nil
|
||||
}
|
||||
|
||||
// Write writes an InterleavedFrame.
|
||||
func (f InterleavedFrame) Write() ([]byte, error) {
|
||||
buf := make([]byte, f.WriteSize())
|
||||
_, err := f.WriteTo(buf)
|
||||
return buf, err
|
||||
}
|
||||
|
Reference in New Issue
Block a user