Google Meet हार्डवेयर यूएसबी वीडियो क्लास एक्सटेंशन यूनिट एपीआई

इस दस्तावेज़ में, काम करने वाले यूएसबी वीडियो क्लास एक्सटेंशन यूनिट (XU) एपीआई के बारे में बताया गया है. इनका इस्तेमाल, Google Meet के कॉन्फ़्रेंस सिस्टम में बेहतर कैमरे की सुविधाओं को चालू करने के लिए किया जाता है. इस स्पेसिफ़िकेशन को बनाने का मकसद, इन सुविधाओं को चालू करने के लिए, काम करने के तरीकों पर असर डालना है. साथ ही, हमारे पार्टनर के लिए, बेहतर तरीके से स्केल करने और टेस्ट करने की सुविधा देना है.

इस दस्तावेज़ में हुए नए बदलावों के बारे में जानने के लिए, रिलीज़ के नोट पर जाएं.

टेस्ट करने की सुविधा

पार्टनर इस स्पेसिफ़िकेशन का पालन कर रहे हैं या नहीं, इसकी पुष्टि करने में मदद करने के लिए, हम डेवलपर मोड में सेट किए गए Chromebox-for-Meetings डिवाइसों में टेस्ट करने की सुविधा उपलब्ध कराते हैं. फ़ाइल सिस्टम में लिखने की सुविधा चालू करें. /etc/chrome_dev.conf में ये लाइनें जोड़ें:

--enable-logging
--log-level=0

डिवाइस को रीस्टार्ट करें, कैमरे और यूएसबी कीबोर्ड को कनेक्ट करें, Ctrl-Alt-X दबाएं. इसके बाद, चालू कैमरे के स्पेसिफ़िकेशन का पालन किया जाएगा और /home/chronos/user/log/chrome में लॉग किया जाएगा.

लिटल-इंडियन कॉन्वेंशन

यूएसबी, लिटल-एंडियन स्टैंडर्ड है. इस दस्तावेज़ में:

  • कई बाइट वाले नंबर, बिग-एंडियन में दिखते हैं और लिटल-एंडियन में ट्रांसमिट किए जाते हैं.
  • बाइट ऐरे, लिटल-इंडियन मेमोरी लेआउट में होते हैं.

उदाहरण के लिए, 0x12345678 और [0x78, 0x56, 0x34, 0x12] एक ही हैं.

एक्सटेंशन यूनिट का जीयूआईडी

Meet XU कंट्रोल स्पेसिफ़िकेशन के साथ काम करने वाली एक्सटेंशन यूनिट को इस GUID का इस्तेमाल करना होगा.

एक्सटेंशन यूनिट GUID
पेरिफ़रल कंट्रोल XU {74D7E924-49C9-4A45-98A3-8A9F60061E83}

पेरिफ़रल कंट्रोल XU सिलेक्टर

ये, तय किए गए पेरिफ़रल कंट्रोल XU सिलेक्टर हैं.

कंट्रोल सिलेक्टर मान
GOOGXU_FRAME_STRATEGY 0x01
GOOGXU_REFRAME 0x02
GOOGXU_OCCUPANCY_COUNTING_TOGGLE 0x03
GOOGXU_OCCUPANCY_COUNTING_READ 0x04
GOOGXU_STATUS_INFO 0x05
GOOGXU_STATUS_RESET 0x06
GOOGXU_PRESETS 0x07
GOOGXU_PAN_TILT_ABSOLUTE 0x08
GOOGXU_PAN_TILT_RELATIVE 0x09
GOOGXU_SATELLITE_INFO 0x0A

कंट्रोल के अनुरोध का टाइप

कंट्रोल अनुरोध के टाइप, UVC 1.5 क्लास स्पेसिफ़िकेशन के चौथे चैप्टर: क्लास के हिसाब से अनुरोध में बताए गए हैं.

