rtp

package module
v1.8.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2024 License: MIT Imports: 10 Imported by: 1,755

README


Pion RTP

A Go implementation of RTP

Pion RTP Sourcegraph Widget Slack Widget
GitHub Workflow Status Go Reference Coverage Status Go Report Card


Roadmap

The library is used as a part of our WebRTC implementation. Please refer to that roadmap to track our major milestones.

Community

Pion has an active community on the Slack.

Follow the Pion Twitter for project updates and important WebRTC news.

We are always looking to support your projects. Please reach out if you have something to build! If you need commercial support or don't want to use public methods you can contact us at team@pion.ly

Contributing

Check out the contributing wiki to join the group of amazing people making this project possible

License

MIT License - see LICENSE for full text

Documentation

Overview

Package rtp provides RTP packetizer and depacketizer

Index

Constants

View Source
const (
	// PayloadTypePCMU is a payload type for ITU-T G.711 PCM μ-Law audio 64 kbit/s (RFC 3551).
	PayloadTypePCMU = 0
	// PayloadTypeGSM is a payload type for European GSM Full Rate audio 13 kbit/s (GSM 06.10).
	PayloadTypeGSM = 3
	// PayloadTypeG723 is a payload type for ITU-T G.723.1 audio (RFC 3551).
	PayloadTypeG723 = 4
	// PayloadTypeDVI4_8000 is a payload type for IMA ADPCM audio 32 kbit/s (RFC 3551).
	PayloadTypeDVI4_8000 = 5
	// PayloadTypeDVI4_16000 is a payload type for IMA ADPCM audio 64 kbit/s (RFC 3551).
	PayloadTypeDVI4_16000 = 6
	// PayloadTypeLPC is a payload type for Experimental Linear Predictive Coding audio 5.6 kbit/s (RFC 3551).
	PayloadTypeLPC = 7
	// PayloadTypePCMA is a payload type for ITU-T G.711 PCM A-Law audio 64 kbit/s (RFC 3551).
	PayloadTypePCMA = 8
	// PayloadTypeG722 is a payload type for ITU-T G.722 audio 64 kbit/s (RFC 3551).
	PayloadTypeG722 = 9
	// PayloadTypeL16Stereo is a payload type for Linear PCM 16-bit Stereo audio 1411.2 kbit/s, uncompressed (RFC 3551).
	PayloadTypeL16Stereo = 10
	// PayloadTypeL16Mono is a payload type for Linear PCM 16-bit audio 705.6 kbit/s, uncompressed (RFC 3551).
	PayloadTypeL16Mono = 11
	// PayloadTypeQCELP is a payload type for Qualcomm Code Excited Linear Prediction (RFC 2658, RFC 3551).
	PayloadTypeQCELP = 12
	// PayloadTypeCN is a payload type for Comfort noise (RFC 3389).
	PayloadTypeCN = 13
	// PayloadTypeMPA is a payload type for MPEG-1 or MPEG-2 audio only (RFC 3551, RFC 2250).
	PayloadTypeMPA = 14
	// PayloadTypeG728 is a payload type for ITU-T G.728 audio 16 kbit/s (RFC 3551).
	PayloadTypeG728 = 15
	// PayloadTypeDVI4_11025 is a payload type for IMA ADPCM audio 44.1 kbit/s (RFC 3551).
	PayloadTypeDVI4_11025 = 16
	// PayloadTypeDVI4_22050 is a payload type for IMA ADPCM audio 88.2 kbit/s (RFC 3551).
	PayloadTypeDVI4_22050 = 17
	// PayloadTypeG729 is a payload type for ITU-T G.729 and G.729a audio 8 kbit/s (RFC 3551, RFC 3555).
	PayloadTypeG729 = 18
)

Audio Payload Types as defined in https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml

View Source
const (
	// PayloadTypeCELLB is a payload type for Sun CellB video (RFC 2029).
	PayloadTypeCELLB = 25
	// PayloadTypeJPEG is a payload type for JPEG video (RFC 2435).
	PayloadTypeJPEG = 26
	// PayloadTypeNV is a payload type for Xerox PARC's Network Video (nv, RFC 3551).
	PayloadTypeNV = 28
	// PayloadTypeH261 is a payload type for ITU-T H.261 video (RFC 4587).
	PayloadTypeH261 = 31
	// PayloadTypeMPV is a payload type for MPEG-1 and MPEG-2 video (RFC 2250).
	PayloadTypeMPV = 32
	// PayloadTypeMP2T is a payload type for MPEG-2 transport stream (RFC 2250).
	PayloadTypeMP2T = 33
	// PayloadTypeH263 is a payload type for H.263 video, first version (1996, RFC 3551, RFC 2190).
	PayloadTypeH263 = 34
)

