यूनिफ़ाइड प्लान एसडीपी फ़ॉर्मैट - ट्रांज़िशन प्लान

Google, Chrome में WebRTC को लागू करने के लिए, मौजूदा एसडीपी फ़ॉर्मैट (“प्लान B”) से स्टैंडर्ड के मुताबिक फ़ॉर्मैट (“यूनिफ़ाइड प्लान”, ड्राफ़्ट-ietf-rtcweb-jsep) पर अगले कुछ क्वार्टर में ट्रांज़िशन करने की योजना बना रहा है.

इस प्लान में पांच चरण और एक ट्रांज़िशन एपीआई सुविधा शामिल है.

इसका असर किन पर पड़ेगा

जो लोग एक ही PeerConnection पर कई ऑडियो ट्रैक या कई वीडियो ट्रैक का इस्तेमाल करते हैं उन्हें यूनिफ़ाइड प्लान के तहत अपने प्रॉडक्ट की जांच करनी होगी और उसी हिसाब से बदलाव करना होगा. अगर कोई कॉल किसी ऐसे एंडपॉइंट से शुरू किया जाता है जो Chrome नहीं है और Chrome से उसका जवाब दिया जाता है, तो ऑफ़र का फ़ॉर्म बदलना पड़ सकता है. एसडीपी को बारीकी से पार्स करने वाले और msid एट्रिब्यूट का ध्यान रखने वाले लोगों को यह देखना होगा कि उनके पार्सिंग कोड में नया फ़ॉर्मैट (a=msid) शामिल है या नहीं. ऐप्लिकेशन में बदलाव करने की ज़रूरत होगी या नहीं और अगर ज़रूरत होगी, तो ऐप्लिकेशन में किस तरह के बदलाव करने होंगे, यह ऐप्लिकेशन पर निर्भर करता है. हमें लगता है कि इस बदलाव का असर, उन सभी ऐप्लिकेशन पर नहीं पड़ेगा जो हर RTCPeerConnection के लिए सिर्फ़ एक ऑडियो और एक वीडियो ट्रैक का इस्तेमाल करते हैं.

एपीआई की सुविधा

हम RTCPeerConnection के RTCConfiguration में एक नई सुविधा जोड़ रहे हैं:

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


partial dictionary RTCConfiguration {
   SdpSemantics sdpSemantics;
}

RTCConfiguration को RTCPeerConnection के कन्स्ट्रक्टर में पास किया जा सकता है. साथ ही, बनाए गए सभी ऑफ़र और जवाब, यूनिफ़ाइड प्लान फ़ॉर्मैट में होंगे. setLocalDescription और setRemoteDescription के कॉल के लिए भी, एसडीपी को यूनिफ़ाइड प्लान फ़ॉर्मैट में होना चाहिए. अगर यह लेगसी Chrome फ़ॉर्मैट में है, तो पहले ऑडियो ट्रैक और पहले वीडियो ट्रैक को छोड़कर सभी ट्रैक को अनदेखा कर दिया जाएगा.

एक कमांड-लाइन फ़्लैग भी है (Chrome M71 और इसके बाद के वर्शन में –enable-features=RTCUnifiedPlanByDefault, और पुराने वर्शन में –enable-blink-features=RTCUnifiedPlanByDefault), जिसकी मदद से इस फ़्लैग की डिफ़ॉल्ट वैल्यू को “unified-plan” पर सेट किया जा सकता है.

चरण

पहला चरण: यूनिफ़ाइड प्लान लागू करना

इस फ़ेज़ में, यूनिफ़ाइड प्लान को एक्सपेरिमेंट फ़्लैग के ज़रिए डेवलप किया जा रहा था. यह फ़्लैग, M65 वर्शन से उपलब्ध है. दूसरे चरण तक, “–enable-blink-features=RTCUnifiedPlan” का इस्तेमाल करके, Chrome Canary के साथ टेस्ट करना सबसे सही था.

दूसरा चरण: एपीआई की सुविधा को सामान्य तौर पर उपलब्ध कराना

M69 में रिलीज़ किया गया (बीटा वर्शन अगस्त 2018, स्टेबल वर्शन सितंबर 2018)

