این سند به تشریح APIهای پشتیبانی شده USB Class Video Class Extension Unit (XU) میپردازد که توسط سیستمهای کنفرانس Google Meet برای فعال کردن ویژگیهای دوربین هوشمند استفاده میشود. هدف از ایجاد این مشخصات، تأثیرگذاری بر روشهای فعال کردن این ویژگیها و امکان مقیاسپذیری و آزمایش ناهمزمان بهتر برای شرکای ما است.
برای جزئیات درباره آخرین تغییرات این سند، به یادداشتهای انتشار بروید.
مرکز آزمایش
برای کمک به شرکا در تأیید انطباق با این مشخصات، یک مرکز آزمایشی در دستگاههای Chromebox-for-Meetings که در حالت برنامهنویس تنظیم شدهاند، ارائه میکنیم. نوشتن در فایل سیستم را فعال کنید. خطوط زیر را به /etc/chrome_dev.conf
اضافه کنید:
--enable-logging
--log-level=0
دستگاه را راه اندازی مجدد کنید، دوربین و یک صفحه کلید USB را وصل کنید، Ctrl-Alt-X
را فشار دهید و مطابقت با مشخصات دوربین فعال اعمال می شود و به /home/chronos/user/log/chrome
وارد می شود.
کنوانسیون اندین کوچک
USB یک استاندارد کمی است. در این سند:
- اعداد چند بایتی به شکل بزرگ اندین به نظر می رسند (و به اندین کوچک منتقل می شوند).
- آرایههای بایت در طرحبندی حافظههای کوچک اندین قرار دارند.
برای مثال، 0x12345678
همان [0x78, 0x56, 0x34, 0x12]
است.
GUID واحد افزونه
واحدهای برنامه افزودنی که از این مشخصات کنترل 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 |
کنترل نوع درخواست
انواع درخواست کنترل در فصل 4 تعریف شده است: درخواست های خاص کلاس از مشخصات کلاس UVC 1.5 .
عملیات | کنترل UVC |
---|---|
GET | GET_CUR ، GET_MIN ، GET_MAX ، GET_RES ، GET_LEN ، GET_INFO ، GET_DEF |
SET | SET_CUR |
حالت های دوربین
حالتهای دوربین برای کادربندی افراد در یک اتاق جلسه استفاده میشود و tuple
زیر است:
- استراتژی (نمای دوربین)
- تعصب (بلندگو یا اتاق)
- فیدها (جریان های تک یا چندگانه)
هر بعد می تواند مقادیری داشته باشد که در بخش های زیر توضیح داده شده است.
استراتژی قاب بندی خودکار
ویژگی | توضیحات |
---|---|
هیچ کدام | دوربین تمام ویژگیهای کادربندی هوشمند را غیرفعال میکند و به مشتری اجازه میدهد آزادانه مقادیر PTZ را کنترل کند. توجه: وقتی روی این استراتژی کادربندی تنظیم میشود، دوربین در موقعیت حرکت، شیب و زوم فعلی خود باقی میماند. |
کادربندی پیوسته (CAZ) | بر اساس سوگیری کادربندی، دوربین به طور مداوم افراد داخل اتاق را ردیابی می کند. توجه: PTZ در این حالت غیرفعال است. |
فریم های تقسیم شده | دوربین به تعداد مورد نیاز نمایش ویدیو ایجاد می کند. بر اساس گزینه Auto-framing feeds ، یا آنها را به کاشیها در یک استریم ترکیب میکند یا جریانهای ویدیویی جداگانه برای هر نما ایجاد میکند. توجه: PTZ در این حالت غیرفعال است. |
نمای پویا | یک یا چند دوربین سعی می کنند بهترین نمای اتاق را ارائه دهند. میتواند تصمیم بگیرد که چند فید را در یکی ترکیب کند یا نه، یا یک نمای «جالب» از اتاق فعلی ارائه دهد. هدف از این دیدگاه ارائه عادلانه ترین دید شرکت کنندگان داخل اتاق به تماس است. یادداشت ها:
|
تعصب قاببندی خودکار
ویژگی | توضیحات |
---|---|
ارائه دهنده با ریسک بالا (ردیابی بلندگو) | دوربین سعی می کند به بهترین شکل فردی را که به طور فعال در اتاق صحبت می کند کادربندی کند. در این سناریو، دوربین باید به سمت ارائه کننده سوگیری کند. به عنوان مثال، مدیر عامل در یک اتاق هیئت مدیره در حال ارائه ارائه است. |
همکاری (ردیابی اتاق) | دوربین سعی میکند همه شرکتکنندگان در اتاق را به بهترین شکل کادربندی کند. در این سناریو، دوربین باید با هر شرکت کننده منصفانه رفتار کند. اکثر جلسات باید از این استراتژی استفاده کنند. |
فیدهای کادربندی خودکار
ویژگی | توضیحات |
---|---|
تک جریانی | دوربین یک جریان ویدئو را به دستگاه میزبان ارسال می کند. |
چند جریانی (کار در حال انجام) | دوربین جریان را تقسیم می کند و چندین جریان ویدیویی را برای ارسال به میزبان ایجاد می کند. توجه: مشخصات کامل و رفتار مورد انتظار این ویژگی در انتظار بررسی است و تا بازبینیهای بعدی این سند پشتیبانی نمیشود . |
مقادیر بیت مپ حالت قاب بندی خودکار
به جز حالت پیشفرض None
که با یک آرایه بایت خالی نشان داده میشود، هر بیت در آرایه بایت حالت دوربین متفاوتی را نشان میدهد که ترکیبی خاص از استراتژی قاببندی خودکار ، سوگیری قاببندی خودکار و فیدهای کادربندی خودکار است.
شاخص بیت | CAZ | اسپلیت فریم | پویا | - |
---|---|---|---|---|
بلندگو | D1 - | - - | D5 D6 | تک جریانی چند جریانی |
اتاق | D2 - | D3 D4 | D7 D8 | تک جریانی چند جریانی |
حالت های قاب | مقدار حالت قاب (کمترین بایت مهم) |
---|---|
None | 0x00 |
CAZ, Speaker, Single-Stream | 0x01 |
CAZ, Room, Single-Stream | 0x02 |
Split-Frame, Room, Single-Stream | 0x04 |
Split-Frame, Room, Multi-Stream | 0x08 |
Dynamic, Speaker, Single-Stream | 0x10 |
Dynamic, Speaker, Multi-Stream | 0x20 |
Dynamic, Room, Single-Stream | 0x40 |
Dynamic, Room, Multi-Stream | 0x80 |
کنترل: GOOGXU_FRAME_STRATEGY
این کنترل برای دریافت یا تنظیم حالتهای کادربندی دوربین همانطور که در مقادیر بیت مپ حالت قاببندی خودکار فهرست شده است، استفاده میشود. هر حالت به صورت یک بیت در بیت مپ مربوطه خود نشان داده می شود. دستور GET_RES
یک بیت ماسک 8 بایتی با مقدار صفر (0) یا یک (1) را به ترتیب نشان می دهد که آیا این ویژگی توسط دستگاه پشتیبانی یا پشتیبانی نمی شود. به عنوان مثال، اگر دوربینی از CAZ, Speaker, Single-Stream
، Split-Frame, Room, Single-Stream
و Dynamic, Room, Multi-Stream
پشتیبانی می کند اما حالت های دیگر را ندارد، در این صورت GET_RES
باید 0x0000000000000000085 (یعنی 0b10000101
) را برگرداند. بایت).
دستور SET_CUR
برای ارسال بیت مپ استفاده می شود تا به دوربین بگوید کدام حالت SINGLE دوربین را فعال کند.
انتخابگر کنترل | 1 | |||
---|---|---|---|---|
عملیات | GET / SET | |||
wLength | 8 | |||
افست | میدان | اندازه | ارزش | توضیحات |
0 | bActiveMode | 8 | بیت مپ | حالت دوربین فعال را تنظیم یا برگردانید |
یادداشت ها:
|
رفتار انواع درخواست های پشتیبانی شده به شرح زیر است:
افست | 0 | توضیحات |
---|---|---|
GET_CUR | حالت دوربین قاب بندی فعال را دریافت کنید | |
GET_MIN | وابسته به دوربین | |
GET_MAX | وابسته به دوربین | |
GET_RES | یک بیت ماسک 8 بایتی از حالت های پشتیبانی شده دوربین را برمی گرداند | |
GET_LEN | 0x0008 | طول |
GET_INFO | 0x0B | به روز رسانی خودکار / نوشتن / خواندن |
GET_DEF | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | مقدار پیش فرض |
SET_CUR | حالت Active Framing Camera را تنظیم کنید |
کنترل: GOOGXU_REFRAME
این کنترل برای فعال کردن کادربندی تک شات که به نام OTAZ نیز شناخته می شود استفاده می شود. هنگامی که OTAZ فعال می شود، نمای دوربین به بهترین نمای اتاق می رسد. پس از آن، مشتری توانایی کنترل مقادیر PTZ را دوباره به دست می آورد. اگر کادربندی تک شات پشتیبانی نمیشود، دوربین نباید این کنترل را تعریف کند.
انتخابگر کنترل | 2 | |||
---|---|---|---|---|
عملیات | SET | |||
wLength | 1 | |||
افست | میدان | اندازه | ارزش | توضیحات |
0 | bReframe | 1 | شماره | 0x01 درخواست Reframe را اجرا کنید |
رفتار انواع درخواست های پشتیبانی شده به شرح زیر است:
افست | 0 | توضیحات |
---|---|---|
GET_MIN | 0x00 | |
GET_MAX | 0x01 | |
GET_RES | 0x01 | |
GET_LEN | 0x0001 | |
GET_INFO | 0x02 | فقط بنویس |
GET_DEF | 0x00 | |
SET_CUR | تنظیم درخواست برای کادربندی تک شات |
شمارش اشغال
شمارش اشغال (OC) یک ویژگی است که برای تخمین تعداد شرکت کنندگان در یک اتاق جلسه، علیرغم نمای بریده شده دوربین، استفاده می شود.
این جدول رفتار مورد انتظار کنترل های OC و تعامل آنها با جریان فیلم دوربین و نشانگر LED دوربین را نشان می دهد.
وقتی که شمارش اشغال باشد | & جریان ویدئوی دوربین این است: | نشانگر LED دوربین باید باشد | 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_STATUS_RESET
این کنترل برای ارسال درخواست ریست به دوربین استفاده می شود. تنظیم مقدار یک (1) از دوربین درخواست میکند که ریست شود. اگر از زمان آخرین تنظیم مجدد درخواستی برای راه اندازی مجدد دوربین وجود نداشته باشد، دوربین صفر (0) و اگر در حال تنظیم مجدد باشد، یک (1) را برمی گرداند. بازنشانی باید راه اندازی مجدد دوربین را راه اندازی کند. (این مورد برای دستگاه های خود تغذیه که در آن ها قطع اتصال USB برای شبیه سازی هات پلاگ مفید نیست، لازم است.)
انتخابگر کنترل | 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 |
پیش تنظیم PTZ
برای پیکربندی و بازیابی میدان دید دوربین در موقعیت از پیش تعیین شده استفاده می شود.
کنترل: GOOGXU_PRESETS
این کنترل برای تنظیم مقادیر حرکت، شیب و بزرگنمایی دوربین (PTZ) روی یک پیکربندی از پیش تعیین شده استفاده می شود.
از Preset Action
برای بیان عملکرد مورد نظر دستور استفاده می شود. تنظیم مقدار یک (1) برای نگاشت مقادیر حرکت، شیب و بزرگنمایی فعلی به یک شاخص از پیش تعیین شده ارائه شده استفاده می شود. تنظیم مقدار دو (2) باید حرکت، شیب و بزرگنمایی دوربین را به مقادیر قبلاً نقشهبرداری شده برای شاخص ارائه شده یا مختصات کارخانه پیشفرض (اگر قبلاً نقشهبرداری نشده است) تغییر دهد. تنظیم مقدار سه (3) ایندکس را به مختصات پیش فرض کارخانه بازنشانی می کند.
Preset Index
برای تعیین مختصات PTZ نگاشت شده به شاخص استفاده می شود. زمانی که GOOGXU_FRAME_STRATEGY
روی NONE
تنظیم شده است، Preset index
صفر (0) به مختصات اصلی نگاشت می شود و باید موقعیت پیش فرض دوربین در حالت بیداری باشد.
انتخابگر کنترل | 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 |
نقشه برداری کمکی حرکت و شیب
برخی از دوربین ها دارای اجزای خاصی هستند، مانند موتورهای دوربین های مکانیکی یا قابلیت های دیجیتال PTZ. برای این موارد، از کنترلهای استاندارد V4L2 برای حرکت، شیب و زوم استفاده کنید.
کنترل: GOOGXU_PAN_TILT_ABSOLUTE
(منسوخ شده)
کنترلهای نگاشت کمکی پان و شیب در فصل 4 تعریف شدهاند: درخواستهای ویژه کلاس بخش 4.2.2.1.14 کنترل PanTilt (مطلق) مشخصات کلاس UVC 1.5 .
کنترل: GOOGXU_PAN_TILT_RELATIVE
(منسوخ شده)
کنترلهای نگاشت کمکی پان و شیب در فصل 4 تعریف شدهاند: درخواستهای ویژه کلاس بخش 4.2.2.1.15 کنترل PanTilt (نسبی) مشخصات کلاس UVC 1.5 .
موضوعات مرتبط
- درایور کلاس ویدیویی یو اس بی لینوکس (UVC).
- مجموعه اسناد کلاس ویدیویی نسخه 1.5
- مشخصات USB 2.0
- مرکز راهنمایی سخت افزار Google Meet
- بخش سخت افزار Google Meet در مرکز راهنمای Google Workspace Admin
یادداشت های انتشار
این یادداشتهای انتشار نشاندهنده پیشرفتها و ویژگیهای جدید در هر بازبینی این سند است.
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
انتشار اولیه