W ciągu następnych kilku kwartałów Google planuje przenieść implementację WebRTC Chrome z obecnego formatu SDP (zwanego „Planem B”) na format zgodny ze standardami („Plan ujednolicony”, draft-ietf-rtcweb-jsep).
Plan obejmuje 4 fazy i jedną przejściową funkcję API.
Kto będzie dotknięty
Osoby, które używają wielu ścieżek audio lub wielu ścieżek wideo na jednym PeerConnection, będą musiały przetestować swój produkt w ramach ujednoliconego planu i odpowiednio się dostosować. W przypadku, gdy połączenie jest inicjowane z punktu końcowego innego niż Chrome i odpowiada Chrome, forma oferty może ulec zmianie. Osoby, które wykonują szczegółową analizę SDP i dbają o atrybuty msid, będą musiały sprawdzić, czy ich kod parsujący wybiera nowy format (a = msid). Szczegółowe informacje na temat tego, czy zmiany będą potrzebne i jak muszą się zmienić aplikacje, będą zależne od aplikacji. Uważamy, że prawie wszystkie aplikacje, które używają tylko jednego dźwięku i jednej ścieżki wideo na RTCPeerConnection, pozostaną nienaruszone przez tę zmianę.
Funkcja API
Dodajemy jedną nową funkcję do RTCConfiguration RTCPeerConnection:
enum SdpSemantics {
"plan-b",
"unified-plan"
};
partial dictionary RTCConfiguration {
SdpSemantics sdpSemantics;
}
RTCConfiguration może zostać przekazany do konstruktora RTCPeerConnection, a wszystkie skonstruowane oferty i odpowiedzi będą w formacie Unified Plan. Wywołania setLocalDescription i setRemoteDescription będą również oczekiwać, że SDP będzie w formacie Unified Plan; jeśli jest w starszym formacie Chrome, wszystkie ścieżki audio oprócz pierwszej i pierwszej ścieżki wideo zostaną zignorowane.
Istnieje również flaga wiersza poleceń (–enable-features = RTCUnifiedPlanByDefault w Chrome M71 i nowszych, –enable-blink-features = RTCUnifiedPlanByDefault we wcześniejszych wersjach), która umożliwia ustawienie domyślnej wartości tej flagi na „ujednolicony plan”.
Fazy
Faza 1: Wdrożenie ujednoliconego planu
Obecnie opracowywany jest ujednolicony plan, a flaga do eksperymentów jest dostępna z M65. Do fazy 2 najrozsądniej jest testować z Canary. Jeśli uruchomisz Chrome z opcją „–enable-blink-features = RTCUnifiedPlan”, będziesz mieć dostęp do funkcji „sdpSemantics” opisanej powyżej i możesz rozpocząć testowanie przy użyciu ujednoliconego planu.
Faza 2: ogólna dostępność funkcji API
Wydany w M69 (wersja beta z sierpnia 2018, stabilna z września 2018)
W tej fazie domyślną wartością flagi sdpSemantics jest „plan-b”. W fazie 2 oczekujemy, że osoby, które mają implementacje zależne od formatu SDP, przeprowadzą testy, aby sprawdzić, czy ich aplikacje działają, gdy używany jest Unified Plan. W przypadku aplikacji obsługujących przeglądarkę Firefox spodziewamy się, że będzie to bardzo proste ćwiczenie: zrób tak, jak w przypadku przeglądarki Firefox.
Domyślną wartość flagi sdpSemantics można zmienić w „chrome: // flags”; poszukaj funkcji „WebRTC: Domyślnie używaj semantyki ujednoliconego planu SDP”.
Faza 3: Zmień ustawienie domyślne
Termin przełączenia zostanie ustalony w porozumieniu z użytkownikami, po szeroko zakrojonych testach. Nasz obecny plan to M72 (wersja beta grudzień 2018, stabilna styczeń 2019).
W tej fazie zmienimy domyślną wartość flagi sdpSemantics na „unified-plan”. Aplikacje, które odkryją, że potrzebują więcej czasu na konwersję, mogą jawnie ustawić flagę sdpSemantics na „plan-b”, aby przywrócić poprzednie zachowanie.
W ramach testowania spodziewamy się kilkukrotnej próby zmiany domyślnej wartości flagi w wersji Canary w cyklu rozwojowym M71 i M72.
Będziemy monitorować użycie flagi i ilość otrzymywanego SDP z semantyką „Plan B”, aby ustalić datę fazy 4.
Faza 4: Usuń „plan B”
Na tym etapie flaga sdpSemantics i cały kod obsługujący Plan B zostaną usunięte z Chrome. Ustawienie flagi sdpSemantics nie będzie błędem, ale nie będzie miało żadnego efektu.
Przygotowanie wniosku o ujednolicony plan
Aby uzyskać szczegółowe informacje o różnicach między Planem B a Planem ujednoliconym oraz o tym, jak aplikacja może wymagać aktualizacji w ramach przygotowań do planu ujednoliconego, zobacz Przewodnik przejścia „Plan ujednolicony” (JavaScript)
Informacje o aplikacjach natywnych (C ++) można znaleźć w dokumencie „Migracja aplikacji natywnej / mobilnej do ujednoliconego planu”