इस फ़ेज़ में, sdpSemantics फ़्लैग की डिफ़ॉल्ट वैल्यू “plan-b” थी. दूसरे फ़ेज़ में, जिन लोगों के ऐप्लिकेशन एसडीपी फ़ॉर्मैट पर निर्भर थे उनसे टेस्ट करने के लिए कहा गया था, ताकि यह पता लगाया जा सके कि यूनिफ़ाइड प्लान के इस्तेमाल के दौरान उनके ऐप्लिकेशन काम करते हैं या नहीं. Firefox के साथ काम करने वाले ऐप्लिकेशन के लिए, हमें उम्मीद है कि यह बहुत आसान होगा: बस वही करें जो Firefox के लिए किया जाता है.

sdpSemantics फ़्लैग की डिफ़ॉल्ट वैल्यू को “chrome://flags” में बदला जा सकता है. इसके लिए, “WebRTC: डिफ़ॉल्ट रूप से यूनिफ़ाइड प्लान एसडीपी सेमेटिक्स का इस्तेमाल करें” सुविधा देखें.

तीसरा चरण: डिफ़ॉल्ट भाषा बदलना

स्विच करने की तारीख M72 थी (बीटा वर्शन दिसंबर 2018, स्टेबल वर्शन जनवरी 2019).

इस चरण में, हमने sdpSemantics फ़्लैग की डिफ़ॉल्ट वैल्यू को “यूनिफ़ाइड-प्लान” में बदल दिया है. जिन ऐप्लिकेशन को पता चला कि उन्हें बदलाव करने के लिए ज़्यादा समय चाहिए, वे पिछले व्यवहार को वापस पाने के लिए, sdpSemantics फ़्लैग को साफ़ तौर पर “प्लान-बी” पर सेट कर देते हैं.

चौथा चरण: “प्लान B” को लागू करना

इस चरण में, sdpSemantics फ़्लैग को "plan-b" पर सेट करने पर, अपवाद दिखता है. यह समस्या M93 से Canary में आ रही है. M96 वर्शन में, अपवाद सभी चैनलों में दिख रहा था. इनमें स्टेबल चैनल भी शामिल था.

इस दौरान, बंद होने से पहले आज़माने की सुविधा उपलब्ध थी. इसकी मदद से, अपवाद मिलने के बिना प्लान B का इस्तेमाल किया जा सकता था. हालांकि, यह सुविधा 25 मई, 2022 को बंद हो गई.

पांचवां चरण: Chromium से “प्लान B” हटाना

मुफ़्त में आज़माने की अवधि खत्म होने के बाद, Chrome से प्लान B हटा दिया जाएगा. इस स्थिति में, sdpSemantics फ़्लैग हटा दिया जाएगा. इसे "plan-b" पर सेट करने की कोशिश करने पर, कोई अपवाद नहीं दिखेगा. हालांकि, इसका अब कोई असर नहीं होगा.

प्लान B अब भी खास फ़्लैग या खास बिल्ड के पीछे उपलब्ध है. हालांकि, साल 2022 की दूसरी छमाही में कोड को पूरी तरह हटा दिया जाएगा.

छठा चरण: WebRTC से ”प्लान B” को हटाना और उसे बंद करना

WebRTC में, प्लान B को पहले ही 'इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया जा चुका है. हालांकि, यह अब भी उपलब्ध है. यह सुविधा 2023 में हट जाएगी.

यूनिफ़ाइड प्लान के लिए अपने ऐप्लिकेशन को तैयार करना

प्लान B और यूनिफ़ाइड प्लान के बीच के अंतर के बारे में ज़्यादा जानकारी पाने के लिए, “यूनिफ़ाइड प्लान” पर ट्रांज़िशन करने से जुड़ी गाइड (JavaScript) देखें. इससे आपको यह भी पता चलेगा कि यूनिफ़ाइड प्लान के लिए, आपके ऐप्लिकेशन को कैसे अपडेट करना पड़ सकता है

नेटिव (C++) ऐप्लिकेशन के लिए, “अपने नेटिव/मोबाइल ऐप्लिकेशन को यूनिफ़ाइड प्लान पर माइग्रेट करना” दस्तावेज़ देखें