Формат Unified Plan SDP — план перехода

Google планирует перевести реализацию WebRTC в Chrome с текущего формата SDP (называемого «Plan B») на формат, соответствующий стандартам («Unified Plan», draft-ietf-rtcweb-jsep) в течение следующих нескольких кварталов.

План включает 5 этапов и одну временную функцию API.

Кто будет затронут

Людям, которые используют несколько аудиодорожек или несколько видеодорожек в одном PeerConnection, придется протестировать свой продукт в рамках единого плана и соответствующим образом адаптироваться. В случае, когда вызов инициируется с конечной точки, отличной от Chrome, и на него отвечает Chrome, форма предложения может измениться. Людям, выполняющим детальный анализ SDP и заботящимся об атрибутах msid, придется убедиться, что их код синтаксического анализа поддерживает новый формат (a=msid). Подробная информация о том, потребуются ли изменения и как должны измениться приложения, будет зависеть от приложения. Мы думаем, что почти все приложения, которые используют только одну аудио- и одну видеодорожку для каждого RTCPeerConnection, не будут затронуты этим изменением.

Функция API

Мы добавляем одну новую функцию в RTCConfiguration RTCPeerConnection:

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


partial dictionary RTCConfiguration {
   SdpSemantics sdpSemantics;
}

RTCConfiguration можно передать конструктору RTCPeerConnection, и все построенные предложения и ответы будут в формате единого плана. Вызовы setLocalDescription и setRemoteDescription также будут ожидать, что SDP будет в формате Unified Plan; если он в устаревшем формате Chrome, то все, кроме первой звуковой дорожки и первой видеодорожки, будут игнорироваться.

Также есть флаг командной строки (–enable-features=RTCUnifiedPlanByDefault в Chrome M71 и выше, –enable-blink-features=RTCUnifiedPlanByDefault в более ранних версиях), который позволяет установить для этого флага значение по умолчанию «унифицированный план».

Фазы

Этап 1. Внедрение единого плана

На этом этапе Единый план разрабатывался под флагом экспериментов, доступным с M65. До этапа 2 разумнее всего было тестировать Chrome Canary, используя «–enable-blink-features=RTCUnifiedPlan».

Этап 2. Сделайте функцию API общедоступной

Выпущено в M69 (бета-август 2018 г., стабильная версия в сентябре 2018 г.)

На этом этапе значением по умолчанию флага sdpSemantics было «plan-b». На этапе 2 люди, у которых были реализации, зависящие от формата SDP, должны были запустить тесты, чтобы увидеть, работают ли их приложения при использовании Unified Plan. Для приложений, поддерживающих Firefox, мы ожидаем, что это будет очень простое упражнение: просто сделайте то же, что и для Firefox.

Значение по умолчанию флага sdpSemantics можно изменить в «chrome://flags»; найдите функцию «WebRTC: использовать семантику единого плана SDP по умолчанию».

Этап 3. Переключите значение по умолчанию

Датой перехода был M72 (бета-декабрь 2018 г., стабильная версия — январь 2019 г.).

На этом этапе мы изменили значение флага sdpSemantics по умолчанию на «унифицированный план». Приложения, которые обнаружили, что им нужно больше времени для преобразования, явно установили флаг sdpSemantics в «plan-b», чтобы восстановить предыдущее поведение.

Фаза 4: бросьте «План Б»

На этом этапе установка флага sdpSemantics в значение «plan-b» приводит к возникновению исключения. Он бросал Канарейку из M93. По состоянию на M96 исключением были броски во всех каналах, включая Stable.

На этом этапе была доступна устаревшая пробная версия , которая позволяла использовать план B без создания исключений, но пробная версия перестала работать 25 мая 2022 г.

Этап 5. Удалите «План Б» из Chromium

После окончания пробного периода Plan B будет удален из Chrome. На этом этапе флаг sdpSemantics будет удален. Попытка установить его на «plan-b» не вызовет исключение, но больше не будет иметь никакого эффекта.

План Б по-прежнему доступен со специальными флагами или специальными сборками, но полное удаление кода произойдет во втором полугодии 2022 года.

Этап 6: отказ от поддержки и удаление «Плана Б» из WebRTC

План Б уже отмечен в WebRTC как устаревший, но все еще доступен. Удаление должно произойти в 2023 году.

Подготовка приложения для единого плана

Подробную информацию о различиях плана B и единого плана, а также о том, как ваше приложение может потребоваться обновить для подготовки к единому плану, см. в руководстве по переходу на единый план (JavaScript) .

Сведения о нативных (C++) приложениях см. в документе «Миграция нативного/мобильного приложения в единый план» .