Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  peer_connection.md   Sprache: unbekannt

 
<!-- go/cmark -->
<!--* freshness: {owner: 'hta' reviewed: '2021-05-07'} *-->

# PeerConnection and friends

The PeerConnection is the C++-level implementation of the Javascript
object "RTCPeerConnection" from the
[WEBRTC specification](https://w3c.github.io/webrtc-pc/).

Like many objects in WebRTC, the PeerConnection is used via a factory and an
observer:

 * PeerConnectionFactory, which is created via a static Create method and takes
   a PeerConnectionFactoryDependencies structure listing such things as
   non-default threads and factories for use by all PeerConnections using
   the same factory. (Using more than one factory should be avoided, since
   it takes more resources.)
 * PeerConnection itself, which is created by the method called
   PeerConnectionFactory::CreatePeerConnectionOrError, and takes a
   PeerConnectionInterface::RTCConfiguration argument, as well as
   a PeerConnectionDependencies (even more factories, plus other stuff).
 * PeerConnectionObserver (a member of PeerConnectionDependencies), which
   contains the functions that will be called on events in the PeerConnection

These types are visible in the API.

## Internal structure of PeerConnection and friends

The PeerConnection is, to a large extent, a "God object" - most things
that are done in WebRTC require a PeerConnection.

Internally, it is divided into several objects, each with its own
responsibilities, all of which are owned by the PeerConnection and live
as long as the PeerConnection:

 * SdpOfferAnswerHandler takes care of negotiating configurations with
   a remote peer, using SDP-formatted descriptions.
 * RtpTransmissionManager takes care of the lists of RtpSenders,
   RtpReceivers and RtpTransceivers that form the heart of the transmission
   service.
 * DataChannelController takes care of managing the PeerConnection's
   DataChannels and its SctpTransport.
 * JsepTransportController takes care of configuring the details of senders
   and receivers.
 * Call does management of overall call state.
 * RtcStatsCollector (and its obsolete sibling, StatsCollector) collects
   statistics from all the objects comprising the PeerConnection when
   requested.

There are a number of other smaller objects that are also owned by
the PeerConnection, but it would take too much space to describe them
all here; please consult the .h files.

PeerConnectionFactory owns an object called ConnectionContext, and a
reference to this is passed to each PeerConnection. It is referenced
via an rtc::scoped_refptr, which means that it is guaranteed to be
alive as long as either the factory or one of the PeerConnections
is using it.


[ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge