इस प्रोजेक्ट के बारे में

मीडिया ट्रांसपोर्ट लाइब्रेरी (MTL) एक ओपन-सोर्स, सॉफ्टवेयर-आधारित मीडिया ट्रांसपोर्ट स्टैक है जिसका लक्ष्य IP नेटवर्क पर मीडिया डेटा का उच्च-थ्रूपुट, कम-विलंबता संचरण और अभिग्रहण है। इसमें प्रबंधित IP नेटवर्क पर पेशेवर मीडिया के लिए SMPTE ST 2110 सूट का अंतर्निहित कार्यान्वयन शामिल है, और इसे विशेष उपकरणों के बजाय वाणिज्यिक ऑफ-द-शेल्फ (COTS) हार्डवेयर पर चलाने के लिए डिज़ाइन किया गया है। दृष्टिकोण और आर्किटेक्चर MTL सामान्य CPU प्लेटफॉर्म और रेट-लिमिटिंग क्षमताओं वाले पारंपरिक NIC का लाभ उठाकर सॉफ्टवेयर में ST 2110 स्ट्रीम की सख्त समय आवश्यकताओं को संबोधित करता है। यह मेमोरी और कोर प्रबंधन के लिए DPDK की Environment Abstraction Layer पर बनता है, और एक वर्चुअल डेटा पाथ बैकएंड लेयर पेश करता है जो ऊपरी परतों को एक एकीकृत पैकेट TX/RX इंटरफ़ेस प्रदान करता है। तीन बैकएंड प्रकार समर्थित हैं: - DPDK Poll-Mode Drivers (PMDs), जो सीधे हार्डवेयर एक्सेस के लिए कर्नेल नेटवर्किंग स्टैक को बायपास करते हैं और उपयोगकर्ता/कर्नेल कॉन्टेक्स्ट स्विच और IRQ हैंडलिंग से बचते हैं। - नेटिव Linux कर्नेल नेटवर्क सॉकेट स्टैक, व्यापक कर्नेल पारिस्थितिकी तंत्र के साथ संगतता के लिए। - eBPF फ़िल्टर के साथ AF_XDP, प्रदर्शन को कर्नेल एकीकरण के साथ संतुलित करता है। CPU उपयोग को अनुकूलित करने और पैकेट प्रोसेसिंग इकाइयों और एक्सेलेरेटर के साथ एकीकृत करने के लिए टास्कलेट-आधारित एसिंक्रोनस शेड्यूलर का उपयोग किया जाता है। पैकेट पेसिंग कई एल्गोरिदम का समर्थन करती है, जिनमें RL (Rate Limit) शामिल है, जो आंशिक रूप से हार्डवेयर-ऑफलोडेड है, और TSC (Timestamp Counter), जो पूरी तरह से सॉफ्टवेयर-आधारित है। बिग-एंडियन/लिटिल-एंडियन रंग अंतरिक्ष रूपांतरण के लिए SIMD का उपयोग किया जाता है, साथ ही DMA और प्लगइन इंटरफेस भी। विशेषताएँ - डेटा पाथ बैकएंड: DPDK PMD, नेटिव कर्नेल सॉकेट, और eBPF फ़िल्टर के साथ AF_XDP। - नॉन-रूट संचालन। - मल्टी-प्रोसेस हैंडलिंग, प्रति प्रोसेस अधिकतम 8 NIC के साथ। - SR-IOV के माध्यम से वर्चुअलाइज़ेशन समर्थन। - हार्डवेयर टाइमस्टैम्प ऑफलोड के साथ अंतर्निहित PTP प्रोटोकॉल। - FFmpeg प्लगइन, OBS (Open Broadcaster Software) प्लगइन, और Intel Media SDK समर्थन। - नेटिव C/C++ API के साथ Python और Rust बाइंडिंग। ST 2110 क्षमताएँ - नैरो और वाइड पेसिंग, सॉफ्टवेयर समाधान पर नैरो पेसिंग के लिए प्रकाशित अनुपालन रिपोर्ट के साथ। - ST 2110-10, -20, -21, -30, -40 और ST 2022-7। - 1080p, 1080i, 720p, 4K और 8K सहित रिज़ॉल्यूशन। - फ्रेम दरें: 120, 119.88, 100, 60, 59.94, 50, 30, 29.97, 25, 24 और 23.98। - ST 2110-20 में सूचीबद्ध सभी वीडियो प्रारूप, जिनमें YUV 4:2:2 10-बिट शामिल है। - बिग-एंडियन और लिटिल-एंडियन के बीच SIMD रंग अंतरिक्ष कनवर्टर। - एनकोडर/डिकोडर प्लगइन इंटरफ़ेस के साथ ST 2110-22। - RTP पासथ्रू इंटरफ़ेस के माध्यम से ST 2022-6। - हार्डवेयर RX टाइमस्टैम्प ऑफलोड के साथ ST 2110-20 RX टाइमिंग अनुपालन पार्सर। हार्डवेयर नोट्स ईथरनेट समर्थन चुने गए बैकएंड पर निर्भर करता है। DPDK PMD के लिए, समर्थित हार्डवेयर सूची DPDK प्रोजेक्ट द्वारा अनुरक्षित की जाती है। यदि कोई NIC DPDK द्वारा समर्थित नहीं है, तो कर्नेल सॉकेट ट्रांसपोर्ट फ़ॉलबैक के रूप में उपलब्ध है। प्रोजेक्ट बताता है कि दैनिक विकास और सत्यापन Intel E810 और E830 श्रृंखला कार्ड पर केंद्रित है, और अन्य NIC पर व्यवहार की गारंटी नहीं है। नैरो TX पेसिंग केवल Intel E810/E830 पर DPDK PMD के साथ रेट-लिमिट सुविधा के कारण समर्थित है; अन्य कॉन्फ़िगरेशन को पेसिंग स्रोत के रूप में TSC का उपयोग करना चाहिए, जो केवल वाइड पेसिंग प्रदान करता है। बिल्ड और रन DPDK, लाइब्रेरी और नमूना अनुप्रयोगों के लिए बिल्ड निर्देश प्रोजेक्ट की बिल्ड गाइड में प्रदान किए गए हैं, साथ में एक अलग Windows बिल्ड गाइड भी है। DPDK PMD बैकएंड पर आधारित ST 2110 डेमो पाइपलाइन चलाना रन गाइड में शामिल है, साथ में Windows, Linux और VF पासथ्रू का उपयोग करने वाले Windows गेस्ट VM, AWS क्लाउड वातावरण, और कर्नेल सॉकेट पाथ के लिए अतिरिक्त गाइड हैं। एक फ़ज़िंग गाइड भी शामिल है। विकास और योगदान अनुप्रयोगों को डिज़ाइन गाइड में वर्णित ST 2110 API के विरुद्ध विकसित किया जा सकता है। रिपॉज़िटरी फोर्किंग, ब्रांचिंग और पुल रिक्वेस्ट पर आधारित योगदान वर्कफ़्लो का दस्तावेज़ीकरण करती है, और एक एकल checkpatch स्क्रिप्ट प्रदान करती है जो pre-commit के माध्यम से पिन किए गए टूलिंग को इंस्टॉल करती है, कमिट पर जाँच चलाती है, और सभी ट्रैक किए गए फ़ाइलों को सत्यापित करती है। फ़ॉर्मेटिंग ऑटोफ़िक्स एक साथी स्क्रिप्ट के साथ लागू किए जाते हैं। कोडिंग स्टैंडर्ड दस्तावेज़ नियमों और प्रत्येक जाँच कहाँ चलती है, के लिए संदर्भ है। पुल रिक्वेस्ट खोलने से पहले, योगदानकर्ताओं से कहा जाता है कि वे फ़ॉर्मेटिंग और जाँच तब तक चलाएँ जब तक साफ़ न हो जाए, बिल्ड और यूनिट टेस्ट पास हों, परिवर्तन को पकड़ सकने वाले सबसे सस्ते स्तर पर एक टेस्ट जोड़ें (यूनिट, VF के साथ इंटीग्रेशन, या एंड-टू-एंड स्वीकृति), और Conventional Commits-शैली संदेशों का उपयोग करें। प्रोजेक्ट स्थिति और लाइसेंसिंग प्रोजेक्ट बताता है कि मुख्य ब्रांच पर स्रोत कोड और सुविधाएँ परीक्षण या मूल्यांकन के लिए हैं और उत्पादन के लिए तैयार नहीं हैं, मूल्यांकन किए गए कोड को रिलीज़ संस्करण द्वारा टैग किया गया है। यह BSD 3-Clause के अंतर्गत लाइसेंस प्राप्त है और इसमें OpenSSF Scorecard और Best Practices बैज, साथ ही बेस बिल्ड, Coverity, linter, Trivy और निर्भरता समीक्षा के लिए CI बैज हैं। संबंधित प्रकाशनों में एक MHV'23 पेपर, एक Intel व्हाइटपेपर, और एक 2022 DPDK Userspace Summit टॉक शामिल है।