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
- Variables
- func GenerateSSRC() uint32
- type CowBuffer
- type HeaderExtension
- type HeaderExtensionID
- type HeaderExtensionIDs
- func (h HeaderExtensionIDs) AbsSendTime() HeaderExtensionID
- func (h HeaderExtensionIDs) HeaderExtensions() []HeaderExtension
- func (h HeaderExtensionIDs) Mid() HeaderExtensionID
- func (h HeaderExtensionIDs) RRid() HeaderExtensionID
- func (h HeaderExtensionIDs) Rid() HeaderExtensionID
- func (h HeaderExtensionIDs) TransportWideCC() HeaderExtensionID
- type Packet
- type PayloadDescriptor
- type PayloadType
- type SSRC
- type SendRTCP
- type Seq
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 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 (h HeaderExtensionIDs) Mid() HeaderExtensionID
func (HeaderExtensionIDs) RRid ¶
func (h HeaderExtensionIDs) RRid() HeaderExtensionID
func (HeaderExtensionIDs) Rid ¶
func (h HeaderExtensionIDs) Rid() HeaderExtensionID
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
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
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. |
Click to show internal directories.
Click to hide internal directories.