Video Payload Types as defined in https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml

View Source
const (
	// PayloadTypeFirstDynamic is a first non-static payload type.
	PayloadTypeFirstDynamic = 35
)

Variables

View Source
var (
	ErrVLATooShort             = errors.New("VLA payload too short")           // ErrVLATooShort is returned when payload is too short
	ErrVLAInvalidStreamCount   = errors.New("invalid RTP stream count in VLA") // ErrVLAInvalidStreamCount is returned when RTP stream count is invalid
	ErrVLAInvalidStreamID      = errors.New("invalid RTP stream ID in VLA")    // ErrVLAInvalidStreamID is returned when RTP stream ID is invalid
	ErrVLAInvalidSpatialID     = errors.New("invalid spatial ID in VLA")       // ErrVLAInvalidSpatialID is returned when spatial ID is invalid
	ErrVLADuplicateSpatialID   = errors.New("duplicate spatial ID in VLA")     // ErrVLADuplicateSpatialID is returned when spatial ID is invalid
	ErrVLAInvalidTemporalLayer = errors.New("invalid temporal layer in VLA")   // ErrVLAInvalidTemporalLayer is returned when temporal layer is invalid
)

Functions

This section is empty.

Types

type AbsCaptureTimeExtension added in v1.8.1

type AbsCaptureTimeExtension struct {
	Timestamp                   uint64
	EstimatedCaptureClockOffset *int64
}

AbsCaptureTimeExtension is a extension payload format in http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID | len=7 | absolute capture timestamp (bit 0-23) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | absolute capture timestamp (bit 24-55) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... (56-63) | +-+-+-+-+-+-+-+-+

func NewAbsCaptureTimeExtension added in v1.8.1

func NewAbsCaptureTimeExtension(captureTime time.Time) *AbsCaptureTimeExtension

NewAbsCaptureTimeExtension makes new AbsCaptureTimeExtension from time.Time.

func NewAbsCaptureTimeExtensionWithCaptureClockOffset added in v1.8.1

func NewAbsCaptureTimeExtensionWithCaptureClockOffset(captureTime time.Time, captureClockOffset time.Duration) *AbsCaptureTimeExtension

NewAbsCaptureTimeExtensionWithCaptureClockOffset makes new AbsCaptureTimeExtension from time.Time and a clock offset.

func (AbsCaptureTimeExtension) CaptureTime added in v1.8.1

func (t AbsCaptureTimeExtension) CaptureTime() time.Time

CaptureTime produces the estimated time.Time represented by this extension.

func (AbsCaptureTimeExtension) EstimatedCaptureClockOffsetDuration added in v1.8.1

func (t AbsCaptureTimeExtension) EstimatedCaptureClockOffsetDuration() *time.Duration

EstimatedCaptureClockOffsetDuration produces the estimated time.Duration represented by this extension.

func (AbsCaptureTimeExtension) Marshal added in v1.8.1

func (t AbsCaptureTimeExtension) Marshal() ([]byte, error)

Marshal serializes the members to buffer.

func (*AbsCaptureTimeExtension) Unmarshal added in v1.8.1

func (t *AbsCaptureTimeExtension) Unmarshal(rawData []byte) error

Unmarshal parses the passed byte slice and stores the result in the members.

type AbsSendTimeExtension added in v1.4.0

type AbsSendTimeExtension struct {
	Timestamp uint64
}

AbsSendTimeExtension is a extension payload format in http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time

func NewAbsSendTimeExtension added in v1.5.4

func NewAbsSendTimeExtension(sendTime time.Time) *AbsSendTimeExtension

NewAbsSendTimeExtension makes new AbsSendTimeExtension from time.Time.

func (*AbsSendTimeExtension) Estimate added in v1.4.0

func (t *AbsSendTimeExtension) Estimate(receive time.Time) time.Time

Estimate absolute send time according to the receive time. Note that if the transmission delay is larger than 64 seconds, estimated time will be wrong.

func (AbsSendTimeExtension) Marshal added in v1.4.0

func (t AbsSendTimeExtension) Marshal() ([]byte, error)

Marshal serializes the members to buffer.

func (*AbsSendTimeExtension) Unmarshal added in v1.4.0

func (t *AbsSendTimeExtension) Unmarshal(rawData []byte) error

Unmarshal parses the passed byte slice and stores the result in the members.

type AudioLevelExtension added in v1.5.0

type AudioLevelExtension struct {
	Level uint8
	Voice bool
}

