Google מתכננת להעביר את ההטמעה של WebRTC ב-Chrome מהפורמט הנוכחי של SDP (שנקרא 'תוכנית ב') לפורמט תואם לתקנים ('תוכנית מאוחדת', draft-ietf-rtcweb-jsep) במהלך הרבעונים הקרובים.
התוכנית כוללת 5 שלבים ותכונה אחת של ממשק API זמני.
מי יושפע
אנשים שמשתמשים בכמה טראקים של אודיו או בכמה טראקים של וידאו ב-PeerConnection יחיד יצטרכו לבדוק את המוצר שלהם במסגרת Unified Plan ולהתאים אותו בהתאם. במקרה שבו קריאה מתבצעת מנקודת קצה שאינה Chrome ותשובה מתקבלת מ-Chrome, יכול להיות שיהיה צורך לשנות את צורת ההצעה. אנשים שמבצעים ניתוח מפורט של SDP וחשוב להם לדעת מהם מאפייני ה-msid יצטרכו לוודא שקוד הניתוח שלהם מזהה את הפורמט החדש (a=msid). הפרטים לגבי הצורך בשינויים והאופן שבו צריך לשנות את האפליקציות תלויים באפליקציה. אנחנו סבורים שרוב האפליקציות שמשתמשות רק בטראק אודיו אחד ובטראק וידאו אחד לכל RTCPeerConnection לא יושפעו מהשינוי.
התכונה של ה-API
אנחנו מוסיפים תכונה חדשה אחת ל-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: הטמעת תוכנית מאוחדת
בשלב הזה, התכנון של Unified Plan נעשה באמצעות דגל ניסוי שזמין מאז גרסה 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: שימוש ב-Unified Plan SDP Semantics כברירת מחדל'.
שלב 3: שינוי ברירת המחדל
התאריך שבו בוצע המעבר היה M72 (גרסת בטא בדצמבר 2018, גרסה יציבה בינואר 2019).
בשלב הזה שינינו את ערך ברירת המחדל של הדגל sdpSemantics ל-unified-plan. אפליקציות שהתברר להן שהן זקוקות ליותר זמן כדי לבצע את ההמרה הגדירו את הדגל sdpSemantics באופן מפורש ל-plan-b כדי לשחזר את ההתנהגות הקודמת.
שלב 4: ביצוע 'תוכנית ב'
בשלב הזה, הגדרת הדגל sdpSemantics ל-'plan-b' גורמת להשלכת חריגה. הבעיה הזו מתרחשת ב-Canary מאז M93. החל מגרסה M96, החריג הופיע בכל הערוצים, כולל Stable.
במהלך השלב הזה, הייתה זמינה תקופת ניסיון להוצאה משימוש שאפשרה להשתמש בתוכנית ב'בלי להפעיל חריגה', אבל תקופת הניסיון הפסיקה לפעול ב-25 במאי 2022.
שלב 5: הסרת 'תוכנית ב' מ-Chromium
בסיום תקופת הניסיון, תוכנית ב' תוסר מ-Chrome. בשלב הזה, הדגל sdpSemantics יוסר. ניסיון להגדיר אותו כ-"plan-b" לא יגרום להשלכת חריגה, אבל לא תהיה לו יותר השפעה.
תוכנית ב' עדיין זמינה באמצעות דגלים מיוחדים או גרסאות build מיוחדות, אבל ההסרה המלאה של הקוד תתבצע במחצית השנייה של שנת 2022.
שלב 6: הוצאה משימוש והסרה של 'תוכנית ב' מ-WebRTC
תוכנית ב' כבר סומנה כתוכנית שהוצאה משימוש ב-WebRTC, אבל היא עדיין זמינה. ההסרה אמורה להתבצע בשנת 2023.
הכנת האפליקציה לתוכנית המאוחדת
למידע מפורט על ההבדלים בין תוכנית ב' לבין תוכנית Unified, ועל האופן שבו יכול להיות שתצטרכו לעדכן את האפליקציה לקראת המעבר לתוכנית Unified, קראו את המדריך למעבר לתוכנית Unified (JavaScript).
לאפליקציות מקוריות (C++), אפשר לעיין במסמך העברת אפליקציה מקורית או לנייד לתוכנית המאוחדת.