कार्रवाई यूवीसी कंट्रोल
GET GET_CUR, GET_MIN, GET_MAX, GET_RES, GET_LEN, GET_INFO, GET_DEF
SET SET_CUR

कैमरे के मोड

कैमरा मोड का इस्तेमाल, मीटिंग रूम में मौजूद लोगों को फ़्रेम करने के लिए किया जाता है. ये मोड tuple इनमें से किसी एक के तौर पर काम करते हैं:

  • रणनीति (कैमरा व्यू)
  • बायस (स्पीकर या रूम)
  • फ़ीड (एक या एक से ज़्यादा स्ट्रीम)

हर डाइमेंशन में, नीचे दिए गए सेक्शन में बताई गई वैल्यू हो सकती हैं.

ऑटो-फ़्रेमिंग की रणनीति

ऑटोमैटिक फ़्रेमिंग के सभी मोड में, मैन्युअल पैन, झुकाव, और ज़ूम करने की सुविधा बंद रहती है. हालांकि, "कोई नहीं" मोड में यह सुविधा काम करती है.

सुविधा ब्यौरा
कोई नहीं कैमरा, फ़्रेमिंग की सभी बेहतर सुविधाओं को बंद कर देता है. साथ ही, क्लाइंट को PTZ वैल्यू को आसानी से कंट्रोल करने की अनुमति देता है.
ध्यान दें: फ़्रेमिंग की इस रणनीति को सेट करने पर, कैमरा अपनी मौजूदा पैन, झुकने, और ज़ूम करने की पोज़िशन में बना रहता है.
लगातार फ़्रेम में रखने की सुविधा (सीएज़) फ़्रेमिंग बायस के आधार पर, कैमरा कमरे में मौजूद लोगों को लगातार ट्रैक करता है.
स्प्लिट फ़्रेम कैमरा ज़रूरत के हिसाब से वीडियो व्यू बनाता है. फ़ीड को अपने-आप फ़्रेम करने के विकल्प के आधार पर, यह उन्हें एक ही स्ट्रीम में टाइल में जोड़ता है या हर व्यू के लिए अलग-अलग वीडियो स्ट्रीम बनाता है.
डाइनैमिक व्यू एक या उससे ज़्यादा कैमरे, कमरे का सबसे अच्छा व्यू देने की कोशिश करते हैं. यह तय किया जा सकता है कि एक से ज़्यादा फ़ीड को एक में जोड़ना है या नहीं या मौजूदा रूम का "दिलचस्प" व्यू दिखाना है.
इस व्यू का मकसद, कॉल में शामिल सभी लोगों को एक जैसा व्यू देना है.
वेंडर की पसंद के मुताबिक कैमरा सिस्टम, कमरे का सबसे अच्छा व्यू तय करने के लिए अपने लॉजिक का इस्तेमाल करता है. फ़्रेमिंग की बुनियादी रणनीति में, बिना किसी सूचना के बदलाव किए जा सकते हैं. उदाहरण के लिए, अगर रूम में मौजूद लोगों की संख्या में बदलाव होता है या कैमरा "ज़्यादा अहम जानकारी देने वाले प्रज़ेंटर" और "साथ मिलकर काम करने" वाली मीटिंग के बीच का अंतर पता लगा सकता है, तो सिस्टम इस मोड में फ़्रेमिंग की रणनीति को अपने हिसाब से बदल सकता है. इस मोड में, getCur को कॉल करने पर VENDOR_PREFERRED दिखना चाहिए, न कि सिस्टम से चुना गया फ़्रेमिंग मोड.

ऑटो-फ़्रेमिंग में पक्षपात

