Định dạng SDP của kế hoạch hợp nhất – kế hoạch chuyển đổi

Google đang lên kế hoạch chuyển đổi cấu hình triển khai WebRTC của Chrome từ định dạng SDP hiện tại (gọi là “Gói B”) sang định dạng tuân thủ các tiêu chuẩn (“Gói hợp nhất”, nháp-ietf-rtcweb-jsep) trong vài quý tiếp theo.

Gói này bao gồm 5 giai đoạn và một tính năng API tạm thời.

Ai sẽ bị ảnh hưởng

Những người sử dụng nhiều bản âm thanh hoặc nhiều bản nhạc trên một PeerPeer ngang hàng sẽ phải thử nghiệm sản phẩm của họ theo Gói hợp nhất và điều chỉnh chính xác. Trong trường hợp cuộc gọi được bắt đầu từ một điểm cuối không phải của Chrome và được Chrome trả lời, thì hình thức của ưu đãi có thể phải thay đổi. Những người phân tích cú pháp SDP và quan tâm đến các thuộc tính msid chi tiết sẽ phải kiểm tra để đảm bảo rằng mã phân tích cú pháp của họ chọn định dạng mới (a=msid). Thông tin chi tiết về việc liệu các thay đổi có cần thiết hay không và cách các ứng dụng cần thay đổi sẽ phụ thuộc vào ứng dụng. Chúng tôi cho rằng hầu hết tất cả ứng dụng chỉ sử dụng một âm thanh và một bản nhạc duy nhất trên mỗi RTCPeerRTC sẽ không bị ảnh hưởng.

Tính năng API

Chúng tôi đang thêm một tính năng mới vào RTCConfig của RTCPeer:

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


partial dictionary RTCConfiguration {
   SdpSemantics sdpSemantics;
}

RTCConfig có thể được chuyển vào hàm dựng của RTCPeerConnection và tất cả các ưu đãi và câu trả lời được tạo sẽ ở định dạng hợp nhất. Các lệnh gọi tới setLocalDescription và setremoteDescription cũng sẽ yêu cầu SDP ở định dạng Gói hợp nhất; nếu ở định dạng Chrome cũ, thì tất cả trừ bản âm thanh đầu tiên và bản nhạc đầu tiên sẽ bị bỏ qua.

Ngoài ra, còn có một cờ dòng lệnh (–enable-features=RTCUnityPlanByDefault trong Chrome M71 trở lên, –enable-blink-features=RTCUnityPlanByDefault trong các phiên bản cũ hơn) cho phép đặt giá trị mặc định của cờ này thành "Unity-plan".

Giai đoạn

Giai đoạn 1: Triển khai Kế hoạch hợp nhất

Trong giai đoạn này, Gói hợp nhất được phát triển sau một cờ thử nghiệm có sẵn kể từ M65. Trước giai đoạn 2, bạn nên thử nghiệm với Chrome Canary bằng cách sử dụng “–enable-blink-features=RTCUnityPlan”.

Giai đoạn 2: Cung cấp tính năng API nói chung

Phát hành vào M69 (thử nghiệm tháng 8 năm 2018, ổn định vào tháng 9 năm 2018)

Trong giai đoạn này, giá trị mặc định của cờ sdpContexts là “plan-b”. Trong giai đoạn 2, những người triển khai phụ thuộc vào định dạng SDP dự kiến sẽ chạy thử nghiệm để xem liệu ứng dụng của họ có hoạt động hay không khi sử dụng Gói hợp nhất. Đối với các ứng dụng hỗ trợ Firefox, chúng tôi dự kiến đây là một bài tập thể dục rất đơn giản: chỉ cần làm như bạn làm đối với Firefox.

Giá trị mặc định của cờ sdpContexts có thể được thay đổi trong “chrome://flags”;

Giai đoạn 3: Chuyển đổi mặc định

Ngày chuyển đổi là M72 (phiên bản thử nghiệm tháng 12 năm 2018, ổn định vào tháng 1 năm 2019).

Trong giai đoạn này, chúng tôi đã thay đổi giá trị mặc định của cờ sdpốs

Giai đoạn 4: Ném "Kế hoạch B"

Trong giai đoạn này, việc đặt cờ sdpContexts thành "plan-b" dẫn đến một trường hợp ngoại lệ được gửi đi. Nó đang ném vào Canary từ M93. Kể từ phiên bản M96, ngoại lệ vẫn còn ở tất cả các kênh, bao gồm cả kênh Stable.

Trong giai đoạn này, chúng tôi đã cung cấp Bản dùng thử không còn được sử dụng cho phép sử dụng Gói B mà không có trường hợp ngoại lệ. Nhưng bản dùng thử này đã ngừng hoạt động vào ngày 25 tháng 5 năm 2022.

Giai đoạn 5: Xóa “Gói B” khỏi Chromium

Sau khi thời gian dùng thử kết thúc, Gói B sẽ bị xóa khỏi Chrome. Tại thời điểm này, cờ sdpContexts sẽ bị xóa. Việc cố gắng đặt nó thành "plan-b" sẽ không ném một ngoại lệ, nhưng nó sẽ không có hiệu lực nữa.

Kế hoạch B vẫn hoạt động trong trường hợp có cờ đặc biệt hoặc bản dựng đặc biệt nhưng toàn bộ việc xóa mã sẽ diễn ra vào nửa cuối năm 2022.

Giai đoạn 6: Ngừng sử dụng và xóa "Kế hoạch B" khỏi WebRTC

Gói B đã được đánh dấu là không dùng nữa trong WebRTC nhưng vẫn còn trống. Quá trình xóa nên diễn ra vào năm 2023.

Chuẩn bị đơn đăng ký cho gói hợp nhất

Để biết thông tin chi tiết về các điểm khác biệt giữa Gói B và Gói hợp nhất cũng như cách bạn cần cập nhật ứng dụng của mình để chuẩn bị cho Gói hợp nhất, hãy xem Hướng dẫn chuyển đổi "Gói hợp nhất" (JavaScript)

Đối với các ứng dụng gốc (C++), hãy xem tài liệu “Di chuyển ứng dụng gốc/thiết bị di động của bạn sang Gói hợp nhất”