AudioLevelExtension is a extension payload format described in https://tools.ietf.org/html/rfc6464

Implementation based on: https://chromium.googlesource.com/external/webrtc/+/e2a017725570ead5946a4ca8235af27470ca0df9/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.cc#49

One byte format: 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID | len=0 |V| level | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Two byte format: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID | len=1 |V| level | 0 (pad) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

func (AudioLevelExtension) Marshal added in v1.5.0

func (a AudioLevelExtension) Marshal() ([]byte, error)

Marshal serializes the members to buffer

func (*AudioLevelExtension) Unmarshal added in v1.5.0

func (a *AudioLevelExtension) Unmarshal(rawData []byte) error

Unmarshal parses the passed byte slice and stores the result in the members

type Depacketizer

type Depacketizer interface {
	// Unmarshal parses the RTP payload and returns media.
	// Metadata may be stored on the Depacketizer itself
	Unmarshal(packet []byte) ([]byte, error)

	// Checks if the packet is at the beginning of a partition.  This
	// should return false if the result could not be determined, in
	// which case the caller will detect timestamp discontinuities.
	IsPartitionHead(payload []byte) bool

	// Checks if the packet is at the end of a partition.  This should
	// return false if the result could not be determined.
	IsPartitionTail(marker bool, payload []byte) bool
}

Depacketizer depacketizes a RTP payload, removing any RTP specific data from the payload

type Extension added in v1.5.0

type Extension struct {
	// contains filtered or unexported fields
}

Extension RTP Header extension

type Header struct {
	Version          uint8
	Padding          bool
	Extension        bool
	Marker           bool
	PayloadType      uint8
	SequenceNumber   uint16
	Timestamp        uint32
	SSRC             uint32
	CSRC             []uint32
	ExtensionProfile uint16
	Extensions       []Extension

	// Deprecated: will be removed in a future version.
	PayloadOffset int
}

Header represents an RTP packet header

func (Header) Clone added in v1.7.1

func (h Header) Clone() Header

Clone returns a deep copy h.

func (*Header) DelExtension added in v1.5.2

func (h *Header) DelExtension(id uint8) error

DelExtension Removes an RTP Header extension

func (*Header) GetExtension added in v1.5.0

func (h *Header) GetExtension(id uint8) []byte

GetExtension returns an RTP header extension

func (*Header) GetExtensionIDs added in v1.6.2

func (h *Header) GetExtensionIDs() []uint8

GetExtensionIDs returns an extension id array

func (Header) Marshal

func (h Header) Marshal() (buf []byte, err error)

Marshal serializes the header into bytes.

func (Header) MarshalSize

func (h Header) MarshalSize() int

MarshalSize returns the size of the header once marshaled.

func (Header) MarshalTo

func (h Header) MarshalTo(buf []byte) (n int, err error)

MarshalTo serializes the header and writes to the buffer.

func (*Header) SetExtension added in v1.5.0

func (h *Header) SetExtension(id uint8, payload []byte) error

SetExtension sets an RTP header extension

func (*Header) Unmarshal

func (h *Header) Unmarshal(buf []byte) (n int, err error)

Unmarshal parses the passed byte slice and stores the result in the Header. It returns the number of bytes read n and any error.

type HeaderExtension added in v1.7.8

type HeaderExtension interface {
	Set(id uint8, payload []byte) error
	GetIDs() []uint8
	Get(id uint8) []byte
	Del(id uint8) error

	Unmarshal(buf []byte) (int, error)
	Marshal() ([]byte, error)
	MarshalTo(buf []byte) (int, error)
	MarshalSize() int
}

HeaderExtension represents an RTP extension header.

type OneByteHeaderExtension added in v1.7.8

type OneByteHeaderExtension struct {
	// contains filtered or unexported fields
}

OneByteHeaderExtension is an RFC8285 one-byte header extension.

func (*OneByteHeaderExtension) Del added in v1.7.8

func (e *OneByteHeaderExtension) Del(id uint8) error

Del deletes the extension with the specified ID.

func (*OneByteHeaderExtension) Get added in v1.7.8

func (e *OneByteHeaderExtension) Get(id uint8) []byte

Get returns the payload of the extension with the given ID.

func (*OneByteHeaderExtension) GetIDs added in v1.7.8

func (e *OneByteHeaderExtension) GetIDs() []uint8

GetIDs returns the available IDs.

func (OneByteHeaderExtension) Marshal added in v1.7.8

func (e OneByteHeaderExtension) Marshal() ([]byte, error)

Marshal returns the extension payload.

func (OneByteHeaderExtension) MarshalSize added in v1.7.8

func (e OneByteHeaderExtension) MarshalSize() int

