O Google planeja fazer a transição da implementação WebRTC do Chrome do formato SDP atual (chamado "Plano B") para um formato conforme os padrões ("Plano unificado", rascunho-ietf-rtcweb-jsep) nos próximos trimestres.
O plano envolve cinco fases e um recurso temporário da API.
Quem será afetado
As pessoas que usam várias faixas de áudio ou várias faixas de vídeo em um único PeerConnection precisarão testar o produto no plano unificado e se adaptar de acordo. Caso uma chamada seja iniciada de um endpoint que não seja o Chrome e respondida pelo Chrome, a forma da oferta poderá ser alterada. As pessoas que fazem análises detalhadas de SDP e cuidam de atributos msid precisarão verificar se o código de análise delas escolhe o novo formato (a=msid). Os detalhes sobre se as alterações serão necessárias e como os apps precisam ser alterados dependerão do aplicativo. Acreditamos que quase todos os aplicativos que usam apenas um único á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 de RTCPeerConnection:
enum SdpSemantics {
"plan-b",
"unified-plan"
};
partial dictionary RTCConfiguration {
SdpSemantics sdpSemantics;
}
A RTCConfiguration pode ser transmitida para o construtor de um RTCPeerConnection, e todas as ofertas e respostas criadas estarão no formato do plano unificado. As chamadas para setLocalDescription e setRemoteDescription também esperam que o SDP esteja no formato Unified Plan. Se estiver no formato legado do Chrome, todos os vídeos, exceto o primeiro e o primeiro áudio, serão ignorados.
Há também uma sinalização de linha de comando (–enable-features=RTCUnifiedPlanByDefault no Chrome M71 e mais recentes, –enable-blink-features=RTCUnifiedPlanByDefault em versões anteriores) que permite que o valor padrão dessa sinalização seja definido como "plano unificado".
Fases
Fase 1: implementar o plano unificado
Nesta fase, o plano unificado foi desenvolvido por trás de uma sinalização de experimentos disponível desde o M65. Até a fase 2, foi mais inteligente testar com o Chrome Canary usando "–enable-blink-features=RTCUnifiedPlan".
Fase 2: disponibilizar o recurso da API para todos os usuários
Lançado no M69 (Beta em agosto de 2018, estável em setembro de 2018)
Nesta fase, o valor padrão da sinalização sdpSemantics era "plan-b". Na Fase 2, as pessoas que tinham implementações que dependiam do formato SDP precisavam executar testes para ver se os aplicativos funcionavam quando o plano unificado estava em uso. Para aplicativos compatíveis com o Firefox, esperamos que este seja um exercício muito simples: assim como você faria para o Firefox.
É possível alterar o valor padrão da sinalização sdpSemantics em "chrome://flags". Procure o recurso "WebRTC: usar a semântica de SDP do plano unificado por padrão".
Fase 3: alterar o padrão
A data da mudança era M72 (Beta em dezembro de 2018, estável em janeiro de 2019).
Nesta fase, mudamos o valor padrão da sinalização sdpSemantics para "unified-plan". Os aplicativos que descobriram que precisavam de mais tempo para converter o sdpSemantics foram definidos explicitamente como "plan-b" para recuperar o comportamento anterior.
Fase 4: criar o plano B
Nesta fase, definir a sinalização sdpSemantics como "plan-b" resulta em uma exceção foi lançada. Ele está sendo lançado na versão canário da versão M93. A partir do M96, a exceção foi lançada em todos os canais, incluindo o Stable.
Durante essa fase, foi disponibilizado um teste de suspensão de uso que permitia usar o Plano B sem exceção, mas o teste parou de funcionar em 25 de maio de 2022.
Fase 5: remover o “Plan B” do Chromium
Depois que o teste terminar, o Plano B será removido do Chrome. Neste ponto, a sinalização sdpSemantics será removida. Tentar defini-la como "plan-b" não gerará uma exceção, mas não terá mais efeito.
O Plano B ainda está disponível por trás de sinalizações ou builds especiais, mas a remoção completa do código acontecerá no segundo semestre de 2022.
Fase 6: suspender o uso do "Plan B" no WebRTC
O Plano B já está marcado como obsoleto 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 do plano B e do plano unificado e como seu aplicativo pode precisar ser atualizado na preparação 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.