fast-rtc / env-my /Lib /site-packages /aiortc /rtcrtpparameters.py
krishna-k's picture
Upload folder using huggingface_hub
06555b5 verified
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Union
ParametersDict = Dict[str, Union[int, str, None]]
@dataclass
class RTCRtpCodecCapability:
"""
The :class:`RTCRtpCodecCapability` dictionary provides information on
codec capabilities.
"""
mimeType: str
"The codec MIME media type/subtype, for instance `'audio/PCMU'`."
clockRate: int
"The codec clock rate expressed in Hertz."
channels: Optional[int] = None
"The number of channels supported (e.g. two for stereo)."
parameters: ParametersDict = field(default_factory=dict)
"Codec-specific parameters available for signaling."
@property
def name(self):
return self.mimeType.split("/")[1]
@dataclass
class RTCRtpCodecParameters:
"""
The :class:`RTCRtpCodecParameters` dictionary provides information on
codec settings.
"""
mimeType: str
"The codec MIME media type/subtype, for instance `'audio/PCMU'`."
clockRate: int
"The codec clock rate expressed in Hertz."
channels: Optional[int] = None
"The number of channels supported (e.g. two for stereo)."
payloadType: Optional[int] = None
"The value that goes in the RTP Payload Type Field."
rtcpFeedback: List["RTCRtcpFeedback"] = field(default_factory=list)
"Transport layer and codec-specific feedback messages for this codec."
parameters: ParametersDict = field(default_factory=dict)
"Codec-specific parameters available for signaling."
@property
def name(self):
return self.mimeType.split("/")[1]
def __str__(self):
s = f"{self.name}/{self.clockRate}"
if self.channels == 2:
s += "/2"
return s
@dataclass
class RTCRtpRtxParameters:
ssrc: int
@dataclass
class RTCRtpCodingParameters:
ssrc: int
payloadType: int
rtx: Optional[RTCRtpRtxParameters] = None
class RTCRtpDecodingParameters(RTCRtpCodingParameters):
pass
class RTCRtpEncodingParameters(RTCRtpCodingParameters):
pass
@dataclass
class RTCRtpHeaderExtensionCapability:
"""
The :class:`RTCRtpHeaderExtensionCapability` dictionary provides information
on a supported header extension.
"""
uri: str
"The URI of the RTP header extension."
@dataclass
class RTCRtpHeaderExtensionParameters:
"""
The :class:`RTCRtpHeaderExtensionParameters` dictionary enables a header
extension to be configured for use within an :class:`RTCRtpSender` or
:class:`RTCRtpReceiver`.
"""
id: int
"The value that goes in the packet."
uri: str
"The URI of the RTP header extension."
@dataclass
class RTCRtpCapabilities:
"""
The :class:`RTCRtpCapabilities` dictionary provides information about
support codecs and header extensions.
"""
codecs: List[RTCRtpCodecCapability] = field(default_factory=list)
"A list of :class:`RTCRtpCodecCapability`."
headerExtensions: List[RTCRtpHeaderExtensionCapability] = field(
default_factory=list
)
"A list of :class:`RTCRtpHeaderExtensionCapability`."
@dataclass
class RTCRtcpFeedback:
"""
The :class:`RTCRtcpFeedback` dictionary provides information on RTCP feedback
messages.
"""
type: str
parameter: Optional[str] = None
@dataclass
class RTCRtcpParameters:
"""
The :class:`RTCRtcpParameters` dictionary provides information on RTCP settings.
"""
cname: Optional[str] = None
"The Canonical Name (CNAME) used by RTCP."
mux: bool = False
"Whether RTP and RTCP are multiplexed."
ssrc: Optional[int] = None
"The Synchronization Source identifier."
@dataclass
class RTCRtpParameters:
"""
The :class:`RTCRtpParameters` dictionary describes the configuration of
an :class:`RTCRtpReceiver` or an :class:`RTCRtpSender`.
"""
codecs: List[RTCRtpCodecParameters] = field(default_factory=list)
"A list of :class:`RTCRtpCodecParameters` to send or receive."
headerExtensions: List[RTCRtpHeaderExtensionParameters] = field(
default_factory=list
)
"A list of :class:`RTCRtpHeaderExtensionParameters`."
muxId: str = ""
"The muxId assigned to the RTP stream, if any, empty string if unset."
rtcp: RTCRtcpParameters = field(default_factory=RTCRtcpParameters)
"Parameters to configure RTCP."
@dataclass
class RTCRtpReceiveParameters(RTCRtpParameters):
encodings: List[RTCRtpDecodingParameters] = field(default_factory=list)
@dataclass
class RTCRtpSendParameters(RTCRtpParameters):
encodings: List[RTCRtpEncodingParameters] = field(default_factory=list)