รูปแบบ SDP ของแผนแบบรวม - แผนการเปลี่ยนแปลง

Google วางแผนที่จะเปลี่ยนการใช้งาน WebRTC ของ Chrome จากรูปแบบ SDP ปัจจุบัน (เรียกว่า "แผน ข") เป็นรูปแบบที่เป็นไปตามมาตรฐาน ("แผนรวม", draft-ietf-rtcweb-jsep) ในอีก 2-3 ไตรมาสข้างหน้า

แผนนี้แบ่งออกเป็น 5 ระยะ และมีฟีเจอร์ API ชั่วคราว 1 รายการ

ผู้ที่ได้รับผลกระทบ

ผู้ที่ใช้แทร็กเสียงหลายแทร็กหรือแทร็กวิดีโอหลายแทร็กใน PeerConnection รายการเดียวจะต้องทดสอบผลิตภัณฑ์ภายใต้แผนแบบรวมและปรับเปลี่ยนตามความเหมาะสม ในกรณีที่มีการเรียกใช้จากอุปกรณ์ปลายทางที่ไม่ใช่ Chrome และ Chrome ตอบกลับ รูปแบบของข้อเสนออาจต้องเปลี่ยนแปลง ผู้ที่ทำการวิเคราะห์ SDP อย่างละเอียดและสนใจแอตทริบิวต์ msid จะต้องตรวจสอบว่าโค้ดการแยกวิเคราะห์ของตนรองรับรูปแบบใหม่ (a=msid) รายละเอียดว่าจำเป็นต้องมีการเปลี่ยนแปลงหรือไม่ และวิธีเปลี่ยนแปลงแอปจะขึ้นอยู่กับแอปพลิเคชัน เราคิดว่าแอปพลิเคชันเกือบทั้งหมดที่ใช้เฉพาะเสียงและแทร็กวิดีโอเพียงแทร็กเดียวต่อ RTCPeerConnection จะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงนี้

ฟีเจอร์ API

เราจะเพิ่มฟีเจอร์ใหม่ 1 รายการลงใน RTCConfiguration ของ RTCPeerConnection ดังนี้

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


partial dictionary RTCConfiguration {
   SdpSemantics sdpSemantics;
}

RTCConfiguration สามารถส่งไปยังตัวสร้างของ RTCPeerConnection และข้อเสนอและคำตอบทั้งหมดที่สร้างจะอยู่ในรูปแบบ Unified Plan การเรียก setLocalDescription และ setRemoteDescription จะคาดหวังว่า SDP จะอยู่ในรูปแบบ Unified Plan ด้วย หากอยู่ในรูปแบบ Chrome แบบเดิม ระบบจะไม่สนใจแทร็กเสียงและแทร็กวิดีโอทั้งหมดยกเว้นแทร็กเสียงแรกและแทร็กวิดีโอแรก

นอกจากนี้ยังมีแฟล็กบรรทัดคำสั่ง (–enable-features=RTCUnifiedPlanByDefault ใน Chrome M71 ขึ้นไป, –enable-blink-features=RTCUnifiedPlanByDefault ในเวอร์ชันเก่า) ที่อนุญาตให้ตั้งค่าเริ่มต้นของแฟล็กนี้เป็น "unified-plan"

ระยะต่างๆ

ระยะที่ 1: ติดตั้งใช้งานแผนแบบรวม

ในระยะนี้ แผนแบบรวมได้รับการพัฒนาภายใต้ Flag การทดสอบซึ่งมีให้บริการตั้งแต่ M65 ในระหว่างที่ยังไม่มีระยะที่ 2 เราขอแนะนำให้ทดสอบกับ Chrome Canary ใช้ "–enable-blink-features=RTCUnifiedPlan"

ระยะที่ 2: เปิดตัวฟีเจอร์ API แก่ผู้ใช้ทั่วไป

เปิดตัวใน M69 (เบต้าในเดือนสิงหาคม 2018 และเวอร์ชันเสถียรในเดือนกันยายน 2018)