सुविधा ब्यौरा
हाई-स्टेक प्रेज़ेंटर (स्पीकर ट्रैकिंग) कैमरा, कमरे में बोलने वाले व्यक्ति को फ़्रेम में लाने की कोशिश करता है.
इस स्थिति में, कैमरे को प्रज़ेंटर की तरफ़ होना चाहिए. उदाहरण के लिए, बोर्डरूम में सीईओ प्रज़ेंटेशन दे रहा है.
साथ मिलकर काम करना
(रूम ट्रैकिंग)
कैमरा, कमरे में मौजूद सभी लोगों को फ़्रेम में शामिल करने की कोशिश करता है. इस स्थिति में, कैमरे को हर व्यक्ति को एक जैसा दिखाना चाहिए.

ऑटो-फ़्रेमिंग वाले फ़ीड

सुविधा ब्यौरा
सिंगल-स्ट्रीम कैमरा, होस्ट डिवाइस पर एक वीडियो स्ट्रीम भेजता है.
मल्टी-स्ट्रीम
(अभी काम जारी है)
कैमरा, स्ट्रीम को अलग-अलग हिस्सों में बांटता है और होस्ट को भेजने के लिए कई वीडियो स्ट्रीम बनाता है.
ध्यान दें: इस सुविधा की पूरी जानकारी और इसके काम करने के तरीके की समीक्षा बाकी है. इस दस्तावेज़ में बाद में किए गए बदलावों तक, यह सुविधा काम नहीं करेगी.

ऑटो-फ़्रेमिंग मोड की बिटमैप वैल्यू

None की डिफ़ॉल्ट स्थिति को खाली बाइट ऐरे से दिखाया जाता है. इसके अलावा, बाइट ऐरे में मौजूद हर बिट, कैमरे के किसी अलग मोड को दिखाता है. यह मोड, ऑटो-फ़्रेमिंग की रणनीति, ऑटो-फ़्रेमिंग के लिए बायस, और ऑटो-फ़्रेमिंग फ़ीड का खास कॉम्बिनेशन होता है.

ऑटो-फ़्रेमिंग वाले फ़ीड CAZ स्प्लिट-फ़्रेम डाइनैमिक वेंडर की पसंद के मुताबिक ऑटो-फ़्रेमिंग में पक्षपात
सिंगल-स्ट्रीम D1
D2
-
D3
D5
D7
D9 (स्पीकर या रूम) स्पीकर
रूम
मल्टी-स्ट्रीम -
-
-
D4
D6
D8
- स्पीकर
रूम
फ़्रेम मोड फ़्रेम मोड की वैल्यू (सबसे कम अहम बाइट)
None 0x0000
CAZ, Speaker, Single-Stream 0x0001
CAZ, Room, Single-Stream 0x0002
Split-Frame, Room, Single-Stream 0x0004
Split-Frame, Room, Multi-Stream 0x0008
Dynamic, Speaker, Single-Stream 0x0010
Dynamic, Speaker, Multi-Stream 0x0020
Dynamic, Room, Single-Stream 0x0040
Dynamic, Room, Multi-Stream 0x0080
Vendor-preferred, Single-Stream 0x0100

कंट्रोल: GOOGXU_FRAME_STRATEGY

इस कंट्रोल का इस्तेमाल, कैमरे के फ़्रेमिंग मोड को पाने या सेट करने के लिए किया जाता है. ये मोड, ऑटो-फ़्रेमिंग मोड के बिटमैप की वैल्यू में दिए गए हैं. हर मोड को उसके बिटमैप में एक बिट के तौर पर दिखाया जाता है. GET_RES कमांड, आठ बाइट का बिटमास्क दिखाता है. इसमें वैल्यू शून्य (0) या एक (1) होती है. इससे पता चलता है कि डिवाइस पर सुविधा काम करती है या नहीं. उदाहरण के लिए, अगर कोई कैमरा CAZ, Speaker, Single-Stream, Split-Frame, Room, Single-Stream, और Dynamic, Room, Multi-Stream मोड के साथ काम करता है, लेकिन किसी दूसरे मोड के साथ नहीं, तो GET_RES से 0x000000000000000085 (यानी 0b10000101 के बाद सात शून्य बाइट) दिखना चाहिए.

