Formato SDP do plano unificado - plano de transição

O Google planeja fazer a transição da implementação do WebRTC do Chrome do formato SDP atual (chamado "Plano B") para um formato em conformidade com os padrões (“Plano Unificado”, draft-ietf-rtcweb-jsep) nos próximos trimestres.

O plano envolve cinco fases e um recurso de API transitório.

Quem será afetado

As pessoas que usam várias faixas de áudio ou de vídeo em uma única PeerConnection vão precisar testar o produto no plano unificado e se adaptar de acordo. No caso em que uma chamada é iniciada em um endpoint que não é do Chrome e respondida pelo Chrome, o formato da oferta pode precisar mudar. As pessoas que fazem a análise detalhada de SDP e se preocupam com os atributos msid precisam verificar se o código de análise está detectando o novo formato (a=msid). Os detalhes sobre se mudanças serão necessárias e como os apps precisam mudar dependem do aplicativo. Acreditamos que quase todos os aplicativos que usam apenas uma única faixa de áudio e uma única faixa de vídeo por RTCPeerConnection não serão afetados pela mudança.

O recurso da API

Estamos adicionando um novo recurso à RTCConfiguration da RTCPeerConnection:

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


partial dictionary RTCConfiguration {
   SdpSemantics sdpSemantics;
}

A RTCConfiguration pode ser transmitida ao construtor de uma RTCPeerConnection, e todas as ofertas e respostas construídas estarão no formato de plano unificado. As chamadas para setLocalDescription e setRemoteDescription também esperam que o SDP esteja no formato do plano unificado. Se ele estiver no formato legado do Chrome, todas as faixas, exceto a primeira faixa de áudio e a primeira faixa de vídeo, serão ignoradas.

Há também uma flag de linha de comando (–enable-features=RTCUnifiedPlanByDefault no Chrome M71 e versões mais recentes, –enable-blink-features=RTCUnifiedPlanByDefault em versões anteriores) que permite que o valor padrão dessa flag seja definido como "unified-plan".

As fases

Fase 1: implementar o plano unificado

Nesta fase, o Unified Plan estava sendo desenvolvido com uma flag de experimentação disponível desde a M65. Até a fase 2, era mais recomendável testar com o Chrome Canary usando "–enable-blink-features=RTCUnifiedPlan".

Fase 2: disponibilizar o recurso da API para todos os usuários

Lançado na M69 (versão Beta em agosto de 2018, versão estável em setembro de 2018)

Nesta fase, o valor padrão da flag sdpSemantics era "plan-b". Na fase 2, as pessoas que tinham implementações que dependiam do formato SDP precisavam executar testes para saber se os aplicativos funcionavam quando o plano unificado estava em uso. Para aplicativos que oferecem suporte ao Firefox, esperamos que este seja um exercício muito simples: basta fazer o mesmo que você faria no Firefox.

O valor padrão da flag sdpSemantics pode ser alterado em "chrome://flags". Procure o recurso "WebRTC: Use Unified Plan SDP Semantics by default".

Fase 3: mudar o padrão

A data da mudança foi M72 (Beta em dezembro de 2018, estável em janeiro de 2019).

Nesta fase, mudamos o valor padrão da flag sdpSemantics para "unified-plan". Os aplicativos que descobriram que precisavam de mais tempo para converter definiram a flag sdpSemantics explicitamente como "plan-b" para recuperar o comportamento anterior.

Fase 4: fazer o lançamento "Plan B"

Nessa fase, definir a flag sdpSemantics como "plan-b" resulta em uma exceção sendo gerada. Ele está sendo lançado no Canary desde a M93. A partir da M96, a exceção estava sendo gerada em todos os canais, incluindo o Stable.

Durante essa fase, um teste de descontinuação estava disponível, permitindo o uso do Plan B sem a exceção, mas o teste parou de funcionar em 25 de maio de 2022.

Fase 5: remover o "Plan B" do Chromium

Após o fim do teste, o Plan B será removido do Chrome. Nesse ponto, a flag sdpSemantics será removida. Tentar definir como "plan-b" não gerará uma exceção, mas não terá mais efeito.

O Plano B ainda está disponível com sinalizações ou builds especiais, mas a remoção completa do código vai acontecer no segundo semestre de 2022.

Fase 6: descontinuar e remover o "Plan B" da WebRTC

O plano B já está marcado como descontinuado no WebRTC, mas ainda está disponível. A remoção deve acontecer em 2023.

Como preparar seu aplicativo para o plano unificado

Para informações detalhadas sobre as diferenças entre o plano B e o plano unificado e como seu aplicativo pode precisar ser atualizado para se preparar para o plano unificado, consulte o Guia de transição do "Plano unificado" (JavaScript).

Para aplicativos nativos (C++), consulte o documento "Como migrar seu aplicativo nativo/para dispositivos móveis para o plano unificado".