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

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.