SET_CUR कमांड का इस्तेमाल, बिटमैप भेजने के लिए किया जाता है, ताकि कैमरे को यह बताया जा सके कि सिंगल कैमरा मोड किस तरह का चालू करना है.

कंट्रोल सिलेक्टर 1
कार्रवाई GET / SET
wLength 8
ऑफ़सेट फ़ील्ड साइज़ मान ब्यौरा
0 bActiveMode 8 बिटमैप ऐक्टिव कैमरा मोड सेट करना या उस पर वापस जाना
ध्यान दें:

काम करने वाले अनुरोध टाइप का व्यवहार इस तरह का होता है:

ऑफ़सेट 0 ब्यौरा
GET_CUR ऐक्टिव फ़्रेमिंग कैमरा मोड का इस्तेमाल करना
GET_MIN कैमरे पर निर्भर
GET_MAX कैमरे पर निर्भर
GET_RES कैमरे के काम करने वाले मोड का आठ बाइट लंबा बिटमास्क दिखाता है
GET_LEN 0x0008 लंबाई
GET_INFO 0x0B अपने-आप अपडेट होना / लिखना / पढ़ना
GET_DEF 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00
डिफ़ॉल्ट वैल्यू
SET_CUR ऐक्टिव फ़्रेमिंग कैमरा मोड सेट करना

कंट्रोल: GOOGXU_REFRAME

इस कंट्रोल का इस्तेमाल, एक बार में फ़्रेम करने की सुविधा को ट्रिगर करने के लिए किया जाता है. इसे ओटीएज़ भी कहा जाता है. जब OTAZ ट्रिगर होता है, तो कैमरे का व्यू रूम के सबसे अच्छे हिस्से पर स्नैप हो जाता है. इसके बाद, क्लाइंट को फिर से PTZ वैल्यू कंट्रोल करने की सुविधा मिल जाती है. अगर कैमरे पर एक बार में फ़्रेम तय करने की सुविधा काम नहीं करती, तो कैमरे को यह कंट्रोल नहीं दिखाना चाहिए.

कंट्रोल सिलेक्टर 2
कार्रवाई SET
wLength 1
ऑफ़सेट फ़ील्ड साइज़ मान ब्यौरा
0 bReframe 1 नंबर 0x01 रीफ़्रेम करने का अनुरोध पूरा करना

काम करने वाले अनुरोध टाइप का व्यवहार इस तरह का होता है:

ऑफ़सेट 0 ब्यौरा
GET_MIN 0x00
GET_MAX 0x01
GET_RES 0x01
GET_LEN 0x0001
GET_INFO 0x02 सिर्फ़ लिखने के लिए
GET_DEF 0x00
SET_CUR वन-शॉट फ़्रेमिंग के लिए अनुरोध सेट करना

जगह में मौजूद लोगों की संख्या का पता लगाना

मीटिंग में हिस्सा लेने वाले लोगों की संख्या का अनुमान लगाने के लिए, ऑक्युपेंसी काउंटिंग (ओसी) सुविधा का इस्तेमाल किया जाता है. भले ही, कैमरे का व्यू काटा गया हो.

इस टेबल में, OC कंट्रोल के काम करने का तरीका और कैमरे की वीडियो स्ट्रीम और कैमरे के एलईडी इंडिकेटर के साथ उनके इंटरैक्शन के बारे में बताया गया है.