MarshalSize returns the size of the extension payload.

func (OneByteHeaderExtension) MarshalTo added in v1.7.8

func (e OneByteHeaderExtension) MarshalTo(buf []byte) (int, error)

MarshalTo writes the extension payload to the given buffer.

func (*OneByteHeaderExtension) Set added in v1.7.8

func (e *OneByteHeaderExtension) Set(id uint8, buf []byte) error

Set sets the extension payload for the specified ID.

func (*OneByteHeaderExtension) Unmarshal added in v1.7.8

func (e *OneByteHeaderExtension) Unmarshal(buf []byte) (int, error)

Unmarshal parses the extension payload.

type Packet

type Packet struct {
	Header
	Payload     []byte
	PaddingSize byte

	// Deprecated: will be removed in a future version.
	Raw []byte
}

Packet represents an RTP Packet

func (Packet) Clone added in v1.7.1

func (p Packet) Clone() *Packet

Clone returns a deep copy of p.

func (Packet) Marshal

func (p Packet) Marshal() (buf []byte, err error)

Marshal serializes the packet into bytes.

func (Packet) MarshalSize

func (p Packet) MarshalSize() int

MarshalSize returns the size of the packet once marshaled.

func (*Packet) MarshalTo

func (p *Packet) MarshalTo(buf []byte) (n int, err error)

MarshalTo serializes the packet and writes to the buffer.

func (Packet) String

func (p Packet) String() string

String helps with debugging by printing packet information in a readable way

func (*Packet) Unmarshal

func (p *Packet) Unmarshal(buf []byte) error

Unmarshal parses the passed byte slice and stores the result in the Packet.

type Packetizer

type Packetizer interface {
	Packetize(payload []byte, samples uint32) []*Packet
	GeneratePadding(samples uint32) []*Packet
	EnableAbsSendTime(value int)
	SkipSamples(skippedSamples uint32)
}

Packetizer packetizes a payload

func NewPacketizer

func NewPacketizer(mtu uint16, pt uint8, ssrc uint32, payloader Payloader, sequencer Sequencer, clockRate uint32) Packetizer

NewPacketizer returns a new instance of a Packetizer for a specific payloader

type PartitionHeadChecker added in v1.2.0

type PartitionHeadChecker interface {
	IsPartitionHead([]byte) bool
}

PartitionHeadChecker is the interface that checks whether the packet is keyframe or not

type Payloader

type Payloader interface {
	Payload(mtu uint16, payload []byte) [][]byte
}

Payloader payloads a byte array for use as rtp.Packet payloads

type PlayoutDelayExtension added in v1.8.1

type PlayoutDelayExtension struct {
	// contains filtered or unexported fields
}

PlayoutDelayExtension is a extension payload format in http://www.webrtc.org/experiments/rtp-hdrext/playout-delay 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID | len=2 | MIN delay | MAX delay | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

func (PlayoutDelayExtension) Marshal added in v1.8.1

func (p PlayoutDelayExtension) Marshal() ([]byte, error)

Marshal serializes the members to buffer

func (*PlayoutDelayExtension) Unmarshal added in v1.8.1

func (p *PlayoutDelayExtension) Unmarshal(rawData []byte) error

Unmarshal parses the passed byte slice and stores the result in the members

type RawExtension added in v1.7.8

type RawExtension struct {
	// contains filtered or unexported fields
}

RawExtension represents an RFC3550 header extension.

func (*RawExtension) Del added in v1.7.8

func (e *RawExtension) Del(id uint8) error

Del deletes the extension with the specified ID.

func (*RawExtension) Get added in v1.7.8

func (e *RawExtension) Get(id uint8) []byte

Get returns the payload of the extension with the given ID.

func (*RawExtension) GetIDs added in v1.7.8

func (e *RawExtension) GetIDs() []uint8

GetIDs returns the available IDs.

func (RawExtension) Marshal added in v1.7.8

func (e RawExtension) Marshal() ([]byte, error)

Marshal returns the raw extension payload.

func (RawExtension) MarshalSize added in v1.7.8

func (e RawExtension) MarshalSize() int

MarshalSize returns the size of the extension when marshaled.

func (RawExtension) MarshalTo added in v1.7.8

func (e RawExtension) MarshalTo(buf []byte) (int, error)

MarshalTo marshals the extension to the given buffer.

func (*RawExtension) Set added in v1.7.8

func (e *RawExtension) Set(id uint8, payload []byte) error

Set sets the extension payload for the specified ID.

func (*RawExtension) Unmarshal added in v1.7.8

func (e *RawExtension) Unmarshal(buf []byte) (int, error)

