Format SDP ujednoliconego planu – plan przejścia

W najbliższych kwartałach planujemy przeniesienie implementacji WebRTC w Chrome z obecnego formatu SDP (zwanego „Planem B”) do formatu zgodnego ze standardami („Plan Zjednoczony”, draft-ietf-rtcweb-jsep).

Plan obejmuje 5 etapów i 1 funkcję przejściową interfejsu API.

Kogo to dotyczy

Osoby, które używają wielu ścieżek audio lub wielu ścieżek wideo w ramach jednej funkcji PeerConnection, będą musiały przetestować swój produkt w ramach Unified Plan i w odpowiednim zakresie go dostosować. W przypadku wywołania wywołanego z urządzenia końcowego innego niż Chrome i odpowiedzi na nie w Chrome konieczne może być zmiana formy oferty. Osoby, które wykonują szczegółowe analizy SDP i są zainteresowane atrybutami msid, muszą sprawdzić, czy ich kod analizy obsługuje nowy format (a=msid). Informacje o tym, czy zmiany będą potrzebne i jakie zmiany należy wprowadzić, zależą od aplikacji. Uważamy, że zmiana ta nie wpłynie na prawie wszystkie aplikacje, które korzystają tylko z jednego ścieżki audio i jednej ścieżki wideo na RTCPeerConnection.

Interfejs API

Dodajemy nową funkcję do RTCConfiguration RTCPeerConnection:

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


partial dictionary RTCConfiguration {
   SdpSemantics sdpSemantics;
}

Konfigurację RTC można przekazać do konstruktora RTCPeerConnection, a wszystkie utworzone oferty i odpowiedzi będą w formacie Unified Plan. Wywołania setLocalDescription i setRemoteDescription będą również wymagać, aby plik SDP był w formacie Unified Plan. Jeśli jest w starszym formacie Chrome, wszystkie ścieżki oprócz pierwszej ścieżki audio i pierwszej ścieżki wideo zostaną zignorowane.

Dostępna jest też flaga wiersza poleceń (–enable-features=RTCUnifiedPlanByDefault w Chrome M71 i nowszych wersjach, –enable-blink-features=RTCUnifiedPlanByDefault we wcześniejszych wersjach), która umożliwia ustawienie domyślnej wartości tej flagi na „unified-plan”.

Etapy

Etap 1. Wdrażanie zintegrowanego planu

W tej fazie udoskonalenia planu zintegrowanego były dostępne za pomocą flagi eksperymentalnej od wersji M65. Do fazy 2. najrozsądniej było przeprowadzić testy za pomocą Chrome Canary, używając opcji „–enable-blink-features=RTCUnifiedPlan”.

Etap 2. Udostępnij funkcję interfejsu API ogólnie

Wprowadzono w wersji M69 (beta w sierpniu 2018 r., stabilna we wrześniu 2018 r.)

W tej fazie domyślną wartością flagi sdpSemantics była „plan-b”. W fazie 2 osoby, które miały implementacje zależne od formatu SDP, miały przeprowadzić testy, aby sprawdzić, czy ich aplikacje działają, gdy używany jest plan Unified. W przypadku aplikacji obsługujących Firefoxa powinno to być bardzo proste: postępuj tak samo jak w przypadku Firefoxa.

Domyślną wartość flagi sdpSemantics można zmienić na stronie „chrome://flags”. Poszukaj funkcji „WebRTC: domyślnie używaj semantyki SDP Unified Plan”.

Etap 3. Zmień ustawienie domyślne

Data przejścia to M72 (wersja beta w grudniu 2018 r., stabilna w styczniu 2019 r.).

W tej fazie zmieniliśmy domyślną wartość flagi sdpSemantics na „unified-plan”. Aplikacje, które potrzebowały więcej czasu na konwersję, ustawiły flagę sdpSemantics na „plan-b”, aby przywrócić poprzednie działanie.

Etap 4. Wykonaj rzut „Plan B”

Na tym etapie ustawienie flagi sdpSemantics na „plan-b” powoduje wyjątek. W Canary od wersji M93 występują błędy. Od wersji M96 wyjątek był zgłaszany we wszystkich kanałach, w tym w Stabilnym.

W tej fazie dostępna była wersja testowa wycofywania, która umożliwiała korzystanie z planu B bez zgłaszania wyjątków. Testowa wersja przestała działać 25 maja 2022 r.

Etap 5. Usuń „Plan B” z Chromium

Po zakończeniu okresu próbnego plan B zostanie usunięty z Chrome. W tym momencie flaga sdpSemantics zostanie usunięta. Próba ustawienia tej wartości na „plan-b” nie spowoduje wyjątku, ale nie będzie też miała żadnego wpływu.

Plan B jest nadal dostępny w ramach specjalnych flag lub specjalnych wersji, ale pełne usunięcie kodu nastąpi w II połowie 2022 r.

Etap 6. Wycofanie i usunięcie z WebRTC rozwiązania „Plan B”

Plan B jest już oznaczony jako wycofany w WebRTC, ale nadal jest dostępny. Usunięcie powinno nastąpić w 2023 r.

Przygotowywanie aplikacji do korzystania z planu zintegrowanego

Szczegółowe informacje o różnicach między planami B i ujednoczonym oraz o tym, jak przygotować aplikację do przejścia na plan ujednolicony, znajdziesz w przewodniku na temat przejścia na plan ujednolicony (JavaScript).

W przypadku aplikacji natywnych (C++) zapoznaj się z dokumentem „Migrating your native/mobile application to Unified Plan” (Przenoszenie natywnej lub mobilnej aplikacji na Unified Plan).