जब बुकिंग की संख्या & कैमरे की वीडियो स्ट्रीम: कैमरे का एलईडी इंडिकेटर GOOGXU_OCCUPANCY_COUNTING_TOGGLE GET_CUR GOOGXU_OCCUPANCY_COUNTING_READ GET_CUR
चालू की गई स्ट्रीमिंग न की जा रही हो और म्यूट न किया गया हो चालू 0x01 कैमरे के फ़ील्ड ऑफ़ व्यू में दिखने वाले लोगों की संख्या.
चालू की गई स्ट्रीमिंग चालू 0x01 कैमरे के फ़ील्ड ऑफ़ व्यू में दिखने वाले लोगों की संख्या.
चालू की गई म्यूट किया गया बंद है 0x01 बंद की गई
बंद की गई स्ट्रीमिंग न की जा रही हो और म्यूट न किया गया हो बंद है 0x00 बंद की गई
बंद की गई स्ट्रीमिंग चालू 0x00 बंद की गई
बंद की गई म्यूट किया गया बंद है 0x00 बंद की गई

कंट्रोल: GOOGXU_OCCUPANCY_COUNTING_TOGGLE

इस कंट्रोल का इस्तेमाल, कमरे में मौजूद लोगों की गिनती करने की सुविधा को चालू या बंद करने के लिए किया जाता है. शून्य (0) की वैल्यू सेट करने पर, यह सुविधा बंद हो जाती है और एक (1) की वैल्यू सेट करने पर, यह सुविधा चालू हो जाती है. अगर यह सुविधा काम नहीं करती है, तो कैमरे को इस कंट्रोल की जानकारी नहीं देनी चाहिए.

कंट्रोल सिलेक्टर 3
कार्रवाई GET / SET
wLength 1
ऑफ़सेट फ़ील्ड साइज़ मान ब्यौरा
0 bOccupancy 1 बूलियन लोगों की संख्या की गिनती करने की सुविधा सेट करें
0x00 सुविधा बंद करें
0x01 सुविधा चालू करें

इस्तेमाल किए जा सकने वाले अनुरोध टाइप का व्यवहार इस तरह का होता है:

ऑफ़सेट 0 ब्यौरा
GET_CUR अगर बुकिंग के दौरान मेहमानों की संख्या की गिनती करने की सुविधा चालू है, तो क्या होगा
GET_MIN 0x00
GET_MAX 0x01
GET_RES 0x01
GET_LEN 0x0001
GET_INFO 0x0B अपने-आप अपडेट होना / लिखना / पढ़ना
GET_DEF 0x00
SET_CUR लोगों की संख्या गिनने की सुविधा को चालू या बंद करना

कंट्रोल: GOOGXU_OCCUPANCY_COUNTING_READ

इस कंट्रोल का इस्तेमाल, कमरे में मौजूद लोगों की संख्या जानने के लिए किया जाता है. यह संख्या, कैमरे से मिलती है. हालांकि, इसके लिए यह ज़रूरी है कि कमरे में मौजूद लोगों की संख्या गिनने की सुविधा चालू हो. अगर लोगों की संख्या गिनने की सुविधा बंद है, तो कैमरे को यह कंट्रोल बंद करना चाहिए. अगर कैमरे में लोगों की संख्या का पता लगाने की सुविधा काम नहीं करती, तो कैमरे को यह कंट्रोल नहीं देना चाहिए.

कंट्रोल सिलेक्टर 4
कार्रवाई GET
wLength 2
ऑफ़सेट फ़ील्ड साइज़ मान ब्यौरा
0 bNumPeople 2 नंबर वीडियो में मौजूद लोगों की संख्या. (केवल पठन)

काम करने वाले अनुरोध टाइप का व्यवहार इस तरह का होता है:

ऑफ़सेट 0 ब्यौरा
GET_CUR कार में मौजूद लोगों की संख्या दिखाता है
GET_MIN 0x0000
GET_MAX 0x00FF
GET_RES 0x0001
GET_LEN 0x0002
GET_INFO 0x09 अपने-आप अपडेट होना / पढ़ना
GET_DEF 0x0000

डिवाइस की टेलीमेट्री और गड़बड़ी की जानकारी

इन कंट्रोल का मकसद, Meet हार्डवेयर की मदद से डीबग करने के बेहतर तरीकों को बढ़ावा देना है. आम तौर पर, ये कंट्रोल उपयोगकर्ताओं के लिए नहीं होते.