Unmarshal parses the extension from the given buffer.

type Sequencer

type Sequencer interface {
	NextSequenceNumber() uint16
	RollOverCount() uint64
}

Sequencer generates sequential sequence numbers for building RTP packets

func NewFixedSequencer

func NewFixedSequencer(s uint16) Sequencer

NewFixedSequencer returns a new sequencer starting from a specific sequence number

func NewRandomSequencer

func NewRandomSequencer() Sequencer

NewRandomSequencer returns a new sequencer starting from a random sequence number

type SpatialLayer added in v1.8.4

type SpatialLayer struct {
	RTPStreamID    int
	SpatialID      int
	TargetBitrates []int // target bitrates per temporal layer

	// Following members are valid only when HasResolutionAndFramerate is true
	Width     int
	Height    int
	Framerate int
}

SpatialLayer is a spatial layer in VLA.

type TransportCCExtension added in v1.2.1

type TransportCCExtension struct {
	TransportSequence uint16
}

TransportCCExtension is a extension payload format in https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 0xBE | 0xDE | length=1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID | L=1 |transport-wide sequence number | zero padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

func (TransportCCExtension) Marshal added in v1.2.1

func (t TransportCCExtension) Marshal() ([]byte, error)

Marshal serializes the members to buffer

func (*TransportCCExtension) Unmarshal added in v1.2.1

func (t *TransportCCExtension) Unmarshal(rawData []byte) error

Unmarshal parses the passed byte slice and stores the result in the members

type TwoByteHeaderExtension added in v1.7.8

type TwoByteHeaderExtension struct {
	// contains filtered or unexported fields
}

TwoByteHeaderExtension is an RFC8285 two-byte header extension.

func (*TwoByteHeaderExtension) Del added in v1.7.8

func (e *TwoByteHeaderExtension) Del(id uint8) error

Del deletes the extension with the specified ID.

func (*TwoByteHeaderExtension) Get added in v1.7.8

func (e *TwoByteHeaderExtension) Get(id uint8) []byte

Get returns the payload of the extension with the given ID.

func (*TwoByteHeaderExtension) GetIDs added in v1.7.8

func (e *TwoByteHeaderExtension) GetIDs() []uint8

GetIDs returns the available IDs.

func (TwoByteHeaderExtension) Marshal added in v1.7.8

func (e TwoByteHeaderExtension) Marshal() ([]byte, error)

Marshal returns the extension payload.

func (TwoByteHeaderExtension) MarshalSize added in v1.7.8

func (e TwoByteHeaderExtension) MarshalSize() int

MarshalSize returns the size of the extension payload.

func (TwoByteHeaderExtension) MarshalTo added in v1.7.8

func (e TwoByteHeaderExtension) MarshalTo(buf []byte) (int, error)

MarshalTo marshals the extension to the given buffer.

func (*TwoByteHeaderExtension) Set added in v1.7.8

func (e *TwoByteHeaderExtension) Set(id uint8, buf []byte) error

Set sets the extension payload for the specified ID.

func (*TwoByteHeaderExtension) Unmarshal added in v1.7.8

func (e *TwoByteHeaderExtension) Unmarshal(buf []byte) (int, error)

Unmarshal parses the extension payload.

type VLA added in v1.8.4

type VLA struct {
	RTPStreamID               int // 0-origin RTP stream ID (RID) this allocation is sent on (0..3)
	RTPStreamCount            int // Number of RTP streams (1..4)
	ActiveSpatialLayer        []SpatialLayer
	HasResolutionAndFramerate bool
}

VLA is a Video Layer Allocation (VLA) extension. See https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/video-layers-allocation00

func (VLA) Marshal added in v1.8.4

func (v VLA) Marshal() ([]byte, error)

Marshal encodes VLA into a byte slice.

func (VLA) String added in v1.8.4

func (v VLA) String() string

String makes VLA printable.

func (*VLA) Unmarshal added in v1.8.4

func (v *VLA) Unmarshal(payload []byte) (int, error)

Unmarshal decodes VLA from a byte slice.

Directories

Path Synopsis
Package codecs implements codec specific RTP payloader/depayloaders
Package codecs implements codec specific RTP payloader/depayloaders
av1/frame
Package frame provides code to construct complete media frames from packetized media.
Package frame provides code to construct complete media frames from packetized media.
av1/obu
Package obu implements tools for working with the Open Bitstream Unit.
Package obu implements tools for working with the Open Bitstream Unit.
pkg
frame
Package frame is deprecated.
Package frame is deprecated.
obu
Package obu is deprecated.
Package obu is deprecated.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL