Uniform Chat
  • Uniform.Matrix
  • API
Search Results for

    Show / Hide Table of Contents
    • LiveKit.Proto
      • ActiveSpeakerUpdate
      • AddTrackRequest
      • AudioCodec
      • AudioTrackFeature
      • BackupCodecPolicy
      • CandidateProtocol
      • ChatMessage
      • ClientConfigSetting
      • ClientConfiguration
      • ClientInfo
      • ClientInfo.Types
      • ClientInfo.Types.Capability
      • ClientInfo.Types.SDK
      • Codec
      • ConnectionQuality
      • ConnectionQualityInfo
      • ConnectionQualityUpdate
      • ConnectionSettings
      • DataBlob
      • DataBlobKey
      • DataBlobKey.KeyOneofCase
      • DataChannelInfo
      • DataChannelReceiveState
      • DataPacket
      • DataPacket.Types
      • DataPacket.Types.Kind
      • DataPacket.ValueOneofCase
      • DataStream
      • DataStream.Types
      • DataStream.Types.ByteHeader
      • DataStream.Types.Chunk
      • DataStream.Types.CompressionType
      • DataStream.Types.Header
      • DataStream.Types.Header.ContentHeaderOneofCase
      • DataStream.Types.OperationType
      • DataStream.Types.TextHeader
      • DataStream.Types.Trailer
      • DataTrackExtensionID
      • DataTrackExtensionParticipantSid
      • DataTrackFrameEncoding
      • DataTrackFrameEncoding.Types
      • DataTrackFrameEncoding.Types.WellKnownFrameEncoding
      • DataTrackFrameEncoding.ValueOneofCase
      • DataTrackInfo
      • DataTrackSchemaEncoding
      • DataTrackSchemaEncoding.Types
      • DataTrackSchemaEncoding.Types.WellKnownSchemaEncoding
      • DataTrackSchemaEncoding.ValueOneofCase
      • DataTrackSchemaId
      • DataTrackSubscriberHandles
      • DataTrackSubscriberHandles.Types
      • DataTrackSubscriberHandles.Types.PublishedDataTrack
      • DataTrackSubscriptionOptions
      • DependencyDescriptorForwarderState
      • DisabledCodecs
      • DisconnectReason
      • EncryptedPacket
      • EncryptedPacketPayload
      • EncryptedPacketPayload.ValueOneofCase
      • Encryption
      • Encryption.Types
      • Encryption.Types.Type
      • EventMetric
      • FilterParams
      • GetDataBlobRequest
      • GetDataBlobResponse
      • ICEServer
      • ImageCodec
      • JoinRequest
      • JoinResponse
      • LeaveRequest
      • LeaveRequest.Types
      • LeaveRequest.Types.Action
      • ListUpdate
      • LivekitMetricsReflection
      • LivekitModelsReflection
      • LivekitRtcReflection
      • MediaSectionsRequirement
      • MetricLabel
      • MetricSample
      • MetricsBatch
      • MetricsRecordingHeader
      • MuteTrackRequest
      • NegotiatedDataChannelID
      • OptionsExtensions
      • OptionsReflection
      • PacketTrailerFeature
      • Pagination
      • ParticipantInfo
      • ParticipantInfo.Types
      • ParticipantInfo.Types.Kind
      • ParticipantInfo.Types.KindDetail
      • ParticipantInfo.Types.State
      • ParticipantPermission
      • ParticipantTracks
      • ParticipantUpdate
      • Ping
      • PlayoutDelay
      • Pong
      • PublishDataTrackRequest
      • PublishDataTrackResponse
      • RTCPSenderReportState
      • RTPDrift
      • RTPForwarderState
      • RTPForwarderState.CodecMungerOneofCase
      • RTPMungerState
      • RTPStats
      • ReconnectReason
      • ReconnectResponse
      • RegionInfo
      • RegionSettings
      • RequestResponse
      • RequestResponse.RequestOneofCase
      • RequestResponse.Types
      • RequestResponse.Types.Reason
      • Room
      • RoomEndReason
      • RoomMovedResponse
      • RoomUpdate
      • RpcAck
      • RpcError
      • RpcRequest
      • RpcResponse
      • RpcResponse.ValueOneofCase
      • Sensitivity
      • ServerInfo
      • ServerInfo.Types
      • ServerInfo.Types.Edition
      • SessionDescription
      • SignalRequest
      • SignalRequest.MessageOneofCase
      • SignalResponse
      • SignalResponse.MessageOneofCase
      • SignalTarget
      • SimulateScenario
      • SimulateScenario.ScenarioOneofCase
      • SimulcastCodec
      • SimulcastCodecInfo
      • SipDTMF
      • SpeakerInfo
      • SpeakersChanged
      • StoreDataBlobRequest
      • StoreDataBlobResponse
      • StreamState
      • StreamStateInfo
      • StreamStateUpdate
      • SubscribedAudioCodec
      • SubscribedAudioCodecUpdate
      • SubscribedCodec
      • SubscribedQuality
      • SubscribedQualityUpdate
      • SubscriptionError
      • SubscriptionPermission
      • SubscriptionPermissionUpdate
      • SubscriptionResponse
      • SyncState
      • TimeSeriesMetric
      • TimedVersion
      • TokenPagination
      • TrackInfo
      • TrackPermission
      • TrackPublishedResponse
      • TrackSource
      • TrackSubscribed
      • TrackType
      • TrackUnpublishedResponse
      • Transcription
      • TranscriptionSegment
      • TrickleRequest
      • UnpublishDataTrackRequest
      • UnpublishDataTrackResponse
      • UpdateDataSubscription
      • UpdateDataSubscription.Types
      • UpdateDataSubscription.Types.Update
      • UpdateLocalAudioTrack
      • UpdateLocalVideoTrack
      • UpdateParticipantMetadata
      • UpdateSubscription
      • UpdateTrackSettings
      • UpdateVideoLayers
      • UserPacket
      • VP8MungerState
      • VideoCodec
      • VideoConfiguration
      • VideoLayer
      • VideoLayer.Types
      • VideoLayer.Types.Mode
      • VideoQuality
      • WebhookConfig
      • WrappedJoinRequest
      • WrappedJoinRequest.Types
      • WrappedJoinRequest.Types.Compression
    • Uniform.Chat.Avalonia
      • App
      • ClipboardFile
      • GuiPlatform
    • Uniform.Chat.Avalonia.Services
      • AccountCreator
      • AccountMemory
      • AvaloniaUiDispatcher
      • ClientConnection
      • IAccountCreator
      • INotifier
      • IPushService
      • IUiDispatcher
      • PasswordRequiredException
      • PushDistributor
      • PushRegistration
      • ShareInbox
      • SharedContent
      • SharedFile
      • SignIn
    • Uniform.Chat.Avalonia.ViewModels
      • ActionSheetViewModel
      • AdminAccountItem
      • AdminReportItem
      • AdminSection
      • AdminTokenItem
      • AdminViewModel
      • AppTheme
      • AudioTestViewModel
      • CallViewModel
      • ChatViewModel
      • ConnectingViewModel
      • DeviceItem
      • DirectoryViewModel
      • LicenseEntry
      • LicensesViewModel
      • LogFileItem
      • LoginViewModel
      • LogsViewModel
      • MainViewModel
      • MemberItem
      • MessageKind
      • MessageList
      • MessageViewModel
      • PublicRoomItem
      • RoomItemViewModel
      • SecurityViewModel
      • SettingsViewModel
      • SheetAction
      • SheetDetail
      • StatusLine
      • VerificationViewModel
      • VideoFeed
      • ViewModelBase
    • Uniform.Chat.Avalonia.Views
      • ActionSheetView
      • AdminView
      • ChatView
      • ConnectingView
      • DirectoryView
      • LicensesView
      • LinkClickedEventArgs
      • LoginView
      • MainView
      • MainWindow
      • RichText
      • SecurityView
      • SenderColorConverter
      • SettingsView
      • TextScale
      • VerificationView
      • VideoView
    • Uniform.Chat.Desktop
      • Program
    • Uniform.Chat.Desktop.Cameras
      • EncodingCamera
      • MediaFoundationCamera
      • V4l2Camera
    • Uniform.Chat.Desktop.Notifications
      • FreeDesktopNotifier
    • Uniform.Chat.Server
      • ServerHostOptions
      • UiMode
    • Uniform.Chat.Server.Management
      • HttpServerAdmin
      • IServerAdmin
      • LocalServerAdmin
      • ServerSnapshot
    • Uniform.Chat.Server.Ui
      • AdminWindow<T>
      • DashboardOptions
      • ReportsWindow
      • RoomsWindow
      • ServerWindow
      • UsersWindow
    • Uniform.Chat.Terminal.Configuration
      • AudioOptions
      • UiOptions
    • Uniform.Chat.Terminal.Ui
      • ClientDialogs
      • DroppedFiles
      • EntryKind
      • MainWindow
      • MessageFormatter
      • TimelineEntry
      • TimelinePane
      • TuiCredentialPrompt
    • Uniform.Chat.Terminal.Ui.Images
      • AsciiArt
      • DecodedImage
      • ImagePreviewStyle
    • Uniform.LiveKit
      • FrameCryptor
      • FrameKind
      • LiveKitMedia
      • LiveKitRoom
      • LiveKitRoomOptions
      • LiveKitRoomService
      • LiveKitSignalClient
      • MatrixRtcAuthorizationClient
    • Uniform.LiveKit.Authorization
      • AuthorizationException
      • DelayedLeaveKeeper
      • FederationOpenIdVerifier
      • HomeserverDelayedEvents
      • IDelayedEvents
      • IOpenIdVerifier
      • IRoomMembership
      • LiveKitAuthorizer
      • LiveKitAuthorizerOptions
    • Uniform.LiveKit.Hosting
      • LiveKitHostingExtensions
      • LiveKitOptions
    • Uniform.LiveKit.Protocol
      • AccessToken
      • AuthorizationError
      • CallMember
      • DelayedLeave
      • LegacySfuRequest
      • MatrixRtcNames
      • OpenIdToken
      • SfuResponse
      • TokenRequest
      • VideoGrant
    • Uniform.Matrix.Audio
      • AlsaAudioDevices
      • AudioDevice
      • AudioDevices
      • IAudioDevices
      • MicrophoneFrames
      • RingTone
      • SpeakerFrames
      • VoiceDecoder
      • VoiceEncoder
      • VoiceFormat
      • VoiceLoopback
      • WasapiAudioDevices
    • Uniform.Matrix.Calls
      • CallEventSender
      • CallService
      • CallState
      • IVideoCamera
      • LegacyCall
      • RtcCall
      • VideoReceiver
      • VoiceCall
      • VoiceMedia
    • Uniform.Matrix.Client
      • ClientServiceExtensions
      • EncryptedMedia
      • MatrixKeyTransport
      • MimeTypes
    • Uniform.Matrix.Client.Configuration
      • AccountPaths
      • MatrixOptions
      • StorageOptions
    • Uniform.Matrix.Client.Formatting
      • EventText
      • HtmlText
      • MarkdownComposer
    • Uniform.Matrix.Client.Migrations
      • AddEventLines
      • InitialCreate
    • Uniform.Matrix.Client.Services
      • AccountRegistration
      • ClientSession
      • ConnectionState
      • ConnectionStatus
      • CryptoService
      • EncryptionUnavailableException
      • ICredentialPrompt
      • MatrixWorker
      • MediaCache
      • NetworkMonitor
      • OutboxSender
      • SyncProcessor
    • Uniform.Matrix.Client.State
      • Room
      • RoomMemberInfo
      • RoomStore
      • SyncChanges
      • TimelineBatch
    • Uniform.Matrix.Client.Storage
      • ClientDbContext
      • ClientStore
      • CryptoAccountRow
      • CryptoDeviceListRow
      • CryptoInboundGroupSessionRow
      • CryptoOlmSessionRow
      • CryptoOutboundGroupSessionRow
      • CryptoValueRow
      • DesignTimeClientDbContextFactory
      • EfCryptoStore
      • OutboxMessage
      • OutboxState
      • RoomLines
      • StoredAccount
      • StoredEvent
      • StoredMedia
    • Uniform.Matrix.Gui.Terminal
      • Dialogs
      • LogWindow
      • SettingsWindow
      • TextWrapper
    • Uniform.Matrix.Hosting
      • AppDirectories
      • AppVersion
      • AppliedConfigurationProvider
      • AppliedConfigurationSource
      • FileLoggerProvider
      • HostingExtensions
      • ISettingsStore
      • LogEntry
      • LogFileInfo
      • LogFiles
      • OptionCatalog
      • OptionChange
      • OptionInfo
      • OptionSection
      • RestartRequiredAttribute
      • SecretAttribute
      • SettingsEditor
      • SettingsStore
    • Uniform.Matrix.Protocol.Client
      • HomeserverDiscovery
      • MatrixClient
      • MatrixSession
      • MediaDownload
      • RegistrationRequirements
      • UserInteractiveAuthException
    • Uniform.Matrix.Protocol.Core
      • AdminAccount
      • AdminAccountsResponse
      • AdminRegistrationToken
      • AdminRegistrationTokensResponse
      • AdminReport
      • AdminReportsResponse
      • AdminRoomInfo
      • AdminRoomShutdown
      • AdminRoomsResponse
      • AuthFlow
      • AuthTypes
      • Base64
      • CallAnswerContent
      • CallCandidate
      • CallCandidatesContent
      • CallContent
      • CallEncryptionKeysContent
      • CallHangupContent
      • CallInviteContent
      • CallKeyMember
      • CallMediaKey
      • CallMemberContent
      • CallNegotiateContent
      • CallRejectContent
      • CallSelectAnswerContent
      • CallSessionDescription
      • CanonicalAliasContent
      • CanonicalJson
      • ClientEvent
      • ContextResponse
      • CreateContent
      • CreateMediaResponse
      • CreateRoomRequest
      • CrossSigningKey
      • CrossSigningUsages
      • DelayedEventResponse
      • Device
      • DeviceKeys
      • DeviceLists
      • DevicesResponse
      • DirectContent
      • Direction
      • EncryptedContent
      • EncryptedFile
      • EncryptionAlgorithms
      • EncryptionContent
      • ErrorCodes
      • ErrorResponse
      • EventFilter
      • EventIdResponse
      • EventList<T>
      • EventTypes
      • ExceptionText
      • Filter
      • FilterIdResponse
      • FullyReadContent
      • IgnoredUserListContent
      • InReplyTo
      • InitialStateEvent
      • InvitedRoom
      • JoinedMembersResponse
      • JoinedRoom
      • JoinedRoomsResponse
      • JsonWebKey
      • KeyBackupAlgorithms
      • KeyBackupData
      • KeyBackupVersion
      • KeysBackup
      • KeysClaimResponse
      • KeysQueryResponse
      • KeysUploadResponse
      • KnockedRoom
      • LeftRoom
      • LoginFlow
      • LoginFlowsResponse
      • LoginResponse
      • MatrixEvent
      • MatrixException
      • MatrixJson
      • MatrixLink
      • MediaInfo
      • MemberContent
      • MembersResponse
      • Memberships
      • Mentions
      • MessageContent
      • MessageFormats
      • MessageTypes
      • MessagesResponse
      • MxcUri
      • NameContent
      • OpenIdTokenResponse
      • PasswordLoginRequest
      • PowerLevelsContent
      • PresenceContent
      • PresenceEvent
      • PresenceStates
      • ProfileResponse
      • PublicRoom
      • PublicRoomsResponse
      • ReactionContent
      • ReceiptContent
      • ReceiptInfo
      • ReceiptTypes
      • RedactionContent
      • RegisterRequest
      • RegisterResponse
      • Relation
      • RelationTypes
      • RoomAliasResponse
      • RoomAliasesResponse
      • RoomAvatarContent
      • RoomEventFilter
      • RoomFilter
      • RoomIdResponse
      • RoomKeyBackup
      • RoomKeyContent
      • RoomMember
      • RoomPresets
      • RoomSummary
      • RoomTags
      • RtcDeclineContent
      • RtcFocusActive
      • RtcNotificationContent
      • RtcTransport
      • RtcTransportsResponse
      • StringOrNumberConverter
      • StrippedStateEvent
      • SyncResponse
      • SyncRooms
      • TagContent
      • TagInfo
      • TermsPolicy
      • Timeline
      • ToDeviceEvent
      • TopicContent
      • TurnServerResponse
      • TypingContent
      • UnreadNotificationCounts
      • UnsignedData
      • UploadResponse
      • UserDirectoryEntry
      • UserDirectoryResponse
      • UserId
      • UserIdentifier
      • UserInteractiveAuthResponse
      • VerificationRequestContent
      • VersionsResponse
      • WellKnownClient
      • WellKnownServer
      • WhoAmIResponse
      • WhoisConnection
      • WhoisDevice
      • WhoisResponse
      • WhoisSession
    • Uniform.Matrix.Protocol.Crypto
      • AccountRecord
      • AesCtr
      • AttachmentCrypto
      • AttachmentKeys
      • DecryptedToDeviceEvent
      • DecryptionStatus
      • DeviceInfo
      • DeviceListRecord
      • DeviceTrust
      • Ed25519
      • EncryptedAttachments
      • EncryptedSecret
      • EstablishedSas
      • ICryptoStore
      • IKeyTransport
      • IdentityKeys
      • InMemoryCryptoStore
      • InboundGroupSessionRecord
      • MegolmInboundSession
      • MegolmOutboundSession
      • MegolmPlaintext
      • OlmAccount
      • OlmException
      • OlmMachine
      • OlmMessage
      • OlmSession
      • OlmSessionRecord
      • OutboundGroupSessionRecord
      • PassphraseInfo
      • PkEncryption
      • PkMessage
      • RecoveryResult
      • RoomEventDecryption
      • Sas
      • SasEmoji
      • SecretNames
      • SecretStorage
      • SecretStorageCrypto
      • SecretStorageKeyDescription
      • SecurityStatus
      • UserIdentity
      • Verification
      • VerificationState
    • Uniform.Matrix.Protocol.Server
      • AuthEventTypes
      • AuthEvents
      • AuthRules
      • DnsSrv
      • EventFormat
      • FederationAuth
      • PowerLevels
      • PushContext
      • PushDecision
      • PushRules
      • RedactionRules
      • RoomVersion
      • ServerAcl
      • ServerNames
      • SrvRecord
      • StateResolution
      • XMatrixAuthorization
    • Uniform.Matrix.Server
      • ServerServiceExtensions
      • ServerStatus
    • Uniform.Matrix.Server.Accounts
      • AccountDataService
      • AccountDeactivation
      • AccountService
      • AdminDevice
      • AdminRoom
      • AdminService
      • AdminUser
      • AdminUserChange
      • AuthenticationRequiredException
      • LocalUserIds
      • OpenIdTokens
      • Optional<T>
      • PresenceService
      • ProfileService
      • PushNotifier
      • PushRuleService
      • PusherService
      • RegistrationToken
      • RegistrationTokens
      • Requester
      • RoomShutdown
      • ServerNotices
      • UserInteractiveAuth
    • Uniform.Matrix.Server.Configuration
      • CallOptions
      • FederationOptions
      • MediaOptions
      • PushOptions
      • RateLimitOptions
      • RegistrationMode
      • ServerOptions
      • ServerStorageOptions
      • TlsOptions
      • UrlPreviewOptions
    • Uniform.Matrix.Server.Encryption
      • DeviceKeyService
      • KeyBackupService
      • ToDeviceService
    • Uniform.Matrix.Server.Endpoints
      • AccountDataEndpoints
      • AccountEndpoints
      • ActivityEndpoints
      • AdminEndpoints
      • CallEndpoints
      • DeviceEndpoints
      • DirectoryEndpoints
      • DiscoveryEndpoints
      • FederationEndpoints
      • KeyBackupEndpoints
      • KeyEndpoints
      • ManagementEndpoints
      • MediaEndpoints
      • ProfileEndpoints
      • PushRuleEndpoints
      • PusherEndpoints
      • RoomEndpoints
      • SyncEndpoints
    • Uniform.Matrix.Server.Federation
      • FederationClient
      • FederationEndpoint
      • FederationQueue
      • FederationSender
      • RemoteActivity
      • RemoteDevices
      • RemoteEvents
      • RemoteInvites
      • RemoteJoins
      • RemoteServerKeys
      • RoomAcls
      • RoomHistory
      • ServerAddress
      • ServerAuthentication
      • ServerResolver
      • SrvLookup
    • Uniform.Matrix.Server.Http
      • AccessTokens
      • AdminSocket
      • LegacyPaths
      • MatrixErrorException
      • MatrixHttp
      • PublicAddresses
      • RateLimits
      • TlsCertificate
      • TlsCertificateException
    • Uniform.Matrix.Server.Keys
      • ServerKeys
    • Uniform.Matrix.Server.Media
      • MediaService
      • MediaService.StoredFile
      • Thumbnailer
      • UrlPreviewService
    • Uniform.Matrix.Server.Rooms
      • DelayedEvents
      • DirectoryService
      • EventDraft
      • EventSender
      • ReceiptService
      • Report
      • ReportService
      • RoomService
      • StateCache
      • TypingService
    • Uniform.Matrix.Server.Storage
      • AccessTokenRow
      • AccountDataRow
      • CounterRow
      • CrossSigningKeyRow
      • CurrentStateRow
      • DataDirectoryInUseException
      • DataDirectoryLock
      • DatabaseMigrator
      • DelayedEventRow
      • DesignTimeServerDbContextFactory
      • DeviceKeysRow
      • DeviceListChangeRow
      • DeviceRow
      • EventEdgeRow
      • EventRelationRow
      • EventRow
      • FallbackKeyRow
      • FederationOutboxRow
      • FederationProgressRow
      • FilterRow
      • ForgottenRoomRow
      • ForwardExtremityRow
      • KeyBackupVersionRow
      • KeySignatureRow
      • MediaRow
      • OneTimeKeyRow
      • ProfileRow
      • PusherRow
      • ReceiptRow
      • RegistrationTokenRow
      • RemoteInviteRow
      • RemoteMediaRow
      • ReportRow
      • RoomAliasRow
      • RoomKeyRow
      • RoomRow
      • ServerDbContext
      • ServerKeyResponseRow
      • StateGroupEntryRow
      • StateGroupRow
      • ThumbnailRow
      • ToDeviceRow
      • TransactionRow
      • UserRow
    • Uniform.Matrix.Server.Storage.Migrations
      • AddAdminControls
      • AddDelayedEvents
      • AddEventStatusRelationsAndReports
      • AddFederationOutbox
      • AddFederationProgress
      • AddPushers
      • AddRemoteInvites
      • AddRemoteMedia
      • AddServerKeyResponses
      • InitialCreate
      • ScopeTransactionsToRooms
    • Uniform.Matrix.Server.Sync
      • ServerStream
      • SlidingSyncService
      • SyncFilter
      • SyncService
    • Uniform.Matrix.Video
      • IVideoDecoder
      • VideoFrame
    • Uniform.Matrix.Video.Vp8
      • Vp8Decoder
      • Vp8Encoder
    • Uniform.Matrix.WebRtc
      • AudioPeerConnection
      • IMediaConnection
      • PeerConnectionOptions
      • PeerConnectionState
    • Uniform.Matrix.WebRtc.Dtls
      • DtlsCertificate
      • DtlsSrtp
    • Uniform.Matrix.WebRtc.Ice
      • IceAgent
      • IceCandidate
      • IceCandidateType
      • IceOptions
      • IceServer
      • IceState
    • Uniform.Matrix.WebRtc.Rtp
      • BandwidthEstimator
      • JitterBuffer
      • ReceiverStatistics
      • ReportBlock
      • Rtcp
      • RtpPacket
      • Vp8Depacketizer
      • Vp8EncodedFrame
      • Vp8Packetizer
    • Uniform.Matrix.WebRtc.Sdp
      • AudioSdp
      • LocalAudio
      • MediaDescription
      • RemoteAudio
      • RemoteTransport
      • RemoteVideo
      • SessionDescription
    • Uniform.Matrix.WebRtc.Srtp
      • SrtpSession
    • Uniform.Stun
      • DatagramSender
      • StunClient
      • StunDiscovery
      • TurnClient
    • Uniform.Stun.Hosting
      • PemCertificate
      • TurnHostingExtensions
      • TurnOptions
      • TurnServerHost
    • Uniform.Stun.Protocol
      • ChannelData
      • StunAddress
      • StunAttribute
      • StunAttributeTypes
      • StunClass
      • StunErrorCodes
      • StunMessage
      • StunMethod
      • TurnCredentials
    • Uniform.Turn
      • CombinedAuthenticator
      • ITurnAuthenticator
      • IpRange
      • SharedSecretAuthenticator
      • StaticUserAuthenticator
      • TurnServer
      • TurnServerOptions
      • TurnServerStatus
      • TurnTransport

    Class AudioPeerConnection

    A WebRTC peer connection with one Opus audio stream each way, as 1:1 voice calls use: SDP offer and answer, ICE with trickled candidates, DTLS-SRTP, and RTP; and, when the peer offers it and ReceiveVideo is set, VP8 video received.

    Inheritance
    object
    AudioPeerConnection
    Implements
    IMediaConnection
    IAsyncDisposable
    Inherited Members
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: Uniform.Matrix.WebRtc
    Assembly: Uniform.Matrix.WebRtc.dll
    Syntax
    public sealed class AudioPeerConnection : IMediaConnection, IAsyncDisposable
    Remarks

    Received video comes as whole frames in VideoReceived; the connection sends RTCP receiver reports every second, each with a REMB of the loss-based estimate, NACKs for gaps, and picture loss indications while a keyframe is needed. The caller calls CreateOffer(bool) and later AcceptAnswer(string); the callee calls AcceptOffer(string). Both trickle the candidates of CandidateGathered to the peer, give the peer's to AddRemoteCandidate(string), and call ConnectAsync(CancellationToken). The offerer controls ICE, and the answerer is the DTLS client, as browsers do. Datagrams are told apart by their first byte as RFC 7983 says.

    Constructors

    | Edit this page View Source

    AudioPeerConnection(PeerConnectionOptions?)

    Create a connection; nothing happens until an offer is made or accepted.

    Declaration
    public AudioPeerConnection(PeerConnectionOptions? options = null)
    Parameters
    Type Name Description
    PeerConnectionOptions options

    Fields

    | Edit this page View Source

    FrameSamples

    Samples per 20 ms frame at Opus's 48 kHz RTP clock.

    Declaration
    public const int FrameSamples = 960
    Field Value
    Type Description
    int

    Properties

    | Edit this page View Source

    BundleIndex

    The index of the section of BundleMid, for the sdpMLineIndex of trickled candidates.

    Declaration
    public int BundleIndex { get; }
    Property Value
    Type Description
    int
    | Edit this page View Source

    BundleMid

    The media ID of the first section this side accepted, which carries the bundled transport, e.g. for the sdpMid of trickled candidates; null before any.

    Declaration
    public string? BundleMid { get; }
    Property Value
    Type Description
    string
    | Edit this page View Source

    Ice

    The ICE agent, once an offer is made or accepted; e.g. to see the selected candidates.

    Declaration
    public IceAgent? Ice { get; }
    Property Value
    Type Description
    IceAgent
    | Edit this page View Source

    IsRestarting

    Whether an ICE restart is under way, between its offer and its connecting.

    Declaration
    public bool IsRestarting { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    ReceivesVideo

    Whether the answer accepted the peer's video, so frames may come in VideoReceived.

    Declaration
    public bool ReceivesVideo { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    SendsOrientation

    Whether sent frames carry their rotation, as both sides took the video orientation extension; an SFU such as LiveKit does not.

    Declaration
    public bool SendsOrientation { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    SendsVideo

    Whether the answer sends video to the peer, with SendVideoAsync(byte[], CancellationToken, int).

    Declaration
    public bool SendsVideo { get; }
    Property Value
    Type Description
    bool
    | Edit this page View Source

    State

    The state.

    Declaration
    public PeerConnectionState State { get; }
    Property Value
    Type Description
    PeerConnectionState
    | Edit this page View Source

    VideoPacketsNacked

    Video packets of the peer asked again, with NACKs, after a gap.

    Declaration
    public long VideoPacketsNacked { get; }
    Property Value
    Type Description
    long
    | Edit this page View Source

    VideoPacketsResent

    Video packets sent again because the peer asked, with a NACK.

    Declaration
    public long VideoPacketsResent { get; }
    Property Value
    Type Description
    long

    Methods

    | Edit this page View Source

    AcceptAnswer(string)

    Accept the peer's answer to this side's offer.

    Declaration
    public void AcceptAnswer(string answer)
    Parameters
    Type Name Description
    string answer
    Exceptions
    Type Condition
    InvalidOperationException

    When no offer was made, or the answer has no Opus audio.

    | Edit this page View Source

    AcceptOffer(string)

    Accept the peer's offer, and start gathering; return the answer, in which this side is the DTLS client. An offer without audio, as an SFU makes before anyone publishes, connects the transport for media that a later offer adds.

    Declaration
    public string AcceptOffer(string offer)
    Parameters
    Type Name Description
    string offer
    Returns
    Type Description
    string
    Exceptions
    Type Condition
    InvalidOperationException

    When the offer has no transport over DTLS-SRTP.

    | Edit this page View Source

    AcceptRestartAnswer(string)

    Take the peer's answer to this side's restart offer.

    Declaration
    public void AcceptRestartAnswer(string answer)
    Parameters
    Type Name Description
    string answer
    Exceptions
    Type Condition
    InvalidOperationException

    When the answer has no Opus audio.

    | Edit this page View Source

    AcceptRestartOffer(string)

    Answer the peer's new offer: an ICE restart when its credentials changed, with a new agent this side is controlled in, else the same connection, with the media the offer adds, as an SFU offers each track published; this side keeps its DTLS role either way.

    Declaration
    public string AcceptRestartOffer(string offer)
    Parameters
    Type Name Description
    string offer
    Returns
    Type Description
    string
    Exceptions
    Type Condition
    InvalidOperationException

    Before the first offer and answer, or when the offer has no transport.

    | Edit this page View Source

    AddRemoteCandidate(string)

    Add a candidate the peer trickled, as its candidate: attribute, to the restarting agent while ICE restarts; unusable ones are ignored.

    Declaration
    public void AddRemoteCandidate(string candidate)
    Parameters
    Type Name Description
    string candidate
    | Edit this page View Source

    CancelRestart()

    Abandon an ICE restart under way.

    Declaration
    public void CancelRestart()
    | Edit this page View Source

    ConnectAsync(CancellationToken)

    Connect ICE, then DTLS; return whether media can flow.

    Declaration
    public Task<bool> ConnectAsync(CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    CancellationToken cancellationToken
    Returns
    Type Description
    Task<bool>
    | Edit this page View Source

    CreateOffer(bool)

    Return an offer of audio, and with video of video both ways, and start gathering; this side controls ICE. The answer decides which ways the video goes.

    Declaration
    public string CreateOffer(bool video = false)
    Parameters
    Type Name Description
    bool video
    Returns
    Type Description
    string
    | Edit this page View Source

    CreateRestartOffer()

    Start an ICE restart, e.g. after the network changed: a new agent with new credentials gathers on the networks there are now, while DTLS and SRTP go on; return the offer for the peer. This side controls the new agent.

    Declaration
    public string CreateRestartOffer()
    Returns
    Type Description
    string
    Exceptions
    Type Condition
    InvalidOperationException

    Before the first offer and answer.

    | Edit this page View Source

    DisposeAsync()

    Close DTLS and ICE.

    Declaration
    public ValueTask DisposeAsync()
    Returns
    Type Description
    ValueTask
    | Edit this page View Source

    ReconnectAsync(CancellationToken)

    Connect the restarting agent, and move the media to it; return whether it connected. The old agent goes on until then.

    Declaration
    public Task<bool> ReconnectAsync(CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    CancellationToken cancellationToken
    Returns
    Type Description
    Task<bool>
    | Edit this page View Source

    RequestBitrateAsync(long)

    Cap the bitrate asked of the peer's video at bitsPerSecond, e.g. as this device cannot decode more, and ask at once with a REMB; every report then asks for the loss-based estimate within the cap. Nothing without received video.

    Declaration
    public Task RequestBitrateAsync(long bitsPerSecond)
    Parameters
    Type Name Description
    long bitsPerSecond
    Returns
    Type Description
    Task
    | Edit this page View Source

    RequestKeyframeAsync()

    Ask the peer for a keyframe of its video with an RTCP picture loss indication, e.g. after a frame failed to decode; nothing without received video.

    Declaration
    public Task RequestKeyframeAsync()
    Returns
    Type Description
    Task
    | Edit this page View Source

    SendAudioAsync(byte[], int, CancellationToken)

    Send a frame of Opus, samples long at 48 kHz; dropped until connected.

    Declaration
    public ValueTask SendAudioAsync(byte[] opus, int samples = 960, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    byte[] opus

    The encoded frame.

    int samples

    Samples it covers, which advance the RTP timestamp.

    CancellationToken cancellationToken

    Cancels the send.

    Returns
    Type Description
    ValueTask
    | Edit this page View Source

    SendVideoAsync(byte[], CancellationToken, int)

    Send a VP8 frame of this side's video, captured now, in RTP packets of at most 1100 bytes, so they fit a path's MTU with SRTP and TURN; dropped until connected or when the peer receives no video.

    Declaration
    public ValueTask SendVideoAsync(byte[] frame, CancellationToken cancellationToken = default, int rotation = 0)
    Parameters
    Type Name Description
    byte[] frame

    The encoded frame, as the encoder wrote it.

    CancellationToken cancellationToken

    Cancels the send.

    int rotation

    Clockwise rotation in degrees that shows the picture upright, 0, 90, 180 or 270, sent as its video orientation when the peer takes it.

    Returns
    Type Description
    ValueTask
    | Edit this page View Source

    SkipAudio(int)

    Skip samples without sending, e.g. while muted, so the timestamps stay in time; the next packet is marked.

    Declaration
    public void SkipAudio(int samples = 960)
    Parameters
    Type Name Description
    int samples

    Events

    | Edit this page View Source

    AudioReceived

    Raised for each audio packet received, decrypted, on the socket's read loop; its payload is Opus.

    Declaration
    public event Action<RtpPacket>? AudioReceived
    Event Type
    Type Description
    Action<RtpPacket>
    | Edit this page View Source

    BitrateRequested

    Raised when the peer asks to limit the video sent to a bitrate, in bits per second, with a REMB, e.g. as it cannot decode more; on the socket's read loop.

    Declaration
    public event Action<long>? BitrateRequested
    Event Type
    Type Description
    Action<long>
    | Edit this page View Source

    CandidateGathered

    Raised for each local candidate, to trickle to the peer.

    Declaration
    public event Action<IceCandidate>? CandidateGathered
    Event Type
    Type Description
    Action<IceCandidate>
    | Edit this page View Source

    GatheringCompleted

    Raised when all candidates are gathered, e.g. to tell the peer that no more come.

    Declaration
    public event Action? GatheringCompleted
    Event Type
    Type Description
    Action
    | Edit this page View Source

    KeyframeRequested

    Raised when the peer asks for a keyframe of the video sent, e.g. after it lost packets or joined; the encoder should make the next frame one. On the socket's read loop.

    Declaration
    public event Action? KeyframeRequested
    Event Type
    Type Description
    Action
    | Edit this page View Source

    StateChanged

    Raised when State changes.

    Declaration
    public event Action<PeerConnectionState>? StateChanged
    Event Type
    Type Description
    Action<PeerConnectionState>
    | Edit this page View Source

    VideoReceived

    Raised for each whole VP8 frame received, in order, on the socket's read loop; after lost packets, from the next keyframe.

    Declaration
    public event Action<Vp8EncodedFrame>? VideoReceived
    Event Type
    Type Description
    Action<Vp8EncodedFrame>

    Implements

    IMediaConnection
    IAsyncDisposable
    • Edit this page
    • View Source
    In this article
    Back to top Uniform Chat