कंट्रोल: GOOGXU_STATUS_INFO

इस कंट्रोल का इस्तेमाल, होस्ट कैमरे से जानकारी पाने के लिए किया जाता है, ताकि उसे डीबग करने के लिए पार्टनर के साथ शेयर किया जा सके.

कंट्रोल सिलेक्टर 5
कार्रवाई GET
wLength 8
ऑफ़सेट फ़ील्ड साइज़ मान ब्यौरा
0 bNumCameras 1 नंबर मुख्य कैमरे से जुड़े अतिरिक्त सैटलाइट की संख्या, जिनसे होस्ट को मिलने वाली कैमरा स्ट्रीम पर असर पड़ सकता है.
1 bIsMoving 1 बिटमैप कैमरा के खाली होने पर 0 और PTZ वैल्यू बदलने पर नॉन-ज़ीरो. वेंडर, अलग-अलग ऐक्सिस या मोटर को अलग-अलग बिट पर मैप कर सकते हैं.
2 Undef 6 Undef आने वाले समय में इसे बढ़ाया जाएगा.

काम करने वाले अनुरोध टाइप का व्यवहार इस तरह का होता है:

ऑफ़सेट 0 1 2 ब्यौरा
GET_MIN 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00
GET_MAX 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF
GET_RES 0x01 0x01 0x01 0x00 0x00
0x00 0x00 0x00
GET_LEN 0x08 0x00 0x0008
GET_INFO 0x09 अपने-आप अपडेट होना / पढ़ना
GET_DEF 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00

कंट्रोल: GOOGXU_SATELLITE_INFO

इस कंट्रोल का इस्तेमाल, इस कैमरा सिस्टम से कनेक्ट किए गए सैटलाइट डिवाइसों से क्वेरी करने के लिए किया जाता है.

कंट्रोल सिलेक्टर 0x0A
कार्रवाई GET
wLength 20
ऑफ़सेट फ़ील्ड साइज़ मान ब्यौरा
0 bSatelliteList 20 बिटमैप सिस्टम से जुड़े सैटलाइट टाइप की सूची. इसमें पांच बाइट वाले चार अलग-अलग स्लॉट शामिल हैं. हर स्लॉट के बारे में यहां बताया गया है:
ऑफ़सेट ब्यौरा
0 इस तरह के सैटलाइट की संख्या.
1-2 इस सैटलाइट टाइप का वेंडर आईडी.
3-4 इस तरह के सैटलाइट के लिए प्रॉडक्ट आईडी.

काम करने वाले अनुरोध टाइप का व्यवहार इस तरह का होता है:

ऑफ़सेट 0 ब्यौरा
GET_MIN 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00
GET_MAX 0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF
0xFF 0xFF 0xFF 0xFF 0xFF
GET_RES 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00
GET_LEN 0x14 20 बाइट
GET_INFO 0x09 अपने-आप अपडेट होना / पढ़ना
GET_DEF 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00

कंट्रोल: GOOGXU_STATUS_RESET

इस कंट्रोल का इस्तेमाल, कैमरे को रीसेट करने का अनुरोध करने के लिए किया जाता है. वैल्यू को एक (1) पर सेट करने से, कैमरे को रीसेट करने का अनुरोध किया जाता है. अगर पिछले रीसेट के बाद, कैमरे को फिर से चालू करने का कोई अनुरोध नहीं किया गया है, तो कैमरा शून्य (0) दिखाता है. अगर कैमरा रीसेट हो रहा है, तो एक (1) दिखाता है. रीसेट करने पर, कैमरा रीबूट होना चाहिए. (यह उन डिवाइसों के लिए ज़रूरी है जिनमें बैटरी होती है. ऐसे डिवाइसों में, यूएसबी को हॉटप्लग के तौर पर इस्तेमाल करने के लिए, यूएसबी को जबरदस्ती डिसकनेक्ट करना काम का नहीं होता.)

