commit - 7c79b0547941d5c8539ca8c8206cefdf0f4f74aa
commit + cb9f53840ce84710f2da783c0f4efc3a96479ba2
blob - 63c2de52e09c900b8dd7f33d74fb475c0fd7b2f5
blob + 029ceca35b82657bd756542a6ef0674e036f7a4f
--- mpegts/codec.go
+++ mpegts/codec.go
import (
"encoding/binary"
+ "errors"
"fmt"
"io"
)
+var ErrLongPacket = errors.New("long packet")
+var ErrShortPacket = errors.New("short packet")
+
func Unmarshal(buf []byte, p *Packet) error {
if len(buf) != PacketSize {
return fmt.Errorf("need exactly %d bytes, have %d", PacketSize, len(buf))
if p.Payload != nil {
buf = append(buf, p.Payload...)
}
- if len(buf) != PacketSize {
- return fmt.Errorf("bad encoded packet length %d", len(buf))
+ if len(buf) > PacketSize {
+ return fmt.Errorf("%w: %d bytes", ErrLongPacket, len(buf))
+ } else if len(buf) < PacketSize {
+ return fmt.Errorf("%w: %d bytes", ErrShortPacket, len(buf))
}
_, err := w.Write(buf)
return err