Google prevede di eseguire la transizione dell'implementazione di WebRTC di Chrome dall'attuale formato SDP (chiamato "Piano B") a un formato conforme agli standard ("Piano unificato", draft-ietf-rtcweb-jsep) nei prossimi due trimestri.
Il piano prevede 5 fasi e una funzionalità API transitoria.
Chi sarà interessato
Gli utenti che utilizzano più tracce audio o più tracce video su un singolo PeerConnection dovranno testare il proprio prodotto nell'ambito del Piano unificato e adattarlo di conseguenza. Se una chiamata viene avviata da un endpoint non Chrome e Chrome risponde, la forma dell'offerta potrebbe dover cambiare. Gli utenti che eseguono l'analisi dettagliata del file SDP e si preoccupano degli attributi msid dovranno verificare che il codice di analisi rilevi il nuovo formato (a=msid). I dettagli su se saranno necessarie modifiche e su come devono essere modificate le app dipendono dall'applicazione. Riteniamo che quasi tutte le applicazioni che utilizzano solo una traccia audio e una traccia video per RTCPeerConnection non saranno interessate dalla modifica.
La funzionalità dell'API
Stiamo aggiungendo una nuova funzionalità all'RTCConfiguration di RTCPeerConnection:
enum SdpSemantics {
"plan-b",
"unified-plan"
};
partial dictionary RTCConfiguration {
SdpSemantics sdpSemantics;
}
RTCConfiguration può essere passato al costruttore di un RTCPeerConnection e tutte le offerte e le risposte create saranno nel formato Unified Plan. Anche le chiamate a setLocalDescription e setRemoteDescription prevedono che l'SDP sia nel formato Unified Plan. Se è nel formato precedente di Chrome, tutte le tracce audio e video tranne la prima verranno ignorate.
Esiste anche un flag della riga di comando (–enable-features=RTCUnifiedPlanByDefault in Chrome M71 e versioni successive, –enable-blink-features=RTCUnifiedPlanByDefault nelle versioni precedenti) che consente di impostare il valore predefinito di questo flag su "unified-plan".
Le fasi
Fase 1: implementa il piano unificato
In questa fase, il piano unificato è stato sviluppato dietro un flag di sperimentazione disponibile dal mese di marzo 2019. Fino alla fase 2, era consigliabile eseguire il test con Chrome Canary utilizzando "–enable-blink-features=RTCUnifiedPlan".
Fase 2: rendi disponibile a livello generale la funzionalità dell'API
Rilasciato in M69 (beta agosto 2018, stabile settembre 2018)
In questa fase, il valore predefinito del flag sdpSemantics era "plan-b". Nella fase 2, gli utenti che avevano implementazioni dipendenti dal formato SDP dovevano eseguire test per verificare se le loro applicazioni funzionano quando viene utilizzato il piano unificato. Per le applicazioni che supportano Firefox, ci aspettiamo che questo sia un compito molto semplice: basta fare come faresti per Firefox.
Il valore predefinito del flag sdpSemantics può essere modificato in "chrome://flags". cerca la funzionalità "WebRTC: utilizza per impostazione predefinita la semantica SDP del piano unificato".
Fase 3: imposta il valore predefinito
La data del passaggio è stata M72 (beta dicembre 2018, stabile gennaio 2019).
In questa fase, abbiamo modificato il valore predefinito del flag sdpSemantics in "unified-plan". Le applicazioni che hanno scoperto di aver bisogno di più tempo per la conversione hanno impostato esplicitamente il flag sdpSemantics su "plan-b" per recuperare il comportamento precedente.
Fase 4: esegui il lancio del "piano B"
In questa fase, l'impostazione del flag sdpSemantics su "plan-b" comporta l'espulsione di un'eccezione. Il problema si verifica in Canary dalla versione M93. A partire dalla versione M96, l'eccezione veniva generata in tutti i canali, incluso Stabile.
Durante questa fase era disponibile una prova di ritiro che consentiva di utilizzare il piano B senza l'eccezione, ma la prova ha smesso di funzionare il 25 maggio 2022.
Fase 5: rimuovi "Piano B" da Chromium
Al termine della prova, Plan B verrà rimosso da Chrome. A questo punto, il flag sdpSemantics verrà rimosso. Il tentativo di impostarlo su "piano-b" non genererà un'eccezione, ma non avrà più alcun effetto.
Il piano B è ancora disponibile dietro flag o build speciali, ma la rimozione completa del codice avverrà nella seconda metà del 2022.
Fase 6: ritiro e rimozione del "piano B" da WebRTC
Il piano B è già contrassegnato come deprecato in WebRTC, ma è ancora disponibile. La rimozione dovrebbe avvenire nel 2023.
Preparazione dell'applicazione per il piano unificato
Per informazioni dettagliate sulle differenze tra il piano B e il piano unificato e su come potrebbe essere necessario aggiornare la tua applicazione in vista del piano unificato, consulta la Guida alla transizione al "piano unificato" (JavaScript)
Per le applicazioni native (C++), consulta il documento "Migrazione dell'applicazione nativa/mobile a Unified Plan"