ในระยะนี้ ค่าเริ่มต้นของแฟล็ก sdpSemantics คือ "plan-b" ในระยะที่ 2 ผู้ที่มีการติดตั้งใช้งานซึ่งขึ้นอยู่กับรูปแบบ SDP คาดว่าจะทำการทดสอบเพื่อดูว่าแอปพลิเคชันทำงานได้หรือไม่เมื่อใช้ Unified Plan สำหรับแอปพลิเคชันที่รองรับ Firefox เราคาดว่าการดำเนินการนี้จะง่ายมาก เพียงทำตามขั้นตอนเดียวกับที่ใช้กับ Firefox

คุณเปลี่ยนค่าเริ่มต้นของ Flag sdpSemantics ได้ใน "chrome://flags" โดยมองหาฟีเจอร์ "WebRTC: ใช้ SDP Semantics ของแผนแบบรวมโดยค่าเริ่มต้น"

ระยะที่ 3: เปลี่ยนค่าเริ่มต้น

วันที่สลับเป็น M72 (เบต้าธันวาคม 2018, เวอร์ชันเสถียรมกราคม 2019)

ในระยะนี้ เราได้เปลี่ยนค่าเริ่มต้นของ Flag sdpSemantics เป็น "unified-plan" แอปพลิเคชันที่พบว่าตัวเองต้องการเวลาเพิ่มเติมในการแปลงจะตั้งค่า Flag sdpSemantics เป็น "plan-b" อย่างชัดเจนเพื่อกู้คืนลักษณะการทำงานก่อนหน้า

ระยะที่ 4: เตรียม "แผน B"

ในระยะนี้ การตั้งค่า Flag sdpSemantics เป็น "plan-b" จะส่งผลให้ระบบแสดงข้อยกเว้น ปัญหานี้เกิดขึ้นใน Canary ตั้งแต่ M93 ตั้งแต่ M96 ข้อยกเว้นนี้มีผลกับทุกแชแนล รวมถึงเวอร์ชันเสถียร

ในระหว่างระยะนี้ เรามีช่วงทดลองใช้การเลิกใช้งานที่อนุญาตให้ใช้แผน ข. ได้โดยไม่ต้องมีการยกเว้น แต่ช่วงทดลองใช้ดังกล่าวหยุดทำงานไปเมื่อวันที่ 25 พฤษภาคม 2022

ระยะที่ 5: นำ "แผน B" ออกจาก Chromium

หลังจากช่วงทดลองใช้สิ้นสุดลง ระบบจะนำ Plan B ออกจาก Chrome เมื่อถึงจุดนี้ ระบบจะนำ Flag sdpSemantics ออก การพยายามตั้งค่าเป็น "plan-b" จะไม่ทำให้เกิดข้อยกเว้น แต่จะไม่มีผลใดๆ อีกต่อไป

แผน ข. จะยังคงใช้งานได้อยู่หลัง Flag พิเศษหรือบิลด์พิเศษ แต่การนําโค้ดออกทั้งหมดจะเกิดขึ้นในช่วงครึ่งหลังของปี 2022

ระยะที่ 6: เลิกใช้งานและนำ "แผน ข" ออกจาก WebRTC

แผน ข. ได้รับการระบุว่าเลิกใช้งานแล้วใน WebRTC แต่ยังคงใช้งานได้อยู่ การนําออกควรเกิดขึ้นในปี 2023

การเตรียมใบสมัครสำหรับแพ็กเกจแบบรวม

ดูข้อมูลโดยละเอียดเกี่ยวกับความแตกต่างระหว่างแพ็กเกจ ข. กับแพ็กเกจแบบรวม และวิธีที่คุณอาจต้องอัปเดตแอปพลิเคชันเพื่อเตรียมพร้อมสําหรับแพ็กเกจแบบรวมได้ในคู่มือการเปลี่ยนผ่าน "แพ็กเกจแบบรวม" (JavaScript)

สําหรับแอปพลิเคชันเนทีฟ (C++) โปรดดูเอกสาร"การย้ายข้อมูลแอปพลิเคชันเนทีฟ/อุปกรณ์เคลื่อนที่ไปยังแพ็กเกจแบบรวม"