rtc

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Feb 21, 2025 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package rtc keeps all const and data structure may be used.

It should not import any other package to avoid package import cycle

Index

Constants

View Source
const (
	MaxRTCPAudioInterval = 5000
	MaxRTCPVideoInterval = 1000
)

Max RTCP Report Interval

View Source
const (
	MediaTypeAudio = "audio"
	MediaTypeVideo = "video"
)
View Source
const (
	HeaderExtensionNone                      = ""
	HeaderExtensionTimestampOffset           = "urn:ietf:params:rtp-hdrext:toffset"
	HeaderExtensionAudioLevel                = "urn:ietf:params:rtp-hdrext:ssrc-audio-level"
	HeaderExtensionCsrcAudioLevels           = "urn:ietf:params:rtp-hdrext:csrc-audio-level"
	HeaderExtensionInbandCN                  = "http://www.webrtc.org/experiments/rtp-hdrext/inband-cn"
	HeaderExtensionAbsSendTime               = "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"
	HeaderExtensionAbsoluteCaptureTime       = "http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time"
	HeaderExtensionVideoRotation             = "urn:3gpp:video-orientation"
	HeaderExtensionTransportSequenceNumber   = "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"
	HeaderExtensionTransportSequenceNumberV2 = "http://www.webrtc.org/experiments/rtp-hdrext/transport-wide-cc-02"
	HeaderExtensionPlayoutDelay              = "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay"
	HeaderExtensionVideoContentType          = "http://www.webrtc.org/experiments/rtp-hdrext/video-content-type"
	HeaderExtensionVideoLayersAllocation     = "http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00"
	HeaderExtensionVideoTiming               = "http://www.webrtc.org/experiments/rtp-hdrext/video-timing"
	HeaderExtensionRid                       = "urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id"
	HeaderExtensionRepairedRid               = "urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"
	HeaderExtensionMid                       = "urn:ietf:params:rtp-hdrext:sdes:mid"
	HeaderExtensionGenericFrameDescriptor00  = "http://www.webrtc.org/experiments/rtp-hdrext/generic-frame-descriptor-00"
	HeaderExtensionColorSpace                = "http://www.webrtc.org/experiments/rtp-hdrext/color-space"
	HeaderExtensionVideoFrameTrackingID      = "http://www.webrtc.org/experiments/rtp-hdrext/video-frame-tracking-id"
	HeaderExtensionDependencyDescriptor      = "https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension"
)

see https://chromium.googlesource.com/external/webrtc/+/HEAD/api/rtp_parameters.h#298

View Source
const SeqNumberMaxValue = math.MaxUint16

Variables

View Source
var ErrUnknownType = errors.New("unknown kind, only support MediaTypeAudio and MediaTypeVideo")

Functions

func GenerateSSRC

func GenerateSSRC() uint32

Types

type CowBuffer

type CowBuffer []byte

func (CowBuffer) Copy

func (b CowBuffer) Copy() CowBuffer

type HeaderExtension

type HeaderExtension struct {
	URI     string
	ID      HeaderExtensionID
	Encrypt bool
}

type HeaderExtensionID

type HeaderExtensionID uint8
const (
	HeaderExtensionIDNone HeaderExtensionID = iota
	HeaderExtensionIDTransmissionTimeOffset
	HeaderExtensionIDAudioLevel
	HeaderExtensionIDCsrcAudioLevel
	HeaderExtensionIDInbandComfortNoise
	HeaderExtensionIDAbsoluteSendTime
	HeaderExtensionIDAbsoluteCaptureTime
	HeaderExtensionIDVideoRotation
	HeaderExtensionIDTransportSequenceNumber
	HeaderExtensionIDTransportSequenceNumber02
	HeaderExtensionIDPlayoutDelay
	HeaderExtensionIDVideoContentType
	HeaderExtensionIDVideoLayersAllocation
	HeaderExtensionIDVideoTiming
	HeaderExtensionIDHeaderStreamID
	HeaderExtensionIDRepairedHeaderStreamID
	HeaderExtensionIDMid
	HeaderExtensionIDGenericFrameDescriptor00
	HeaderExtensionIDGenericFrameDescriptor02
	HeaderExtensionIDColorSpace
	HeaderExtensionIDVideoFrameTrackingID
)

All support rtp header extensions see https://chromium.googlesource.com/external/webrtc/+/HEAD/modules/rtp_rtcp/include/rtp_rtcp_defines.h#51

func DefaultHeaderExtensionID

func DefaultHeaderExtensionID(uri string) HeaderExtensionID

DefaultHeaderExtensionID is used when we are the offer side

type HeaderExtensionIDs

type HeaderExtensionIDs map[string]HeaderExtension

func NewHerderExtensionIDs

func NewHerderExtensionIDs(headers []HeaderExtension) HeaderExtensionIDs

func (HeaderExtensionIDs) AbsSendTime

func (h HeaderExtensionIDs) AbsSendTime() HeaderExtensionID

func (HeaderExtensionIDs) HeaderExtensions

func (h HeaderExtensionIDs) HeaderExtensions() []HeaderExtension

func (HeaderExtensionIDs) Mid

func (HeaderExtensionIDs) RRid

func (HeaderExtensionIDs) Rid

func (HeaderExtensionIDs) TransportWideCC

func (h HeaderExtensionIDs) TransportWideCC() HeaderExtensionID

type Packet

type Packet interface {
	SetHeaderExtensionIDs(h HeaderExtensionIDs)
	SSRC() uint32
	Mid(mid HeaderExtensionID) string
	Rid(rid HeaderExtensionID) string
	RRid(rrid HeaderExtensionID) string
	PayloadType() PayloadType
	SetPayloadType(payloadType PayloadType)
	SetSsrc(ssrc uint32)
	IsKeyFrame() bool
	ReadTransportWideCc01(tcc uint8) (uint16, bool)
	ReadAbsSendTime(abs uint8) (uint32, bool)
	SequenceNumber() uint16
	SetSequenceNumber(seq uint16)
	UpdateAbsSendTime(id HeaderExtensionID, nowMs time.Time)
	UpdateTransportWideCc01(i int) bool
	Size() int
	HasMarker() bool
	Resolution() (int, int, bool)
	ProfileLevelID() (int, bool)
	Timestamp() uint32
	// ReceiveMS is when we receive the packet
	ReceiveMS() int64
	Payload() []byte
	PayloadLength() int
	Packet() *rtp.Packet
	SetPayloadDescriptor(pd PayloadDescriptor)
	Marshal() ([]byte, error)
	RtxDecode(payloadType PayloadType, ssrc uint32) error
	TemporalLayer() int
	SetTimestamp(timestamp uint32)
	UpdateHeader(extensions []rtp.Extension)
	IsRTX() bool
	SetRTX(b bool)
	HeaderExtensions() []rtp.Extension
	Parse(d []byte) error
}

Packet as a interface could make other tests easier, but not final decision.

type PayloadDescriptor

type PayloadDescriptor interface {
	IsKeyFrame() bool
}

type PayloadType

type PayloadType uint8

type SSRC

type SSRC uint32

type SendRTCP

type SendRTCP func(rtcp.Packet)

type Seq

type Seq uint16

Directories

Path Synopsis
bwe
tcc
av1
vp8
vp9
Package ice implements ice-lite both server and client side.
Package ice implements ice-lite both server and client side.
Package sdp provides SDP parsing and generation.
Package sdp provides SDP parsing and generation.

Jump to

Keyboard shortcuts

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