SDV Media: Use cameras

SDV Media, Linux V4L2 API के ज़रिए वीडियो कैमरों का इस्तेमाल करने की सुविधा देता है. V4L2 एपीआई का सीधे तौर पर इस्तेमाल किया जा सकता है. हालांकि, ऐप्लिकेशन डेवलपर को यूज़रस्पेस हेल्पर लाइब्रेरी का इस्तेमाल करने का सुझाव दिया जाता है. उदाहरण के लिए:

  • Rust के लिए libv4l-rs क्रेट (सुझाया गया),
  • C++ के लिए libv4l2. यह लाइब्रेरी, SDVMedia में डिफ़ॉल्ट रूप से नहीं दी जाती है.

बफ़र करने के लिए इस्तेमाल किए जा सकने वाले मोड

अपस्ट्रीम V4L2 मेंटेन करने वालों के मुताबिक, USERPTR बफ़र मोड को अब इस्तेमाल नहीं किया जा सकता. इसलिए, SDV Media इसे सपोर्ट नहीं करता. इसके बजाय, MMAP या DMABUF मोड का इस्तेमाल करें.

कैमरों का इस्तेमाल करना

हाइपरवाइज़र से कनेक्ट किए गए हर वीडियो डिवाइस (कैमरे, एनकोडर, और डिकोडर) को /dev/videoN नाम के अलग डिवाइस के तौर पर दिखाया जाएगा. इसमें N की संख्यात्मक वैल्यू होगी.

ऐप्लिकेशन, वीडियो डिवाइसों की क्षमताओं के बारे में जानने के लिए VIDIOC_QUERYCAP ioctl का इस्तेमाल कर सकते हैं. कैमरा डिवाइस, V4L2_CAP_VIDEO_CAPTURE या V4L2_CAP_VIDEO_CAPTURE_MPLANE के लिए सहायता की जानकारी देते हैं.

वीडियो कैप्चर करने के फ़्लो के बारे में जानकारी के लिए, Video for Linux API: Input/Output देखें.

कोड के इन सैंपल पर ध्यान दें:

वीडियो लूपबैक डिवाइसों को कॉन्फ़िगर करना

जांच के लिए, SDV Media v4l2loopback कर्नल मॉड्यूल उपलब्ध कराता है. इसका इस्तेमाल, गेस्ट वीएम में पूरी तरह से वीडियो कैमरों का इम्यूलेशन करने के लिए किया जा सकता है. डिफ़ॉल्ट रूप से, यह एक वर्चुअल कैमरा डिवाइस शुरू करता है. ज़्यादा पैरामीटर जोड़ने के लिए, कर्नल कमांड लाइन के ज़रिए मॉड्यूल को कॉन्फ़िगरेशन पैरामीटर पास करें. उदाहरण के लिए, चार डिवाइसों को शुरू करने के लिए, यह जोड़ें:

v4l2loopback.devices=4

उपलब्ध मॉड्यूल विकल्पों की पूरी सूची देखने के लिए, Android कर्नल रिपॉज़िटरी में v4l2loopback README या मॉड्यूल सोर्स देखें.