कंट्रोल सिलेक्टर 6
कार्रवाई GET / SET
wLength 1
ऑफ़सेट फ़ील्ड साइज़ मान ब्यौरा
0 bResetRequest 1 बूलियन होस्ट और कनेक्ट किए गए कैमरों को रीसेट करने का अनुरोध करें.
अगर पिछले रीसेट के बाद रीसेट करने का अनुरोध किया गया है, तो यह 0x01 दिखाता है. अगर ऐसा नहीं है, तो यह 0x00 दिखाता है.

इस्तेमाल किए जा सकने वाले अनुरोध टाइप का व्यवहार इस तरह का होता है:

ऑफ़सेट 0 ब्यौरा
GET_MIN 0x00
GET_MAX 0x01
GET_RES 0x01
GET_LEN 0x0001
GET_INFO 0x03 लिखें / पढ़ें
GET_DEF 0x00

पीटीज़ी प्रीसेट

इसका इस्तेमाल, कैमरे के फ़ील्ड ऑफ़ व्यू (कैमरे से दिखने वाला व्यू) को कॉन्फ़िगर करने और उसे पहले से तय की गई पोज़िशन पर वापस लाने के लिए किया जाता है.

कंट्रोल: GOOGXU_PRESETS

इस कंट्रोल का इस्तेमाल, कैमरे के पैन, झुकाव, और ज़ूम (पीटीज़) की वैल्यू को पहले से तय किए गए कॉन्फ़िगरेशन पर सेट करने के लिए किया जाता है.

Preset Action का इस्तेमाल, कमांड की टारगेट की गई कार्रवाई बताने के लिए किया जाता है. एक (1) की वैल्यू सेट करने का इस्तेमाल, मौजूदा पैन, टिल्ट, और ज़ूम वैल्यू को दिए गए प्रीसेट इंडेक्स पर मैप करने के लिए किया जाता है. दो (2) की वैल्यू सेट करने पर, कैमरे के पैन, झुकाव, और ज़ूम को दिए गए इंडेक्स के लिए, पहले से मैप की गई वैल्यू पर ट्रांज़िशन करना चाहिए. अगर पहले से मैप नहीं किया गया है, तो डिफ़ॉल्ट फ़ैक्ट्री निर्देशांक पर ट्रांज़िशन करना चाहिए. तीन (3) की वैल्यू सेट करने पर, इंडेक्स को फ़ैक्ट्री डिफ़ॉल्ट निर्देशांक पर रीसेट कर दिया जाता है.

Preset Index का इस्तेमाल, इंडेक्स से मैप किए गए PTZ कोऑर्डिनेट की जानकारी देने के लिए किया जाता है. शून्य (0) का Preset index, होम कोऑर्डिनेट पर मैप किया जाता है. साथ ही, GOOGXU_FRAME_STRATEGY को NONE पर सेट करने पर, कैमरे के चालू होने पर यह डिफ़ॉल्ट पोज़िशन होनी चाहिए.

कंट्रोल सिलेक्टर 7
कार्रवाई SET
wLength 2
ऑफ़सेट फ़ील्ड साइज़ मान ब्यौरा
0 bPresetAction 1 नंबर 0x01: प्रीसेट सेव करें
0x02: प्रीसेट को वापस लाएं
0x03: प्रीसेट को डिफ़ॉल्ट पर रीसेट करें. (डिफ़ॉल्ट रूप से, कोई मान्य प्रीसेट कोऑर्डिनेट होना चाहिए.)
1 bPresetIndex 1 नंबर चालू प्रीसेट का इंडेक्स. 0~N-1
यहां 0 को कैमरे की डिफ़ॉल्ट शुरुआती स्थिति माना जाता है और N-1, प्रीसेट की संख्या के लिए वेंडर की ओर से तय किया गया एक कॉन्स्टेंट होता है.

