Google berencana untuk melakukan transisi penerapan WebRTC Chrome dari format SDP saat ini (disebut “Rencana B”) ke format yang sesuai standar (“Rencana Terpadu”, draft-ietf-rtcweb-jsep) selama beberapa kuartal ke depan.
Rencana ini melibatkan 5 fase, dan satu fitur API sementara.
Siapa yang akan terpengaruh
Orang yang menggunakan beberapa trek audio atau beberapa trek video di satu PeerConnection harus menguji produk mereka berdasarkan Unified Plan, dan menyesuaikan sesuai kebutuhan. Jika panggilan dimulai dari endpoint non-Chrome dan dibalas oleh Chrome, bentuk penawaran mungkin harus berubah. Orang yang melakukan penguraian SDP mendetail dan memperhatikan atribut msid harus memeriksa apakah kode penguraian mereka mengambil format baru (a=msid). Detail tentang apakah perubahan akan diperlukan dan bagaimana aplikasi perlu diubah akan bergantung pada aplikasi. Kami yakin bahwa hampir semua aplikasi yang hanya menggunakan satu audio dan satu trek video per RTCPeerConnection tidak akan terpengaruh oleh perubahan ini.
Fitur API
Kami menambahkan satu fitur baru ke RTCConfiguration RTCPeerConnection:
enum SdpSemantics {
"plan-b",
"unified-plan"
};
partial dictionary RTCConfiguration {
SdpSemantics sdpSemantics;
}
RTCConfiguration dapat diteruskan ke konstruktor RTCPeerConnection, dan semua penawaran dan jawaban yang dibuat akan dalam format Unified Plan. Panggilan ke setLocalDescription dan setRemoteDescription juga akan mengharapkan SDP berada dalam format Unified Plan; jika dalam format Chrome lama, maka semua kecuali trek audio pertama dan trek video pertama akan diabaikan.
Ada juga flag command line (–enable-features=RTCUnifiedPlanByDefault di Chrome M71 dan yang lebih baru, –enable-blink-features=RTCUnifiedPlanByDefault di versi sebelumnya) yang memungkinkan nilai default flag ini ditetapkan ke “unified-plan”.
Fase
Fase 1: Terapkan Rencana Terpadu
Pada fase ini, Rencana Terpadu sedang dikembangkan di balik tanda eksperimen yang tersedia sejak M65. Hingga fase 2, sebaiknya uji dengan Chrome Canary menggunakan “–enable-blink-features=RTCUnifiedPlan”.
Fase 2: Buat fitur API tersedia secara umum
Dirilis di M69 (beta Agustus 2018, stabil September 2018)
Pada fase ini, nilai default flag sdpSemantics adalah “plan-b”. Dalam Fase 2, pengguna yang memiliki implementasi yang bergantung pada format SDP diharapkan untuk menjalankan pengujian guna melihat apakah aplikasi mereka berfungsi saat Unified Plan digunakan. Untuk aplikasi yang mendukung Firefox, kami berharap ini akan menjadi latihan yang sangat sederhana: cukup lakukan seperti yang Anda lakukan untuk Firefox.
Nilai default tanda sdpSemantics dapat diubah di “chrome://flags”; cari fitur “WebRTC: Gunakan Semantik SDP Unified Plan secara default”.
Fase 3: Beralih ke default
Tanggal untuk peralihan adalah M72 (beta Desember 2018, stabil Januari 2019).
Pada fase ini, kami mengubah nilai default flag sdpSemantics menjadi “unified-plan”. Aplikasi yang menemukan bahwa aplikasi tersebut memerlukan lebih banyak waktu untuk berkonversi akan menetapkan flag sdpSemantics secara eksplisit ke “plan-b” untuk memulihkan perilaku sebelumnya.
Fase 4: Membuat “Plan B” ditampilkan
Pada fase ini, menetapkan flag sdpSemantics ke "plan-b" akan menyebabkan pengecualian ditampilkan. Error ini telah muncul di Canary sejak M93. Mulai M96, pengecualian muncul di semua saluran, termasuk Stabil.
Selama fase ini, Uji Coba Penghentian tersedia yang memungkinkan penggunaan Rencana B tanpa pengecualian yang ditampilkan, tetapi uji coba berhenti berfungsi pada 25 Mei 2022.
Fase 5: Hapus “Plan B” dari Chromium
Setelah uji coba berakhir, Rencana B akan dihapus dari Chrome. Pada tahap ini, flag sdpSemantics akan dihapus. Mencoba menetapkannya ke "plan-b" tidak akan menampilkan pengecualian, tetapi tidak akan lagi berpengaruh.
Rencana B masih tersedia di balik flag khusus atau build khusus, tetapi penghapusan kode penuh akan terjadi pada paruh kedua tahun 2022.
Fase 6: Menghentikan penggunaan dan menghapus ”Plan B” dari WebRTC
Rencana B sudah ditandai sebagai tidak digunakan lagi di WebRTC, tetapi masih tersedia. Penghapusan akan dilakukan pada tahun 2023.
Menyiapkan Aplikasi Anda untuk Rencana Terpadu
Untuk informasi mendetail tentang perbedaan Rencana B dan Rencana Terpadu serta cara mengupdate aplikasi Anda sebagai persiapan untuk Rencana Terpadu, lihat Panduan Transisi “Rencana Terpadu” (JavaScript)
Untuk aplikasi native (C++), lihat dokumen “Memigrasikan aplikasi native/seluler ke Unified Plan”