Google dự định chuyển đổi cách triển khai WebRTC của Chrome từ định dạng SDP hiện tại (được gọi là "Kế hoạch B") sang định dạng tuân thủ tiêu chuẩn ("Kế hoạch hợp nhất", draft-ietf-rtcweb-jsep) trong vài quý tới.
Kế hoạch này bao gồm 5 giai đoạn và một tính năng API tạm thời.
Những người sẽ bị ảnh hưởng
Những người sử dụng nhiều kênh âm thanh hoặc nhiều kênh video trên một PeerConnection sẽ phải kiểm thử sản phẩm của họ theo Kế hoạch hợp nhất và điều chỉnh cho phù hợp. Trong trường hợp một lệnh gọi được bắt đầu từ một điểm cuối không phải 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 chi tiết và quan tâm đến các thuộc tính msid sẽ phải kiểm tra để đảm bảo rằng mã phân tích cú pháp của họ nhận được định dạng mới (a=msid). Thông tin chi tiết về việc liệu có cần thay đổi hay không và cách ứ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 các ứng dụng chỉ sử dụng một âm thanh và một kênh video cho mỗi RTCPeerConnection sẽ không bị thay đổi.
Tính năng API
Chúng tôi sẽ thêm một tính năng mới vào RTCConfiguration của RTCPeerConnection:
enum SdpSemantics {
"plan-b",
"unified-plan"
};
partial dictionary RTCConfiguration {
SdpSemantics sdpSemantics;
}
Bạn có thể truyền RTCConfiguration đến hàm khởi tạo của RTCPeerConnection, tất cả các ưu đãi và câu trả lời được tạo sẽ ở định dạng Unified Plan. Các lệnh gọi đến setLocalDescription và setRemoteDescription cũng sẽ yêu cầu SDP ở định dạng Unified Plan; nếu ở định dạng Chrome cũ, thì tất cả ngoại trừ kênh âm thanh đầu tiên và kênh video đầu tiên sẽ bị bỏ qua.
Ngoài ra, còn có một cờ dòng lệnh (–enable-features=RTCUnifiedPlanByDefault trong Chrome M71 trở lên, –enable-blink-features=RTCUnifiedPlanByDefault 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 "unified-plan".
Các giai đoạn
Giai đoạn 1: Triển khai Kế hoạch hợp nhất
Trong giai đoạn này, Kế hoạch hợp nhất đang được phát triển dựa trên một cờ thử nghiệm có sẵn từ phiên bản M65. Cho đến giai đoạn 2, tốt nhất bạn nên kiểm thử bằng Chrome Canary bằng cách sử dụng “–enable-blink-features=RTCUnifiedPlan”.
Giai đoạn 2: Phát hành rộng rãi tính năng API
Phát hành trong M69 (beta tháng 8 năm 2018, phiên bản ổn định tháng 9 năm 2018)
Trong giai đoạn này, giá trị mặc định của cờ sdpSemantics là "plan-b". Trong Phase 2, những người đã triển khai tuỳ thuộc vào định dạng SDP dự kiến sẽ chạy các chương trình kiểm thử để xem ứng dụng của họ có hoạt động khi sử dụng Unified Plan hay không. Đối với các ứng dụng hỗ trợ Firefox, chúng tôi dự kiến đây sẽ là một bài tập rất đơn giản: chỉ cần làm như bạn làm với Firefox.
Bạn có thể thay đổi giá trị mặc định của cờ sdpSemantics trong “chrome://flags”; tìm tính năng “WebRTC: Sử dụng ngữ nghĩa SDP của kế hoạch hợp nhất theo mặc định”.
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, phiên bản ổn định 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ờ sdpSemantics thành "unified-plan". Các ứng dụng phát hiện thấy cần thêm thời gian để chuyển đổi sẽ đặt cờ sdpSemantics thành "plan-b" một cách rõ ràng để khôi phục hành vi trước đó.
Giai đoạn 4: Thực hiện "Kế hoạch B"
Trong giai đoạn này, việc đặt cờ sdpSemantics thành "plan-b" sẽ dẫn đến một ngoại lệ được gửi. Lỗi này đã xuất hiện trong Canary từ M93. Kể từ M96, ngoại lệ này đã được gửi vào tất cả các kênh, bao gồm cả kênh ổn định.
Trong giai đoạn này, chúng tôi đã cung cấp Bản dùng thử ngừng hoạt động cho phép sử dụng Kế hoạch B mà không cần gửi 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: Xoá "Kế hoạch B" khỏi Chromium
Sau khi chương trình dùng thử kết thúc, Plan B sẽ bị xoá khỏi Chrome. Tại thời điểm này, cờ sdpSemantics sẽ bị xoá. Việc cố gắng đặt giá trị này thành "plan-b" sẽ không ngoại lệ, nhưng sẽ không còn hiệu lực nữa.
Bạn vẫn có thể sử dụng Kế hoạch B sau các cờ đặc biệt hoặc bản dựng đặc biệt, nhưng việc xoá toàn bộ mã sẽ diễn ra vào nửa cuối năm 2022.
Giai đoạn 6: Ngừng sử dụng và xoá "Kế hoạch B" khỏi WebRTC
Kế hoạch B đã được đánh dấu là không dùng nữa trong WebRTC, nhưng vẫn có sẵn. Việc xoá sẽ diễn ra vào năm 2023.
Chuẩn bị ứng dụng cho gói Unified
Để biết thông tin chi tiết về sự khác biệt giữa Kế hoạch B và Kế hoạch hợp nhất, cũng như cách cập nhật ứng dụng để chuẩn bị cho Kế hoạch hợp nhất, hãy xem Hướng dẫn chuyển đổi sang "Kế hoạch hợp nhất" (JavaScript)
Đối với ứng dụng gốc (C++), hãy xem tài liệu "Di chuyển ứng dụng gốc/ứng dụng dành cho thiết bị di động sang Unified Plan"