قالب یکپارچه SDP - طرح انتقال

Google در حال برنامه ریزی برای انتقال پیاده سازی WebRTC کروم از قالب SDP فعلی (به نام "Plan B") به یک قالب منطبق با استانداردها ("Unified Plan"، draft-ietf-rtcweb-jsep) در چند سه ماهه آینده است.

این طرح شامل 5 مرحله و یک ویژگی API گذرا است.

چه کسانی تحت تاثیر قرار خواهند گرفت

افرادی که از چندین تراک صوتی یا چند آهنگ ویدیویی در یک PeerConnection استفاده می کنند، باید محصول خود را تحت Unified Plan آزمایش کنند و مطابق با آن سازگار شوند. در مواردی که تماسی از نقطه پایانی غیر از Chrome آغاز شده و کروم به آن پاسخ داده است، ممکن است شکل پیشنهاد تغییر کند. افرادی که تجزیه دقیق SDP را انجام می دهند و به ویژگی های msid اهمیت می دهند، باید بررسی کنند که کد تجزیه آنها فرمت جدید (a=msid) را انتخاب می کند. جزئیات در مورد نیاز به تغییرات و نحوه نیاز به تغییر برنامه ها به برنامه بستگی دارد. ما فکر می‌کنیم که تقریباً همه برنامه‌هایی که تنها از یک آهنگ صوتی و یک آهنگ ویدیویی در هر RTCPeerConnection استفاده می‌کنند تحت تأثیر این تغییر قرار نخواهند گرفت.

ویژگی API

ما یک ویژگی جدید را به پیکربندی RTCPeerConnection اضافه می کنیم:

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


partial dictionary RTCConfiguration {
   SdpSemantics sdpSemantics;
}

پیکربندی RTCC را می توان به سازنده یک RTCPeerConnection منتقل کرد و همه پیشنهادات و پاسخ های ساخته شده در قالب Unified Plan خواهند بود. فراخوانی به setLocalDescription و setRemoteDescription همچنین انتظار دارد که SDP در قالب Unified Plan باشد. اگر در قالب کروم قدیمی باشد، همه به جز اولین تراک صوتی و اولین تراک ویدیویی نادیده گرفته می شوند.

همچنین یک پرچم خط فرمان (–enable-features=RTCUnifiedPlanByDefault در کروم 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 در حال استفاده است کار می‌کنند یا خیر. برای برنامه‌هایی که از فایرفاکس پشتیبانی می‌کنند، انتظار داریم این یک تمرین بسیار ساده باشد: همان کاری را که برای فایرفاکس انجام می‌دهید انجام دهید.

مقدار پیش فرض پرچم sdpSemantics را می توان در "chrome://flags" تغییر داد. به دنبال ویژگی "WebRTC: استفاده از Unified Plan SDP Semantics به طور پیش فرض" باشید.

فاز 3: پیش فرض را تغییر دهید

تاریخ سوئیچ M72 (بتا دسامبر 2018، ژانویه 2019 پایدار) بود.

در این مرحله، مقدار پیش‌فرض پرچم sdpSemantics را به “unified-plan” تغییر دادیم. برنامه هایی که متوجه شدند برای تبدیل به زمان بیشتری نیاز دارند، پرچم sdpSemantics را به صراحت روی "plan-b" تنظیم کردند تا رفتار قبلی را بازیابی کنند.

مرحله 4: پرتاب "Plan B" را انجام دهید

در این مرحله، تنظیم پرچم sdpSemantics روی "plan-b" منجر به ایجاد یک استثنا می شود. از M93 در قناری پرتاب شده است. از M96، استثناء پرتاب در همه کانال ها، از جمله Stable بود.

در طول این مرحله، آزمایشی Deprecation در دسترس بود که اجازه استفاده از طرح B را بدون استثناء پرتاب می داد، اما آزمایش در 25 مه 2022 کار خود را متوقف کرد.

فاز 5: «Plan B» را از Chromium حذف کنید

پس از پایان دوره آزمایشی، طرح B از Chrome حذف خواهد شد. در این مرحله، پرچم sdpSemantics حذف خواهد شد. تلاش برای تنظیم آن بر روی "plan-b" استثنایی ایجاد نمی کند، اما دیگر هیچ تاثیری نخواهد داشت.

پلن B هنوز در پشت پرچم‌های خاص یا بیلدهای ویژه موجود است، اما حذف کامل کد در H2، 2022 اتفاق می‌افتد.

فاز 6: منسوخ کردن و حذف "Plan B" از WebRTC

طرح B قبلاً در WebRTC به عنوان منسوخ علامت گذاری شده است، اما هنوز در دسترس است. حذف باید در سال 2023 اتفاق بیفتد.

آماده سازی درخواست شما برای طرح یکپارچه

برای اطلاعات دقیق درباره تفاوت‌های پلن B و طرح یکپارچه و اینکه چگونه برنامه شما ممکن است برای آماده‌سازی طرح یکپارچه نیاز به به‌روزرسانی داشته باشد، به راهنمای انتقال «طرح یکپارچه» (جاوا اسکریپت) مراجعه کنید.

برای برنامه‌های بومی (C++)، به سند «مهاجرت برنامه‌های بومی/موبایل به برنامه واحد» مراجعه کنید.