mirror of
https://github.com/aler9/gortsplib
synced 2025-09-28 12:02:16 +08:00
57 lines
1.0 KiB
Go
57 lines
1.0 KiB
Go
package mikey
|
|
|
|
import "fmt"
|
|
|
|
// PayloadT is a timestamp payload.
|
|
type PayloadT struct {
|
|
TSType uint8
|
|
TSValue uint64
|
|
}
|
|
|
|
func (p *PayloadT) unmarshal(buf []byte) (int, error) {
|
|
if len(buf) < 10 {
|
|
return 0, fmt.Errorf("buffer too short")
|
|
}
|
|
|
|
n := 1
|
|
p.TSType = buf[n]
|
|
n++
|
|
|
|
if p.TSType != 0 {
|
|
return 0, fmt.Errorf("unsupported TSType: %v", p.TSType)
|
|
}
|
|
|
|
p.TSValue = uint64(buf[n])<<56 |
|
|
uint64(buf[n+1])<<48 |
|
|
uint64(buf[n+2])<<40 |
|
|
uint64(buf[n+3])<<32 |
|
|
uint64(buf[n+4])<<24 |
|
|
uint64(buf[n+5])<<16 |
|
|
uint64(buf[n+6])<<8 |
|
|
uint64(buf[n+7])
|
|
n += 8
|
|
|
|
return n, nil
|
|
}
|
|
|
|
func (*PayloadT) typ() payloadType {
|
|
return payloadTypeT
|
|
}
|
|
|
|
func (p *PayloadT) marshalSize() int {
|
|
return 10
|
|
}
|
|
|
|
func (p *PayloadT) marshalTo(buf []byte) (int, error) {
|
|
buf[1] = p.TSType
|
|
buf[2] = byte(p.TSValue >> 56)
|
|
buf[3] = byte(p.TSValue >> 48)
|
|
buf[4] = byte(p.TSValue >> 40)
|
|
buf[5] = byte(p.TSValue >> 32)
|
|
buf[6] = byte(p.TSValue >> 24)
|
|
buf[7] = byte(p.TSValue >> 16)
|
|
buf[8] = byte(p.TSValue >> 8)
|
|
buf[9] = byte(p.TSValue)
|
|
return 10, nil
|
|
}
|