Unified Plan SDP-Format – Umstellungsplan

Google plant, die WebRTC-Implementierung von Chrome in den nächsten Quartalen vom aktuellen SDP-Format (Plan B) auf ein standardskonformes Format (Unified Plan, draft-ietf-rtcweb-jsep) umzustellen.

Der Plan umfasst fünf Phasen und eine vorübergehende API-Funktion.

Wer ist betroffen?

Nutzer, die mehrere Audio- oder Videotracks in einer einzelnen PeerConnection verwenden, müssen ihr Produkt im Rahmen des Unified Plan testen und entsprechend anpassen. Wenn ein Aufruf von einem anderen Endpunkt als Chrome gestartet und von Chrome beantwortet wird, muss sich das Angebot möglicherweise ändern. Nutzer, die detailliertes SDP-Parsen durchführen und sich für msid-Attribute interessieren, müssen prüfen, ob ihr Parse-Code das neue Format (a=msid) erkennt. Ob und wie die Apps geändert werden müssen, hängt von der jeweiligen Anwendung ab. Wir gehen davon aus, dass die Änderung für fast alle Anwendungen, die nur einen Audio- und einen Videotrack pro RTCPeerConnection verwenden, keine Auswirkungen hat.

API-Funktion

Wir fügen der RTCConfiguration der RTCPeerConnection eine neue Funktion hinzu:

enum SdpSemantics {
  "plan-b",
  "unified-plan"
};


partial dictionary RTCConfiguration {
   SdpSemantics sdpSemantics;
}

Die RTCConfiguration kann an den Konstruktor einer RTCPeerConnection übergeben werden. Alle erstellten Angebote und Antworten werden im Unified Plan-Format erstellt. Bei Aufrufen von „setLocalDescription“ und „setRemoteDescription“ wird ebenfalls erwartet, dass das SDP im Unified Plan-Format vorliegt. Wenn es sich im alten Chrome-Format befindet, werden alle Audio- und Videotracks außer dem ersten ignoriert.

Es gibt auch ein Befehlszeilen-Flag (–enable-features=RTCUnifiedPlanByDefault in Chrome M71 und höher, –enable-blink-features=RTCUnifiedPlanByDefault in früheren Versionen), mit dem der Standardwert dieses Flags auf „unified-plan“ festgelegt werden kann.

Die Phasen

Phase 1: Unified Plan implementieren

In dieser Phase wurde der einheitliche Plan mit einem Testflag entwickelt, das seit M65 verfügbar ist. Bis Phase 2 war es am besten, mit Chrome Canary zu testen und dabei „–enable-blink-features=RTCUnifiedPlan“ zu verwenden.

Phase 2: API-Funktion allgemein verfügbar machen

Veröffentlicht in M69 (Betaversion August 2018, stabile Version September 2018)

In dieser Phase war der Standardwert der sdpSemantics-Flag „plan-b“. In Phase 2 mussten Nutzer mit Implementierungen, die vom SDP-Format abhängen, Tests durchführen, um festzustellen, ob ihre Anwendungen bei Verwendung von Unified Plan funktionieren. Bei Anwendungen, die Firefox unterstützen, sollte das ganz einfach sein: Gehen Sie einfach so vor, wie Sie es für Firefox tun würden.

Der Standardwert des Flags „sdpSemantics“ kann unter „chrome://flags“ geändert werden. Suchen Sie nach der Funktion „WebRTC: Unified Plan SDP Semantics by default“ (WebRTC: Unified Plan SDP Semantics standardmäßig verwenden).

Phase 3: Standard festlegen

Die Umstellung erfolgte in M72 (Betaversion Dezember 2018, stabile Version Januar 2019).

In dieser Phase haben wir den Standardwert des sdpSemantics-Flags in „unified-plan“ geändert. Bei Anwendungen, für die mehr Zeit zur Umstellung erforderlich war, wurde das sdpSemantics-Flag explizit auf „plan-b“ gesetzt, um das vorherige Verhalten wiederherzustellen.

Phase 4: „Plan B“ ausführen

In dieser Phase führt das Festlegen des sdpSemantics-Flags auf „plan-b“ zu einer Ausnahme. Es wird Canary von M93 aus ausgegeben. Ab M96 wurde die Ausnahme für alle Kanäle ausgelöst, einschließlich des stabilen Kanals.

Während dieser Phase war ein Test zur Einstellung verfügbar, mit dem Plan B ohne Auslösen der Ausnahme verwendet werden konnte. Der Test funktionierte jedoch ab dem 25. Mai 2022 nicht mehr.

Phase 5: „Plan B“ aus Chromium entfernen

Nach Ablauf des Testzeitraums wird Plan B aus Chrome entfernt. An dieser Stelle wird das Flag „sdpSemantics“ entfernt. Wenn Sie versuchen, den Wert auf „plan-b“ festzulegen, wird keine Ausnahme ausgelöst, aber die Einstellung hat keine Auswirkungen mehr.

Plan B ist weiterhin über spezielle Flags oder spezielle Builds verfügbar. Die vollständige Entfernung des Codes erfolgt jedoch in der zweiten Jahreshälfte 2022.

Phase 6: Einstellung und Entfernung von „Plan B“ aus WebRTC

Plan B ist in WebRTC bereits als veraltet markiert, aber weiterhin verfügbar. Die Entfernung sollte 2023 erfolgen.

Anwendung für Unified Plan vorbereiten

Ausführliche Informationen zu den Unterschieden zwischen Plan B und dem einheitlichen Plan sowie dazu, wie Ihre Anwendung möglicherweise zur Vorbereitung auf den einheitlichen Plan aktualisiert werden muss, finden Sie im Leitfaden zur Umstellung auf den einheitlichen Plan (JavaScript).

Informationen zu nativen (C++)-Anwendungen finden Sie im Dokument „Native/mobile Anwendungen zum Unified Plan migrieren“.