# Enums

String enums of the specifications.

Members compare equal to their spec strings and print as them: `RTCSignalingState.have_local_offer ==
'have-local-offer'`. Hyphens in the values become underscores in the member names. Parameters that take an enum take
its string value too, as typed by the `...Value` literal next to it.

### *class* webrtc.enums.RTCPeerConnectionState

The overall state of a connection, combined from its ICE and DTLS transports.

See [MDN: RTCPeerConnection/connectionState](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/connectionState).

#### new *= 'new'*

No transport has started connecting yet

#### connecting *= 'connecting'*

A transport is connecting, and none has failed

#### connected *= 'connected'*

Every transport in use is connected

#### disconnected *= 'disconnected'*

A transport lost connectivity, and may recover

#### failed *= 'failed'*

A transport failed and needs an ICE restart

#### closed *= 'closed'*

The connection was closed

### *class* webrtc.enums.RTCSignalingState

Where a connection is in the offer/answer exchange.

See [MDN: RTCPeerConnection/signalingState](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/signalingState).

#### stable *= 'stable'*

No offer/answer exchange is in progress

#### have_local_offer *= 'have-local-offer'*

A local offer is set, waiting for an answer

#### have_local_pranswer *= 'have-local-pranswer'*

A remote offer and a local provisional answer are set

#### have_remote_offer *= 'have-remote-offer'*

A remote offer is set, waiting for a local answer

#### have_remote_pranswer *= 'have-remote-pranswer'*

A local offer and a remote provisional answer are set

#### closed *= 'closed'*

The connection was closed

### *class* webrtc.enums.RTCIceConnectionState

The state of the ICE transports of a connection, taken together.

See [MDN: RTCPeerConnection/iceConnectionState](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceConnectionState).

#### new *= 'new'*

No transport is checking candidates yet

#### checking *= 'checking'*

A transport is checking candidate pairs, and none is connected

#### connected *= 'connected'*

Every transport has a usable pair

#### completed *= 'completed'*

Every transport finished checking and has a usable pair

#### failed *= 'failed'*

A transport found no usable pair

#### disconnected *= 'disconnected'*

A transport lost connectivity, and may recover

#### closed *= 'closed'*

The connection was closed

### *class* webrtc.enums.RTCIceGatheringState

The candidate gathering state of the ICE transports of a connection, taken together.

See [MDN: RTCPeerConnection/iceGatheringState](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState).

#### new *= 'new'*

No transport has started gathering

#### gathering *= 'gathering'*

A transport is gathering candidates

#### complete *= 'complete'*

Every transport finished gathering

### *class* webrtc.enums.RTCSdpType

The type of a session description.

See [MDN: RTCSessionDescription/type](https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription/type).

#### offer *= 'offer'*

An offer, which starts an exchange

#### pranswer *= 'pranswer'*

A provisional answer, which can still be replaced

#### answer *= 'answer'*

The final answer, which ends an exchange

#### rollback *= 'rollback'*

Discards a pending offer and returns to the last stable state

### webrtc.enums.RTCSdpTypeValue

The string values of [`RTCSdpType`](#webrtc.enums.RTCSdpType), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘offer’, ‘pranswer’, ‘answer’, ‘rollback’]

### *class* webrtc.enums.MediaStreamTrackState

Whether a track still delivers media.

See [MDN: MediaStreamTrack/readyState](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/readyState).

#### live *= 'live'*

The track delivers media, or will when it’s unmuted

#### ended *= 'ended'*

The track was stopped or its source ended, and it won’t deliver media again

### *class* webrtc.enums.MediaStreamSourceState

The state of the native source of a track. This library adds it. The specifications have no such enum.

#### initializing *= 'initializing'*

The source is starting

#### live *= 'live'*

The source produces media

#### ended *= 'ended'*

The source stopped permanently

#### muted *= 'muted'*

The source produces no media for now

### *class* webrtc.enums.RTCRtpTransceiverDirection

Whether a transceiver sends media, receives it, both or neither.

See [MDN: RTCRtpTransceiver/direction](https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver/direction).

#### sendrecv *= 'sendrecv'*

Sends and receives

#### sendonly *= 'sendonly'*

Sends only

#### recvonly *= 'recvonly'*

Receives only

#### inactive *= 'inactive'*

Neither sends nor receives

#### stopped *= 'stopped'*

Stopped, which isn’t a direction that can be set

### webrtc.enums.RTCRtpTransceiverDirectionValue

The string values of [`RTCRtpTransceiverDirection`](#webrtc.enums.RTCRtpTransceiverDirection), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘sendrecv’, ‘sendonly’, ‘recvonly’, ‘inactive’, ‘stopped’]

### *class* webrtc.enums.MediaType

The kind of a track or a transceiver.

Tracks are audio or video. The data and unsupported kinds come from the media sections of the native WebRTC engine.

See [MDN: MediaStreamTrack/kind](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/kind).

#### audio *= 'audio'*

Audio

#### video *= 'video'*

Video

#### data *= 'data'*

The media section of data channels

#### unsupported *= 'unsupported'*

A media section of a kind the native WebRTC engine doesn’t handle

### webrtc.enums.MediaTypeValue

The string values of [`MediaType`](#webrtc.enums.MediaType), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘audio’, ‘video’, ‘data’, ‘unsupported’]

### *class* webrtc.enums.MediaDeviceKind

The kind of a media device.

See [MDN: MediaDeviceInfo/kind](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo/kind).

#### audioinput *= 'audioinput'*

A microphone or another audio input

#### audiooutput *= 'audiooutput'*

Speakers, headphones or another audio output

#### videoinput *= 'videoinput'*

A camera or another video input

### *class* webrtc.enums.VideoFacingModeEnum

The direction a camera faces, relative to the user.

See [MDN: MediaTrackConstraints/facingMode](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode).

#### user *= 'user'*

Towards the user, like a front camera

#### environment *= 'environment'*

Away from the user, like a back camera

#### left *= 'left'*

Towards the left of the user

#### right *= 'right'*

Towards the right of the user

### *class* webrtc.enums.VideoResizeModeEnum

Whether the video of a source may be cropped and scaled to meet the constraints of a track.

#### none *= 'none'*

The video keeps the resolution and frame rate of the source

#### crop_and_scale *= 'crop-and-scale'*

The video may be cropped, scaled down and have frames dropped

### *class* webrtc.enums.EchoCancellationModeEnum

Which audio played out is removed as echo from a microphone.

See [MDN: MediaTrackConstraints/echoCancellation](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/echoCancellation).

#### all *= 'all'*

Any audio the system plays

#### remote_only *= 'remote-only'*

Only the audio received from remote peers

### *class* webrtc.enums.RTCIceComponent

Whether an ICE transport or candidate carries RTP or RTCP.

See [MDN: RTCIceCandidate/component](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate/component).

#### rtp *= 'rtp'*

RTP, or RTP and RTCP multiplexed together

#### rtcp *= 'rtcp'*

RTCP on its own transport

### *class* webrtc.enums.RTCIceRole

The role of an ICE agent. The controlling agent picks the candidate pair.

See [MDN: RTCIceTransport/role](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport/role).

#### controlling *= 'controlling'*

Nominates the candidate pair in use

#### controlled *= 'controlled'*

Accepts the pair the other agent nominates

#### unknown *= 'unknown'*

Not decided yet

### *class* webrtc.enums.RTCIceTransportState

The state of an ICE transport.

See [MDN: RTCIceTransport/state](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport/state).

#### new *= 'new'*

The transport is gathering candidates or waiting for remote ones, and hasn’t started checks

#### checking *= 'checking'*

Candidate pairs are being checked, and none works yet

#### connected *= 'connected'*

A usable pair was found, and checks may go on

#### completed *= 'completed'*

Checks finished, and a usable pair was found

#### disconnected *= 'disconnected'*

Connectivity was lost, and may recover

#### failed *= 'failed'*

Checks finished without a usable pair

#### closed *= 'closed'*

The transport was closed

### *class* webrtc.enums.RTCIceGathererState

The candidate gathering state of an ICE transport.

See [MDN: RTCIceTransport/gatheringState](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport/gatheringState).

#### new *= 'new'*

Gathering hasn’t started

#### gathering *= 'gathering'*

Candidates are being gathered

#### complete *= 'complete'*

Gathering finished

### *class* webrtc.enums.RTCDtlsTransportState

The state of a DTLS transport.

See [MDN: RTCDtlsTransport/state](https://developer.mozilla.org/en-US/docs/Web/API/RTCDtlsTransport/state).

#### new *= 'new'*

The handshake hasn’t started

#### connecting *= 'connecting'*

The handshake is in progress

#### connected *= 'connected'*

The handshake succeeded

#### closed *= 'closed'*

Either side closed the transport

#### failed *= 'failed'*

The handshake or the fingerprint check failed

### *class* webrtc.enums.RTCSctpTransportState

The state of an SCTP transport.

See [MDN: RTCSctpTransport/state](https://developer.mozilla.org/en-US/docs/Web/API/RTCSctpTransport/state).

#### connecting *= 'connecting'*

The association is being set up

#### connected *= 'connected'*

The association is up, and channels can open

#### closed *= 'closed'*

The association was closed

### *class* webrtc.enums.RTCDataChannelState

The state of a data channel.

See [MDN: RTCDataChannel/readyState](https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/readyState).

#### connecting *= 'connecting'*

The channel is being opened, and messages can’t be sent yet

#### open *= 'open'*

Messages can be sent and received

#### closing *= 'closing'*

The channel will close once the messages already queued are sent

#### closed *= 'closed'*

The channel was closed, or couldn’t be opened

### *class* webrtc.enums.RTCPriorityType

The priority of a data channel or an encoding, relative to the others of the connection.

Each level gets twice the bandwidth share of the one below it.

See [MDN: RTCRtpSender/setParameters](https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/setParameters).

#### very_low *= 'very-low'*

The lowest priority, with half the share of `low`

#### low *= 'low'*

The default priority

#### medium *= 'medium'*

Twice the share of `low`

#### high *= 'high'*

Four times the share of `low`

### webrtc.enums.RTCPriorityTypeValue

The string values of [`RTCPriorityType`](#webrtc.enums.RTCPriorityType), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘very-low’, ‘low’, ‘medium’, ‘high’]

### *class* webrtc.enums.RTCDegradationPreference

What a video sender gives up first when bandwidth or CPU runs short.

See [MDN: RTCRtpSender/setParameters](https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/setParameters).

#### maintain_framerate *= 'maintain-framerate'*

Keeps the frame rate and lowers the resolution

#### maintain_resolution *= 'maintain-resolution'*

Keeps the resolution and lowers the frame rate

#### balanced *= 'balanced'*

Lowers both, as the native WebRTC engine sees fit

#### maintain_framerate_and_resolution *= 'maintain-framerate-and-resolution'*

Keeps both and lowers only the quality of the encoding

### webrtc.enums.RTCDegradationPreferenceValue

The string values of [`RTCDegradationPreference`](#webrtc.enums.RTCDegradationPreference), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘maintain-framerate’, ‘maintain-resolution’, ‘balanced’, ‘maintain-framerate-and-resolution’]

### *class* webrtc.enums.RTCIceTransportPolicy

Which ICE candidates a connection may use.

See [MDN: RTCPeerConnection/RTCPeerConnection](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection).

#### all *= 'all'*

Any candidate

#### relay *= 'relay'*

Only candidates relayed through a TURN server, which hides the host’s addresses

### webrtc.enums.RTCIceTransportPolicyValue

The string values of [`RTCIceTransportPolicy`](#webrtc.enums.RTCIceTransportPolicy), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘all’, ‘relay’]

### *class* webrtc.enums.RTCBundlePolicy

How media sections share transports when the remote peer may not support bundling.

See [MDN: RTCPeerConnection/RTCPeerConnection](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection).

#### balanced *= 'balanced'*

A transport per media kind until the remote peer accepts bundling

#### max_compat *= 'max-compat'*

A transport per media section until the remote peer accepts bundling

#### max_bundle *= 'max-bundle'*

One transport for every media section, which needs a remote peer that supports bundling

### webrtc.enums.RTCBundlePolicyValue

The string values of [`RTCBundlePolicy`](#webrtc.enums.RTCBundlePolicy), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘balanced’, ‘max-compat’, ‘max-bundle’]

### *class* webrtc.enums.RTCRtcpMuxPolicy

Whether RTCP shares the transport of RTP.

See [MDN: RTCPeerConnection/RTCPeerConnection](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection).

#### negotiate *= 'negotiate'*

RTCP may use its own transport; removed from the specification

#### require *= 'require'*

RTCP shares the transport of RTP, and a remote description without RTCP multiplexing fails

### webrtc.enums.RTCRtcpMuxPolicyValue

The string values of [`RTCRtcpMuxPolicy`](#webrtc.enums.RTCRtcpMuxPolicy), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘negotiate’, ‘require’]

### *class* webrtc.enums.RTCRtpHeaderEncryptionPolicy

Whether RTP header extensions are encrypted with cryptex (RFC 9335).

#### disable *= 'disable'*

Never encrypts them

#### negotiate *= 'negotiate'*

Encrypts them when the remote peer supports it

#### require *= 'require'*

Always encrypts them, so a remote description without cryptex fails

### webrtc.enums.RTCRtpHeaderEncryptionPolicyValue

The string values of [`RTCRtpHeaderEncryptionPolicy`](#webrtc.enums.RTCRtpHeaderEncryptionPolicy), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘disable’, ‘negotiate’, ‘require’]

### *class* webrtc.enums.RTCIceCandidateType

Where the address of an ICE candidate comes from.

See [MDN: RTCIceCandidate/type](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate/type).

#### host *= 'host'*

An address of a local network interface

#### srflx *= 'srflx'*

The public address a STUN server saw (server reflexive)

#### prflx *= 'prflx'*

An address learned from the checks of the remote peer (peer reflexive)

#### relay *= 'relay'*

An address allocated on a TURN server

### *class* webrtc.enums.RTCIceProtocol

The transport protocol of an ICE candidate.

See [MDN: RTCIceCandidate/protocol](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate/protocol).

#### udp *= 'udp'*

UDP

#### tcp *= 'tcp'*

TCP

### *class* webrtc.enums.RTCIceTcpCandidateType

How a TCP ICE candidate opens its connections.

See [MDN: RTCIceCandidate/tcpType](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate/tcpType).

#### active *= 'active'*

Opens connections but doesn’t accept them

#### passive *= 'passive'*

Accepts connections but doesn’t open them

#### so *= 'so'*

Both sides try to open the connection at once (simultaneous open)

### *class* webrtc.enums.RTCIceServerTransportProtocol

The protocol between the client and the TURN server of a relay candidate.

See [MDN: RTCIceCandidateStats/relayProtocol](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateStats/relayProtocol).

#### udp *= 'udp'*

UDP

#### tcp *= 'tcp'*

TCP

#### tls *= 'tls'*

TLS over TCP

### webrtc.enums.RTCIceServerTransportProtocolValue

The string values of [`RTCIceServerTransportProtocol`](#webrtc.enums.RTCIceServerTransportProtocol), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘udp’, ‘tcp’, ‘tls’]

### *class* webrtc.enums.RTCStatsType

The type of a stats object, which tells which stats class it is.

See [MDN: RTCStatsReport](https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport).

#### codec *= 'codec'*

[`webrtc.RTCCodecStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCCodecStats)

#### inbound_rtp *= 'inbound-rtp'*

[`webrtc.RTCInboundRtpStreamStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCInboundRtpStreamStats)

#### outbound_rtp *= 'outbound-rtp'*

[`webrtc.RTCOutboundRtpStreamStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCOutboundRtpStreamStats)

#### remote_inbound_rtp *= 'remote-inbound-rtp'*

[`webrtc.RTCRemoteInboundRtpStreamStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCRemoteInboundRtpStreamStats)

#### remote_outbound_rtp *= 'remote-outbound-rtp'*

[`webrtc.RTCRemoteOutboundRtpStreamStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCRemoteOutboundRtpStreamStats)

#### media_source *= 'media-source'*

[`webrtc.RTCAudioSourceStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCAudioSourceStats) or [`webrtc.RTCVideoSourceStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCVideoSourceStats)

#### media_playout *= 'media-playout'*

[`webrtc.RTCAudioPlayoutStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCAudioPlayoutStats)

#### peer_connection *= 'peer-connection'*

[`webrtc.RTCPeerConnectionStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCPeerConnectionStats)

#### data_channel *= 'data-channel'*

[`webrtc.RTCDataChannelStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCDataChannelStats)

#### transport *= 'transport'*

[`webrtc.RTCTransportStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCTransportStats)

#### candidate_pair *= 'candidate-pair'*

[`webrtc.RTCIceCandidatePairStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCIceCandidatePairStats)

#### local_candidate *= 'local-candidate'*

[`webrtc.RTCIceCandidateStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCIceCandidateStats) of a local candidate

#### remote_candidate *= 'remote-candidate'*

[`webrtc.RTCIceCandidateStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCIceCandidateStats) of a remote candidate

#### certificate *= 'certificate'*

[`webrtc.RTCCertificateStats`](models/rtc_stats.md#webrtc.models.rtc_stats.RTCCertificateStats)

### *class* webrtc.enums.RTCQualityLimitationReason

What limits the resolution or frame rate of a video sender the most.

See [MDN: RTCOutboundRtpStreamStats/qualityLimitationReason](https://developer.mozilla.org/en-US/docs/Web/API/RTCOutboundRtpStreamStats/qualityLimitationReason).

#### none *= 'none'*

Nothing

#### cpu *= 'cpu'*

The CPU, which can’t encode fast enough

#### bandwidth *= 'bandwidth'*

The estimated bandwidth

#### other *= 'other'*

Something else

### *class* webrtc.enums.RTCDtlsRole

The role of a DTLS transport in the handshake.

See [MDN: RTCTransportStats/dtlsRole](https://developer.mozilla.org/en-US/docs/Web/API/RTCTransportStats/dtlsRole).

#### client *= 'client'*

Starts the handshake

#### server *= 'server'*

Answers the handshake

#### unknown *= 'unknown'*

Not decided yet

### *class* webrtc.enums.RTCStatsIceCandidatePairState

The state of an ICE candidate pair in the checklist.

See [MDN: RTCIceCandidatePairStats/state](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidatePairStats/state).

#### frozen *= 'frozen'*

Waits for a check of another pair of the same foundation

#### waiting *= 'waiting'*

Waits to be checked

#### in_progress *= 'in-progress'*

Being checked

#### failed *= 'failed'*

The check failed

#### succeeded *= 'succeeded'*

The check succeeded

### *class* webrtc.enums.RTCErrorDetailType

The WebRTC-specific cause of an [`webrtc.RTCError`](exceptions.md#webrtc.exceptions.RTCError).

See [MDN: RTCError/errorDetail](https://developer.mozilla.org/en-US/docs/Web/API/RTCError/errorDetail).

#### data_channel_failure *= 'data-channel-failure'*

A data channel failed (see [`webrtc.RTCError.sctp_cause_code`](exceptions.md#webrtc.exceptions.RTCError.sctp_cause_code))

#### dtls_failure *= 'dtls-failure'*

The DTLS handshake failed or a DTLS alert was received

#### fingerprint_failure *= 'fingerprint-failure'*

The certificate of the remote peer doesn’t match the fingerprint of its description

#### sctp_failure *= 'sctp-failure'*

The SCTP association failed (see [`webrtc.RTCError.sctp_cause_code`](exceptions.md#webrtc.exceptions.RTCError.sctp_cause_code))

#### sdp_syntax_error *= 'sdp-syntax-error'*

A description doesn’t parse (see [`webrtc.RTCError.sdp_line_number`](exceptions.md#webrtc.exceptions.RTCError.sdp_line_number))

#### hardware_encoder_not_available *= 'hardware-encoder-not-available'*

A hardware encoder was required and none is available

#### hardware_encoder_error *= 'hardware-encoder-error'*

The hardware encoder failed

### webrtc.enums.RTCErrorDetailTypeValue

The string values of [`webrtc.RTCErrorDetailType`](#webrtc.enums.RTCErrorDetailType), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘data-channel-failure’, ‘dtls-failure’, ‘fingerprint-failure’, ‘sctp-failure’, ‘sdp-syntax-error’, ‘hardware-encoder-not-available’, ‘hardware-encoder-error’]

### *class* webrtc.enums.BinaryType

What the binary messages of a [`webrtc.RTCDataChannel`](interfaces/rtc_data_channel.md#webrtc.interfaces.rtc_data_channel.RTCDataChannel) are delivered as.

See [MDN: RTCDataChannel/binaryType](https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/binaryType).

#### arraybuffer *= 'arraybuffer'*

[`bytes`](https://docs.python.org/3/builtins/stdtypes.html#bytes)

#### blob *= 'blob'*

[`webrtc.Blob`](models/blob.md#webrtc.models.blob.Blob)

### webrtc.enums.BinaryTypeValue

The string values of [`BinaryType`](#webrtc.enums.BinaryType), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘arraybuffer’, ‘blob’]

### *class* webrtc.enums.EndingType

How a [`webrtc.Blob`](models/blob.md#webrtc.models.blob.Blob) writes the line endings of its string parts.

See [MDN: Blob/Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob).

#### transparent *= 'transparent'*

As they are

#### native *= 'native'*

As the platform’s, which are `\r\n` on Windows and `\n` elsewhere

### webrtc.enums.EndingTypeValue

The string values of [`EndingType`](#webrtc.enums.EndingType), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘transparent’, ‘native’]

### *class* webrtc.enums.VideoPixelFormat

The layout of the pixels of a [`webrtc.VideoFrame`](models/video_frame.md#webrtc.models.video_frame.VideoFrame).

`I4xx` formats are planar Y, U and V, plus alpha with `A`. Chroma is subsampled `4:2:0` in `I420` and
`4:2:2` in `I422`, and has full resolution in `I444`. Samples are 8-bit, or 10- and 12-bit stored in 16 bits
with `P10` and `P12`.

See [MDN: VideoFrame/format](https://developer.mozilla.org/en-US/docs/Web/API/VideoFrame/format).

#### I420 *= 'I420'*

8-bit Y, U, V, `4:2:0`

#### I420P10 *= 'I420P10'*

10-bit Y, U, V, `4:2:0`

#### I420P12 *= 'I420P12'*

12-bit Y, U, V, `4:2:0`

#### I420A *= 'I420A'*

8-bit Y, U, V, alpha, `4:2:0`

#### I420AP10 *= 'I420AP10'*

10-bit Y, U, V, alpha, `4:2:0`

#### I420AP12 *= 'I420AP12'*

12-bit Y, U, V, alpha, `4:2:0`

#### I422 *= 'I422'*

8-bit Y, U, V, `4:2:2`

#### I422P10 *= 'I422P10'*

10-bit Y, U, V, `4:2:2`

#### I422P12 *= 'I422P12'*

12-bit Y, U, V, `4:2:2`

#### I422A *= 'I422A'*

8-bit Y, U, V, alpha, `4:2:2`

#### I422AP10 *= 'I422AP10'*

10-bit Y, U, V, alpha, `4:2:2`

#### I422AP12 *= 'I422AP12'*

12-bit Y, U, V, alpha, `4:2:2`

#### I444 *= 'I444'*

8-bit Y, U, V, `4:4:4`

#### I444P10 *= 'I444P10'*

10-bit Y, U, V, `4:4:4`

#### I444P12 *= 'I444P12'*

12-bit Y, U, V, `4:4:4`

#### I444A *= 'I444A'*

8-bit Y, U, V, alpha, `4:4:4`

#### I444AP10 *= 'I444AP10'*

10-bit Y, U, V, alpha, `4:4:4`

#### I444AP12 *= 'I444AP12'*

12-bit Y, U, V, alpha, `4:4:4`

#### NV12 *= 'NV12'*

8-bit Y plane and a plane of interleaved U and V, `4:2:0`

#### RGBA *= 'RGBA'*

8-bit red, green, blue and alpha per pixel

#### RGBX *= 'RGBX'*

8-bit red, green, blue and an unused byte per pixel

#### BGRA *= 'BGRA'*

8-bit blue, green, red and alpha per pixel

#### BGRX *= 'BGRX'*

8-bit blue, green, red and an unused byte per pixel

### webrtc.enums.VideoPixelFormatValue

The string values of [`VideoPixelFormat`](#webrtc.enums.VideoPixelFormat), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘I420’, ‘I420P10’, ‘I420P12’, ‘I420A’, ‘I420AP10’, ‘I420AP12’, ‘I422’, ‘I422P10’, ‘I422P12’, ‘I422A’, ‘I422AP10’, ‘I422AP12’, ‘I444’, ‘I444P10’, ‘I444P12’, ‘I444A’, ‘I444AP10’, ‘I444AP12’, ‘NV12’, ‘RGBA’, ‘RGBX’, ‘BGRA’, ‘BGRX’]

### *class* webrtc.enums.VideoColorPrimaries

The color primaries of a [`webrtc.VideoColorSpace`](models/video_frame.md#webrtc.models.video_frame.VideoColorSpace).

See [MDN: VideoColorSpace/primaries](https://developer.mozilla.org/en-US/docs/Web/API/VideoColorSpace/primaries).

#### bt709 *= 'bt709'*

BT.709, used by HD video and sRGB

#### bt470bg *= 'bt470bg'*

BT.470 B/G, used by PAL video

#### smpte170m *= 'smpte170m'*

SMPTE 170M, used by NTSC video

#### bt2020 *= 'bt2020'*

BT.2020, used by UHD video

#### smpte432 *= 'smpte432'*

SMPTE EG 432-1, used by Display P3

### webrtc.enums.VideoColorPrimariesValue

The string values of [`VideoColorPrimaries`](#webrtc.enums.VideoColorPrimaries), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘bt709’, ‘bt470bg’, ‘smpte170m’, ‘bt2020’, ‘smpte432’]

### *class* webrtc.enums.VideoTransferCharacteristics

The transfer characteristics of a [`webrtc.VideoColorSpace`](models/video_frame.md#webrtc.models.video_frame.VideoColorSpace).

See [MDN: VideoColorSpace/transfer](https://developer.mozilla.org/en-US/docs/Web/API/VideoColorSpace/transfer).

#### bt709 *= 'bt709'*

BT.709

#### smpte170m *= 'smpte170m'*

SMPTE 170M

#### iec61966_2_1 *= 'iec61966-2-1'*

IEC 61966-2-1, the sRGB curve

#### linear *= 'linear'*

Linear light

#### pq *= 'pq'*

Perceptual quantizer (SMPTE ST 2084), used by HDR video

#### hlg *= 'hlg'*

Hybrid log-gamma (ARIB STD-B67), used by HDR video

### webrtc.enums.VideoTransferCharacteristicsValue

The string values of [`VideoTransferCharacteristics`](#webrtc.enums.VideoTransferCharacteristics), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘bt709’, ‘smpte170m’, ‘iec61966-2-1’, ‘linear’, ‘pq’, ‘hlg’]

### *class* webrtc.enums.VideoMatrixCoefficients

The matrix coefficients of a [`webrtc.VideoColorSpace`](models/video_frame.md#webrtc.models.video_frame.VideoColorSpace), which convert between RGB and YUV.

See [MDN: VideoColorSpace/matrix](https://developer.mozilla.org/en-US/docs/Web/API/VideoColorSpace/matrix).

#### rgb *= 'rgb'*

No conversion, because the samples are already RGB

#### bt709 *= 'bt709'*

BT.709

#### bt470bg *= 'bt470bg'*

BT.470 B/G

#### smpte170m *= 'smpte170m'*

SMPTE 170M

#### bt2020_ncl *= 'bt2020-ncl'*

BT.2020, non-constant luminance

### webrtc.enums.VideoMatrixCoefficientsValue

The string values of [`VideoMatrixCoefficients`](#webrtc.enums.VideoMatrixCoefficients), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘rgb’, ‘bt709’, ‘bt470bg’, ‘smpte170m’, ‘bt2020-ncl’]

### *class* webrtc.enums.AlphaOption

Whether a [`webrtc.VideoFrame`](models/video_frame.md#webrtc.models.video_frame.VideoFrame) created from another one keeps its alpha channel.

See [MDN: VideoFrame/VideoFrame](https://developer.mozilla.org/en-US/docs/Web/API/VideoFrame/VideoFrame).

#### keep *= 'keep'*

Keeps the alpha channel

#### discard *= 'discard'*

Drops the alpha channel and uses the matching format without alpha

### webrtc.enums.AlphaOptionValue

The string values of [`AlphaOption`](#webrtc.enums.AlphaOption), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘keep’, ‘discard’]

### *class* webrtc.enums.PredefinedColorSpace

The color space [`webrtc.VideoFrame.copy_to()`](models/video_frame.md#webrtc.models.video_frame.VideoFrame.copy_to) writes RGB pixels in. Only `srgb` is supported.

See [MDN: VideoFrame/copyTo](https://developer.mozilla.org/en-US/docs/Web/API/VideoFrame/copyTo).

#### srgb *= 'srgb'*

sRGB

#### srgb_linear *= 'srgb-linear'*

sRGB primaries with linear light

#### display_p3 *= 'display-p3'*

Display P3

#### display_p3_linear *= 'display-p3-linear'*

Display P3 primaries with linear light

### webrtc.enums.PredefinedColorSpaceValue

The string values of [`PredefinedColorSpace`](#webrtc.enums.PredefinedColorSpace), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘srgb’, ‘srgb-linear’, ‘display-p3’, ‘display-p3-linear’]

### *class* webrtc.enums.AudioSampleFormat

The type of the samples of an [`webrtc.AudioData`](models/audio_data.md#webrtc.models.audio_data.AudioData), and whether channels are interleaved or planar.

See [MDN: AudioData/format](https://developer.mozilla.org/en-US/docs/Web/API/AudioData/format).

#### u8 *= 'u8'*

Unsigned 8-bit, interleaved

#### s16 *= 's16'*

Signed 16-bit, interleaved

#### s32 *= 's32'*

Signed 32-bit, interleaved

#### f32 *= 'f32'*

32-bit float, interleaved

#### u8_planar *= 'u8-planar'*

Unsigned 8-bit, a plane per channel

#### s16_planar *= 's16-planar'*

Signed 16-bit, a plane per channel

#### s32_planar *= 's32-planar'*

Signed 32-bit, a plane per channel

#### f32_planar *= 'f32-planar'*

32-bit float, a plane per channel

### webrtc.enums.AudioSampleFormatValue

The string values of [`AudioSampleFormat`](#webrtc.enums.AudioSampleFormat), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘u8’, ‘s16’, ‘s32’, ‘f32’, ‘u8-planar’, ‘s16-planar’, ‘s32-planar’, ‘f32-planar’]

### *class* webrtc.enums.ReadableStreamReaderMode

The type of reader [`webrtc.ReadableStream.get_reader()`](streams.md#webrtc.streams.ReadableStream.get_reader) returns. Its only member is rejected.

See [MDN: ReadableStream/getReader](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/getReader).

#### byob *= 'byob'*

A reader that fills a buffer of the caller. It needs a byte stream, and this library has none

### webrtc.enums.ReadableStreamReaderModeValue

The string values of [`ReadableStreamReaderMode`](#webrtc.enums.ReadableStreamReaderMode), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘byob’]

### *class* webrtc.enums.EncodedVideoChunkType

Whether an encoded video frame is a key frame.

See [MDN: RTCEncodedVideoFrame/type](https://developer.mozilla.org/en-US/docs/Web/API/RTCEncodedVideoFrame/type).

#### key *= 'key'*

A key frame, which decodes on its own

#### delta *= 'delta'*

A delta frame, which needs the frames before it

### *class* webrtc.enums.RTCRtpScriptTransformType

What the worker of an [`webrtc.RTCRtpScriptTransform`](interfaces/rtc_rtp_script_transform.md#webrtc.interfaces.rtc_rtp_script_transform.RTCRtpScriptTransform) outputs.

The value is accepted but has no effect. Frames are packetized as usual, because the native WebRTC engine has
no SFrame packetization.

#### sframe *= 'sframe'*

The worker outputs SFrame-encrypted frames

### webrtc.enums.RTCRtpScriptTransformTypeValue

The string values of [`RTCRtpScriptTransformType`](#webrtc.enums.RTCRtpScriptTransformType), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘sframe’]

### *class* webrtc.enums.SFrameCipherSuite

An SFrame cipher suite of RFC 9605 or draft-barnes-sframe-iana-256.

The CTR suites authenticate with a truncated HMAC tag, whose bit length ends the name. The GCM suites use a
128-bit tag.

#### AES_128_CTR_HMAC_SHA256_80 *= 'AES_128_CTR_HMAC_SHA256_80'*

AES-128-CTR, HMAC-SHA-256, 80-bit tag

#### AES_128_CTR_HMAC_SHA256_64 *= 'AES_128_CTR_HMAC_SHA256_64'*

AES-128-CTR, HMAC-SHA-256, 64-bit tag

#### AES_128_CTR_HMAC_SHA256_32 *= 'AES_128_CTR_HMAC_SHA256_32'*

AES-128-CTR, HMAC-SHA-256, 32-bit tag

#### AES_128_GCM_SHA256_128 *= 'AES_128_GCM_SHA256_128'*

AES-128-GCM, SHA-256 key derivation, 128-bit tag

#### AES_256_GCM_SHA512_128 *= 'AES_256_GCM_SHA512_128'*

AES-256-GCM, SHA-512 key derivation, 128-bit tag

#### AES_256_CTR_HMAC_SHA512_80 *= 'AES_256_CTR_HMAC_SHA512_80'*

AES-256-CTR, HMAC-SHA-512, 80-bit tag

#### AES_256_CTR_HMAC_SHA512_64 *= 'AES_256_CTR_HMAC_SHA512_64'*

AES-256-CTR, HMAC-SHA-512, 64-bit tag

#### AES_256_CTR_HMAC_SHA512_32 *= 'AES_256_CTR_HMAC_SHA512_32'*

AES-256-CTR, HMAC-SHA-512, 32-bit tag

### webrtc.enums.SFrameCipherSuiteValue

The string values of [`SFrameCipherSuite`](#webrtc.enums.SFrameCipherSuite), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘AES_128_CTR_HMAC_SHA256_80’, ‘AES_128_CTR_HMAC_SHA256_64’, ‘AES_128_CTR_HMAC_SHA256_32’, ‘AES_128_GCM_SHA256_128’, ‘AES_256_GCM_SHA512_128’, ‘AES_256_CTR_HMAC_SHA512_80’, ‘AES_256_CTR_HMAC_SHA512_64’, ‘AES_256_CTR_HMAC_SHA512_32’]

### *class* webrtc.enums.SFrameType

Whether an [`webrtc.RTCRtpSFrameEncryptor`](interfaces/sframe_transform.md#webrtc.interfaces.sframe_transform.RTCRtpSFrameEncryptor) encrypts whole frames or each RTP packet.

#### per_frame *= 'per-frame'*

Encrypts each frame before packetization

#### per_packet *= 'per-packet'*

Would encrypt each RTP packet, but isn’t supported because the native WebRTC engine has no SFrame packetization

### webrtc.enums.SFrameTypeValue

The string values of [`SFrameType`](#webrtc.enums.SFrameType), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘per-frame’, ‘per-packet’]

### *class* webrtc.enums.SFrameTransformErrorEventType

Why an SFrame decryptor dropped a frame.

#### authentication *= 'authentication'*

The frame didn’t authenticate with the key of its key id

#### key_id *= 'keyID'*

No key is set for the key id of the frame

#### syntax *= 'syntax'*

The frame isn’t valid SFrame

### webrtc.enums.SFrameTransformErrorEventTypeValue

The string values of [`SFrameTransformErrorEventType`](#webrtc.enums.SFrameTransformErrorEventType), which parameters accept in place of its members

alias of [`Literal`](https://docs.python.org/3/library/typing.html#typing.Literal)[‘authentication’, ‘keyID’, ‘syntax’]