काम करने वाले अनुरोध टाइप का व्यवहार इस तरह का होता है:

ऑफ़सेट 0 1 ब्यौरा
GET_MIN 0x00 0x00
GET_MAX 0x03 N-1 N मैक्स प्रीसेट काम करते हैं
GET_RES 0x01 0x01
GET_LEN 0x02 0x00 0x0002
GET_INFO 0x02 सिर्फ़ लिखने के लिए
GET_DEF 0x00 0x00

पैन और झुकाने की सुविधा वाली सहायक मैपिंग

कुछ कैमरों में खास कॉम्पोनेंट होते हैं. जैसे, मैकेनिकल कैमरों के लिए मोटर या डिजिटल पीटीज़ (पैनोरमा, टिल्ट, और ज़ूम) की सुविधाएं. इनके लिए, पैन, टिल्ट, और ज़ूम करने के लिए, स्टैंडर्ड V4L2 कंट्रोल का इस्तेमाल करें.

कंट्रोल: GOOGXU_PAN_TILT_ABSOLUTE (अब काम नहीं करता)

पैन और टिल्ट के सहायक मैपिंग कंट्रोल, UVC 1.5 क्लास स्पेसिफ़िकेशन के चैप्टर 4: क्लास के हिसाब से अनुरोध सेक्शन 4.2.2.1.14 पैनटिल्ट (एब्सोल्यूट) कंट्रोल में बताए गए हैं.

कंट्रोल: GOOGXU_PAN_TILT_RELATIVE (अब काम नहीं करता)

पैन और टिल्ट के सहायक मैपिंग कंट्रोल, UVC 1.5 क्लास स्पेसिफ़िकेशन के चैप्टर 4: क्लास के हिसाब से अनुरोध सेक्शन 4.2.2.1.15 पैनटिल्ट (रिलेटिव) कंट्रोल में बताए गए हैं.

प्रॉडक्ट की जानकारी

रिलीज़ नोट में, इस दस्तावेज़ के हर बदलाव में किए गए सुधार और नई सुविधाओं के बारे में बताया गया है.

27 जनवरी, 2025

  • GOOGXU_FRAME_STRATEGY में, फ़्रेमिंग की रणनीति Vendor-preferred जोड़ी गई.
  • नया कंट्रोल जोड़ा गया: GOOGXU_SATELLITE_INFO.

21 मई, 2024

  • CfM टेस्ट की नई सुविधा के लिए, टेस्ट स्क्रिप्ट हटा दी गई है. यह सुविधा SET का इस्तेमाल करती है. साथ ही, यह सीरीज़ वन कैमरों की पुष्टि करने की सुविधा भी देती है.
  • GOOGXU_STATUS_INFO में फ़ील्ड के बारे में जानकारी दी गई.
  • GOOGXU_STATUS_RESET के व्यवहार के बारे में साफ़ तौर पर बताया गया.
  • GOOGXU_PAN_TILT_ABSOLUTE और GOOGXU_PAN_TILT_RELATIVE का इस्तेमाल बंद कर दिया गया है.

15 नवंबर, 2023

फ़्रेमिंग के मान्य मोड की जांच करने और उनके बारे में जानकारी देने के लिए, अपडेट की गई टेस्ट स्क्रिप्ट. बाइट के बारे में जानकारी को साफ़ तौर पर बताया गया.

21 जुलाई, 2023

पार्टनर के लिए टेस्ट स्क्रिप्ट जोड़ी गई, ताकि इस स्पेसिफ़िकेशन का पालन करने के लिए, लागू किए गए निर्देशों की पुष्टि की जा सके.

25 मई, 2023

प्रीसेट की संख्या के बारे में GOOGXU_PRESETS बने नोट को ठीक किया गया. यह N होना चाहिए, N-1 नहीं.

17 अप्रैल, 2023

शुरुआती रिलीज़.